Default-Werte aus Firebird-Datenbank
-
Hallo,
wie erreiche ich, dass beim Anfügen eines Datensatzes einer Firebird-Tabelle in einem DBGrid die in der Datenbank definierten Default-Werte eingesetzt werden ?
Folgender Aufbau:
Firebird 2.0 Datenbank auf Linux-Server
Zugriff von C++-Builder 2007 über ODBC-Schnittstelle und ADO-Tabelle
Darauf aufsetztend DataSource und DBGrid.Wenn ich nun einen neuen Datensatz (über DBNavigator oder ADOTable->Append() ) erzeuge sind alle Datenfelder leer, auch die, für die ein Default-Wert in der Datenbank definiert wurde.
Auch das Setzten von AutoGenerateValue im persistenten Datenfeld der ADOTable auf 'arDefault' (und dem Wert in DefaultExpression) ändert nichts.
Wo ist mein Fehler ?
Vielen Dank für eure Mühe.
Tschüss,
Frank
-
Zur Not kannst Du in TADOTable::AfterInsert die Werte manuell setzen. Ja, es ist unschön und redundant.
-
Wenn die Defaultwerte wirklich nicht greifen (ich will das irgendwie gar nicht glauben, aber mir fällt nichts ein, was man dabei falsch machen kann....), dann würde ich eine Before-Insert-Stored-Procedure verwenden, in denen ich die gewünschten Werte setzen würde.
Grüße KK
-
Hast Du schon mal in Betracht gezogen, eine spezifische Komponentensammlung für Firebird zu verwenden? Es gibt da auch ganz gute, kostenlose Sammlungen, zB Zeos.
-
Hallo,
ich habe es jetzt so gelöst, dass ich einen neuen Datensatz durch eine SQL-Anweisung direkt von der Datenbank erzeugen lasse und dann öffne. Dann sind auch die entsprechenden Default-Werte gesetzt.
Joe_M. schrieb:
Hast Du schon mal in Betracht gezogen, eine spezifische Komponentensammlung für Firebird zu verwenden? Es gibt da auch ganz gute, kostenlose Sammlungen, zB Zeos.
Welche Vorteile hätten die denn im Vergleich zu den ADO-Komponenten im Builder ?
Tschüß,
Frank
-
Diese Komponenten wurden speziell für die Datenbanken Firebird und Interbase entwickelt und im Gegensatz zu den generischen TADOxxx-Komponenten unterstützen sie die spezifischen Eigenschaften viel besser. Sie sind auch deutlich performanter.
Sie sollten auch das Problem mit den Default-Werten lösen.Gruß KK