PDA

Ver la Versión Completa : Query, como saber el numero de Registros ?


Pascual Montes
09-12-2004, 03:00:15
hola amigos, Sabes tengo una rutina en donde hago un filtro por medio
de un query, y necesito saber cuantos registros cumplieron la condicion
de ese query, como puedo obtener ese dato ?

mi rutina es esta:


DATa.q1.close;
DATa.Q1.SQL.Clear;
DATA.q1.SQL.Add('SELECT * FROM '+#34+cruta+#34+' WHERE fecha between '+#34+sfechaini+#34+' and '+#34+sfechafin+#34' ORDER BY numempleado');
DATA.Q1.OPEN;

y en otro procedimiento es lo siguiente :
while not data.q1.Eof DO BEGIN
CNT:=CNT+1;
CADENA:='9999000000@'+copy(edit1.text,1,1);
cad2:=RELLENACONCEROS(data.TCHECANumempleado.VALUE,8);
CAD3:=COPY(CAD2,8,1);
CAD2:=COPY(CAD2,3,5);
CADENA:=CADENA+CAD2+CAD3;

Present:= Now;
DecodeDate(data.q1Fecha.value, Year, Month, Day);
CAD2:=IntToStr(MONTH);
CAD2:=RELLENACONCEROS(CAD2,2);
CADENA:=CADENA+CAD2;
CAD2:=IntToStr(Day);
CAD2:=RELLENACONCEROS(CAD2,2);
CADENA:=CADENA+CAD2;
DecodeTime(data.q1Hora.value, Hour, Min, Sec, MSec);
CAD2:=IntToStr(HOUR);
CAD2:=RELLENACONCEROS(CAD2,2);
CADENA:=CADENA+CAD2;
CAD2:=IntToStr(MIN);
CAD2:=RELLENACONCEROS(CAD2,2);
CADENA:=CADENA+CAD2+'1';
WRITELN(F, Cadena);
data.q1.Next;
END;
closeFILE(f); // CERRAR EL ARCHIVO MUY IMPORTANTE
memo1.Lines.Add('Archivo Reloj.dat Creado con Exito');
memo1.Lines.Add('Para Incorporarlo o Importarlo de su');
memo1.Lines.Add('Sistema de Nomina, Entre y Ejecute ese Proceso ');
biniciar.enabled:=false;
bpreparar.SetFocus;


Te agradezco mucho tu ayuda. :D
Saludos

marcoszorrilla
09-12-2004, 07:24:01
Depende del motor que estes utilizando:

xxx:=DATa.q1.RecordCount;


En otros tendras que ejecutar la instrucción SQL:
Count
Un Saludo.

defcon1_es
09-12-2004, 09:54:57
Hola,
quisiera puntualizar que para que RecordCount tenga el valor correcto,
es decir, el número total de registros de la query, debes ejecutar previamente el método Last de esa query para asegurarte.

Salu2.

Neftali [Germán.Estévez]
09-12-2004, 10:23:45
Otra opción, es lanzar la misma sentencia que tienes, pero cambiando el * por Count(*) y eliminando el "ORDER BY"; Una variante mejor es en lugar de Count(*), porner Count(Campo_clave_primaria).
En tu caso:
DATA.q1.SQL.Add('SELECT Count(*) AS NUMREG FROM '+#34+cruta+#34+' WHERE fecha between '+#34+sfechaini+#34+' and '+#34+sfechafin+#34);

Te devoverá un único registro con un campo NUMREG con el número de registros.

roman
09-12-2004, 14:27:57
Hola,
quisiera puntualizar que para que RecordCount tenga el valor correcto,
es decir, el número total de registros de la query, debes ejecutar previamente el método Last de esa query para asegurarte.


Esto depende de la base que esté usando. En la mayoría de casos, con servidores SQL, así es, pero en base de buró como Paradox o DBase no es necesario.

Y aprovechemos también para aclararle a Pascual Montes que en el caso de servidores SQL, la mejor opción será la del COUNT que ya señalan Marcos y Neftali pues el uso de Last ocasiona que todos los registros sean traídos desde el servidor con el respectivo decremento en el desempeño.

// Saludos

Pascual Montes
09-12-2004, 17:14:17
Perfect, gracias a su ayuda ya resolvi este detalle de saber
el numero de registros, me sirvio recordcount .

:D