Liebes Forum,
mein Delete-Befehl meint immer, der Datensatz sei von anderem Benutzer geändert, oder nicht vorhanden. Bin hier auf der localmachine, und da hab nur ich eine Verbindung. Zur erklärung: SDS=TSQLDataset, CDS=TClientDataset
Hab hier mal den code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| Procedure TLMobilesicherung.DS_LM_loeschen(satz : Longword); begin SQL_Str:='Select * from Packingstructure where ID='+IntToStr(satz); Data.DataModule1.SDSLMPs.Refresh; Data.DataModule1.CDSLMPs.Refresh; Data.DataModule1.CDSLMPs.Active:=False; Data.DataModule1.SDSLMPs.Active:=False; Data.DataModule1.SDSLMPs.CommandText:=sql_str; Data.DataModule1.SDSLMPs.Active:=True; Data.DataModule1.CDSLMPs.Active:=True; if Data.DataModule1.CDSLMPs.RecordCount=1 then begin Data.DataModule1.CDSLMPS.Active:=False; Data.DataModule1.SDSLMPS.Active:=False; Data.DataModule1.SDSLMPS.CommandText:=SQL_Str; Data.DataModule1.SDSLMPS.Active:=True; Data.DataModule1.CDSLMPS.Active:=True; Data.DataModule1.CDSLMPS.Delete; Data.DataModule1.CDSLMPS.ApplyUpdates(-1); end else showmessage ('bei '+intToStr(satz)+'stimmt was nicht! Nur '+intToStr(Data.DataModule1.CDSLMPs.RecordCount)+' Datensätze'); end; |
Dann hab ich probiert, um zu sehen, ob der Datensatz noch da ist:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TDataModule1.CDSLMPSAfterScroll(DataSet: TDataSet); begin if Data.DataModule1.CDSLMPS.UpdateStatus=usModified then Data.DataModule1.CDSLMPS.RefreshRecord;
end; |
und dann anschliessend noch
Delphi-Quelltext
1: 2: 3: 4:
| procedure TDataModule1.CDSLMPSBeforeScroll(DataSet: TDataSet); begin showmessage(Data.DataModule1.CDSLMPS.fieldbyname('ID').asstring); end; |
damit ich das angezeigt bekomme.
Ich bekomme immer den Datensatz angezeigt, den ich auch löschen will.
Ich verstehe das nicht, wo mache ich den Denkfehler?
Moderiert von
Narses: Delphi-Tags hinzugefügt