Moin Zusammen,
um bei einem Datensatz den Status zu aktualisieren verwende ich folgenden Aufruf:
Delphi-Quellcode:
rsWork := TADODataSet.Create(nil);
try
rsWork.ParamCheck := false;
rsWork.Connection := DM.conTravelDB;
sQuery := 'SELECT [completed],[storniert] FROM [traveltrip_SAP] WHERE [id]=' + FsTripID;
if not DoQuery(sQuery,rsWork) then Exit;
try
rsWork.Edit;
rsWork.FieldValues['completed'] := BooleanToField(true);
rsWork.FieldValues['storniert'] := BooleanToField(false);
rsWork.Post;
finally
rsWork.Close;
end;
finally
FreeAndNil(rsWork);
end;
Der Wert in FsTripID ist die Caption einer Listview-Zeile, und enthält eine ID, ausserdem ist [id] der Primärschlüssel der Tabelle.
Sobald diese Routine aufgerufen wird, werden (angeblich) manchmal mehrere Sätze geändert.
Betroffen sind Sätze, bei denen das Feld [completed] ungleich NULL ist (kann dann noch 1 oder 0 sein), das Feld [storniert], und ein weiteres Feld gleich 0 oder gleich NULL sind.
Noch eine Erklärung zu dem "angeblich":
Bei zwei verschiedenen Personen auf zwei verschiedenen Rechnern soll dies aufgetreten sein, auf meinem Rechner kann ich das leider nicht reproduzieren.
Allerdings habe ich auch keinen Grund anzunehmen, dass es bei den Betroffenen nicht wie beschrieben passiert ist.
Hat jemand irgendeine Idee, was an der obigen Routine diesen Fehler verursachen kann?