GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Ordenar campos em consulta
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
-star Rating Vote!  Login/Cadastrar 
Programador Pleno

postado
Bom dia Pessoal,

Tenho uma consulta com 5 campos numéricos, o que preciso é de os ordenar mas por registo, ou seja.

O que eu obtenho é isto:
Saida1 - 10
Saida2 - 25
Saida3 - 2
Saida4 - 40
Saida5 - 1

O que preciso é disto:
Saida1 - 1
Saida2 - 2
Saida3 - 10
Saida4 - 25
Saida5 - 40

Preciso de criar uma tabela com base nesta consulta, pois só assim consigo pesquisar se uma sequencia de numeros já foi usada.


José Mendes
 
Postagens: 157 | Registrado: 18 November 2004Reply With QuoteReport This Post
Diretor

postado Hide Post
Ordenar campo texto às vezes torna-se um problema, por exemplo:

Saida1 - 1
Saida2 - 2
Saida3 - 10
Saida4 - 25
Saida5 - 40

Se você tivesse um registro Saida10 a ordenação ficaria assim:

Saida1 - 1
Saida10 - XX
Saida2 - 2
Saida3 - 10
Saida4 - 25
Saida5 - 40
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Vou explicar,

Esta tabela tem armazenadas as chaves do euromilhões, e então os números não são introduzidos por ordem crescente mas sim pela forma que saem, por isso temos por exemplo o 40 a sair em 1º e por ai fora.

Uma vez que o campo que eu tenho é Byte supostamente o 10 aparece sempre primeiro que o 2 ou não.


José Mendes
 
Postagens: 157 | Registrado: 18 November 2004Reply With QuoteReport This Post
Diretor

postado Hide Post
Se a classificação é feita somente na segunda coluna (não ficou claro) e esta coluna é numérica basta setar classificação crescente na consulta para o campo numérico da segunda coluna.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Boa noite,

Tenho os seguintes campos:
Escrutinios
Saida1
Saida2
Saida3
Saida4
Saida5

O que preciso de ordenar é os campos "saidas1.."

Por exemplo

Escrutinio - 1
Saida1 - 5
Saida2 - 15
Saida3 - 1
Saida4 - 40
Saida5 - 21

Preciso que me ordene ficando:

Escrutinio - 1
SOrd1 - 1
SOrd2 - 5
SOrd3 - 15
SOrd4 - 21
SOrd5 - 40

A ideia será actualizar os Campos SOrd1.. para os numeros ordenados.


José Mendes
 
Postagens: 157 | Registrado: 18 November 2004Reply With QuoteReport This Post
Diretor

postado Hide Post
Existem maneiras diferentes de fazer isso:

Talvez a mais prática seja a criação de tabela temporária.

Classifique o primeiro campo e registre na tabela.

Depois jogue o segundo campo (já classifcado) nessa tabela.

OBS: o problema que pode ocorrer, como foi dito, é quando no primeiro campo tiver uma Saida10. A classificação (já que é texto) ficará assim:

Saida1
Saida10
Saida2
etc.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Supondo que todos os registros sao padronizados (Saidaxxxx) onde x seja numero e os primeiros 5 digitos sejam caracter.

SELECT Table1.Escrutinios, nz(Right([Escrutinios],Len([Escrutinios])-5))*1 AS OrderNr
FROM Table1
ORDER BY nz(Right([Escrutinios],Len([Escrutinios])-5))*1;


Espero que te ajude.

Vanderlei S. Matheus
 
Postagens: 242 | Localização: Grand Cayman | Registrado: 10 June 2002Reply With QuoteReport This Post
Estagiário

postado Hide Post
Olá,

Estava com uma dúvida parecida mas observo uma coisa:

E se variar o número de caracteres numéricos, como pode-se prever quantos são?

Escrutinio - 1
SOrd1 - 1
SOrd2 - 5
SOrd3 - 15
SOrd4 - 21
SOrd5 - 40

PA
 
Postagens: 67 | Registrado: 25 March 2009Reply With QuoteReport This Post
Diretor

postado Hide Post
Uma maneira mais prática que não depende da quantidade de caracteres numéricos é a seguinte:

CInt(Right([NomeDoCampo];Compr([NomeDoCampo])-RevEmSeq([NomeDoCampo];"-")))

Nesse caso se houvesse um registro SOrd1-12 o resultado seria: 12
Se houvesse um registro SOrd1-123 o resultado seria: 123

ou seja separa somente o que está após o caractere "-" sendo que poderia ser usado qualquer caracter.
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Antes de mais obrigado a todos, mas penso que ainda não me consegui explicar bem.
Vou tentar explicar de novo.

Eu tenho a tabela Chaves
Com os campos: Escrutinio; Data; Saida1; Saida2; Saida3; Saida4; Saida5; Est1; Est2; Chave

O que eu tenho nos registos é algo do genero:

Escrutinio; Data; Saida1; Saida2; Saida3; Saida4; Saida5; Est1; Est2; Chave

1 22-04-06 10 2 36 21 50 7 1 Campo onde é para guardar a chave ordenada (neste caso ficaria assim) 2-10-21-36-50-1-7
2 29-04-06 49 6 20 17 39 2 1
...
101 ... 36 50 21 2 10 1 7

E por ai fora num total actulamente de 278 registos.

O que é que eu preciso:

Preciso de ordenar os vários campos de modo a que no campo chave guarde os vários números saidos por ordem, isto porque conforme podem ver o esrutinio 1 tem os mesmos numeros do escrutinio 101 o que acontece é que como a ordem saída não foi a mesma o Access nunca me vai dizer que a chave que saiu no escrutínio 1 é igual à do escrutínio 101.

Isto são chaves do euromilhoes, onde cada chave é composta por 5 numeros (que podem ser do 1 ao 50) e 2 estrelas (que podem ser do 1 ao 9),


José Mendes
 
Postagens: 157 | Registrado: 18 November 2004Reply With QuoteReport This Post
Estagiário

postado Hide Post
Olá, realmente não ta dando pra entender.

PA
 
Postagens: 67 | Registrado: 25 March 2009Reply With QuoteReport This Post
Iniciante

postado Hide Post
Olá José Mendes,

Já tentou a Instrução CREATE INDEX.
Pode ser um caminho.

Nivaldo.
 
Postagens: 11 | Registrado: 19 March 2005Reply With QuoteReport This Post
Diretor

postado Hide Post
quote:
Saida1 - 10
Saida2 - 25
Saida3 - 2
Saida4 - 40
Saida5 - 1
Saida6 - 20
Saida7 - 22
Saida8 - 4
Saida9 - 12
Saida10 - 45

Nivaldo, uma pequena dúvida:

Se você aplicar índices nos dados acima como ficaria o resultado ?
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Programador Júnior

postado Hide Post
Ola José Mendes

Pelo o q consegui enterder da sua dúvida eu fiz esse código em um botão para colocar em ordem os campos saida em vários registros de uma tabela, acho q adaptando a sua tabela vai t ajudar.

    Dim rs As DAO.Recordset
    Dim mt(5) As Integer
    Dim nValor As Integer
    Dim nPos As Integer
    
    Set rs = CurrentDb.OpenRecordset("Tabela1")

    With rs
        If .RecordCount > 0 Then
            .MoveLast
            .MoveFirst

            For i = 1 To .RecordCount
                mt(1) = !saida1
                mt(2) = !saida2
                mt(3) = !saida3
                mt(4) = !saida4
                mt(5) = !saida5
                
                For k = 1 To 5
                    nValor = mt(k)
                    pos = k
                    For j = k To 5
                        If mt(j) < nValor Then
                            nValor = mt(j)
                            pos = j
                        End If
                    Next
                    nValor = mt(k)
                    mt(k) = mt(pos)
                    mt(pos) = nValor
                Next

                .Edit
                !saida1 = mt(1)
                !saida2 = mt(2)
                !saida3 = mt(3)
                !saida4 = mt(4)
                !saida5 = mt(5)
                .Update
                
                .MoveNext
            Next
        End If
    End With
 


Espero q isso t ajude. Poste aqui o resultado ou qualquer duvida que vc venha a ter. abraços


Mire seus sonhos sempre na lua pq mesmo que você erre terá grandes chances de acertar uma estrela
 
Postagens: 103 | Registrado: 24 August 2007Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Antes de mais quero agradeçer a todos pela ajuda.

Quanto ao código do Aldovrando serviu que nem uma luva (muito obrigado).


José Mendes
 
Postagens: 157 | Registrado: 18 November 2004Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Ordenar campos em consulta

©