[resolvido] Ordenação de Array

Moderador: Avelino Sampaio

eduas65
Mensagens: 16
Registrado em: 17 Jun 2016, 23:03

[resolvido] Ordenação de Array

Mensagempor eduas65 » 19 Nov 2017, 23:35

Caro Avelino, há alguns dias pedi ajuda para o tema que era ordenar um relatório com uso de uma função sua com array. A dificuldade era ordenar usando a soma dos números decimais que tinham de ser lançados. Tentei acessar o tópico 2069 para enviar o BD como pediu mas não consegui. Então estou reabrindo aqui para pedir sua ajuda quando lhe seja possível.

Agradeço desde já.

Eduardo Alves
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Damasceno Jr.
Mensagens: 367
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Ordenação de Array

Mensagempor Damasceno Jr. » 20 Nov 2017, 18:29

você bloqueou com senha o acesso a parte de programação do arquivo enviado.
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

eduas65
Mensagens: 16
Registrado em: 17 Jun 2016, 23:03

Re: Ordenação de Array

Mensagempor eduas65 » 21 Nov 2017, 23:41

Perdoem a desatenção. Segue arquivo desbloqueado.

Grato.
Eduardo Alves
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.

Avatar do usuário
Damasceno Jr.
Mensagens: 367
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Ordenação de Array

Mensagempor Damasceno Jr. » 22 Nov 2017, 11:59

eduas65, você estava mandando para a função fncOrdenar isso
Código:
fncOrdenar([p1] & "," & [p2] & "," & [p3]...)

repare: vê está unindo por vírgulas.

Supondo os seguintes valores:
p1 = 1,7
p2 = 2,1
p3 = 3,8

Ao juntar tudo, ou seja, você passa para o código: 1,7,2,1,3,8 (notou a confusão que se arma?)

Então, altere como os valores são passados para a função para a forma como se segue abaixo (uma barra reta):
Código:
fncOrdenar([p1] & "|" & [p2] & "|" & [p3]...)


E a função, altere isso:
Código:
Public Function fncOrdenar(Prova, pos) As Integer 'no final retornar um valor inteiro? e a parte decimal?
Dim i%, j%, uB%, Temp, temp2, k
k = Split(Prova, ",") 'digo que os valores estão separados por vírgula e aqui então toda a confusão começa
uB = UBound(k)
For i = LBound(k) To uB - 1
For j = i + 1 To uB
If Val(k(i)) > Val(k(j)) Then 'a função Val() é meio preconceituosa e só aceita pontos (.) como separador decimal, melhor trocar
Temp = k(j)
k(j) = k(i)
k(i) = Temp
End If
Next j
Next i
fncOrdenar = k(pos)
End Function

Para isso:
Código:
Public Function fncOrdenar(Prova, pos) As Double 'no final retornar valores no tipo adequeado
Dim i%, j%, uB%, Temp, temp2, k
k = Split(Prova, "|") 'informo quem é o responsável por separar os valores para formar minha array
uB = UBound(k)
For i = LBound(k) To uB - 1
For j = i + 1 To uB
If CDbl(k(i)) > CDbl(k(j)) Then 'Cdbl é mais tolerante quanto ao separador decimal
Temp = k(j)
k(j) = k(i)
k(i) = Temp
End If
Next j
Next i
fncOrdenar = k(pos)
End Function


E no final diga se resolve
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


eduas65
Mensagens: 16
Registrado em: 17 Jun 2016, 23:03

Re: Ordenação de Array

Mensagempor eduas65 » 23 Nov 2017, 11:29

Damasceno, obrigado pela boa vontade. Vou testar logo mais e lhe dou retorno.

Grato,

Eduardo Alves

eduas65
Mensagens: 16
Registrado em: 17 Jun 2016, 23:03

Re: Ordenação de Array

Mensagempor eduas65 » 26 Nov 2017, 22:53

Damasceno, continuo agradecendo a ajuda. Com as alterações que sugeriu, ao alterar o separador da função Split para qualquer outro caractere que não seja a vírgula "," apresenta a mensagem "intervalo fora do subscrito" ao abrir o relatório.

Grato,

Eduardo Alves

Avatar do usuário
Damasceno Jr.
Mensagens: 367
Registrado em: 08 Jun 2015, 01:30
Localização: Medicilândia-Pará

Re: Ordenação de Array

Mensagempor Damasceno Jr. » 27 Nov 2017, 00:36

Testei e retestei e está tudo certo.

Certifique-se de que também fez as alterações na consulta que dá origem ao relatório pois é ela que passa os dados para a função de forma errada, conforme eu alertei no início da minha ultima postagem.
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
Quanto mais o tempo passa, mais descubro e mais me apaixono por MS Access.

eduas65
Mensagens: 16
Registrado em: 17 Jun 2016, 23:03

Re: Ordenação de Array

Mensagempor eduas65 » 27 Nov 2017, 18:30

Caro Damasceno, funcionou como desejado. Agradeço a generosidade na ajuda.

Dou como resolvida a necessidade e finalizado o tópico.

Eduardo Alves

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Relatórios”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 3 visitantes