FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour ïndice compuesto número + fecha [SOLUCIONADO]
Posts: 152
Joined: Mon Feb 13, 2006 08:23 PM

ïndice compuesto número + fecha [SOLUCIONADO]

Posted: Wed Mar 24, 2021 07:29 PM
Hola a todos]

Ya sé que la consulta es de primero de párvulos, pero... Tengo una base de datos con un campo número y otro de fecha. Estoy tratando de crear un índice compuesto que me ordene por los registros por número y al mismo tiempo por fecha. he probado con
[
INDEX ON STR(REG->NUM_LIB,5) + DTOS(REG->FECHA) TAG DOCFECHA

Me lo ordena por número, pero no por fecha. Este es el resultado que me muestra:



¿Cómo lo podría hacer?

Un saludo
FWH 20.12 BCC7
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM

Re: ïndice compuesto número + fecha

Posted: Wed Mar 24, 2021 11:12 PM

Según lo que veo el resultado que se muestra es el correcto.

Si quieres darle prelación a la fecha, deberías colocar primero el campo fecha.

Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM

Re: ïndice compuesto número + fecha

Posted: Thu Mar 25, 2021 01:40 PM
Ramón J. wrote:Hola a todos

Ya sé que la consulta es de primero de párvulos, pero... Tengo una base de datos con un campo número y otro de fecha. Estoy tratando de crear un índice compuesto que me ordene por los registros por número y al mismo tiempo por fecha. he probado con

INDEX ON STR(REG->NUM_LIB,5) + DTOS(REG->FECHA) TAG DOCFECHA

Me lo ordena por número, pero no por fecha. Este es el resultado que me muestra:



¿Cómo lo podría hacer?

Un saludo


Add this to your code:
Code (fw): Select all Collapse
oBrw:NUM_LIB:cSortOrder := "DOCFECHA"
Regards



G. N. Rao.

Hyderabad, India
Posts: 152
Joined: Mon Feb 13, 2006 08:23 PM

Re: ïndice compuesto número + fecha

Posted: Thu Mar 25, 2021 08:21 PM
Gracias por contestar

Veréis, lo que pretendo es que me lo ordene por números y años. Es decir, como los libros de contabilidad, que van ordenados por apuntes contables y fechas.

Si hago esto:

INDEX ON DTOS(REG->FECHA) + str(REG->NUM_LIB,5) TAG DOCFECHA FOR reg->Ent_sal="E"

Efectivamente me lo ordena por fecha, pero no por número dentro de cada año

Este es el resultado:


En cuanto a la recomendación de Rao me lanza este error:



El código completo del ejemplo del que estamos hablando es este:

Code (fw): Select all Collapse
#include "FiveWin.ch"
#include "ord.ch"
#include "XBrowse.Ch"

REQUEST DBFCDX, DBFFPT
REQUEST HB_LANG_ESWIN

function Main()
Local oBrw, oDlg
SET DATE TO FRENCH
SET CENTURY ON
SET EPOCH TO 1990
SET DELETED ON

USE REGDOC ALIAS "REG" NEW SHARED
INDEX ON str(REG->NUM_LIB,5) + DTOS(REG->FECHA) TAG DOCFECHA FOR reg->Ent_sal="E"
//INDEX ON  DTOS(REG->FECHA) + str(REG->NUM_LIB,5) TAG DOCFECHA FOR reg->Ent_sal="E"
OrdSetFocus("DOCFECHA")

GO BOTTOM

DEFINE DIALOG oDlg FROM 0, 0 TO 30 , 30 
    
      @ 10,10 XBROWSE oBrw SIZE 100, 190 PIXEL;
      COLUMNS "NUM_LIB","FECHA" of oDlg alias "REG";
      HEADERS "Nº Libro", "Fecha";
      COLSIZES 80, 80 LINES NOBORDER
    
  oBrw:NUM_LIB:cSortOrder := "DOCFECHA" // Da error

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

dbcloseall()

return nil


Agradeceria una ayuda

Saludos
FWH 20.12 BCC7
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM

Re: ïndice compuesto número + fecha

Posted: Fri Mar 26, 2021 06:59 AM
En cuanto a la recomendación de Rao me lanza este error:

I advised
Code (fw): Select all Collapse
oBrw:NUM_LIB:cSortOrder := "DOCFECHA"

because in your sample, NUM_LIB was the header of the first column.
oBrw:NUM_LIB means the column which has the header "NUM_LIB".
This would definitely work for the first sample you posted

My mistake is that I thought you know this much and expected that you would suitably

Naturally, it throws an error if you change the name of the column header.

What I mean is
Code (fw): Select all Collapse
oCol:cSortOrder := <index-tag-name>

where oCol is the column on which you want to sort and <index-tag-name> is the tag name of your index.

In your second example, use
Code (fw): Select all Collapse
  oBrw:aCols[ 1 ]:cSortOrder := "DOCFECHA"
Regards



G. N. Rao.

Hyderabad, India
Posts: 84
Joined: Wed Oct 24, 2007 12:48 PM

Re: ïndice compuesto número + fecha

Posted: Fri Mar 26, 2021 07:50 AM
Hola, a ver si te sirve esto

Code (fw): Select all Collapse
INDEX ON STR(YEAR(REG->FECHA),4) + STR(REG->NUM_LIB,5) + DTOS(REG->FECHA) TAG DOCFECHA
Posts: 152
Joined: Mon Feb 13, 2006 08:23 PM

ïndice compuesto número + fecha [SOLUCIONADO]

Posted: Fri Mar 26, 2021 07:01 PM

Gracias, Gmart, tu solución funciona. Gracias también a Rao por su interés.

Saludos

FWH 20.12 BCC7

Continue the discussion