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