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)
-   -   como obtener el recno de una tabla access (https://www.clubdelphi.com/foros/showthread.php?t=11048)

carlosmoralesm 04-06-2004 04:16:18

como obtener el recno de una tabla access
 
Hola compañeros

quisiera saber como se puede obtener el numero de registro de una tabla BDE
conectada a una base de datos en access ya que al pedir el recno me manda

-1

x:= table1.recno;

resultado = -1

de antemano gracias a todos

weke 04-06-2004 08:04:07

Buenas!

Yo lo he probado con query, pero supongo que la tabla también tendrá esa propiedad.
Código Delphi [-]
numero.Text:=inttostr(Query1.RecordCount);

Espero que te sirva para solucionar el problemilla.

Saludos!!!!

carlosmoralesm 04-06-2004 19:52:29

Gracias Weke

pues ya probe con un query y me regresa el mismo -1 no se si haya algo que hacer en especial en las tablas para que regresen el numero de registro.

__marcsc 04-06-2004 20:01:14

Creo recordar que en ADO la propiedad RecNo solo funciona con un cursor de tipo clStatic o clDynamic. Qué tipo de cursor tienes en tu tabla/query?

carlosmoralesm 04-06-2004 21:53:12

Estoy usando BDE no ADO y eso del cusrsor mmmmm no estoy seguro

¿donde puedo checarlo?

Gracias

__marcsc 04-06-2004 22:27:32

Hola,

perdona, supuse (erróneamente) que al usar access también utilizarías ADO. Si mal no recuerdo en BDE sólamente puedes trabajar con cursores cliente, y de hecho tampoco tendría mucho sentido en Access dado que no es un motor cliente/servidor. (lo que pasa que al conectarte a Access via ADO puedes cambiar el tipo de cursor, lo cuál haría que te funcionase o no la propiedad RecNo)

Bueno, no me enrollo más... Creo recordar que no todos los drivers, y menos los de BDE, soportan correctamente la propiedad RecNo. Simplemente podría ser que estuviese pasando eso. Te propongo una prueba. Por qué no intentas acceder a una tabla Paradox y lo pruebas? En Paradox incluso puedes posicionarte en un registro determinado asignando un valor a la propiedad RecNo.

A ver si es eso... Un saludo!

roman 04-06-2004 22:30:31

Por si interesa. Acabo de hacer pruebas y es tal como dice marcsc. Con BDE no funciona (mejor sería decir, no está implementada) la propiedad RecNo pero con ADO funciona perfectamente.

// Saludos

carlosmoralesm 04-06-2004 22:34:08

Gracias marcsc

si en paradox si funciona el problema es que se bloquean muy facilmente las tablas y pierden integridad por eso emigre a access, esperando que funcionara mejor pero ya veo algunas limitantes, ¿habra alguna otra base de datos donde funcionen bien los punteros como en paradox?

o alguna forma de saber en que registro estoy parado en la base de datos

Sirkius 04-06-2004 22:40:38

Yo siempre he utilizado un campo autonumerico cuando trabajaba con access. Es lo más sencillo excepto si borras registros por enmedio, entonces se fastidia la cosa.

__marcsc 04-06-2004 22:43:33

Hola de nuevo,

los problemas que comentas son los típicos de Paradox. Se sobrevive a ellos gracias a algunas utilidades que existen (y que imagino que conoces) . De todos modos yo prefiero Access a paradox...

Lo que no me gusta demasiado es BDE. No tienes la posibilidad de pasarte a ADO? Tampoco nos engañemos, ADO dista de ser perfecto, pero, una vez más, lo prefiero a BDE. Con Access lo he probado en alguna aplicación pequeña y no he tenido problemas.

Sobre lo de saber la posición del registro en la tabla... Pues depende de la situación. Iterando sobre la tabla te será fácil saber el número de registro. Suponiendo que la tengas enlazada a un DBGrid, también puedes hacer alguna chapuzilla para saber la fila del DBGrid en la que te encuentras y quizás pueda servirte. También puedes montarte algún tipo de SQL.

Si nos pones un poco en antecedentes quizás podamos darte alguna solución. Independientemente de esto, puedes considerar el cambio de BDE a ADO que (en mi opinión) ya es una mejora.

Saludos.

EDIT: Se me olvidaba! Roman, gracias por tu verificación empírica :)

carlosmoralesm 04-06-2004 23:34:31

Cambiar a ADO es muiy dificil puesto que tengo poco conocimiento de su manejo y ademas ya tengo mucho desarrollo en BDE y bueno lo que estoy haciendo es ABC de una base de datos donde al dar doble click en un grid me abre la pantalla de actualizacion del registro pero debo de verificar que no se repita el nombre de un dispositivo.

__marcsc 06-06-2004 23:05:54

Bueno, como todo nuevo en esta vida, al principio cuesta más que lo que ya conoces, pero ADO es una tecnología que no tiene nada de particular y que, una vez te sabes los dos o tres truquillos, no tiene nada de difícil.

Evidentemente yo no estoy hablando de pasar lo que ya tienes a ADO, lo que digo es que si tienes que empezar algun proyecto nuevo, puedes plantearte utilizarlo.

Con ésto no quiero convencerte de nada, simplemente te comento que, en mi experiencia personal, el cambio de BDE a ADO ha sido muy positivo.

Un saludo :)

ramiretor 07-06-2004 20:33:02

Hola:
No sé si te sirva pero a mi me ha pasado con BDE que el número de registros que tiene el DataSet me regresa -1, yo lo he arreglado (pero esto no es muy eficiente que digamos) haciendo lo siguiente:

Código:

...
query.open;
query.last;
x:= query.RecordCount;
...

A lo mejor asi puedes recuperar el registro en el que te encuentras
Espero te sirva de algo
Saludos a todos

carlosmoralesm 07-06-2004 22:38:22

Grcacias marcsc ya cambie a ADO el sistema y no represento gran problema

ademas de que funciona mucho mejor y mas rapido

Te agradezco la atencion y los tips


La franja horaria es GMT +2. Ahora son las 23:27:12.

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