Entwickler-Ecke

Datenbanken - MYSQL, Delete-Befehl ärgert mich


hirsch - Mi 23.07.08 17:02
Titel: MYSQL, Delete-Befehl ärgert mich
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 user profile iconNarses: Delphi-Tags hinzugefügt


hirsch - Do 24.07.08 15:47
Titel: Ohje
Ich denke es gibt zwei Möglichkeiten, weil ich noch nix bekommen hab.

Erste: Das Thema ist garkein Thema, keiner gibt sich damit ab, mir ne Lösung zu geben, weil es zu einfach ist.
Zweite: Es weiß niemand eine Lösung.

Ohje....


ene - Do 24.07.08 16:12

Hi,

ich keine Erfahrungen mit MySQL und Delphi, aber warum machst du nicht einfach ein 'DELETE FROM Packingstructure WHERE ID='+IntToStr(satz)?


hirsch - Di 02.09.08 11:56
Titel: Und schon gehts
hallo ene

vielen dank nun funktioniert es zuverlässig.