Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
504 Beiträge
 
Delphi 12 Athens
 
#1

Seltsames Phänomen mit ExexSQL

  Alt 10. Mai 2018, 10:43
Datenbank: MsSAL • Version: 2014 • Zugriff über: TADoQuery
Hallo zusammen,

ich habe das Problem, dass mit folgendem Aufruf nicht sichergestellt ist, dass die Daten in der DB gelöscht werden obwohl Result = true zurück gegeben wird
Delphi-Quellcode:
var
  lQuery: TAdoQuery;

begin
  lQuery := TAdoQuery.Create(nil);
  lQuery.Connection := GetConnection();
  
  Result := true;
  lQuery.SQL.Text := format('delete Table1 where RelID = %d', [iID]);
  Result := Result and (lQuery.ExecSQL > 0);

  lQuery.SQL.Text := format('delete Table2 where RelID = %d', [iID]);
  Result := Result and (lQuery.ExecSQL > 0);
Insgesamt sind es 4 Tabellen. Manchmal wurden die Daten in allen Tabellen gelöscht, manchmal wurden sie in einer der Tabellen nicht gelöscht.
Nach der Umstellung auf
Delphi-Quellcode:
  Result := 0;
  lQuery.SQL.Text := format('delete Table1 where RelID = %d', [iID]);
  Result := Result + lQuery.ExecSQL;

  lQuery.SQL.Text := format('delete Table2 where RelID = %d', [iID]);
  Result := Result + lQuery.ExecSQL;
werden die Daten jetzt immer gelöscht. Diese Lösung ist eh besser für mich, aber ich frag mich trotzdem was bei der Booleschen Variante schief geht
  Mit Zitat antworten Zitat