Ver Mensaje Individual
  #2  
Antiguo 04-04-2011
santus santus is offline
Miembro
 
Registrado: ene 2006
Posts: 130
Reputación: 19
santus Va por buen camino
Cita:
Empezado por lucas05 Ver Mensaje
Hola, estoy haciendo un programa en Delphi y MySQL.
En el Form1 utilizo DBGrid, DataSource, ADOQuery, ADOConnection.
En el Form2 utilizo varios DBEdit.
Lo que estoy intentando pero no puedo, es que al hacer doble clic en cualquier registro de la grilla los datos de ese registro pasen a los dbedit del form2.
Este es el codigo que pongo en el OnDblClick de la grilla.

Form2:= TForm2.Create(self);
Form2.Showmodal;
Form2.Free;
Form2.DBEdit1.Text:=Form1.ADOQuery1.FieldValues['descripcion'];
Form2.DBEdit2.Text:=Form1.ADOQuery1.FieldValues['precio'];

Podrian ayudarme

Muchas Gracias.
Fijate que has creado el formulario, y mostrado antes de actualizar los datos de tu segundo form.
Debería quedarte algo así:

Código Delphi [-]

Form2:= TForm2.Create(self);
Form2.DBEdit1.Text:=Form1.ADOQuery1.FieldValues['descripcion'];
Form2.DBEdit2.Text:=Form1.ADOQuery1.FieldValues['precio'];
Form2.Showmodal;
Form2.Free;

Cuando es un control tipo DB lo mejor es trabajar a nivel dataset y no con las propiedades .text del DBEdit o sea trabajar siempre con la tabla en la que está enlasado el DBEdit y automáticamente se mostrará el texto.

Supongamos que el Form2.DBEdit1 tiene como propiedad dataset Form2.ADOQuery2, quedaría algo asi:

Código Delphi [-]

Form2:= TForm2.Create(self);
Form2.ADOQuery1.FieldByName('descripcion').AsString:=Form1.ADOQuery1.FieldByName('descripcion').AsSt  ring;
Form2.ADOQuery1.FieldByName('precio').AsString:=Form1.ADOQuery1.FieldByName('precio').AsString;
Form2.Showmodal;
Form2.Free;

Si arroja un error de tipo "Dataset is not in edit mode", entonces deberías preguntar si el dataset está en modo de edición y sino es así enviar un append o edit según corresponda.

Aquí un ejemplo:
Código Delphi [-]
    if not (dataset.State in [dsInsert,dsEdit])
      then dataset.Append;

Espero haberte sido de ayuda. Saludos.
__________________
"El ordenador nació para resolver problemas que antes no existían." Bill Gates.
Responder Con Cita