MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

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 

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3348
    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


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    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

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3348
    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!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    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: Dom 04 Dez 2016, 20:19