Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MySQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=21)
-   -   Componentes ADO + ODBC + Mysql (https://www.clubdelphi.com/foros/showthread.php?t=94492)

tulio 04-03-2020 21:51:36

Componentes ADO + ODBC + Mysql
 
Hola Compañeros

Les cuento que estoy usando Componentes ADO conectados por ODBC a una base de datos Mysql en un host.
Puedo leer las tablas, pero usando Tadotable cuando hago

Código Delphi [-]
If tablas.medidores.locate('nro_usuario',strtoint(eusuario.text),[]) then

me da true que lo encontro, pero no en el formulario del ABM que tengo linqueado a unos DBEDIT, no
mueve el PUNTERO hacia el registro que encontro y queda parado en el top de la tabla.

Si se les ocurre algo se lo agradezco

Saludosss

Neftali [Germán.Estévez] 05-03-2020 11:12:12

Cita:

Empezado por tulio (Mensaje 536097)
me da true que lo encontro, pero no en el formulario del ABM que tengo linqueado a unos DBEDIT, no
mueve el PUNTERO hacia el registro que encontro y queda parado en el top de la tabla.

Es raro porque el Locate debería mover el puntero al pimer registro que coincide.
Revisa que los componentes del ABM estén apuntando al mismo Dataset (imagino que si) y lo otro que se me ocurre es que aunque ADO implementa el Locate, este no lo esté en el controlador ODBC que estás utilizando.

De todas formas, yo te recomendaría NO USAR el Locate para los ABM, puesto que hace un recorrido secuencial por toda la tabla.
En ese caso mejor una SQL por la clave primaria (o campo único en su defecto). TADOQuery con una SQL por con el nro_usuario (si este es único). Mucho más rápido y eficiente.

tulio 05-03-2020 11:33:22

Gracias Neftali

probé también con tADOquery y hace lo mismo, lo encuentra pero no lo instancia en el DBEDIT que apunta al mismo datasource del adoquery


saludoss

kuan-yiu 05-03-2020 11:51:42

¿Tendrás un disableControls antes del locate? Ejecuta paso a paso y asegúrate que no pasas por algo así.

Neftali [Germán.Estévez] 05-03-2020 11:58:26

Cita:

Empezado por tulio (Mensaje 536105)
probé también con tADOquery y hace lo mismo, lo encuentra pero no lo instancia en el DBEDIT que apunta al mismo datasource del adoquery


No puede ser.

Eso es que los compònentes no están bien "enganchados".
¿Puedes poner el código del ADOQuery que estás utilizando?
¿O hacer un ejemplo sencillo con un único form que lo reproduzca?


Si haces un TADOQuery que encuentre sólo 1 registro, y está conectado a los componentes visuales, no puede ser que estén viendo otros datos que no sean los de ese registro.

tulio 05-03-2020 15:08:03

Graciass
Les muestro lo que hice , despues del Locate le instancio a un label un campo y me trae el nombre del ususario buscado perfectamente, la Falla es que no se mueve el puntero en los DBEDIT del formulario, me queda en los debedit todos los datos del top de la tabla
Código Delphi [-]
 If tablas.t_usu_medidores.locate('nro_usuario',strtoint(eusuario.text),[]) then
      Begin
        label1.Caption:=tablas.t_usu_medidoresapellido.AsString; //Esto la hace perfecto

Saludos

tulio 05-03-2020 15:21:16

Tambien con un ADOquery me hace lo mismo, hago la busqueda, lo encuentra y lo instancia bien al valor en un label.text, pero no con los DBEDIT, como que es un problema del ODBC

Neftali [Germán.Estévez] 05-03-2020 18:56:38

Cita:

Empezado por tulio (Mensaje 536112)
Les muestro lo que hice , despues del Locate le instancio a un label un campo y me trae el nombre del ususario buscado perfectamente, la Falla es que no se mueve el puntero en los DBEDIT del formulario, me queda en los debedit todos los datos del top de la tabla


Eso tiene pinta de que los componentes Dbedit estan a puntando a otro TDatasource/TDataset.


La franja horaria es GMT +2. Ahora son las 10:50:13.

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