ïndice compuesto número + fecha [SOLUCIONADO]

ïndice compuesto número + fecha [SOLUCIONADO]

Postby Ramón J. » Wed Mar 24, 2021 7: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:

Image

¿Cómo lo podría hacer?

Un saludo
Last edited by Ramón J. on Fri Mar 26, 2021 7:03 pm, edited 1 time in total.
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: ïndice compuesto número + fecha

Postby leandro » 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

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1484
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: ïndice compuesto número + fecha

Postby nageswaragunupudi » Thu Mar 25, 2021 1: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:

Image

¿Cómo lo podría hacer?

Un saludo


Add this to your code:
Code: Select all  Expand view

oBrw:NUM_LIB:cSortOrder := "DOCFECHA"
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10295
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: ïndice compuesto número + fecha

Postby Ramón J. » Thu Mar 25, 2021 8: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:
Image

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

Image

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

Code: Select all  Expand view
#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
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: ïndice compuesto número + fecha

Postby nageswaragunupudi » Fri Mar 26, 2021 6:59 am

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

I advised
Code: Select all  Expand view

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: Select all  Expand view

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: Select all  Expand view

  oBrw:aCols[ 1 ]:cSortOrder := "DOCFECHA"
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10295
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: ïndice compuesto número + fecha

Postby gmart1 » Fri Mar 26, 2021 7:50 am

Hola, a ver si te sirve esto

Code: Select all  Expand view
INDEX ON STR(YEAR(REG->FECHA),4) + STR(REG->NUM_LIB,5) + DTOS(REG->FECHA) TAG DOCFECHA
gmart1
 
Posts: 80
Joined: Wed Oct 24, 2007 12:48 pm
Location: Alhaurin de la Torre (MALAGA)

ïndice compuesto número + fecha [SOLUCIONADO]

Postby Ramón J. » Fri Mar 26, 2021 7:01 pm

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

Saludos
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests