![]() |
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 ;) |
Prueba con:
select count(*) from Clients Un Saludo. |
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 |
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 |
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 |
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 |
Mmmmmm... algo hiciste diferente!!!
¿Pusiste la consulta y luego accedes al rownum de forma similar a esta?: Código:
iRegistro := Query1.FieldByName('ROWNUM').AsInteger; |
Pues se supone que asi debería de ser o no?
Saludos :) |
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! |
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