![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: FIBPlus
Dataset (Master-Detail)
Hallo!
Habe zwei Tabellen, welche in der DB mittels ForeignKey verlinkt sind. Auf diese wird aus Delphi mit FIBPlus zugegriffen. Master-Detail-Properties sind gesetzt. Prinzipiell kann es nun zu folgendem Workflow kommen:
Code:
An besagter Stelle kommt ein Fehler (Referentielle Integrität verletzt), der mir auch vollkommen klar ist. Frage daher, wie sollte man den workflow designen um den Fehler zu vermeiden?
MasterSet.Insert (neuen Datensatz anlegen und bearbeiten)
MasterSet.TrageEinigeWerteEin DetailSet.Insert DetailSet.TrageEinigeWerteEin DetailSet.Post <-- ERROR! MasterSet.Post Edith fällt gerade noch ein, dass es in einige Situation hilfreich ist, das DetailSet auf CachedUpdates zu stellen und die Änderungen erst nach MasterSet.Post an die DB zu übertragen. Allerdings sollte in der aktuellen Situation auf CachedUpdates verzichtet werden. |
Re: Dataset (Master-Detail)
Befinden sich beide DataSets in der selben Transaktion?
|
Re: Dataset (Master-Detail)
Jupp, befinden sie sich...
|
Re: Dataset (Master-Detail)
Hi,
Du hast einen ForeignKey vom Slave auf den Master. Der Fehler entsteht bei dem Versuch einen Slave-Datensatz zu speichern, bevor der ein Master-Datensatz existiert. Firebird muss ein Masterdatensatz mit der neuen Master-ID bekannt sein bevor in einem Slave-Datensatz eine Referenz darauf gesetzt werden kann. Du musst erst ein Master.Post ausführen bevor du ein Slave.Post machen kannst. Dabei ist zu beachten, dass der die ID (Master.PrimaryKey) auch in der lokalen Datenmenge des FibDataSets eingetragen wird und damit auch für den Slave-DataSet zu Verfügung steht. Das kann über 3 Wege erfolgen: 1: Properties FibDataSets.AutoUpdateOptions(GeneratorName, WhenGetGenID, UpdateTableName, Keyfields) setzen 2: im ID mit Gen_ID() im OnNewRecord-Event zuweisen 3: ab FB 2.0 mit INSERT INTO ... VALUES (...) RETURNING .., habe ich aber noch nicht verwendet alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 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-2025 by Thomas Breitkreuz