Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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.

1) Si como parece en tu código tenes los DataSources en el DataModule (DM), podes hacer todas las asignaciones al ADOQuery en tiempo de diseño, inclusive la propiedad SQL y sólo tendrías que abrir y cerrar el query en el form que desees mostrar los datos.

2) En este caso el ADOQuery reemplaza al ADOTable, de modo que tendrá que tener un DataSource asociado y en la propiedad DataSource del DBGrid (detalle) deberá figurar el nuevo DataSource.

Yo hice toda la asignación por código para que se viera mas claramente las asignaciones, pero no es estríctamente necesario.

Es decir, si lo tenes armado de este modo,

en la propiedad DataSource del DBGrid del detalle tendría que figurar DM.dsDetail.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 12-07-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

1) Si como parece en tu código tenes los DataSources en el DataModule (DM), podes hacer todas las asignaciones al ADOQuery en tiempo de diseño, inclusive la propiedad SQL y sólo tendrías que abrir y cerrar el query en el form que desees mostrar los datos.

2) En este caso el ADOQuery reemplaza al ADOTable, de modo que tendrá que tener un DataSource asociado y en la propiedad DataSource del DBGrid (detalle) deberá figurar el nuevo DataSource.

Yo hice toda la asignación por código para que se viera mas claramente las asignaciones, pero no es estríctamente necesario.

Es decir, si lo tenes armado de este modo,

en la propiedad DataSource del DBGrid del detalle tendría que figurar DM.dsDetail.

Saludos


Hola nuevamente, no pude lograrlo, lo hice de esta forma porque ya no se como hacerlo a ver si me podes dar una mano:
Este código lo hice en el evento form Activate del que tiene la grilla maestro y detalle:

Código Delphi [-]
     DM.QueryDETALLEComentario.DataSource:= DM.ds_QueryTodosLosProductos;
     DM.QueryDETALLEComentario.Close;
     DM.QueryDETALLEComentario.Open;

y esta sentencia SQL lo puse en el queyDetalles (el que tuve que reemplazar por el ADOTable_detalle):

Código SQL [-]
SELECT C.*
 FROM Comentario C, Subasta_prod S
 WHERE (C.id_sub = S.id_sub) AND (C.estado_comentario <> true)

Los dos puntos que me dijiste que se los deje, se los tuve que sacar porque sino no me mostraba nada en la grilla detalle,(porque ademas si se anteponen los " : " seria un parametro, y no se que parametro se le pasaría ya que al ir bajando en la Grilla maestro me tiene que mostrar los comentarios de dicho producto, osea si tengo una mesa que me muestre los comentarios de la mesa, bajo un registro en la grilla y tengo una bicicleta entonces solo quiero que me muestre los comentarios de la bicicleta y esto no pasa.)

Está bien de la forma que estoy escribiendo el codigo en Delphi y el SQL en el querydetalle? o que mas me hace falta?

La conexión que hice fue: a la grillaMaestro le asigne el dataSource-->> DM.ds_QueryTodosLosProductos; //esta consulta me muestra todos los productos, y no lo conecto directamente a la tabla maestro ya que voy a tener que hacer distintos tipos de filtrado por titulo de producto, por fecha de publicacion de producto etc, entonces al DataSet del DataSource ds_QueryTodosLosProductos le voy a ir seteando los distintos querys que me realizan los distintos filtrados.

Espero tu respuesta y desde ya muchísimas gracias por tus gratas ayudas!
Responder Con Cita
  #3  
Antiguo 12-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
Empezado por DANIEL1818 Ver Mensaje
Los dos puntos que me dijiste que se los deje, se los tuve que sacar porque sino no me mostraba nada en la grilla detalle,(porque ademas si se anteponen los " : " seria un parametro, y no se que parametro se le pasaría ya que al ir bajando en la Grilla maestro me tiene que mostrar los comentarios de dicho producto...
Si los quitas no funciona. Si, es un parámetro implícito y es precísamente el encargado de establecer la relación Master-Detail. Es la columna clave de la tabla maestro indicada mediante la propiedad DataSource.

Creo que lo mejor es que te adjunte un ejemplo simple y funcionando de lo que te estoy diciendo. Para el mismo uso las tablas customer y orders de dbdemos.mdb (viene con Delphi).

El ejemplo filtra quitando los distintos "PaymentMethods" desde un ComboBox y quita el filtrado desde un Button. Crea una carpeta y descomprime el demo allí.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip Daniel1818.zip (178,2 KB, 12 visitas)
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 13-07-2015
DANIEL1818 DANIEL1818 is offline
Miembro
NULL
 
Registrado: abr 2015
Posts: 42
Poder: 0
DANIEL1818 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Si los quitas no funciona. Si, es un parámetro implícito y es precísamente el encargado de establecer la relación Master-Detail. Es la columna clave de la tabla maestro indicada mediante la propiedad DataSource.

Creo que lo mejor es que te adjunte un ejemplo simple y funcionando de lo que te estoy diciendo. Para el mismo uso las tablas customer y orders de dbdemos.mdb (viene con Delphi).

El ejemplo filtra quitando los distintos "PaymentMethods" desde un ComboBox y quita el filtrado desde un Button. Crea una carpeta y descomprime el demo allí.

Saludos


Lo probe y no funciona, el codigo que puse en el evento onCreate del formulario es este(probe moviendo para arriba y para abajo las distintas lineas de codigo, como por ejemplo activando el query arriba de todo, en el medio como ahora y no funciona):


Código Delphi [-]
  DM.QueryDETALLEComentario.Close;
  DM.QueryDETALLEComentario.SQL.Clear;
  DM.QueryDETALLEComentario.SQL.Add('SELECT * FROM Comentario');
  DM.QueryDETALLEComentario.SQL.Add('WHERE id_sub = :id_sub AND estado_comentario <> :BORRADO');
  DM.QueryDETALLEComentario.Active:=true;
  DM.QueryDETALLEComentario.DataSource := DM.ds_queryCategorias; // DataSource -> Tabla maestro
  DM.QueryDETALLEComentario.Parameters.ParamByName('BORRADO').Value := true;
  DM.QueryDETALLEComentario.Open;


Siempre tira el error "Access violation at address 05AC644 in module 'Project1.exe'. Read of address 000003E0"


y en un momento cuando puse el DM.QueryDETALLEComentario.DataSource := DM.ds_queryCategorias; arriba de todo me decia que no se podia porque era como que se linkeaba de manera circular
Responder Con Cita
  #5  
Antiguo 13-07-2015
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
¿Por qué cambias el código?, lo puesto por ecfisa es:

Código Delphi [-]
    qyDetail.Close; 
    qyDetail.SQL.Clear; 
    qyDetail.SQL.Add('SELECT * FROM ORDERS'); 
    qyDetail.SQL.Add('WHERE CUSTNO = :CUSTNO AND PAYMENTMETHOD <> :BORRADO'); 
    qyDetail.Parameters.ParamByName('BORRADO').Value := cb.Items[cb.ItemIndex]; 
    qyDetail.Open;
Responder Con Cita
  #6  
Antiguo 13-07-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
Empezado por DANIEL1818 Ver Mensaje
Lo probe y no funciona...
Esa afirmación es incorrecta, el ejemplo que te adjunté funciona tál como se puede ver en esta imágen:



Pero como bien te indica Casimiro, si cambias el código...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 13-07-2015
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 23
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
DANIEL1818,

Cita:
Empezado por DANIEL1818
...Lo probé y no funciona...


Te comento:

1- El ejemplo suministrado en el Msg #6 (Relación Master-Detail) funciona correctamente según lo esperado

2- Te sugiero revisar el mencionado ejemplo detalladamente para comprender su funcionamiento, no realices ningún cambio al código hasta que asimiles la mecánica del mismo.

Revisa esta información:
Espero sea útil

Nelson.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 tablas maestro detalle Diego827 SQL 1 01-02-2015 04:19:53
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes akinom38 Varios 1 09-11-2007 19:27:44
Reporte Maestro/Detalle/Detalle de 4 Tablas jovehe Impresión 2 23-03-2005 01:25:02
Tablas Maestro-Detalle silviodp Conexión con bases de datos 13 07-06-2004 22:55:22
tablas maestro/detalle vetustas Conexión con bases de datos 7 09-11-2003 22:56:21


La franja horaria es GMT +2. Ahora son las 05:08:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi