Kasowanie rekordu w bazie Paradox

0

Baza lokalna Paradox, Delphi 5.0 Enterprise

procedure TNumery_form.usunClick(Sender: TObject);
begin
  pokoj.delete ;
  pokoj.Post ;
end;

Powyższa procedura wywołuje komunikat:

Projekt … reised exeption class EDatebaseeError with message: ‘pokoj: Dataset not In Edit or insert mode'.

Wstawiłem DBnavigatora - kasowanie działa poprawnie. Moja procedura nie kasuje ! Dlaczego ?
Pogrzebałem na forach - wszędzie jest delete i już, u mnie nie działa.
Komunikat rozumiem, sensownych działań podjąć nie potrafię.

3

Zatwierdzanie zmian (Post) robi się tylko przy edycji lub dodawaniu nowego rekordu. Przy usuwaniu wystarczy samo Delete

procedure TNumery_form.usunClick(Sender: TObject);
begin
  pokoj.delete ;
end;
0

Banalne, ale pomogło.
DZIĘKI !!!

1
Świetny pomidor napisał(a):

Baza lokalna Paradox, Delphi 5.0 Enterprise

procedure TNumery_form.usunClick(Sender: TObject);
begin
  pokoj.delete ;
  pokoj.Post ;
end;

Powyższa procedura wywołuje komunikat:

Projekt … reised exeption class EDatebaseeError with message: ‘pokoj: Dataset not In Edit or insert mode'.

Wstawiłem DBnavigatora - kasowanie działa poprawnie. Moja procedura nie kasuje ! Dlaczego ?

Ponieważ kod wykonywany przez DBNavigatora jest inny od Twojego. Tak naprawdę, DBNavigator pod Delete wykonuje znacznie więcej niż proste Delete i można to napisać tak:

if pokoj.Active and pokoj.CanModify and not (pokoj.Eof and pokoj.Bof) then
   pokoj.Delete;

Podobnie jest z zapisem zmian, a więc nie samo Post bo się ślicznie wywali w niektórych przypadkach, tylko:

if pokoj.State in [dsEdit, dsInsert] then
   pokoj.Post;

Pogrzebałem na forach - wszędzie jest delete i już, u mnie nie działa.
Komunikat rozumiem, sensownych działań podjąć nie potrafię.

Nie, nie rozumiesz komunikatu ;-)

0

Dzięki !
To co napisałeś zapisuję pod ewentualne wykorzystanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1