Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADOCommand Fehler bei INSERT INTO (https://www.delphipraxis.net/100146-adocommand-fehler-bei-insert-into.html)

Susanne 23. Sep 2007 11:58

Datenbank: MS SqlExpress • Version: 9.0 • Zugriff über: ADO

ADOCommand Fehler bei INSERT INTO
 
Ich habe ein ADOCommand und möchte damit ein INSERT ausfuehren. Wenn ich dies direkt in SQLExpress mache funktioniert es ohne Probleme, wenn ich dies aber nun in meinem Programm machen möchte bekomme ich die Fehlermeldung: Falsche Syntax in der Nähe von '@P1'. so etwas kommt aber in dem Insert gar nicht vor!

Quellcode:

das erste insert wird korrekt ausgeführt, die query danach auchn noch, das zweite insert liefert den fehler.
Delphi-Quellcode:
function Tdmzeiterfassen.DBEintragerstellen(s_erfassung: String; ZeitAnfang, ZeitEnde, ZeitAnfang2, ZeitEnde2,
                                            Pause: Tdatetime; Art, Art2, s_taetigkeit: STring; gesamtZeitTag: TDateTime): Boolean;
var
  sql: String;
  i: Integer;
begin
  Result:= false;
   sql:= 'INSERT INTO '+TabelleZeiten+' (Monat, Jahr, Datum, Anfangszeit, EndeZeit, '+
         'Pause, GesamtZeitArbeit, Arbeitsart, Anfangszeit2, EndeZeit2, Arbeitsart2, '+
         'Taetigkeit) '+
         'VALUES('+copy(s_erfassung, 4,2)+ ','+ copy(s_erfassung,7,4)+','+
                  QuotedStr(s_erfassung) +','+ QuotedStr(timetostr(ZeitAnfang)) +','+ QuotedStr(timetostr(ZeitEnde)) +','+
                  QuotedStr(timetostr(Pause)) +','+ QuotedStr(timetostr(GesamtZeitTag)) +','+
                  QuotedStr(Art) +','+ QuotedStr(timetostr(ZeitAnfang2)) +','+ QuotedStr(timetostr(ZeitEnde2)) +','+
                  QuotedStr(Art2) +','+ QuotedStr(s_Taetigkeit) +')';
  AdoCommand1.CommandType:= cmdText;
  AdoCommand1.CommandText:= sql;
  AdoCommand1.Execute;

  AdoQuery1.sql.clear;
  AdoQuery1.sql.add('SELECT id from zeiterfassungSB where Datum = '+QuotedStr(s_erfassung)+' order by id desc');
  AdoQuery1.open;
  if AdoQuery1.recordcount > 0 then begin
    AdoQuery1.first;
    ID_Datensatz:= AdoQuery1.fieldbyname('id').AsInteger;
  end;
  AdoQuery1.close;

  //Hier die anderen beiden Tabelle füllen mit der erhaltenen id_Datensatz
  for i:= 0 to length(frmErfassenAendern.aKunde_Projekt)-1 do begin
    sql:= 'INSERT INTO '+TabelleKundeProjekt+' (lfdNrTag, id_zeiterfassung, Berechnen, '+
          'Anfang, Ende, Kunde, Projekt, Taetigkeit) ' +
          'VALUES('+inttostr(i+1)+','+
                   inttostr(id_Datensatz)+','+
                   booltostr(frmErfassenAendern.aKunde_Projekt[i].Berechnen)+','+
                   frmErfassenAendern.aKunde_Projekt[i].Anfang+','+
                   frmErfassenAendern.aKunde_Projekt[i].Ende+','+
                   frmErfassenAendern.aKunde_Projekt[i].Kunde+','+
                   frmErfassenAendern.aKunde_Projekt[i].Projekt+','+
                   frmErfassenAendern.aKunde_Projekt[i].Taetigkeit+')';
    AdoCommand1.CommandType:= cmdText;
    AdoCommand1.CommandText:= sql;
    AdoCommand1.Execute;
  end;
  Result:= true;
end;
Irgendjemand eine Idee woran es liegen könnte.

mkinzler 23. Sep 2007 12:07

Re: ADOCommand Fehler bei INSERT INTO
 
Bei welchem der beiden Inserts?
Lass dir mal den erzeugten String anzeigen oder verwende besser (SQL-)Parameter


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz