Pozycja Bookmarkt+DeleteRow

0

Czesc !

Podaczas usuwania wiersza odswiezam baze danych, ale wczesniej zapamietuje pozycje zaznaczonego wiersza w DBGrid, prblem w tym ze jesli usune wiersz to ilosc wierszy w bazie zmniejszy sie a wskaznik BookMarkt ma dalej pamietac ta pozycje, niestety wyrzuca blad "Zakladka jest nieprawidlowa'.... jak sobie z tym poradzic:

var                                                   //BLAD ZAKLADKI !!!!!!
  zak : TBookMark;
begin
  zak := TADODataSet(DataModule2.FindComponent(source)).GetBookmark();

    DataModule2.Operacje3.Close;   //odswiezanie
    DataModule2.Operacje3.Open;

  TADODataSet(DataModule2.FindComponent(source)).GotoBookmark(zak);
  TADODataSet(DataModule2.FindComponent(source)).FreeBookmark(zak);

gdzie source to nazwa komponentu TADODataSet- wyciagam z procedury

0

Zobacz, czy błąd wyrzuca tylko w środowisku, czy w execu też. Jeśli tak, to go weź jakoś w try..except

0

ale jak usuniesz wiersz to pozmieniają Ci się zakładki i stąd ten błąd. Zamiast robić to na bookmarkach zrób tak:

Id := ADODataSet.FieldByName('ID').AsInteger; {pole ID to pole kluczowe, i będzie się nazywać pewnie inaczej}
//usunięcie wybranego wiersza;
ADODataSet.Locate('ID', ID,[]);

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