Einzelnen Beitrag anzeigen

Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

ADOCommand Fehler bei INSERT INTO

  Alt 23. Sep 2007, 11:58
Datenbank: MS SqlExpress • Version: 9.0 • Zugriff über: ADO
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.
Susanne
  Mit Zitat antworten Zitat