AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Insert mit ADO in Access Master / Detail Tabelle
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Insert mit ADO in Access Master / Detail Tabelle

Ein Thema von Computerbabalulu · begonnen am 7. Jun 2006 · letzter Beitrag vom 8. Jun 2006
Antwort Antwort
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#1

SQL-Insert mit ADO in Access Master / Detail Tabelle

  Alt 7. Jun 2006, 23:08
Datenbank: Access • Version: 2002 • Zugriff über: ADO
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.

Ado Master/Detail

Vielen Dank im vorraus….

Gruß Frank
Frank
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

Re: SQL-Insert mit ADO in Access Master / Detail Tabelle

  Alt 8. Jun 2006, 01:12
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
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#3

Re: SQL-Insert mit ADO in Access Master / Detail Tabelle

  Alt 8. Jun 2006, 01:18
Hallo Jens!



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
Frank
  Mit Zitat antworten Zitat
Benutzerbild von Computerbabalulu
Computerbabalulu

Registriert seit: 26. Sep 2003
233 Beiträge
 
#4

Re: SQL-Insert mit ADO in Access Master / Detail Tabelle

  Alt 8. Jun 2006, 01:56


Hallo nochmal.

Es funktioniert super
Ich musste nur Q:=TAdoQuery.create(self) in Q:=TAdoQuery.create(nil) ändern und das ein oder andere Semikolon ergänzen

Perfekt , vielen lieben Dank!



Gruß Frank
Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz