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