1, Generell sollte man bei Verwendung von mehreren Datenbanken auf Felddefinition in der
IDE verzichten, da auch Komponenten wie Zeos nicht 100% die Unterschiede bezüglich
SQL-Auslegung verstecken können. Dies tritt vor allem dann zutage wenn nicht nur die Standard-Datentypen wie Integer oder String verwendet werden. Selbst Blob und Memo-Felder verhalten sich schon unterschiedlich.
Dein Problem wird sein das unter Firebird,
MySQL ein TStringField angelegt wird und bei
Access eine TWideStringField. Und dies ist jeweils korrekt da du bei Firebird und
MySQL varchars und bei
Access nvarchars verwendest.
2, Noch besser ist es mittels Bridge-Pattern die
DB-Unterschiede in
einer Unit/Klasse zu kapseln. Als gemeinsammkeit sollte dann maximal TDataset vorrausgesetzt werden. Noch besser wäre es ohne TDataset auszukommen und ähnlich wie bei
ADO.NET eine disconnected Dataset zu definieren (Ist zwar aufwand, aber man ist dann komplett unabhängig von TDataset-Kompatiblen Komponenten.
Windows Vista - Eine neue Erfahrung in Fehlern.