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 27-03-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Smile Seleccionar registro de un DBGrid (Solucionado)

Estimados amigos:

Una vez más recurro a su sabiduría y comprensión.
Tengo en un Form un DBGrid que apunta a una tabla (Personas). Desde este form llamo a otro form de manera modal, que posee un buscador utilizando un ADOQuery el que me entrega datos de otra tabla (Caracteres) que se encuentra en una relación maestro-detalle con la primera. Quisiera que en el evento oncellclick del form de búsqueda se activara el registro correspondiente del DBGrid del form principal y se cerrara el de búsqueda.
¿Puede alguien por favor ayudarme con el código necesario?

Saludos y muchas gracias

Última edición por radenf fecha: 30-03-2009 a las 02:00:21. Razón: Por haber solucionado el problema
Responder Con Cita
  #2  
Antiguo 27-03-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Desde el form1 llamas al segundo de esta forma:

Código Delphi [-]
  // Show
  Form2.ShowModal;
  // Recuperamos el texto o lo que quiereas del segundo form
  // Nos aseguraremos de que no se haya destruido (*1*)
  Edit1.Text := Form2.RetVal;
  // Lo liberamos nosotros (*2*)
  Form2.Free;

En el form2 creamos una propiedad para guaradar el dato:

Código Delphi [-]
      property RetVal:string read FRetVal write FRetVal;

Al cerrar el segundo form, guardamos el valor para luego consultarlo

Código Delphi [-]
  // Nos guardamos el valor en la propiedad para que luego lo consulte form1
  Self.FRetVal := Edit1.Text;
  // cerrar
  ModalResult := mrOk;

Muy imprtante que no se destruya el form2 al cerrar, ya que el form1 debe consultar el valor (*1*) y ya se encargará de destruirlo form1 (*2*)

Código Delphi [-]
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caHide;
end;

Creo que eso es lo que necesitas, en tu caso deberás quedarte con la referencia al registro selecionado y al volvar activarlo en tu Grid.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 27-03-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Gracias Neftali ,lo voy a probar.
Me queda una duda. Tú haces referencias a Edit1, pero yo quiero seleccionar desde un DBGrid con el evento oncellclick. ¿Cómo acoplo ambos?

Saludos y muchas gracias
Responder Con Cita
  #4  
Antiguo 27-03-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.285
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
En tu caso te quedas con el dato relevante del registro (Clave foránea de latabla personas, por ejemplo) que te permitirá localizar el registro seleccionado en la primera.
Al volver, deberás hacer esa búsqueda.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 29-03-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Estimado Neftali :

No logro hacer funcionar lo que me has propuesto.
¿No existe otro modo para activar en un grid lo seleccionado en otro?

Sludos y gracias
Responder Con Cita
  #6  
Antiguo 29-03-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
He logrado extraer los datos que me entrega la consulta con Query del FormBuscador en un Edit en el Form principal mediante el siguiente código:

Código Delphi [-]
FormPrincipal.Edit1.Text:=Query1.FieldbyName('Nombre').AsString;
¿Cómo puedo hacer la operación inversa y que los datos del Edit se representen en el DBGrid del Form principal, ya que son los mismos?

Saludos y gracias

Última edición por radenf fecha: 30-03-2009 a las 02:08:03.
Responder Con Cita
  #7  
Antiguo 30-03-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
He logrado solucionar mi problema.
Adjunto el código por si pudiera servir a alguien más. Mi programa compila y ejecuta lo requerido sin problemas. Si hubiese algún error en este código, agradezco las correcciones.

Código Delphi [-]
procedure TBuscador.DBGrid1CellClick(Column: TbsColumn);
begin
FormPrincipal.Tabla1.Edit;
FormPrincipal.Tabla1.Locate('Nombre',Query1.FieldValues['Nombre'],[]);
Buscador.Close;
end;

Agradezco la ayuda prestada por Neftali que puso una luz en el camino.

Saludos a todos

Última edición por radenf fecha: 30-03-2009 a las 03:36:41.
Responder Con Cita
  #8  
Antiguo 01-04-2009
Avatar de paladincubano
paladincubano paladincubano is offline
Miembro
 
Registrado: jul 2007
Posts: 147
Poder: 17
paladincubano Va por buen camino
Cita:
Empezado por radenf Ver Mensaje
He logrado solucionar mi problema.
Adjunto el código por si pudiera servir a alguien más. Mi programa compila y ejecuta lo requerido sin problemas. Si hubiese algún error en este código, agradezco las correcciones.

Código Delphi [-]procedure TBuscador.DBGrid1CellClick(Column: TbsColumn); begin FormPrincipal.Tabla1.Edit; FormPrincipal.Tabla1.Locate('Nombre',Query1.FieldValues['Nombre'],[]); Buscador.Close; end;


Agradezco la ayuda prestada por Neftali que puso una luz en el camino.

Saludos a todos
Para Localizar un registro en la tabla no es necesario abrirla para la edicion.
FormPrincipal.Tabla1.Edit; está de mas. Puede traerte problemas.
Responder Con Cita
  #9  
Antiguo 01-04-2009
Avatar de radenf
radenf radenf is offline
Miembro
 
Registrado: oct 2007
Ubicación: Viña del Mar,Chile
Posts: 608
Poder: 17
radenf Va por buen camino
Gracias paladincubano , voy a seguir tu consejo y corregir mi código.

Saludos
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
Seleccionar primer y ultimo registro Jose Roman Firebird e Interbase 14 19-08-2008 20:35:46
Seleccionar el ultimo registro de un campo juangabriel1786 MySQL 2 25-08-2007 04:35:32
No seleccionar un registro en un dbgrid m8estrella83 Varios 2 13-09-2006 01:22:37
seleccionar solo un registro m8estrella83 SQL 8 07-08-2006 08:51:12
Seleccionar un registro de un DBGRID luxus Conexión con bases de datos 1 01-08-2006 02:25:03


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


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