Einzelnen Beitrag anzeigen

Neisklar80

Registriert seit: 12. Mai 2011
Ort: Tal der Ahnungslosen
10 Beiträge
 
Delphi XE Professional
 
#1

Nested Datasets: Falscher automatischer FK Index in Details-DBGrid beim Insert

  Alt 9. Jun 2011, 16:34
Datenbank: MySQL • Version: 5.1 • Zugriff über: dbExpress (XE)
Hallo zusammen,

ich greife in Delphi XE über dbExpress auf meine MySQL DB zu.
Das Datenbankschema ist über Master/Detail Beziehungen abgebildet, welches dann vom TDataSetProvider in ein Nested (Client)Dataset überführt wird. Daran klemmen dann weitere CDS welche als Datasets für DBGrids dienen.
In meiner Datenbank ist der PK immer 'id' und die FKs in den Detailtabellen <reftable>_id.
Wenn ich in einem Detail DBGrid nun einen neuen Datensatz einfüge, wird automatisch die ID des Masters in das Feld 'id' des Detaildatensatzes geschrieben, was schlichtweg falsch ist, muss ja schließlich in das FK-Feld.
Es gibt einen QC-Report (http://qc.embarcadero.com/wc/qcmain.aspx?d=65694) mit diesem Problem, welcher aber bis heute nicht gefixt ist. Auch funktioniert der Workaround wie dort beschrieben nicht mit dbExpress.
Ich habe da alle möglichen Kombinationen versucht, SQLDataSet mit Param-Query, SQLTable mit MasterSource, SQLQuery mit Param, nichts hilft da.
Einzig wenn ich in der Datenbank die Feldnamen so ändere, dass der Name des PK mit dm Namen der FKs übereinstimmt. Aber DB-Schema zu ändern ist leider nicht drin.

Da das ganze dbExpress Zeugs neu für mich ist, und ich früher nur mit handgemachten Queries über ZEOS gearbeitet habe, kann auch auch sein, ich habe schlichtweg vergessen irgendwo einen Haken zu machen.
Hat irgendjemand eine elegante Lösung dafür?
In der Hoffnung das diese nicht darauf hinausläuft, AfterInsert-Events für jedes DB-Grid zu setzen.)

Vielen Dank
  Mit Zitat antworten Zitat