Fórum Ordenar registros - complicado #331214
16/10/2006
0
Estou com o problema e gostaria muito da ajuda de vocês.
Tenho um select que me retorna 3 campos: código( integer ), artigo( string ) e título( string ).
o select está da seguinte forma:
[color=red:2dfd1440b6]
select codigo, artigo, titulo from acervo order by titulo
Este select me retorna o seguinte resultado:
codigo artigo titulo 26 NULL Case Problems in finance 3 NULL Contabilidade gerencial 19 NULL Contabilidade industrial 34 O controle de qualidade na industria paulista 44 NULL Economia das empresas 49 NULL Estruturacao das escolas e institutos de administracao 1 Uma experiência de instrução programada em orcamento e administracao financeira 13 NULL Gerencia de Materiais 40 NULL Gerencia por objetivos 17 NULL Historia administrativa do Brasil . . .
Vejam que a ordenação está de acordo com o titulo.
Eu gostaria que ordenasce respeitando a o conteudo dos dois campos ( artigo e titulo ), pra ficar desse jeito, ou seja, respeitando as letras do artigo e do titulo:
codigo artigo titulo 26 NULL Case Problems in finance 3 NULL Contabilidade gerencial 19 NULL Contabilidade industrial 44 NULL Economia das empresas 49 NULL Estruturacao das escolas e institutos de administracao administracao financeira 13 NULL Gerencia de Materiais 40 NULL Gerencia por objetivos 17 NULL Historia administrativa do Brasil 34 O controle de qualidade na industria paulista 1 Uma experiência de instrução programada em orcamento e . . .
Acho que não tem como fazer isso com um select, mas pelo delphi sim.
Alguém tem alguma dica? Será que tem como eu jogar isso em um array e a partir daí ordenar da forma que eu preciso?
Desde já, agradeço-lhes...
Cristianojedi
Curtir tópico
+ 0Posts
16/10/2006
Ricardo_ascii
select codigo, artigo, titulo from acervo order by titulo
codigo artigo titulo 26 NULL Case Problems in finance 3 NULL Contabilidade gerencial 19 NULL Contabilidade industrial 34 O controle de qualidade na industria paulista 44 NULL Economia das empresas 49 NULL Estruturacao das escolas e institutos de administracao 1 Uma experiência de instrução programada em orcamento e administracao financeira 13 NULL Gerencia de Materiais 40 NULL Gerencia por objetivos 17 NULL Historia administrativa do Brasil . . .
codigo artigo titulo 26 NULL Case Problems in finance 3 NULL Contabilidade gerencial 19 NULL Contabilidade industrial 44 NULL Economia das empresas 49 NULL Estruturacao das escolas e institutos de administracao administracao financeira 13 NULL Gerencia de Materiais 40 NULL Gerencia por objetivos 17 NULL Historia administrativa do Brasil 34 O controle de qualidade na industria paulista 1 Uma experiência de instrução programada em orcamento e . . .
Gostei + 0
16/10/2006
Ricardo_ascii
order by titulo, artigo ou order by artigo, titulo
Gostei + 0
16/10/2006
Cristianojedi
Vou tentar ser mais claro.
Tenho uma tabela com os campos codigo, artigo e titulo. Se eu fizer um select assim: select codigo, artigo, titulo from acervo order by titulo - o resultado será este:
codigo artigo titulo 3 Um Amor de verdade 1 NULL Caça Fantasmas 4 A Casa 2 O Tesouro 5 NULL Vingança
O resultado desde select, vai exibir da seguinte forma no meu relatório abaixo. Lembrando que o campo artigo e titulo são concatenados.
codigo titulo 3 Um Amor de verdade 1 Caça Fantasmas 4 A Casa 2 O Tesouro 5 Vingança
Só que eu quero que o relatório exiba os dados da seguinte forma abaixo no meu relatório:
codigo titulo 4 A Casa 1 Caça Fantasmas 2 O Tesouro 3 Um Amor de verdade 5 Vingança
Deu pra pegar? A ordenação que eu quero fazer compara qual é a letra do campo artigo e do campo titulo. Conforme for, vai ordenando
Gostei + 0
16/10/2006
Macario
O colega [b:c05283ab78]ricardo_ascii[/b:c05283ab78] indicou corretamente a forma de ordenacao.
Exemplo:
Order By Artigo, Titulo.
O que pode estar ocorrendo e a forma no qual voce ordena via Delphi.
Que deve obdecer a mesma do select.
Exemplo:
ClientDataSet.IndexFieldNames := ´Artigo;Titulo´;
Espero que lhe ajude;
8) [/b]
Gostei + 0
16/10/2006
Ricardo_ascii
Ricardo
Gostei + 0
16/10/2006
Cristianojedi
Mas não é isto que eu quero!!!
Se eu tenho um registro com o campo artigo = Uma e o titulo = Casa e um outro registro com o campo artigo = NULL e o campo titulo = Maquinas, se eu colocar ORDER ARTIGO, TITULO, vai me retornar o seguinte:
Uma Casa
Maquinas
Mas eu quero que ele me retorne:
Maquinas
Uma Casa
Pois ´M´ de Máquinas é menor que ´U´ de Uma.
Agora deu pra sacar?
Abraços!!!
Gostei + 0
16/10/2006
Ricardo_ascii
Vc. viu o que eu postei sobre a tabela temporária?
Gostei + 0
16/10/2006
Macario
Vamo tentar o seguinte.
select isNull(Arqtigo,´ ´), titulo from tabela order by artigo, titulo
Inclua um espaco ou simplesmente ´´(branco) quando o campo for NULL, pois assim a ordenacao tem que ficar da forma que voce precisa.
Gostei + 0
16/10/2006
Cristianojedi
Desculpe-me mas eu não tinha visto esta solução que você tinha postado. Mas não teria como fazer isto sem eu precisar de criar tabela temporária, não?
Obrigado pela solução!!!
Cristiano
Gostei + 0
16/10/2006
Cristianojedi
select codigo, isnull(artigo,´´), titulo from acervo order by artigo, titulo
Desta forma não deu certo!!! Ele gerou o seguinte resultado:
codigo titulo 15 Administracao industrial e geral 16 Administração industrial e geral 42 Administracao por sistemas 37 Introdução a administração 33 Introducao a administracao financeira 8 Organizacao do trabalho 14 Origens e aplicacoes de recursos e economia financeira 12 Pratica de analise economico-financeira das empresas 22 Processo decisorio 46 Retorno do investimento 28 Streamlining 11 Teoria geral de administracao 20 A justica administrativa na Franca 5 A justica administrativa no Brasil 34 O controle de qualidade na industria paulista 31 O processo de producao 23 O supermanager 1 Uma experiência de instrução programada em orcamento e administracao financeira
Obrigado pela dica.
Gostei + 0
16/10/2006
Macario
Acho que entao a concatenacao deve ser ja no select, mas isso nao sei como ficaria.
Gostei + 0
16/10/2006
Cristianojedi
Acho que vou ter que usar tabela temporária mesmo, o que eu não queria, como o outro colega falou em uma das respostas acima.
Flw!!!
Cristiano
Gostei + 0
16/10/2006
Ricardo_ascii
No seu caso eu faria uma dessas alternativas:
a:) Criar uma tabela temporária e nessa tabela jogaria concatenado o campo artigo + titulo.
B) Se realmente vc. deseja fazer esse relatório por sql(select) eu faria o seguinte.
Criaria + um campo na tabela acervo. Meu arquivo ficaria assim: codigo, adjetivo, titulo e adjetivo_titulo. No evento before post do table(acervo) eu coloco a seguinte instrução: adjetivo_titulo:=adjetivo+´ ´+titulo
Aí sim vc. pode fazer o sql sem problemas. Seleciona os campos e coloca order by adjetivo_titulo
Ricardo
Gostei + 0
16/10/2006
Cristianojedi
Cristiano
Gostei + 0
16/10/2006
Ricardo_ascii
troque o que eu disse de adjetivo por artigo...rss(desculpe)
Abraço, Ricardo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)