Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Pasar datos de un dbgrid a un dbedit (https://www.clubdelphi.com/foros/showthread.php?t=41294)

fran 12-03-2007 16:07:36

Pasar datos de un dbgrid a un dbedit
 
Hola a todos, he estado buscando info sobre esto pero no he sacado nada en claro, a ver si me podeis ayudar.

Tengo una base de datos de access que abro con ADOConnection, una ADOTable y un DataSource que aupnta a los dbedit donde muestra la informacion. Para hacer busquedas uso el ADOQuery que me muestra los resultados en un dbgrid que esta apuntado por el mismo datasource. Ahora lo que quiero hacer es que cuando señale una campo del dbgird me muestre esta info en los dbedit. Seria en Ondbclick del evento del dbgrid, pero no tengo muy claro que sentencia debo poner.
Si alguien me puede echar una mano....
Un saludo.

jhonny 12-03-2007 16:29:41

Ejemplo:
Código Delphi [-]
 
 
Edit1.Text := ADOQuery1.FieldByName('NombreDelCampoQueQuiero').Value;
//.Value lo puedes ajustar 
//según el tipo de dato, por ejemplo; .AsString, .AsInteger, .AsFloat

ContraVeneno 12-03-2007 16:30:33

El dgbrid es solo una representación gráfica de tu dataset enlazado. Lo que puedes hacer es enlazar tus DBEdit al mismo dataset que tienes en el dbgrid.

O utilizar el evento ondatachange de tu dataset.

Caral 12-03-2007 18:04:29

Hola
Perdonen pero es curioso:
Cita:

Escrito por Fran:
cuando señale una campo del dbgird me muestre esta info en los dbedit
La estupenda sentencia de jhonny, muestra los datos en un Edit.
Opino que con solo ligar el DBEdit al Datasource se vera el dato, sin mas.
Nota: pongo estos en negrilla para que se vea la diferencia de un simple Edit a un DBEdit que es donde se quiere mostrar la informacion, segun nuestro amigo fran.
Saludos

fran 12-03-2007 18:27:02

Exactamente, lo queiro pasar a un dbedit el cual lo tengo ligado al mismo datasource que el dbgrid xo supongo que habra que escribir algun codigo en OnDblClick del dbgrid o en OnCellClick imagino.
Muchas Gracias :rolleyes:

roman 12-03-2007 18:42:57

No tienes que escribir ningún código, ésa es la ventaja de este tipo de controles. Si no ves el dato es porque no están bien enlazados. Quizá el DataSource apunta a otro dataset, o quizá falta asignar la propiedad DataField del DBEdit. Pero, en resumen, todos los controles que apunten al mismo DataSource van a mostrar lo mismo sin necesidad de escribir ni una sóla línea de código.

// Saludos

ContraVeneno 12-03-2007 18:45:27

si esta bien enlzado, no tendrías porque escribir nada de código

jhonny 12-03-2007 19:16:28

Solo para que quede claro... El código que escribí te serviría en algún caso especial (Por ejemplo que por X o Y Razón decidiste no usar DBEdit , o que se yo...) pero definitivamente yo usaría un TDBEdit, a ver te explico porque... porque los DBEdit poseen una propiedad llamada DataSource y otra llamada DataField las cuales deberás enlazar a la información que quieres mostrar y listo... No tendrás que hacer nada mas para que muestre la información que deseas mostrar.

Nota: Una manera de hacerlo automaticamente sería arrastrando el campo desde el editor de campos del DataSet y como por arte de magia aparecerán un TLabel con un Caption igual al DisplayLabel del campo y un TDBEdit con las propiedades antes mencionadas ya "Amarradas".

fran 13-03-2007 00:01:04

Hum.... pues revisando las conexiones creo que esta todo bien...
Tengo un ADOConnection donde le doy la ruta de la base de datos, luego un ADOTable donde su propiedad de connection le indico el ADOConnection y en TableName pues me coje el nombre de la tabla. Y despues un DataSource donde en DataSet le indico el ADOTable y dentro de este en Connection el ADOConnection.
Despues ya tngo los DBEdit: En el DataField selecciono el nombre del campo que le corresponde, en DataSource selecciono el DataSource con el que estoy trabajando, dentro de esta propiedad, en dataset selecciono el ADOTable y dentro de esta otra en connection pues selecciono ADOConnection y su TableName.
Despues tengo el ADOQuery para las busquedas con Connection al mismo ADOConnection, DataSource al DataSource, dentro de este en DataSet a ADOTable y dentro de este Connection a ADOConnection (no se si el fallo andara por aqui).y ya en SQL pues el comando que hace la busqueda.
Y ya por ultimo tengo el DBGrid con el mismo DataSource, dentro de este DataSet a ADOTable y dentro de este Connection a ADOConnection y table name con su nombre de la Tabla.
Las Consultas y navegacion por la tabla me funcionan sin poblemas. Asi que no se dnd puede estar el fallo.

Estoy mirando tambien la opcion del TDBEdit, que pensaba que era lo mismo que el DBEdit. A ver si encuentro algo mas de info.
Muchas Gracias.

ContraVeneno 13-03-2007 00:19:53

Pues hasta donde yo se TDBEdit y DBEdit son la misma cosa

jhonny 13-03-2007 00:25:21

Cita:

Empezado por ContraVeneno
Pues hasta donde yo se TDBEdit y DBEdit son la misma cosa

Pues efectivamente si, son la misma cosa, Lo que pasa es que el Edit es la Instancia de el TDBEdit pero en la practica estamos hablando de lo mismo, quizá trato de decir el Edit y el DBEdit.

fran 13-03-2007 00:28:23

Ahm, entendi mal tu anterior pos jhonny

jhonny 13-03-2007 00:32:32

Cita:

Empezado por fran
Ahm, entendi mal tu anterior pos jhonny

mmm, Disculpa la confusión que te cree no fue mi intensión

Caral 13-03-2007 00:44:11

Hola fran
Para que todos salgamos de dudas, haz lo siguiente:
Dices que tienes un adotable y un adoquery, bien, ahora agarremos el que te interesa que tenga la informacion del DBEdit, ya lo tienes, bueno, supongamos que es el adoquery, como esta enlazado al adconnection, vera la tabla. bien.
Ahora dale doble click al adoquery, te saldra una pantallita pequeña, con el raton derecho pones add y seleccionas todas los campos de la tabla.bien.
Ahora coloca el raton en la campo que quieres que se vea en el DBEdit y arrastralo al form.
Y ya.
Saludos

fran 13-03-2007 10:38:33

Entonces puede que me sobre el adotable, no? con el adoquery me bastará? creo que ya entiendo, a ver si esta noche tengo tiempo de probar y os cuento. Muchas Gracias :D


La franja horaria es GMT +2. Ahora son las 04:42:03.

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