Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Maestro / Detalle - Access (https://www.clubdelphi.com/foros/showthread.php?t=35155)

MaMu 02-09-2006 05:46:06

Maestro / Detalle - Access
 
Hola, estoy clavado con el tema de la insersión de datos. Tengo 2 tablas en la DB Access:

Código:

tabla=ALUMNOS  //Detalle
id_alumno //pk
id_notas
nombre
 
tabla=NOTAS    //Maestro
id_notas //pk
nota1
nota2
nota3
 
Relación de infinito a 1

Como puedo hacer para insertar todo junto? es decir, las notas (ahi me asignaria el id_notas para la tabla alumnos) y luego el dato del alumno...
Alguna idea? Estoy empezando a utilizar Access como DB.

EDIT1: para explicarme mejor, yo inserto primero en el Maestro, este genera el ID (autoincrement) y luego grabo en el Detalle, pero no se como pasarle el ID maesto al ID detalle.

Saludos.

luisgutierrezb 02-09-2006 18:22:25

bueno, revisa este link

si estas trabajando completamente en access, al establecer una relacion entre las 2 tablas, estas se ligan y ya te toma el id al crear un nuevo elemento (creo que en el menu herramientas viene la opcion relacion)

MaMu 02-09-2006 19:00:59

Buen artículo.
 
El problema esta en que no puedo insertar datos en la tabla Detalle. Obviamente la relación la hice desde Access, y cargando datos desde alli todo funciona de mil maravillas. Cuando intento cargar datos a la tabla Detalle, previamente habiendo cargado la tabla Maestro, puesto a que sino no el campo ID vinculado no tendría ningun valor, me sale el siguiente error:

Código Delphi [-]
No se puede agregar o cambiar el registro porque se necesita un registro relacionado en la tabla 'Maestro'

Tengo la tabla Detalle, con ADOTable > MasterField = id_comun (Joinned Field = id_comun > id_comun )- MasterSource = DSMaestro, con lo cual tengo establecida la relación sin problemas, ya que lo he comprobado con 2 DBGrids y se actualizan perfecto.

Para insertar datos en la tabla Maestro: sin problemas
Código:

QDirecto.SQL.Add('INSERT INTO directo (op,ciclos,bytes)');
QDirecto.SQL.Add('VALUES ('+Edit1.Text+','+SpinEdit1.Text+','+SpinEdit2.Text+')');
QDirecto.ExecSQL;

Para insertar datos en la tabla Detalles
Código:

QRisc.Parameters.ParamByName('nemotecnico').Value:=Edit2.Text;
QRisc.Parameters.ParamByName('tipo').Value:=ComboBox2.Text;
QRisc.Parameters.ParamByName('descripcion').Value:=Memo1.Text;
QRisc.SQL.Add('INSERT INTO risc (nemotecnico,tipo,descripcion)');
QRisc.SQL.Add('VALUES (:nemotecnico,:tipo,:descripcion)');
QRisc.ExecSQL;

Si quito la relación ambas inserciones funcionan perfectamente.

De que me olvide? que estoy haciendo mal?

Saludos.


La franja horaria es GMT +2. Ahora son las 14:14:37.

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