Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Datenbank - Schreibend Zugreifen?

  Alt 8. Jun 2009, 14:42
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
Heiko
  Mit Zitat antworten Zitat