Delphi-Quellcode:
Form1.MyCommand1.SQL.Clear;
Form1.MyCommand1.SQL.Add('DELETE FROM logbuch WHERE Rufzeichen1=:ru1 AND Rufzeichen2=:ru2 AND Rufzeichen3=:ru3 AND Datumvon=:dav AND Uhrzeitvon=:urv');
Form1.MyCommand1.ParamByName('ru1').Name:='ru1';
Form1.MyCommand1.ParamByName('ru1').DataType:=ftString;
Form1.MyCommand1.ParamByName('ru1').Value:=e9ruf1;
Form1.MyCommand1.ParamByName('ru2').Name:='ru2';
Form1.MyCommand1.ParamByName('ru2').DataType:=ftString;
Form1.MyCommand1.ParamByName('ru2').Value:=e9ruf2;
Form1.MyCommand1.ParamByName('ru3').Name:='ru3';
Form1.MyCommand1.ParamByName('ru3').DataType:=ftString;
Form1.MyCommand1.ParamByName('ru3').Value:=e9ruf3;
Form1.MyCommand1.ParamByName('dav').Name:='dav';
Form1.MyCommand1.ParamByName('dav').DataType:=ftDateTime;
Form1.MyCommand1.ParamByName('dav').Value:=e9vdat;
Form1.MyCommand1.ParamByName('urv').Name:='urv';
Form1.MyCommand1.ParamByName('urv').DataType:=ftDateTime;
Form1.MyCommand1.ParamByName('urv').Value:=e9vzeit;
Form1.MyCommand1.Execute;
if not SqlRet then
Erstmal den Delphi-Code ändern:
Delphi-Quellcode:
Form1.MyCommand1.SQL.Clear;
Form1.MyCommand1.SQL.Add('DELETE FROM logbuch WHERE Rufzeichen1=:ru1 AND Rufzeichen2=:ru2 AND Rufzeichen3=:ru3 AND Datumvon=:dav AND Uhrzeitvon=:urv');
Form1.MyCommand1.ParamByName('ru1').DataType:=ftString;
Form1.MyCommand1.ParamByName('ru1').AsString:=e9ruf1;
Form1.MyCommand1.ParamByName('ru2').DataType:=ftString;
Form1.MyCommand1.ParamByName('ru2').AsString:=e9ruf2;
Form1.MyCommand1.ParamByName('ru3').DataType:=ftString;
Form1.MyCommand1.ParamByName('ru3').AsString:=e9ruf3;
Form1.MyCommand1.ParamByName('dav').DataType:=ftDateTime;
Form1.MyCommand1.ParamByName('dav').AsDateTime:=e9vdat;
Form1.MyCommand1.ParamByName('urv').DataType:=ftDateTime;
Form1.MyCommand1.ParamByName('urv').AsDateTime:=e9vzeit;
Form1.MyCommand1.Execute;
if not SqlRet then
Eine Namenszuweisung auf einen Parameter, den du schon mit dem Namen ansprichst, ist nicht nötig.
Die Wertzuweisung auf ParamByName('...').Value sollte man vermeiden, wenn man den Typ bereits kennt. Das bremst die Performance und kann in seltenen Fällen zu falschen Umwandlungen führen.
Den Type deiner Variablen kenne ich nicht. Gegebenenfalls musst du die noch umwandeln.
Die Probleme mit DateTime und Time wurden bereits angedeutet. Warum kann das ein Problem sein? Eim Time-Feld in der
DB wird evtl. anders verwaltet, als ein DateTime-Feld. Möglicherweise werden Millisekunden mit abgespeichert, aber deine Zuweisung ist nur sekundengenau. Wird in der
DB vielleicht ein anderes Datumsformat genutzt?
Mache aus deinen Delete erstmal ein Select. Teste es auf einem
DB-Frontend. Dann siehst du vielleicht schon, ob du überhaupt den Datensatz findest. Teste das gegebenenfalls noch mit einem entsprechenden Select (das auch eine Ergebnis liefert) in Delphi und schaue dir dort die Feldinhalte an (FieldByName mit AsString, bzw. AsDateTime).