Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
dbgrid a dbedit

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.
Código Delphi [-]
 
  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.

Última edición por ecfisa fecha: 04-04-2011 a las 19:20:26. Razón: Etiquetas [DELPHI],[/DELPHI]
Responder Con Cita
  #2  
Antiguo 04-04-2011
santus santus is offline
Miembro
 
Registrado: ene 2006
Posts: 130
Poder: 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
  #3  
Antiguo 04-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola santus muchas gracias por responder.

Con respecto a la primera solucion hice lo que me aconsejaste: cree el formulario, actualice los datos y recien los mostré, pero sigue sin hacer nada, muestra el form2 pero los dbedit estan vacios.¿Cual puede ser el problema?
La segunda solución no la entendi del todo, tengo que poner un nuevo adoquery en el form2, y como le indico a los distintos dbedit los datos que deben recibir.
Podrias explicarme la segunda solución con un poquito mas de detalle.

Nuevamente Muchas Gracias
Responder Con Cita
  #4  
Antiguo 04-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola lucas05.

Si no entiendo mál la lógica que queres aplicar, no tendrías que hacer ningún tipo de asignación a la propiedad Text del TDBEdit, bastaría con que tengas asignadas las propiedades DataSource y DataField.

En el ejemplo, para mayor claridad las voy a asignar en tiempo de ejecución, pero es más fácil aún desde el Object Inspector.

Form1:
Código Delphi [-]
...
uses unit2;

procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  with TForm2.Create(Self) do
  try
    Showmodal;
  finally
    Free;
  end
end;
...

Form2:
Código Delphi [-]
...

uses unit1;

(* El código del evento OnShow lo evitas si previamente asignas 
   las  propiedades mediante el Object Inspector *)
procedure TForm2.FormShow(Sender: TObject);
begin
  DBEdit1.DataSource:= Form1.DataSource1;
  DBEdit1.DataField:= 'descripcion';
  DBEdit2.DataSource:= Form1.DataSource1;
  DBEdit2.DataField:= 'precio';
  ...
end;
...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 04-04-2011 a las 20:41:50.
Responder Con Cita
  #5  
Antiguo 05-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola ecfisa, gracias por responder, tenes razón con solo asignar las propiedades DataSource y DataField (no utilizo nada de codigo)
el problema se soluciona pero sienpre y cuando el dbgrid y los dbedit estén en el mismo Form.
Mi problema es que el dbgrid está en el form 1 y los dbedit en el form2.
En este caso también asigno las propiedades DataSource y DataField en los dbedit (del form2) pero solo muestra un unico registro el primero.
¿No sé si me esta faltando conectar algo? (En el form2 lo unico que tengo son los dbedit)

Puedes ayudarme.

Muchas Gracias.
Responder Con Cita
  #6  
Antiguo 09-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola lucas05.

Partamos suponiendo que tenés el DataSet y el DataSource en Form1 junto con el DBGrid.

Y en el Form2 tenes los DBEdits correspondientes al DataSet.

Si en cada propiedad DataSource de cada DBEDit del Form2 asignas:
Código Delphi [-]
  DBEdit1.DataSource:= Form1.DataSource1; (*)
  DBEdit1.DataField:= 'nombre_del_campo';
Tenés que ver reflejado los campos en Form2, o en cualquier otro form. Por que en la asignacion del DataSource (*) de los DBEDits estas utilizando el declarado en Form1.

Para lograr eso tenes que hacer una referencia circular, ya que Form1 debe poder ver a Form2 para llamarlo y Form2 conocer a Form1 para poder utilizar el DataSource allí declarado. Como te puse en el primer mensaje.

Si el DataSource reside en un DataModule, sería necesario que Form1 y Form2 lo incluyeran para poder utilizar el DataSet y DataSource declarados allí, que por otro lado es mejor manera de trabajar.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-04-2011 a las 14:22:03.
Responder Con Cita
  #7  
Antiguo 11-04-2011
lucas05 lucas05 is offline
Miembro
 
Registrado: ago 2010
Posts: 116
Poder: 14
lucas05 Va por buen camino
Hola ecfisa, gracias por tu solución (es lo que buscaba). Funciona muy bien.

Muchas Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Asignarle el Valor de un DBEdit a un DBGrid dmagui Firebird e Interbase 6 03-10-2011 16:40:48
Filtro DBEdit y DBGrid Lenny Varios 4 11-10-2010 09:16:15
filtrar el contenido de un dbgrid con un dbedit characo Conexión con bases de datos 2 29-03-2010 15:13:33
Pasar de DBGrid a DBEdit nachosan Varios 4 27-09-2007 16:55:05
Componentes DBedit+Dbgrid en QuickReport karlaoax Impresión 4 20-08-2007 05:04:50


La franja horaria es GMT +2. Ahora son las 11:05:50.


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
Copyright 1996-2007 Club Delphi