Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-10-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Refrescar DBGrids

Hola muchachos, tengo un form con 3 DBGrids: Maestro/Detalle/Detelle
el tema es cargo la maestro y cuando se posicionan en un registro refresco la segunda y lo mismo con la tercera, el tema es que no puedo refrescar automaticamente la 2da y 3ra si ya estopy en un registro de la primera. En fin un trabalenguas y espero se entienda.

Si me posiciono sobre un registro de la 1ra, se actualiza la 2da y si me posiciono en un registro de la 2da. la tercera. Pero lo que quiero es que si tengo registros en las consultas q se posicione sobre el primero y acrualice automaticamente las restantes GRIDs. Como las querys estan en un DataModule no puedo acceder a los eventos de desaplazamientos de registros, ademas un bug de ADO no me permite utilizar el evento movecomplete de cada grids.

Cual es el evento a capturar para realizar esto o de que otra manera es posible hacerlo?.

Desde ya muchas gracias!!!
Responder Con Cita
  #2  
Antiguo 25-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Para ser mas claros, pongamos el ejemplo con Clientes, facturas y productos. Tenemos esas 3 tablas relacionadas y queremos que se actualicen solas.

Consulta de clientes:
Código SQL [-]
select codcliente, nombre from clientes

Consulta de facturas:
Código SQL [-]
 select idfactura, idcliente from factura where idcliente = :codCliente

Consulta de productos:
Código SQL [-]
 
select  idfactura, idproducto from productos where idfactura = :idfactura

Tendremos un Datasource por cada consulta y lo relacionamos de la forma habitual, es decir : dtsClientes.Dataset := qryClientes

Ahora tenemos que crear la relación Maestro-Detalle a través de los parámetros, eso se hará de forma automática asignando la propiedad qryXXX.Datasource

qryFacturas.DataSource := dtsClientes;
qryProductos.DataSource := dtsFacturas

El tema importante es que el nombre de cada parámetro coincide con el campo de la tabla Maestra, y ahí se forma la relación Maestro-Detalle.

A partir de ahora solo tienes que abrir las 3 consultas, y ellas se actualizarán solas al hacer un clic en cualquier registro (sin tener que abrir y cerrar las consultas).

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 25-10-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Bien gracias

Bien Lepe y muchas gracias por la respuesta, entiendo perfectamente lo que dices, pero no es tan sencillo, paso a explicarte porque:

Mi idea es no hacer click y que me refresque los detalles, sino automaticamente al cambiar la maestra, por eso necesito un evento o la forma de codificar que sea automatico el refresh. Porque sin click veo datos de otros registros y ademas tiene que ser si o si por querys porque las maestras poseen datos de otras empresas inclusive (transparentes para el usuario). Si pudiera capturar por ej el evento movecomplete (cuando cambia de registro) de la tabla maestra seria joya, ya que ahi recien efectuo las subconsultas. Pero no puedo hacerlo y la grilla no posee eventos por rows sino por columns, con lo cual no me sirve. Sigo probando de todas formas y doy aviso si logro hacerlo.

Y como siempre amigo, muchas gracias por tu amable atención!!!
Responder Con Cita
  #4  
Antiguo 26-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿es viable hacerlo vía dbgrid.datasource.dataset.OnAfterScroll?

Dices que los querys estan en Datamodules, pero eso no te impide asignar sus eventos desde la ventana de los grids. Si ya tienes asignados esos eventos en el datamodule no funcionaría.

Con ADO no he trabajado, siempre he usado el evento AfterScroll para detectar cambio entre registros.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 26-10-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Rta.

Como siempre gracias de antemano, realmente no lo tuve en cuenta al evento
y creo que sí, es eso lo que ando buscando. En cuanto lo pruebo te aviso, ahora estoy con un TDBChart que a proposito nunca lo use, asi que busco un ejemplo. En cualquier momento sigo con el DBGrid...

Lepe, gracias por existir!!! (y por las manos brindadas)
Walter
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
ayuda con los dbgrids amix MS SQL Server 5 17-10-2007 03:30:05
Títulos en DbGrids Viky Varios 4 01-06-2007 02:08:07
Unir dos DBgrids Nbull Conexión con bases de datos 2 02-02-2006 09:19:00
DBGrids en Firebird RONPABLO Conexión con bases de datos 0 20-10-2004 06:57:21
Celdas en DBGrids karocs Conexión con bases de datos 1 31-08-2004 13:24:13


La franja horaria es GMT +2. Ahora son las 10:43:22.


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