Hallo,
du solltest dein .SQL mal vor dem ExecQuery ansehen (ShowMessage),
dann siehst du auch, was du verkehrt machst.
1.
ein normales
SQL Insert beginnt erst mal so
Insert Into Table1(Feld1,Feld2,Feld3) ...
Du schreibst aber statt dem Komma ein Semikolon, wozu ?
Ausserdem ein
+, was hier überhaupt nicht hingehört,
und es fehlt die Klammer
) am Ende
'Feldname1; Feldname2+; Feldname3'
Zu deinem String-Problem, benutze Parameter.
Delphi-Quellcode:
var
CastKlasse : TCastKlasse;
sFieldValue : String; // damit man das auch mal Debuggen kann
begin
...
DBM.IBSQL1.SQL:= 'Insert Into Table1(Feld1,Feld2,Feld3)'
+'Values(:Feld1,:Feld2,:Feld3)';
CastKlasse:= TCastKlasse(TotalkomplexeStruktur.UnterKlasse.ObjectList.Item[I]); // oder so ähnlich
sFieldValue:= CastKlasse).Item[K]);
DBM.IBSQL1.ParamByName('Feld1').AsString:= sFieldValue;
Dein DBM.IBSQL1.SQL := DBM.IBSQL1.SQL + XXX
macht auch nicht viel Sinn, weil das
SQL-Statement immer länger wird in der Art
'Insert Into XX Insert Into YY '
Einzige Grund wäre, wenn die Felder in deiner List1 zu verschiedenen Tabellen
gehören würden und die Anzahl variabel ist.
Das ist aber nicht ersichtlich, weil meine Glaskugel List1 und List2 nicht kennt.
Edit:
TotalKomplizierterDatenTyp sollte durch lokale Variable zumindestens soweit
vereinfacht werden, dass man das debuggen kann (Watch-Point).
Heiko