FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Relación varios a varios
El diseño de la base de datos de una aplicación es importante como lo es tambien el diseño de la entrada de los datos.
Pieso que no hay nada mejor que explicar mediante ejemplo y mi duda la hare de esta forma: Me dirijo a hacer una aplicación y sale un diseño de base de datos con tres tablas: Almacen(CodAlm, Decrip), Inventario(codAlm,CodProd, CAntidad ), Productos(CodProd, Descrip) Ahora bien hasta lo que yo se, me convendría hacer una consulta con las tablas Inventari y Productos ya que cada vez que entro un producto tengo que entrar su cantidad, hasta ahi bien, realizo la consulta con los campos de una + la otra, bien hay dos situaciones cuando voy a entrar por consulta un producto que no esta en la tabla producto no hay problemas funciona pero cuando no esta me da un error, en acces no da ese problema porque automaticamente cuando entras el CodProd en consulta, llena los otros campos automaticamente y resuelto el problema pero en delphi no hace esto ¿Como puedo simular lo que hace acces en delphi? desde ya gracias |
#2
|
||||
|
||||
Hola
Supongo que lo que haces es enlazar un programa delphi con access, si es asi con que componentes lo enlazas?. No entiendo el problema. Saludos |
#3
|
|||
|
|||
Muchos a Muchos
Primeramente gracias por la respuesta.
Exactamente enlazo delphi con acces mediante los componentes adoconection, AdoTable, AdoQuery, este ultimo lo utilizo para hacer una consulta de los campos de dos tablas las tablas: productos e inventarios. en acces esta consulta funciona perfectamente a la hora de entrar la información pero en delphi me da un error la que en delphi no llena automaticamente los campos de referencia entre las dos tablas la consulta es la sig: SELECT Inventario.CdProd, Inventario.CdAlm, Inventario.Cantidad, Prod.CdProd, Prod.Descrip FROM Prod INNER JOIN Inventario ON Prod.CdProd = Inventario.CdProd; La misma como decia la utlizo para entrar información y que automaticamente llene las tablas correspondiente. espero que esto siba para que comprendas mejor mi problemas Muchas gracias. |
#4
|
||||
|
||||
Hola
Segun entiendo lo que haces es una consulta a ciertos campos de las dos tablas y con esta consulta pretendes que se actualicen estos campos con la informacion que le introduzcas. Si es asi tienes que tomar en cuenta varias cosas. 1- una consulta no se puede modificar. 2- para modificar campos de una tabla se tiene que tener en cuenta los campos clave de la misma de lo contrario no actualizara. 3- te recomiendo hacer un update para cada tabla, asi podras hacer las modificaciones facilmente y a los campos que te interesen. 4- Usa parametros. Si me equivoco me lo dices. Saludos |
#5
|
||||
|
||||
Cita:
¿Como es que empleas la consulta SELECT para llenar una tabla? ¿Que no es que se necesita un INSERT? No termino de comprender lo que deseas hacer... Tomate el tiempo que necesites para describir mejor tu problema. Aportando todo detalle que esté a tu alcance para que podamos comprenderte. Saludos, |
#6
|
|||
|
|||
Bueno tratare de ser más explicito,
Mi problema es que no puedo lograr el mismo efecto de la cosulta que anteriormente expuse en delphi, ya que en access provoca un efecto deseable para mi, como le dije anteriormente quiero hacer una consulta o mejor dicho una vista en forma de consulta de tal forma que cuando el usuario introdusca un registro se llenen los datos de las tablas implicadas a continuación voy a explicar lo que sucede en el caso de access y delphi Access el usuario inserta un registro de la consulta, entra el código del producto(Tabla inventario), automáticamente cuando va a pasar al siguiente campo llena los datos de campo cdProd y descripción pero que pertenecen a la tabla relacionada pero que están el la misma consulta, este es en el caso de que en la tabla producto este el codProd tecleado, pero si no se encuentra el usuario tentdrá que teclearlo y mediante esto la tabla producto asimila lo que se tecleo. Perfecto esot es lo que quiero Delphi El usuario inserta un registro en la consulta, entra el codProd(Tabla inventario), en este caso Si el codigo tecleado se encuentra en la tabla producto, no lo llena automáticamente, solamente cuando posteo , cierro la consulta y vuelo abrir, en el otro caso si el usuario teclea y no se encuentra ese cdProd en (Producto) y vuelve a teclear cdProd pero para (producto) da un error pues no puden aber dos registros con los mismos valores ya que CdProd es llave de la tabla Producto. Le pongo a disposición nuevamente el diseño para que puedan entender: Almacen(CodAlm, descrip) Inventario(CodAlm, CodProd, Cantidad) Producto(CdProd, Descrip) Aclaración: para Delphius La consulta no es de acción es de selección pero sirve como vista de los registro para que los usuario inserten o modifiquen los datos de las tablas implicadas. para carnal Si puedo utilizar parámetros, lo que en el ejemplo que puse no lo especifique para que fuerta más sencilla, pero puede ser un parámetro para CodAlm, en una relación Master - Detail. Saludos y gracias por su precupación |
#7
|
||||
|
||||
Cita:
Te pido que por favor si te arroja errores, que me lo hagas saber cuales son. ¿Puedo ver una muestra de tu código? Espero que no tomes a mal mis comentarios. Quisiera que este hilo no quede en el olvido. Saludos, |
#8
|
|||
|
|||
Muchas gracias por preocuparse en darme respuesta.
La verdad que he tratado de explicarme lo mejor posible, quizas caral se acerco un poco cuando expreso: Cita:
Lo que quiero realizar es el no tener que ir a una tabla llenar los datos de esta y despues tener que ir a la otra y tambien llenarlos , me parece que mediate esta consulta puedo matar dos pajaros de un tiro saludos Última edición por faraonDX fecha: 05-02-2008 a las 16:28:45. |
#9
|
||||
|
||||
Hola
Access tiene lo que en otras bases de datos se llama vistas, me explico: Por ejemplo hago una consulta en access (con el creador de consultas del mismo), esta consulta me muestra las tablas y campos que me interesan, osea funciona. Lo que se hace es que desde delphi se llama a esta consulta como si fuera una tabla. Por ejemplo: Hago una consulta (a las tablas que sean, ojo, si se van a modificar tienen que estar ligadas y contener los campos clave). A esta consulta le pongo el nombre de: ConSulTablas. Entonces hago un llamado como si fuera otra tabla mas, asi: O simplemente uso un adoTable y lo enlazo a ConSulTablas en su propiedad table. Es simple y efectivo. Sigo sin saber si sera el problema. Saludos |
#10
|
||||
|
||||
A ver si entiendo...
La base de datos la tienes en acces y la interfaz la estas haciendo en delphi; las tablas tienen correctamente sus realciones y actualiza en cascada o algo asi... Cuando realizas la consulta en acces te funciona y te permite actualizar ahi mismo... he ahi la diferencia como acces permite realizar tanto bd como interfaz, es muy versatil a la hora de trabajarlo; cuando tu lo conectas con delphi, desde este no podras hacer lo mismo (Como dirian: "El perezoso trabaja doble" ), lo que tienes que hacer es un Update en las tablas pero no desde tu consulta, aunque si inventas la forma podrias darle la "sensacion" al usuario de que es asi y no crear otra especie de formulario... Espero estar en lo correcto Saludos
__________________
Web |
#11
|
|||
|
|||
Hola a todos.
Muchas gracias a caral por la pronta respuesta, asi como a todos los que han participado. felipe88 creo que estas comprendiendo lo que quiero hacer, pues como dices Cita:
Cuando dices: Cita:
saludos. |
#12
|
||||
|
||||
Cita:
Saludos
__________________
Web |
#13
|
|||
|
|||
hola a todos.
Quiero especificar que lo que quiero usar para representar la consulta es un control DBGrid, me referia que en access el DBGrid es un poco más inteligente y realiza algunas cosas automáticamente como la acción que quiero que haga en delphi pero parece que el grid de Delphi no soporta lo que estoy pidiendo a lo mejor ustedes saben de DBGrid especiales que puedan realizar semejante empeño Con la solución que me da felipe88 no resulevo mi cuestionamiento Pienso que para poderme entener hay que: todo esto en access 1:realizar el ejemplo que pongo con las tres tablas expuestas y realizar la consulta 2: Introducir datos supuestos 3: ir observando lo que sucede en la medida que se introduce nota hay dos obciones: 1: que se entre en inventario un cod de prod que exista en producto 2: Que se entre en inventario un cod de prod que no exista en producto Delphi Hacer lo anterior pero en delphi. saludos. |
#14
|
||||
|
||||
1. Lamento no ser perfecto y no poder ayudarte mas... (No es mi obligacion tampoco)
2. Un BDGrid comun y corriente no te permite hacer eso... busca entonces un componente (TMS, Torry... etc) 3. Los querys se comportan como tablas en memoria... 4. Puedes crear un query auxiliar con el que puedas actualizar los datos... 5. Cuando haces lo que intentas en Delphi, que error te sale ? Como se te ocurre solucionarlo...??? Ayudate con estos 5 puntos y me cuentas como te va... Saludos
__________________
Web Última edición por felipe88 fecha: 05-06-2008 a las 16:46:59. |
#15
|
||||
|
||||
faraonDX, estuve dandole más vueltas al tema y llegué a un hecho: no hay manera de conseguir lo que deseas en Delphi (al menos en D6) con un DBGrid.
Lo que dice felipe es más certero. Sería útil que contemples la posiblidad de adquirir un componente de tercero que haya eso (si es que hay alguno). La otra situación es que cambies el diseño, por algo más simple y no tan rebuscado. Saludos, |
#16
|
|||
|
|||
Hola a todos.
Primeramente agradecerles a todos por la preocupación y aunque piensen que no sus respuesta me sirveron para aclarar algunas cosas. Evidentemente el DBGrid de delphi no soporta estas funciones, hay que buscar en internet un control que soporte esas funciones, de todas formas si encuentran algo sobre el tema por favor escribame. saludos a caral, felipe88 y al amigo delphius . |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Varios informes en uno | jonmendi | Impresión | 2 | 02-08-2006 10:47:37 |
varios update | jam888 | MS SQL Server | 4 | 20-12-2005 13:21:13 |
uso de varios DetailBands | i_berbeu | Impresión | 1 | 19-09-2005 08:30:35 |
varios count | pepe2000 | SQL | 7 | 16-02-2005 18:16:51 |
agrupar de a 1 y varios | raudelink | SQL | 3 | 16-11-2004 00:58:11 |
|