PDA

Ver la Versión Completa : Guardar Registro En Una Base De Datos Relacional


kurono
23-05-2008, 04:11:48
hola amigos del foro como estan tengo el siguiente problema e realizado una base de datos en access y en sql 2000 donde tengo una relacion con dos tabla tanto en sql 2000 como en access como bien saben la relaciones se hacen teniendo el mismo campo en ambas tablas pues asi es que la e hecho en ambas base de datos el problema surge cuando guardo registro en la base de datos ya sea la de access o sql2000 pues solo me la guarda en una tabla y deberia ser en las dos ya que estan relacionadas alguien me puede ayudar con esto utilizo delphi 7

BlueSteel
23-05-2008, 14:46:00
el problema surge cuando guardo registro en la base de datos ya sea la de access o sql2000 pues solo me la guarda en una tabla y deberia ser en las dos ya que estan relacionadas alguien me puede ayudar con esto utilizo delphi 7

No entendí muy bien esto... pero estas seguro que es así ???

La información se guarda en una Base o en una Tabla de cada base ???

Podrias dejar un modelo de tu relación ??? y el código que utilizas para guardar.... puede que ahí este el error ???


Salu2:p:D

kurono
23-05-2008, 21:46:05
ok me explico yo hice una base de datos en access con dos tablas las cuales tiene dos campos identicos con los que forme la relacion en las tablas luego hice una aplicacion donde utilise unas de las tablas y le agrege registro ylo guarde resulta que solo me lo guardo en una tabla y deberia ser en las dos claro esta estamos hablando del campo que esta relacionado en las dos tablas pues como no me funciono pense que podria ser un error en access asi que me propuse a probarlo en sql haciendo las misma tablas y misma relacion y me dio el mismo resultado no se si esta ves me explique mejor pues contestanto tu pregunta blue steel el codigo que utilize es un simplemente un navegador y utilise los componente de ado fue solo para probar aqui esta la imagen de mi relacion en access

kurono
23-05-2008, 21:51:55
disculpa que no pude subir la imagen pero la relacion es de uno a uno y los campo tienen las misma longitudes

Delphius
23-05-2008, 22:01:17
Hola kurono,
Creo que algo está fallando en la teoría sobre base de datos.
¿Tienes dos tablas, relacionadas de forma que se establece una relación 1:M?
Si es así, entonces:
1. La tabla Maestra sólo posee una clave primaria (PK) y demás campos.
2. La tabla Detalle (o esclava como la denominan algunos libros) posee:
2.1. Una clave primaria independiente (PK)
2.2. Una clave foranea (FK) que apuntará a una clave primaria de la tabla maestra.
2.3. Demás campos.

Si existe establecida dicha relación entre las tablas, y para garantizar la integridad referencial, el proceso de Alta debe der el siguiente:
1. Insertar un campo en la tabla maestra con clave x.
2. Por cada detalle que pertenezca a la tabla maestra:
2.1. Insertar un campo en la tabla detalle con clave foranea x.

Es decir que el alta de una tabla maestra no exije, ni implica, que se agregará un nuevo detalle.
Pero a la inversa, para agregar un registro detalle debe existir un registro en la tabla maestra.

Por tanto, para un alta del tipo 1:M se debe proceder en dos pasos:
1. Agregar en tabla maestra
2. Agregar en tabla detalle

Es posible que tu sólo estés viendo que agrega los registros en la tabla maestra.

Para comprender realmente lo que estás haciendo es necesario que nos expliques correctamente tu estructura de las tablas, las relaciones (aunque la intuimos) y el código que estás empleando.

Saludos,

Delphius
23-05-2008, 22:03:50
disculpa que no pude subir la imagen pero la relacion es de uno a uno y los campo tienen las misma longitudes

No me di cuenta de que posteaste antes de que yo envie.
¿Uno a Uno? hay un problema de regla normal alli. Si la relación es 1 a 1, tranquilamente una tabla puede desaparecer y colocarse los registros de una en la otra.

Repasa los conceptos de base de datos.

Saludos,

kurono
23-05-2008, 22:24:26
ok leere un poco sobre relaciones en base de datos pero le recuerdo que no uso ningun codigo simplemente el navegador de delphi y los componente de ado

BlueSteel
23-05-2008, 22:44:49
ok leere un poco sobre relaciones en base de datos pero le recuerdo que no uso ningun codigo simplemente el navegador de delphi y los componente de ado

Hola Kurono...

Bueno, lo que te dice Delphius es muy cierto... lo más probable es que tienes una confución de conceptos con respecto a las base de datos...

No importa el codigo que utilices ni el componente.... una cosa es utilizar un DBGrid y DBNavegator... pero eso solo te hará referencia a una tabla en particular, y si insertas un registro lo realizará en una sola tabla... si utilizas un Query cuya consulta SQL muestra datos de 2 tablas, no podrás insertar datos en ambas tablas con el DBNavegator....

Te recomiendo que leas la siguiente guia de base de datos (http://bluesteel.clubdelphi.com/Descargas/bda-t1.pdf).... aunque es sencilla, te puede aclarar algunas dudas...


Salu2:p:D

Delphius
23-05-2008, 23:10:53
(...)
No importa el codigo que utilices ni el componente.... una cosa es utilizar un DBGrid y DBNavegator... pero eso solo te hará referencia a una tabla en particular, y si insertas un registro lo realizará en una sola tabla... si utilizas un Query cuya consulta SQL muestra datos de 2 tablas, no podrás insertar datos en ambas tablas con el DBNavegator
(...)

Es por ello que inicialmente le he pedido a Kurono que explicase mejor su situación.
Parte del problema no es que exista la posibilidad de que esté comprendiendo mal los conceptos de base de datos, sino también el uso de los componentes.

El problema no es sólo de base de datos.

Ojo, no es que pretenda machacar a Kurono.

Saludos,

kurono
23-05-2008, 23:29:18
por lo que me han dicho es que aunque tenga las tablas relacionadas no estoy haciendo referencia a la segunda tabla a la cual quieri tambien que se guarde el registro en el campo si es asi eso lo puedo hacer sin tener que relacional las tablas mediante comando de sql pero yo creia q cuando las tablas estaban relacionada los registro se guardan en cada campo relacionado sin tener que especificar se que debo profundizar un poco mas sobre este tema por eso leere la guia q me recomienda blue steel

Delphius
24-05-2008, 01:13:21
SQL no es lo único que puede hacer lo que buscas, un Trigger after insert también puede servir.

El problema es que como te dijimos: estabas interpretando mal algunos conceptos.

Lee el material que proporciona BlueSteel.

Y por último, Kurono, te voy a pedir, si no te molesta, que por favor coloques los signos de puntuación. No ha sido fácil comprender tu último post.
Te lo he pedido la otra vez, por favor tomalo en cuenta. Los mensajes deben ser redactados para que otros puedan entenderlos, si bien aqui todos hablamos el mismo idioma, las reglas de puntuación son de vital importancia para una correcta lectura y comprensión. Por favor usalos.

Saludos,

kurono
24-05-2008, 01:37:19
ok disculpa lo tomare en cuenta