Hallo,
beschäftige mich gerade mit Firebird 3.0. Auch wenn ich das Beispiel-Projekt nicht zum Laufen bekommen habe (siehe
http://www.delphipraxis.net/189552-f...uft-nicht.html) habe ich mittlerweile meine Applikation so weit im Griff. Es geht lediglich darum Daten aus einer anderen Datenbank (basierend auf
Paradox) nach
FB zu übertragen. Es sind ca. 150 Tabellen. Beim letzten Umstieg von der Vorgängerdatenbank auf
Paradox hatte ich quasi für jede einzelne Tabelle (damals waren es noch deutlich weniger), eine eigne Routine geschrieben und hatte somit für alle Felder der Pdx-Tabellen auch persistene Felder an der Hand. Diesmal wollte ich mir die Arbeit nicht machen und habe eine globale Routine geschrieben die mir einfach alle Tabellen der Quelle durchläuft und die Felder in die Zieltabelle in
FB überträgt. Ohne persistente Felder bin ich nun gezwungen die Felder per ParamByName anzusprechen, je nach Datentyp unterschiedlich, soweit auch kein Problem.
Delphi-Quellcode:
Session.GetTableNames(dbsAM_Pdx.DatabaseName, '', False, False, lbTableNames.Items); // Liste der Tabellen holen
for i := 0 to Pred(lbTableNames.Count) do begin
tbl_Pdx.TableName := lbTableNames.Items[i];
tbl_Pdx.Open;
try
tbl_Pdx.First;
{ Alle Datensätze der Quelltabelle durchlaufen }
for j := 0 to Pred(RecordCount) do begin
for k := 0 to Pred(tbl_Pdx.Fields.Count) do begin
FieldNameUpper := UpperCase(tbl_Pdx.Fields[k].FieldName);
FieldNameMixed := tbl_Pdx.Fields[k].FieldName;
case tbl_Pdx.Fields[k].DataType of
ftString : qry_FB.ParamByName(FieldNameUpper).AsString := tbl_Pdx.FieldByName(FieldNameMixed).AsString;
Aber ich habe zwei Tabellen die BLOBs verwenden. Und das klappt nicht, für das TTable gibt es kein AsBlob oder etwas vergleichbares.
ftBlob : qry_FB.ParamByName(FieldNameUpper).AsBlob := tbl_Pdx.FieldByName(FieldNameMixed).???;
Hat jemand eine Idee wie man das hinbekommt? TIA.