PDA

Ver la Versión Completa : Numero de registro en un TQuery


ramiretor
26-09-2003, 00:58:36
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!
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?:

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