MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Como ordenar array

    Compartilhe

    Rinaldo_al
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 6
    Registrado : 07/12/2009

    [Resolvido]Como ordenar array

    Mensagem  Rinaldo_al em Ter 03 Jun 2014, 19:40

    Colegas, estou precisando alterar o código abaixo para que o resultado seja impresso por ordem (A-Z) da variável vNome.

    Dim rsTblSelecaoEquipe As Recordset, rsCad As Recordset[/color]
    Dim vNome(0 To 60) As String, vCargo(0 To 60) As String, vMatricula(0 To 60) As String, vCpf(60) As String
    Dim VEquipe(60) As String, vTotGeral(60)
    Dim i As Integer

    Set rsTblSelecaoEquipe = CurrentDb.OpenRecordset("TblSelecaoEquipe")
     
          Do While Not rsTblSelecaoEquipe.EOF
           Set rsCad = CurrentDb.OpenRecordset("SELECT * FROM TabCadpoliciais WHERE Matricula  ='" & rsTblSelecaoEquipe!Matricula & "'")
               
               vMatricula(i) = Format(rsTblSelecaoEquipe!Matricula, "@@@\.@@@-@")
               VEquipe(i) = Replace(rsTblSelecaoEquipe!DiastrabPlantIntTxt, " - ", ",") & Replace(rsTblSelecaoEquipe!DiastrabDeplanTxt, " - ", ",")
               vNome(i) = rsCad!nome
               vCpf(i) = Format(rsCad!CPF, "@@@\.@@@\.@@@-@@")
               vTotGeral(i) = Format(rsTblSelecaoEquipe!TotGeral, "00")
               
            ' faz incremento a variável "i"
               i = i + 1
          rsTblSelecaoEquipe.MoveNext
       Loop

    No aguardo de ajuda Exclamation Exclamation 
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3431
    Registrado : 04/04/2010

    Re: [Resolvido]Como ordenar array

    Mensagem  Avelino Sampaio em Ter 03 Jun 2014, 22:33

    Olá!

    Experimente:

    Set rsCad = CurrentDb.OpenRecordset("SELECT * FROM TabCadpoliciais WHERE Matricula ='" & rsTblSelecaoEquipe!Matricula & "' ORDER BY nome;")

    Aguardamos

    Rinaldo_al
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 6
    Registrado : 07/12/2009

    Re: [Resolvido]Como ordenar array

    Mensagem  Rinaldo_al em Qua 04 Jun 2014, 00:41

    Não ocorreu qualquer alteração depois de inserir no código sua contribuição. Um fato q esqueci de falar é q os dados coletados serão inseridos em doc do word por meio de indicador.
    .ActiveDocument.Bookmarks("Matricula0").Select
    .Selection.Text = vMatricula(0)

    .ActiveDocument.Bookmarks("Nome0").Select
    .Selection.Text = vNome(0)

    .ActiveDocument.Bookmarks("CPF0").Select
    .Selection.Text = (CStr(vCpf(0)))

    .ActiveDocument.Bookmarks("DiasTrab0. ").Select
    .Selection.Text = VEquipe(0)
    '-----------
    .ActiveDocument.Bookmarks("Matricula1").Select
    .Selection.Text = vMatricula(1)

    ...
    Ainda estou no aguardo de ajuda

    Rinaldo_al
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 6
    Registrado : 07/12/2009

    Uma solução "gambiarra"

    Mensagem  Rinaldo_al em Sex 06 Jun 2014, 01:04

    Amigos, não consegui fazer ordenação por meio do array, entretanto consegui solucionar o problema. Como o código acima funciona perfeitamente, ou seja, estou conseguindo fazer a coleta dos dados e imprimir no word por meio de indicadores, utilizei em parte a sugestão do moderador Avelino Sampaio. A solução foi criar por meio de uma "consulta tipo criar tabela" uma tabela temporária contendo os dados da tabela TblSelecaoEquipe e da TabCadpoliciais o campo NOME. Na consulta foi colocado a opção de ordenação crescente do campo nome.  Agora estou conseguindo fazer impressão dos dados em ordem alfabética.
    Eu sei que a solução não é 100% correta, mas está atendendo as minhas necessidades até que eu encontre um código (VBA) que faça a ordenação dos dados do array.
    Assim que conseguir um código que realmente ordene o array eu colocarei o tópico como resolvido. !!!
    Exclamation  bounce Razz affraid Exclamation
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3431
    Registrado : 04/04/2010

    Re: [Resolvido]Como ordenar array

    Mensagem  Avelino Sampaio em Sex 06 Jun 2014, 10:06

    Olá!

    Cópie o código abaixo para um módulo global do seu BD.

    Public Sub fncOrdenarArray(Fruta, Pais)
    Dim i%, j%, uB%, Temp, temp2
    uB = UBound(Fruta)
    For i = LBound(Fruta) To uB - 1
       For j = i + 1 To uB
           If UCase(Fruta(i)) > UCase(Fruta(j)) Then
               Temp = Fruta(j): temp2 = Pais(j)
               Fruta(j) = Fruta(i): Pais(j) = Pais(i)
               Fruta(i) = Temp: Pais(i) = temp2
           End If
       Next j
    Next i
    End Sub

    '--------------------------------------------------------------
    Public Sub fncCarregaArray()
    Dim i%, lista$
    Dim Fruta(1 To 6)
    Dim Pais(1 To 6)

    Fruta(1) = "Banana"
    Fruta(2) = "Pera"
    Fruta(3) = "Abacate"
    Fruta(4) = "Maça"
    Fruta(5) = "Uva"
    Fruta(6) = "Limão"

    Pais(1) = "Brasil"
    Pais(2) = "Argentina"
    Pais(3) = "Uruguai"
    Pais(4) = "Portugal"
    Pais(5) = "França"
    Pais(6) = "Espanha"

    Call fncOrdenarArray(Fruta, Pais)

    For i = 1 To 6
       lista = lista & Fruta(i) & " - " & Pais(i) & vbNewLine
    Next

    MsgBox lista
    End Sub


    Para testar execute a função.  A ordenação é por Fruta.

    Call fncCarregaArray()

    Bom estudo!

    Rinaldo_al
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 6
    Registrado : 07/12/2009

    Valeu pela ajuda!!!

    Mensagem  Rinaldo_al em Ter 17 Jun 2014, 01:38

    Obrigado pela ajuda.
    Testei o código e funciona corretamente.
    Agora vou fazer as adaptações necessárias e quando estiverem prontas ou postar aqui no forum. Laughing Razz Exclamation Exclamation 

      Data/hora atual: Sex 15 Dez 2017, 15:49