Inserts in die Master-Tabelle machst du so:
Delphi-Quellcode:
function SaveMaster(conn:TAdoConnection;ID,PNR:integer;Datum:TDatetime):boolean;
var Q:TAdoQuery
begin
result:=false;
Q:=TAdoQuery.create(self);
try
q.connection:=conn;
q.sql.text:='INSERT INTO [Mastertabelle] (ID,PNR,[Datum]) VALUES (:ID,:PNR,:DAT);';
q.prepared:=true;
q.paramcheck:=true;
q.parameters.paramByName('ID').value:=ID;
q.parameters.paramByName('PNR').value:=PNR;
q.parameters.paramByName('DAT').value:=Datum;
q.ExecSQL;
result:=true;
finally
freeandnil(q);
end;
end;
Inserts in die Detail Tabelle machst du so:
Delphi-Quellcode:
function SaveDetail(conn:TAdoConnection;MasterID,Kostenstelle,Stueckzahl:integer):boolean;
var Q:TAdoQuery
begin
result:=false;
Q:=TAdoQuery.create(self);
try
q.connection:=conn;
q.sql.text:='INSERT INTO [Detailtabelle] (MasterID,Kostenstelle,[Stückzahl]) VALUES (:MID,:KST,:ST);';
q.prepared:=true;
q.paramcheck:=true;
q.parameters.paramByName('MID').value:=MasterID;
q.parameters.paramByName('KST').value:=Kostenstelle;
q.parameters.paramByName('ST').value:=Stueckzahl;
q.ExecSQL;
result:=true;
finally
freeandnil(q);
end;
end;
Wenn du Detail-Datensätze zu einem existierenden Masterdatensatz speichern möchtest, dann rufst du nur SaveDetail auf:
Delphi-Quellcode:
if SaveDetail(MeineAdoConnection,MeineMasterAdoTable.fieldvalues['ID'],123,3) then
showmessage('Detail-DS hinzugefügt');
Andernfalls speicherst du zuerst den Master-Datensatz ( SaveMaster() ), holst dir die ID und speicherst die Detail-Datensätze mit der neuen Master-ID dannach ab ...
UPDATE und DELETE laufen nach dem Selben Schema.
Den Code habe ich nicht getestet, aber grundlegend sollte es erstmal passen.
Schöne Grüße,
Jens