MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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

2 participantes

    (RESOLVIDO) Ordenar consulta numericamente em campo de texto

    avatar
    nucosta
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 24/07/2012

    (RESOLVIDO) Ordenar consulta numericamente em campo de texto Empty (RESOLVIDO) Ordenar consulta numericamente em campo de texto

    Mensagem  nucosta 26/3/2018, 20:03

    Boa tarde,

    Numa tabela tenho algumas provas de atletismo com respectiva classificação.
    Nessa tabela tem o campo de texto classificação que terá os valores (1,2,3,4,5,etc,Desc,dns, dnf)

    Numa consulta quero ordenar logicamente pela classificação numericamente deixando no fundo os desc, dns e dnf.

    Sugestões?
    Nuno
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    (RESOLVIDO) Ordenar consulta numericamente em campo de texto Empty Re: (RESOLVIDO) Ordenar consulta numericamente em campo de texto

    Mensagem  CassioFabre 26/3/2018, 21:01

    Boa tarde,

    O SQL da consulta ficaria assim:
    Código:
    SELECT * FROM tab ORDER BY classificacao ASC

    O identificador ASC (ascending) ordenará os dados em ordem alfanumérica (já que o campo é do tipo texto) ascendente (do menor para o maior), primeiro os numeros e depois quaisquer textos em ordem alfabética, ou seja, supondo que tenha as classificações como da imagem abaixo:
    (RESOLVIDO) Ordenar consulta numericamente em campo de texto 113

    Voce usará esta consulta e retornará os dados da seguinte maneira:
    (RESOLVIDO) Ordenar consulta numericamente em campo de texto 212

    Claro que usei aqui num listbox, mas voce pode usar em consultas comuns também.

    Abraço.


    .................................................................................
    Só não tem código pra morte!
    avatar
    nucosta
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 24/07/2012

    (RESOLVIDO) Ordenar consulta numericamente em campo de texto Empty Re: (RESOLVIDO) Ordenar consulta numericamente em campo de texto

    Mensagem  nucosta 26/3/2018, 22:02

    Boa noite,

    Obrigado CassioFabre mas creio que não funciona a partir do décimo classificado.

    Eu já resolvi, no entanto não sei bem como. Vou deixar um pouco mais o tópico aberto porque gostava de compreender.

    Para exemplificar o problema vou anexar uma base de dados com exemplo.

    Tem duas tabelas exactamente iguais de resultados (só o nome dos campos é diferente mas o resto é igual).

    Ambas as tabelas foram importadas de um ficheiro txt.

    O comportamento do campo da classificação é diferente (não consigo compreender porquê).

    Um ficheiro foi importado pelo access normalmente, o outro foi importado por VBA.

    No código VBA tinha o comando trim para eliminar todos os espaços em branco e ficar só com os dados correctos.

    Quando tirei o trim e deixei ficar com o espaço à esquerda ele ordena como eu quero.

    Não percebo.

    (Não consegui colocar a base de dados por questão de espaço, fica o link dropbox
    https://www.dropbox.com/s/tz7n0y0fpt89bl8/Resultados2.zip?dl=0 )
    Cumprimentos,
    Nuno
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    (RESOLVIDO) Ordenar consulta numericamente em campo de texto Empty Re: (RESOLVIDO) Ordenar consulta numericamente em campo de texto

    Mensagem  CassioFabre 27/3/2018, 11:47

    Bom dia,

    Como o tipo de dados do seu campo é text, mesmo que o que está inserido por vezes é integer, o mau funcionamento em relação a algarismos maiores que 10 se dá pelo fato da função pegar o primeiro número e fazer a comparação, da mesma forma que se faz para saber se uma palavra vem primeiro que a outra em ordem alfabética. Exemplo:

    Qual palavra viria primeiro em ordem alfabética ascendente: Abstrato ou Aberto? Vejamos: A primeira letra das duas palavras são iguais, então vamos para a próxima. As segundas também são iguais, vamos à próxima. Na terceira letra temos caracteres diferentes. Entre s e e, a segunda vem primeiro, certo? Logo, a palavra Aberto vem antes da palavra Abstrato.

    Aplicando isso na classificação:
    Se voce tem as classificações 1, 2 e 10 qual vem primeiro? Seguindo a mesma lógica acima a ordem ficaria 1, 10 e 2, pois o 1 (do número um) e 1 (do número 10) vem antes do 2.

    Toda comparação textual vai funcionar dessa maneira. Como resolver? Aplique o 0 antes dos algarismos unitários, ou seja, ao invés de classificar o cara como 1, classifique-o como 01. Neste caso dará certo. Mas lembre-se de retirar os espaços do campo.

    Quanto ao comportamento da tabela Results que funciona corretamente é pelo fato de APENAS nos algarismos unicos (de 1 a 9) voce colocou o espaço antes. O caractere "espeço" é ordenado ants de número e letras pelo VBA, por isso funciona certo. Você também pode fazer isso para classificar, ao invés de usar o 0.

    Espero que tenha entendido.

    Abraço.


    .................................................................................
    Só não tem código pra morte!
    avatar
    nucosta
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 24/07/2012

    (RESOLVIDO) Ordenar consulta numericamente em campo de texto Empty Re: (RESOLVIDO) Ordenar consulta numericamente em campo de texto

    Mensagem  nucosta 27/3/2018, 12:08

    Correcto.
    Básico mesmo.
    Não tinha dado conta desse facto na importação.

      Data/hora atual: 17/9/2021, 05:12