FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
problemas con dbgrid y otros db
Buenas
Estoy algo atascado por usar componentes directos del tipo dbgrid . A ver si me dais una manita. tengo 2 tablas, contactos, que contiene; codigo nombre direccion. ... telefonos, que contiene, codigotelefono telefono codigocontacto Esto es para tener por contacto n telefonos. el problema que tengo es, primero si esto se puede usar asi, puesto que en contactos no hay referencia a telefonos pero si al reves. y lo segundo, al usar directamente un contactos.insert y posteriormente un dbedit y cambiar al dbgrid de telefonos el registro ya queda sin usar contactos.post y esto no tiene que ser posible por si decido cancelar el nuevo registro. Lo otro, es relacionado con un dbgrid, si todavia no tengo el codigo primero como añado ese codigo a la tabla del dbgrid. Me imagino que quiza sea dificil entender lo que quiero o no, pero bueno es simplemente por si me podeis echar la mano. gracias |
#2
|
||||
|
||||
Hola anubis.
Cita:
Como no especificas con que base de datos estás trabajando ni con que componentes, te ejemplifico con TIBDataSet. Teniendo dos TDataSource y dos TIBDataSet relacionados así, DataSourceContactos -> IBDataSetContactos ( maestro ) DataSourceTelefonos -> IBDataSetTelefonos ( detalle ) desde el Object Inspector, ponemos DataSourceContactos en la propiedad DataSource de IBDataSetTelefonos y el siguiente código SQL siguiente en la propiedad SelectSQL:
O por bién por código:
Cita:
Un saludo.
__________________
Daniel Didriksen Guía de estilo - Uso de las etiquetas - La otra guía de estilo .... Última edición por ecfisa fecha: 10-02-2011 a las 04:28:47. |
#3
|
||||
|
||||
Si gracias por contestar.
Voy a probar lo que dices a ver que sale. Estoy usando los componentes zeos y de momento sqlite. Lo que queria hacer es, si lo que me propones funciona ya no haria falta . lo probare y vere si funciona, en cualquier caso lo posteare. gracias de nuevo |
#4
|
||||
|
||||
Hola,
como no puedo editar el post tengo que añadir uno nuevo Como comentaba uso librerias zeos y sqlite, este ultimo creo que no es relevante o si?. Bueno, ya probe lo que me comentabas pero no me funciona nose si estara bien: contactos.tzquery contactos.tdatasource telefonos.tzquery telefonos.tdatasource Esto me estaba quedando asi en el object inspector. contactos.tzquery (como no hay tablename no pongo nada salvo en el sql que seria select * from contactos. El contactos.tdatasource lo relaciono con contactos.tzquery y luego en el telefonos.tzquery le pongo en mastersource contactos.tdatasource y ahi en masterfield el campo que se relaciona. y el telefonos.tdatasource lo relaciono con el mismo telefonos.tzquery. Que estoy hacendo mal? un saludo y gracias de nuevo |
#5
|
||||
|
||||
Hasta donde pude entender (están un poco confusas tus palabras) uno de los problemas que tienes que cómo resolver esta paradoja:
Cita:
Saludos, Chris |
#6
|
||||
|
||||
Tienes razon chris, probare con un dataset en memoria a ver como sale pero primero queria solucionar otro problema.
No hay forma de que el grid de la tabla detalle me muestre/filtre en funcion de la maestra, si uso un query (master) y table (detail) si lo hace pero con dos querys no. Os resumo un poco como lo hago usando lo que posteo ecfisa. tengo 2 datasource y 2 querys un dbgrid y un dbedit query1.tquery (master) sql.text:='select * from contactos' datasource no pongo nada porque genera un bucle. datasource1.tdatasource dataset:=query1 query2.tquery(detail) mastersource:=datasource1 masterfield:=codigo linkedfields:=codigo2 (de la tabla2) sql.text:='select * from telefonos where codigo2= :codigo' No se donde me falta algo porque ya probe con varias cosas del inspector de objetos pero nada, no me filtra nada ni me deja ver nada, eso si, como os comentaba si uso una tabla como detalle en vez del query si me lo hace. Es frustrante la verdad. uso los componentes zeos gracias de nuevo |
#7
|
||||
|
||||
Hola,
Bueno algo mas he visto, Parece que si al query2.sql le dejo solo como 'select * from telefonos' ya me funciona porque ya habia relacionado en el inspector de objetos el master, y los campos relacionados. Si lo hago al reves, dejo el sql tal y como esta y quito estas relaciones tampoco me funciona. La pregunta del millon seria porque pasa esto. un saludo y gracias de nuevo |
#8
|
||||
|
||||
Un poquito de atención y a ver si utilizamos TAG's.
__________________
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. |
#9
|
||||
|
||||
Correcto Neftali, un error por mi parte.
gracias por el apunte |
#10
|
||||
|
||||
Hola de nuevo,
Chris, sobre la tabla de memoria si entendi el mecanismo, la duda que me surge es la siguiente: Con las dos tablas en memoria, a la hora de guardarlas, primero guardo el registro en la maestra con lo que ya tengo mi clave primaria. De ahi haria un for next con todos los registros de la tabla detalle e ir insertando la clave primaria obtenida, es asi?. Es correcto usar un for next para recorrer todos los datos de la tabla de detalle en memoria para ir guardando?.(es lo mismo en un sistema unico o cliente servidor?. El borrado de un registro( si esto que comento esta bien), seria lo mismo, borrar del detalle primero con un for next y luego borrar el registro maestro, porque hasta ahora si borro el registro maestro antes que el de detalle(lo permite) se quedan ahi los registros del detalle. Un saludo y gracias nuevamente |
#11
|
||||
|
||||
Cita:
Cita:
Saludos, Chris |
#12
|
||||
|
||||
Gracias de nuevo,
Ya veo que si hay que hacer algun bucle, bien con un for next o bien como dices tu que es la manera mas acertada, pero si hay que recorrer toda la tabla, dando igual que sea para un unico usuario o bien tipo cliente servidor. El tema del borrado de registros de la base de datos, la teoria es que si quieres borrar el registro del maestro tendria que borrarse tambien el del detalle o bien decirte que por integridad no se puede, en mi caso si me lo permite y no debiera hacerse asi. Si es una practica hacerlo asi como lo expongo y me comentas, voy a probarlo. Un saludo y gracias nuevamente |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problemas con dbgrid y otros db | anubis | Firebird e Interbase | 4 | 18-02-2011 19:58:58 |
Objetos de sistema y otros problemas | PaFernan99 | Oracle | 1 | 15-05-2008 23:16:29 |
Problemas con el DBGrid | Shidalis | Conexión con bases de datos | 8 | 07-12-2005 15:53:50 |
Problemas con la aplicacion en otros equipos | Mashabak | Tablas planas | 2 | 29-06-2004 17:16:55 |
Problemas con filtro... (y otros) | sitrico | Conexión con bases de datos | 1 | 21-01-2004 21:52:12 |
|