Página 1 de 1

ORDENAR POR NUMERO E DATA

Enviado: 15 Jul 2004 17:39
por ERASMO ANDRIOLI
COLEGAS....


Please... My Help...

Seguinte: Estou fazendo uma indexação assim:

INDEX ON CODIGO + VAL(DTOC(DATA_GAS)) TO SIG_GASD

Estou percebendo que o sistema não está ordenando o arquivo pelo CODIGO + DATA... apenas pelo CODIGO (a data esta ficando fora de ordem)...

Já tentei assim tambem:

INDEX ON CODVEI + VAL(DTOS(DATA_GAS)) TO SIG_GASD

... trocando apenas de DTOC para DTOS... más ai fica mais bagunçado ainda... por favor me ajudem!!!!!

Abraços

Erasmo Andrioli
Sorriso-MT :shock:

Enviado: 15 Jul 2004 17:45
por Claudio Farias
Erasmo

Tudo bem ??

Me tire uma dúvida, vc está indexando 2 campos numéricos ??

Codigo + Val( ..... )


Claudio Farias

Enviado: 15 Jul 2004 17:59
por Toledo
Erasmo,

A chave de indexação de um arquivo de índice de preferência tem que ser do tipo caracter.
Neste caso, se a resposta a pergunta do nosso amigo Cláudio Farias é sim, você tem então que usar a seguinte chave:

INDEX ON STRZERO(CODIGO,6) + DTOS(DATA_GAS) TO SIG_GASD

Na função STRZERO() usei o tamanho 6, mas você pode utilizar o tamanho do campo CODIGO.

Abraços,

Enviado: 16 Jul 2004 08:01
por janio
Ao Toledo,


Aproveitando a oportunidade, gostaria de fazer uma indagação:

Já indexei campos de DATAS semelhante a este exemplo aqui postado e percebi (não sei se é assim mesmo) que o sistema indexou as DATAS levando em consideração somente os DIAS e não também (como tem que ser) os MESES. Exemplo: Se eu tenho por exemplo as datas:

13/06/2004
15/07/2004
12/07/2004

ele indexou assim:

12/07/2004
13/06/2004
15/07/2004

Pergunto: É assim mesmo, ou estou fazendo algo de errado?


Janio - janioaguiar@yahoo.com.br

Enviado: 16 Jul 2004 10:33
por Jorge Adourian
Erasmo, siga a dica do Toledo. Lembre-se que indexar DATA usando o VAL() é um grande absurdo, nunca faça isto.

Janio, sempre que indexar por DATA deve-se usar a data invertida [aaaammdd] usando o DTOS() para converte-la.

Enviado: 16 Jul 2004 11:22
por kiko
eu faria assim:

INDEX ON STRZERO(CODIGO,*)+DTOS(DATA_GAS) TO SIG_GASD

onde * eh o tamanho do campo numerico que vc criou no seu banco de dados.....

Enviado: 16 Jul 2004 12:51
por Toledo
Janio,

Na chave de indexação um campo DATA deve sempre ser usado com o DTOS().
No seu exemplo:

13/06/2004
15/07/2004
12/07/2004

utilizando DTOS(), ficaria assim:

20040613
20040712
20040715

Abraços,

Enviado: 18 Jul 2004 10:26
por janio
Valeu Toledo e amigos do Fórum.


Funcionou beleeeeeezzzzzaaaaaaa!


Janio