ClientDataset: Must apply updates before refreshing data

0

Witam,

Połączenie z bazą MySQL za pomocą dbExpress. Na moim kompie, na którym piszę program wszystko działa. Po przeniesieniu na inny komp nie działa update danych. Aktualizacja danych jest wykonana w taki sposób: do tabeli DBGrid dodawane są rekordy z innej tabeli (użytkownik zaznacza myszką wybrane rekordy, które są następnie kopiowane poleceniem insert mysql), następnie użytkownik edytuje te dane w dbgrid. Po zakończonej edycji wywoływana jest metoda ClientDataSet.ApplyUpdates(-1). U mnie na kompie zmiany są zapisywane do bazy, natomiast na innym są zapisywane rekordy w pierwotnej postaci (tej po przeniesieniu do DBGrid a sprzed edycji użytkownika). Dodatkowo dostaję komunikat "ClientDataset: Must apply updates before refreshing data". Czy ktoś miał podobny problem?

Walczę z tym dalej... :(

Przekopałem trochę stron i zacząłem mieszać w ustawieniach DataSetProvider, SQLDataSet i ClientDataSet. Teraz zapisuje mi zmianę ale we wszystkich rekordach wstawia tą samą wartość z pierwszego edytowanego rekordu... Włączyłem obsługę OnReconcileError. W komunikacie błędu wypisuje mi "record not found or changed by another user". Już mi ręce opadają... i nie tylko...

... Po 2 dniach walki w końcu się udało... Metodą prób i błędów (ponieważ ustawienia, które są zalecane w powyższe sytuacji nie zadziałały), po ustawieniu w DataSetProvider.UpdateMode na upWhereChanged i dodaniu dla pola klucza głównego w DataSet.ProviderFlags opcji pfInKey zadziałało... Dziwne, ponieważ wszędzie piszą, że powinno być UpdateMode ustawione na upWhereKeyOnly. No nic, widać że technologia zachowuje się czasem chimerycznie. Zobaczymy co będzie w innych miejscach programu.

Pozdrawiam

0
Lookze napisał(a)

Dziwne, ponieważ wszędzie piszą, że powinno być UpdateMode ustawione na upWhereKeyOnly.

A jak ustawisz UpdateMode na upWhereKeyOnly i dla pola klucza głównego w ProviderFlags zmienisz opcję pfInKey na TRUE, to nie zadziała?

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