So wie ich das lese möchtest Du eine Master Deteil-Kombination eintragen:
1. Masterdatesatz eintragen
2. ID(´s) holen7den
3. Detail-Datensatz mit Referenz (der ID ('s) der Master-Tabelle) speichern.
Man kann dafür die
SQL-Eingenschaften bei
Query-Komponenten nehmen, sind bei Lazarus und Delphi-Versionen mit
DB Unterstützung dabei oder das oben aufgeführten Paket. SQLite hat keine Sequences oder Generatoren und daher ist der Ansatz mit Trigger suboptimal, aber SQLite hat zum Ausgleich "AutoIncrement", sodass folgendes geht:
Code:
CREATE TABLE COMPANY(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT NOT NULL,
);
Master-Tabelle mit Auto-Increment anlegen.
Code:
CREATE TABLE Employee(
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT NOT NULL,
RID_Company INT NOT NULL,
);
Detail-Tabelle mit Auto-Increment und Referenz-ID-Feld anlegen.
Code:
INSERT INTO COMPANY (NAME )
VALUES ( 'Neptum AG' );
Master Datensatz einfügen, wobei das Auto-Inc-Feld nicht angegeben wird
Code:
Select max(ID ) as MAXID from COMPANY
Letzte Höchste ID holen (geht vielleicht per SQLite-Funktion eleganter... )
Code:
INSERT INTO Employee (NAME )
VALUES ( 'Kapt´n Nelson', :MAXID );
Master Datensatz einfügen, wobei Max-ID in einer Variablen übergeben wird.
Das würde ich so als Weg sehen, wobei ich mit meinen VorPostern übereinstimme,
dass dies nicht abhängig von einer bestimmten Komponente ist.
Grüße in die Runde.