Hola
newgeek.
En primer lugar quiero darte la Bienvenida al foro y una
merecida felicitación, son muy pocos los usuarios que se informan como usar las etiquetas sql y explicar detalladamente su problema en su primer mensaje en el foro.
Teniendo en cuenta lo dicho por
Neftali, podrías crear un procedimiento almacenado que se encargue de la inserción:
Código SQL
[-]
CREATE PROCEDURE Inserta_detalles(
IDtabla1 INTEGER,
IDtabla2 INTEGER)
AS
begin
INSERT INTO Tabla3 ( null, id, id2)
values ( :IDtabla1, :IDtabla2)
end
puedes llamar a este SP de dos formas:
- Con un query:
Código Delphi
[-]
query1.sql.text := 'execute procedure inserta_detalles( :tabla1, :tabla2)';
query1.parambyname('tabla1').ASInteger := strtoint(edit1.text); query1.parambyname('tabla2').ASInteger := strtoint(edit2.text); query1.ExecSql;
- Con un componente Store Procedure (lo tendrás en la paleta de delphi, será un TIBStoreProcedure, TMDOStoreProcedure, etc), en el inspector de objetos añades el nombre del procedimiento, y asignas los parámetros en tiempo de ejecución, (mira la ayuda, lo explicará mejor que yo

).
Como habrás visto, en el cuerpo de Inserta_detalles, se envía un null a su clave primaria, para que no obtengas error, deberás tener un trigger before insert para la tabla 3:
Código SQL
[-]
CREATE TRIGGER tabla3_BI FOR tabla3
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.idd IS NULL) THEN
NEW.idd = GEN_ID(GEN_tabla3_IDD,1);
END
GEN_tabla3_idd será un generador creado a tal efecto.
Saludos