Błąd dodania nowego rekordu do bazy danych

0

Witam,
mam problem z dodaniem rekordu do bazy.
Pierwszy rekord dodaje się bez problemu za to przy kolejnym wyskakuje błąd :
Dynami SQL Error SQL error code=-104 Token unknown- line 2, char -1 INSert'.

ID_CZ,ID_OBS są połączone z dwiema innymi tabelami a ID Tabeli OBSLUGI jest automatycznie generowany.

 for j := 0 to liczba_elm2-1 do 
 begin
 if Tab_listview2[j]<>'' then
  begin
  IBQuery1.SQL.ADD('Insert INTO OBSLUGI(ID_CZ,ID_OBS) VALUES(:P1,:P2)');
          IBQuery1.ParamByName('P1').AsInteger:=id_czyn;
           IBQuery1.ParamByName('P2').AsInteger:=StrToInt(Tab_listview2[j]); 
           IBQuery1.ExecSQL;
 IBTransaction1.Commit;
   end;

Może ktoś wie czego to może być przyczyna?
Proszę o pomoc.

poprawienie tytułu i tagów wątku - furious programming

1

zrob sobie:

Showmessage(IBQuery.SQL.Text);

albo uzyj debuggera i zobacz jaki sql wynikowy ci zwraca.
Przeklej go do menedzera sql i tam stestuj.

testuj bez transakcji pozniej dopiero z nią. pozdro

dodanie znacznika <code class="delphi"> - furious programming

0

Wielkie dzięki ;)

0

Przyczyną jest błędny kod, napisz to tak:

  try
    IBTransaction1.StartTransaction;
    IBQuery1.SQL.Text := 'Insert INTO OBSLUGI(ID_CZ,ID_OBS) VALUES(:P1, :P2)';

    for j := 0 to liczba_elm2 - 1 do
    begin
      if Tab_listview2[j] <> '' then
      begin
         IBQuery1.ParamByName('P1').AsInteger := id_czyn;
         IBQuery1.ParamByName('P2').AsInteger := StrToInt(Tab_listview2[j]);
         IBQuery1.ExecSQL;
      end;
    end;
    IBTransaction1.Commit;
  except
    on E: Exception do
    begin
      IBTransaction1.Rollback;
      Raise;
    end;
  end;

PS.
@boznoo111
A od kiedy to w Firbired/Interbase da się cokolwiek zrobić bez transakcji?
To że Ty jej nie używasz, nie oznacza że się nie wykonuje niejawnie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1