Was ich hier aus dem Quelltext nicht ganz so genau entnehmen kann:
Delphi-Quellcode:
InsertSQL := Format('INSERT INTO "%s" (%s) VALUES (%s)', [TableName, InsertFieldNames, InsertFieldValues]);
qry_FB.SQL.Add(InsertSQL);
...
{ Nun die Werte je nach Datentyp übertragen von der Quelle ins Ziel }
case tbl_Pdx.Fields[k].DataType of
ftString :
qry_FB.ParamByName(FieldNameUpper).AsString := tbl_Pdx.FieldByName(FieldNameMixed).AsString;
ftSmallint,
ftInteger,
ftWord,
ftAutoInc :
qry_FB.ParamByName(FieldNameUpper).AsInteger := tbl_Pdx.FieldByName(FieldNameMixed).AsInteger;
...
qry_FB.ExecSQL(InsertSQL);
Werden die Daten satzweise übernommen?
Wenn ja, Methode einfach, billig und unelegant:
Delphi-Quellcode:
Try
qry_FB.ExecSQL(InsertSQL);
except
on e :
Exception do begin
// ggfls. Fehlertyp abfragen und Fehlermeldung in 'ne Logdatei schreiben.
end;
end;
Wie greifts Du auf die Datenbanken zu, noch über die
BDE?
Wenn ja, dann schau Dir (soweit in Deinem Delphi vorhanden) bitte einmal die Komponente TBatchMove an.
Da kann man einiges Konfigurieren:
Quelle und Ziel.
Feldmapping.
Verhalten im Fehlerfalle.
Ausgabetabelle für die Datensätze mit Schlüsselverletzungen.
Eventuell etwas Literatur zu der Komponente:
http://docwiki.embarcadero.com/RADSt...wenden_-_Index
http://edn.embarcadero.com/article/25620
http://docs.embarcadero.com/products...epart_xml.html
Ach, was mir noch einfiel:
Wird die
BDE benutzt, so kann man in der Localsql.hlp nachlesen, was mit
SQL möglich ist. Dazu gehören auch die "handelsüblichen" Joins.
Die Hilfedatei liegt gewöhnlich im gleichen Verzeichnis, wie BDEAdmin.exe.