Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Numero de registro en un TQuery (https://www.clubdelphi.com/foros/showthread.php?t=3966)

ramiretor 26-09-2003 00:58:36

Numero de registro en un TQuery
 
Hola foro:
Tengo un problema que se me ha presentado varias veces nunca he sabido la causa y quiza a alguno de ustedes también se le ha presentado algo igual.

Trabajo en una aplicación con Oracle 8, BDE con driver nativo y delphi 7 ( aunque esto se me ha presentado tb en delphi6). Bueno la cuestión es que abro el cursor y el número del registro siempre me da -1 y RecordCount = -1 , por ejemplo si Consulta es el TQuery, las expresiones:

Consulta.RecNo
Consulta.RecordCount

Siempre regresan -1. Lo he arreglado con anterioridad haciendo esto:

Consulta.Last;
....Consulta.RecordCount;

Pero ahora no puedo saltar hasta el último registro para contar el total de registros ya que me interesa conocer el número del registro en el que estoy actualmente. Sé que hay otras maneras para solucionarlo pero se me hacen de la era de las cavernas.

Si alguien puede ayudarme se lo agradeceré un saludo y un abrazo a todos los foristas

;)

marcoszorrilla 26-09-2003 08:20:11

Prueba con:
select count(*)
from Clients

Un Saludo.

roman 26-09-2003 08:25:24

No todos los datasets dan la información acerca del número de registros ya que no lo saben sino hasta que se recorren todos ellos como haces cuando usas Last. Esto es ineficiente ya que obligas al servidor a recorrer todos los registros.

Si consultas la ayuda de Delphi verás que por default TDataSet regresa -1.

Lo que te indica marcoszorrilla me parece que es lo más adecuado.

// Saludos

ramiretor 26-09-2003 17:57:12

Hola:
Muchas gracias por contestar. El problema es que el número de registros que trae el cursor es fácil de saber pero si tengo un componente TDBNavigator el usuario recorre el cursor y le debo marcar el número del registro en el que se encuentra a parte del número de registros totales.

A ver si me pueden ayudar

Muchas gracias de todas maneras

Saludos

delphi.com.ar 27-09-2003 00:27:10

Porqué no agregas el RowNum a tu consulta... de esta manera sabrás en que registro estas parado, si tener que inmiscuirte en el código de tu componente de conexión!
Código:

SELECT ROWNUM, APELLIDO, NOMBRE
FROM USUARIO
...

Saludos!

ramiretor 27-09-2003 02:26:51

Hola:
Gracias por contestar, fijate que hice lo que me aconsejaste y sigue el mismo problema, el valor de rownum en cualquier registro en el que esté parado me regresa -1, creo que no hay manera de solucionarlo excepto hacerlo a pie.

:confused:

Muchas gracias de todos modos
Un abrazo

delphi.com.ar 27-09-2003 02:35:44

Mmmmmm... algo hiciste diferente!!!
¿Pusiste la consulta y luego accedes al rownum de forma similar a esta?:

Código:

iRegistro := Query1.FieldByName('ROWNUM').AsInteger;

ramiretor 29-09-2003 16:29:10

Pues se supone que asi debería de ser o no?

Saludos

:)

delphi.com.ar 29-09-2003 16:33:15

Si, esa sería la forma. Pero si eso te falla, desconfiaría terriblemante de tu herramienta de conexión. Prueba que valor trae cuando haces una consulta a una tabla que tiene campos numéricos.

Saludos!

ramiretor 29-09-2003 16:38:41

Lo voy a probar como me dices y luego te digo gracias

Saludos
:D


La franja horaria es GMT +2. Ahora son las 13:24:59.

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