FoxPro/Visual FoxPro - Indexar

 
Vista:

Indexar

Publicado por JOSE ERNESTO (17 intervenciones) el 18/12/2013 16:25:32
Tengo una base de datos y la ordenop de la siguiente forma:
Index on fecha to movimientos
Me ordena los datos por fecha.
Quiero que por cada fecha me los ordene por fecha y por numero de facturas
Ordenarle al programa que me los ordene primero por fecha y luego por numero de factura
gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 18
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Indexar

Publicado por alexcoinc (40 intervenciones) el 18/12/2013 19:07:04
INDEX ON DTOC(FECHA)+FACTURA TO ARCHIVO

Siendo el campo fecha de tipo caracter

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Indexar

Publicado por Fidel José (558 intervenciones) el 18/12/2013 21:07:21
1) Para indexar campos tipo Date, se utiliza DTOS() (Convierte a cadena "AAAAMMDD" ).

Dicho sea de paso, mejor crea índices estructurales compactos. Tienes un solo archivo de índices que se llama igual que la tabla y no necesitas abrirlo: lo abre VFP automáticamente.

INDEX ON DTOS(FECHA)+FACTURA TAG IFEFAC

2) En realidad, lo que te conviene utilizar son, al menos dos etiquetas de índice
INDEX ON DTOS(FECHA) TAG INDFECHA
INDEX ON FACTURA TAG INDFACT
* También,
INDEX ON IDCLIENTE TAG INDIDC && Sobre el campo id de cliente.

A la hora de mostrar, creas un cursor. Si no quieres complicarte con agrupamiento, por el momento, puedes hacer
* Dia1 y Dia2 es el rango de fechas a mostrar
* RGFACT es la tabla registro de facturas

SELECT * FROM RGFACT WHERE FECHA BETWEEN DIA1 AND DIA2 INTO CURSOR MISFAC READWRITE
IF _tALLY=0
Messagebox("No hay facturas en el rango de fecha")
return
endif
SELECT MISFAC
INDEX ON DTOS(FECHA)+FACTURA TAG m_Indice
go top
browse
Si necesitas mostrar las facturas de 1 solo cliente entre dos fechas

cIdCliente=<<Id de cliente que se busca >>
SELECT * FROM RGFACT WHERE FECHA BETWEEN DIA1 AND DIA2 AND IDCLIENTE=cIdcliente ;
INTO CURSOR MISFAC READWRITE
IF _tALLY=0
Messagebox("No hay facturas de ese cliente en el rango de fechas")
return
endif
* y Luego
SELECT MISFAC
INDEX ON DTOS(FECHA)+FACTURA TAG m_Indice
GO TOP
BROWSE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar