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