FoxPro/Visual FoxPro - hacer un filtro por fecha y contar el filtro

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 8 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

hacer un filtro por fecha y contar el filtro

Publicado por Oscar (3 intervenciones) el 08/02/2018 16:41:55
Hola, tengo una consulta ya que soy novato en este lenguaje y desde ya agradecido por la ayuda:
Estoy tratando de hacer un filtrado mediante un "olecontol date picker " , luego lo cuente el registro filtrado y me lo arroje en un txt de lo cual ya me a salido con el siguiente codigo que les adjunto :

1
2
3
4
5
6
7
8
select * from datos where fecha = thisform.olecontrol1.OBJECT.Value order by fecha into cursor cresultado
contado=reccount("cresultado")
 
if reccount("cresultado") > 0
	thisform.txtdbf.Value=contado
else
	MESSAGEBOX("Conte  Fallido")
ENDIF

Me lo realiza correctamente pero el problema es que la tabla contiene mas de 30 mil registro por lo cual se demora unos 3 min en arrojarme el resultado por lo cual estoy buscando una mejor opcion en verdad les agradeceria por que pude leer que hay otra manera con codigo neto de vfp pero como dije al inicio soy novato aun en este lenguaje y les agradeceria mucho que me pudieran ayudar.
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: 9
Ha disminuido su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

hacer un filtro por fecha y contar el filtro

Publicado por Javier (271 intervenciones) el 08/02/2018 17:55:21
Hola. La tabla Datos está almacenada localmente o en red?
En tablas locales no he tenido problemas con la respuesta en tiempo, incluso en tablas de 3 millones de registros.
Prueba con el comando COUNT:

1
2
3
SET OPTIMIZE ON &&habilita optimizacion rushmore.
SELECT DATOS && Si ya está abierta.
COUNT TO contado FOR  fecha = thisform.olecontrol1.OBJECT.Value order

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

hacer un filtro por fecha y contar el filtro

Publicado por Rick Oscar (3 intervenciones) el 08/02/2018 18:36:04
muchas gracias por la ayuda, solo una pequeña corrección en el codigo que me envia ya que al correrlo tal cual me lo envia me da error de sintaxis por lo cual decidi quitarle el "order" y me corrio normal
Pero aun sigue siendo lento al darme el resultado casi igual que el codigo anterior que le puse y la tabla se encuentra localmente.
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.370
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

hacer un filtro por fecha y contar el filtro

Publicado por Fidel José (642 intervenciones) el 08/02/2018 19:39:01
Si solamente quieres saber cuántos registros hay en una fecha, puedes probar lo siguiente:
1
2
3
4
ldFecha = thisform.olecontrol1.OBJECT.Value
SELECT CNT(*) FROM DATOS WHERE FECHA = m.ldFecha AND !DELETED() INTO array laFecha
? _tally         && contador de registros procesados
? NVL(laFecha[1,1],0)       && valor recontado de coincidencias

Deberían dar el mismo resultado.
Sería conveniente que la tabla tenga un índice por el campo fecha.
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