![]() |
Datenbank: Access • Version: 2002 • Zugriff über: ADO
SQL-Insert mit ADO in Access Master / Detail Tabelle
Hallo zusammen..
Kann mir jemand erklären wir man mit ADO bei einer Access Datenbank mit Master – Detail Tabellen ein Insert der Daten macht? Hier die Tabellen: Master-Tabelle: ID : = AutoWert (PrimärSchlüssel) PNR: = Zahl (Long Integer) Datum: = Datum Detail - Tabelle: MasterID = ID aus Mastertabelle Kostenstelle = Zahl Stückzahl = Zahl Auf der Form hab ich eine TADOConnection, und jeweils 2 TADOTable, TDataSource und zwei TADOQuery. Die MasterSource Einstellungen der ADOTable wurde wie im folgendem Link beschrieben gemacht. ![]() Vielen Dank im vorraus…. Gruß Frank |
Re: SQL-Insert mit ADO in Access Master / Detail Tabelle
Inserts in die Master-Tabelle machst du so:
Delphi-Quellcode:
Inserts in die Detail Tabelle machst du so:
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;
Delphi-Quellcode:
Wenn du Detail-Datensätze zu einem existierenden Masterdatensatz speichern möchtest, dann rufst du nur SaveDetail auf:
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;
Delphi-Quellcode:
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 ...
if SaveDetail(MeineAdoConnection,MeineMasterAdoTable.fieldvalues['ID'],123,3) then
showmessage('Detail-DS hinzugefügt'); 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 :hi: |
Re: SQL-Insert mit ADO in Access Master / Detail Tabelle
Hallo Jens!
:thumb: Danke, das macht Hoffnung! Ich sitz nun schon 2 Tage vor dem Problem und habe das halbe Internet durchgelesen. Ich werde es gleich mal testen! Du hörst von mir..... Vorerst vielen Dank :!: Gruß Frank |
Re: SQL-Insert mit ADO in Access Master / Detail Tabelle
:firejump: :firejump: :firejump: :firejump: :firejump:
Hallo nochmal. Es funktioniert super :thumb: :thumb: Ich musste nur Q:=TAdoQuery.create(self) in Q:=TAdoQuery.create(nil) ändern und das ein oder andere Semikolon ergänzen :zwinker: Perfekt :coder: , vielen lieben Dank! :witch: :witch: :witch: :witch: :witch: :witch: :witch: Gruß Frank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz