Einzelnen Beitrag anzeigen

Zwirbel

Registriert seit: 17. Aug 2009
66 Beiträge
 
Delphi 11 Alexandria
 
#1

TFDQuery.ParamByName().AsBlob

  Alt 4. Jul 2016, 16:06
Datenbank: Firebird • Version: 3 • Zugriff über: Delphi
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.
  Mit Zitat antworten Zitat