Page 1 of 1

INDICES DESCENDENTES

PostPosted: Wed Aug 13, 2014 6:42 pm
by miarcod
Hola,

Cuando genero un índice con la siguiente cláusula los datos no está ordenados descendentemente

INDEX ON CAMPO_CARACTER + DESCEND(DTOS(CAMPO_FECHA)) TO XX


¿Alguna suerencia?

GRACIAS

Re: INDICES DESCENDENTES

PostPosted: Wed Aug 13, 2014 7:31 pm
by antolin
Hola, creo que el problema está en que DESCEND() sólo afecta a un datos a cada vez, no a todo el índice, para ello tienes que utilizar la clausula DESCENDING:

INDEX ON CAMPO_CARACTER + DTOS(CAMPO_FECHA) TO XX DESCENDING

Si lo que quieres es invertir sólo el orden de la fecha, podría probar con:

INDEX ON CAMPO_CARACTER + STR(30000000-VAL(DTOS(CAMPO_FECHA))) TO XX

Lo malo es cuando quieras buscar un registro con SEEK. Tendrás que hacer algo como esto:

Code: Select all  Expand view
cBuscar := "CCCC...CC"+STR(30000000-VAL(DTOS( Date() )))
SEEK cBuscar

Re: INDICES DESCENDENTES

PostPosted: Wed Aug 13, 2014 8:19 pm
by miarcod
gracias

Lo he solucionado con el indice


INDEX ON CAMPO_CARACTER + STR(DESCEND(CAMPO_FECHA),10) TO XX

Creo que funciona, pero no entiendo porque la clausula de mi índice no funciona correctamente.

Un saludo

HB_SetCodePage ¡¡¡¡ SORPRESA !!!!

PostPosted: Thu Aug 14, 2014 3:50 pm
by miarcod
Bueno sigo investigando,

El caso es que la creación de indices con la expresión DESCEND(DTOS(FECHA)) ya la tenía programada y funcionando, la sorpresa es que desde hace unos días me doy cuenta que esto dejo de funcionar y claro, investigando me he dado cuenta que el problema está en la función

HB_SetCodePaGE("ESWIN")

QUE Hace un tiempo tuve que poner para que al exportar datos a excel no se creasen caracteres raros

¿Alguna sugerencia de donde puede estar el problema?

Mi preocupación es por si hay otras """"SORPRESAS"""" que hagan que algo que estaba funcionando correctamente de repente funcione mal

Un saludo

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 3:58 pm
by karinha
Holá, si usas HARBOUR és asi:

http://fivewin.com.br/index.php?/topic/ ... etcodepage

saludos.

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:00 pm
by miarcod
No funciona,

Al seleccionar la pagina de codigos "ESWIN" la funcion DESCEND(dtos(fecha)) no va bien con fechas.

¿?

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:21 pm
by karinha
En xHarbour funciona bien:

Code: Select all  Expand view

   EXTERNAL DESCEND

   INDEX ON DESCEND( Field->DEST_NOME )   TAG DEST_NOME  TO CONSULTA    ;
         EVAL ( oMeter1:Set( RecNo() ), CursorWait(), SysRefresh() )    ;
         EVERY 10

   INDEX ON DESCEND( Field->QUANTIDADE )  TAG NQUANTIDADE TO TABPROD    ;
         EVAL ( oMeter2:Set( RecNo() ), CursorWait(), SysRefresh() )    ;
         EVERY 10

                               // aca es una fecha(MesAno)
   INDEX ON Field->MATRICULA + DESCEND( Field->MESANO )                 ;
         TAG MATRICULA+MESANO TO PEDCPROV                               ;
         EVAL ( oMeter3:Set( RecNo() ), CursorWait(), SysRefresh() )    ;
         EVERY 10

            // aca es una fecha(MesAno)
   INDEX ON DESCEND( Field->MESANO )  + Field->MATRICULA                ;
         TAG MESANO+MATRICULA TO PEDCPROV                               ;
         EVAL ( oMeter3:Set( RecNo() ), CursorWait(), SysRefresh() )    ;
         EVERY 10

sintaxe:

INDEX ON   ;
    TAG TO ;
    FOR    ;
    WHILE  ;
    NEXT | RECORD | REST | ALL ;
    UNIQUE ;
    ASCENDING | DESCENDING ;
    EVAL EVERY ;
    USECURRENT ;
    ADDITIVE ;
    CUSTOM ;
    NOOPTIMIZE
 


Saludos


Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:40 pm
by karinha

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:44 pm
by karinha

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:46 pm
by karinha

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:47 pm
by karinha

Re: INDICES DESCENDENTES

PostPosted: Thu Aug 14, 2014 5:49 pm
by karinha