Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ayuda, cantidad de registros de una consulta anda cuando quiere (https://www.clubdelphi.com/foros/showthread.php?t=75579)

Patricio 03-09-2011 17:02:56

ayuda, cantidad de registros de una consulta anda cuando quiere
 
gente, mil disculpas, pero me pasa esto, paso una consulta como parametro a un procedimiento, si la consulta tiene pocos registros 8, 10 ... anda todo bien, ahora si la consulta tiene 21 registros, cuando los va a contar me dice que tiene -1, y despues no anda nada, es raro, porque o anda o no.
Yo paso la consulta (sqlmensajes) asi

DumpWord(sqlmensajes, WordDocument1);

y en el procedimiento hace esto (Dataset es el sqlmensajes)

DataSet.close;
DataSet.Open;
try
RowCount := DataSet.RecordCount;

y ese RowCount tira -1 cuando tiene mas de 20 registros o el numero correcto si es menor.

alguna sugerencia porque se me quemaron los papeles.

ecfisa 03-09-2011 17:36:48

Hola Patricio.

Borré el segundo mensaje de tu post anterior ya que tiene el mismo contenido que este. Por favor en lo posible evita duplicar mensajes.

Saludos y gracias por tu colaboración.

Patricio 04-09-2011 15:58:39

gracias
 
si, yo lo quise eliminar y no pude. Alguna idea porque me tira mal la cantidad de registros?

Casimiro Notevi 04-09-2011 16:01:05

No somos adivinos, si no podes código fuente... :confused:

Patricio 04-09-2011 16:08:45

no se si no son adivinos, son unos champion
 
casimiro gracias por tu aporte, el tema es que ese es el codigo de arriba, yo estoy viendo un grid, con la consulta sqlmensajes, y al dar un click en un boton, hace el Dumpword y luego en ese procedure el open, close del dataset.

Me desconcentra que si la sql tiene pocos registros ande bien ese procedure, y si tiene 20 registros o mas no

El Dumpword recibe como primer parametro un dataset, yo le pongo directamente sqlmensajes asi, sin ningun parametro, podra ser por eso? pero no tendria que funcionar nunca, no a veces

Casimiro Notevi 04-09-2011 19:29:55

Bien, pero ese sqlmensajes (si es un dataset) debe tener un sql.

Chris 04-09-2011 22:17:33

Una consulta SQL normalmente no devuelve el número de registros que devolvió la consulta. Cuando llamas a RecordCount sobre un componente que hereda de TSQLQuery o similares, el número que devuelven es la cantidad de registros que han sido descargados.

La única explicación que se me puede ocurrir a tu problema, es que no estés descargando (Fetch) o mostrando algún registro antes de llamar a la función RecordCount. En este caso, lo único que puedes hacer es, en una consulta aparte, preguntar el número de registros que debe devolver la consulta, o bien, recorre la tabla de resultados hasta llegar al último registro y luego llama a la función RecordCount.

Saludos,
Chris

defcon1_es 05-09-2011 10:52:51

Como indica Chris,
cuando llamas a RecordCount sobre un componente que hereda de TSQLQuery o similares, el número que devuelven es la cantidad de registros que han sido descargados (fetch).
prueba esto:

Código Delphi [-]
  DataSet.close;
  DataSet.Open;
  DataSet.Last;
  try
    RowCount := DataSet.RecordCount;


La franja horaria es GMT +2. Ahora son las 02:00:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi