Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Master-Detail-Beziehungen und Master existiert noch nicht (https://www.delphipraxis.net/93550-master-detail-beziehungen-und-master-existiert-noch-nicht.html)

nachti1505 7. Jun 2007 12:57

Datenbank: Firebird • Zugriff über: FIBPlus [Trial]

Master-Detail-Beziehungen und Master existiert noch nicht
 
Mal eben ein kleines Problemchen...

Habe eine Art Adressverwaltung (Standarddaten wie Strasse, Hausnummer, PLZ, Tel, etc.) und zusätzlich eine Übersicht über weitere Mitarbeiter in dieser Adresse.
In Delphi wurde das ganze dann über deine Master (die Adresse) - Detail (die Angestellten) - Beziehung visualisiert.
Mein Problem ist nun, wenn ich eine neue Adresse einfüge (DataSet.Insert) so existiert dieser Datensetz erstmal nur virtuell (bis zum DataSet.Post), hat also noch keinen Primärschlüssel. Genau den brauch man aber, wenn man beim ersten Bearbeiten schon Angestellte einfügen will, da in der Angestellten-Tabelle eben jener Schlüssel als ForeignKey benötigt wird....?

Ideen?

Danke!

mkinzler 7. Jun 2007 13:05

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Wie setzt du den PK?
Welche Firebirdversion?

nachti1505 7. Jun 2007 13:24

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Firebird 1.5

Theoretisch müsste ich den PK doch irgendwo im Adress-DataSet setzen, oder??? Genaugenommen habe ich ihn explizit nirgendwo gesetzt....

mkinzler 7. Jun 2007 13:30

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Am besten setzt man ihn per Trigger über einen Generator. AB Fb2 kann man sich ihn im Insert zurückgebenlassen.

nachti1505 7. Jun 2007 13:36

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Kann man in FB 1.5 glaube ich auch schon.
SQL-Code:
INSERT INTO tabelle (id, ..., ...) VALUES (gen_id(tabelle_gen,1), ..., ...)
Mein Problem liegt eher darin:

1)
- der Nutzer möchte eine neue Adresse anlegen (Formular erscheint)
- er tippt einige Angestellte der neuen Adresse ein (zu diesem Zeitpunkt ist noch nichtmal sicher, ob der User diese Adresse überhaupt speichern möchte), welche natürlich erst endgültig gespeichert werden sollen, wenn die Adresse auch gespeichert wird

2)
- Gesetz dem Fall die Adresse (inkl. PK) existiert schon, wie mache ich dem Detail-DataSet beim Einfügen klar, woher er den Adressen-PK bekommt?

mkinzler 7. Jun 2007 13:39

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Zitat:

Kann man in FB 1.5 glaube ich auch schon.
Nein:
SQL-Code:
INSERT INTO tabelle (id, ..., ...) VALUES (gen_id(tabelle_gen,1), ..., ...) RETURNING id;
Auf id kannst du dann per Parameter zugreifen:

Delphi-Quellcode:
  ... := Query.ParamByName('id').Value;

nachti1505 7. Jun 2007 13:44

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Zitat:

Zitat von nachti1505
2)
- Gesetz dem Fall die Adresse (inkl. PK) existiert schon, wie mache ich dem Detail-DataSet beim Einfügen klar, woher er den Adressen-PK bekommt?

Hehe, mal die Tec-Artikel von Devrace lesen... im DataSet.SQL.InsertSQL den Parameter einfach nicht xyz sondern MAS_xyz nennen...

Trotzdem erstmal Danke....

Inwieweit ist FB2.0 eigentlich schon stabil und vorallem wiue kompatibel sind Anwendungen die man von FB1.5 nach FB2.0 portiert???

alex517 7. Jun 2007 13:46

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Hi,

Sowas hatten wird gerade:
Autoinc

alex

mkinzler 7. Jun 2007 13:47

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Die aktuelle stabile Version ist 2.01 und 2.1 steht vor der Tür. Anwendungen, die sich an die Vorgaben von FB halten funktionieren problemlos. In manchen Fällen verhält sich FB 2 aber nicht so gutmütig, d.h. nicht konforme Konstrukte die unter FB.x funktioniert haben, werden dann abgewiesen.

alex517 7. Jun 2007 16:33

Re: Master-Detail-Beziehungen und Master existiert noch nich
 
Liste der Anhänge anzeigen (Anzahl: 1)
noch was, da du mit FibPlus arbeitest, schau dir doch mal
im FibDataSet die Propertys die du unter AutoUpdateOptions findest an.
Dort findest du was du suchts.
alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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