ZEOS + lazarus + firebird2.0 odświeżanie

0

Witam,
Wszystko było dobrze jak program działał na jednym
komputerze. Po dodaniu drugiego pojawił się problem
z odświeżaniem danych. Dane wprowadzone przez jeden
z komputerów są niewidoczne na drugim.

Form1.Qprodukty.close;
Form1.Qprodukty.SQL.Clear;
Form1.Qprodukty.SQL.Text:='select * from produkty order by id asc';
Form1.Qprodukty.Open;

w tej chwili radzę sobie w ten sposób:

   ZConnection1.Disconnect;
   ZConnection1.Connect;

Ale to chyba jest źle. insert, update... wykonywane są przez procedury
składowe i jest ok.

0

aby odświeżyć:

Form1.Qprodukty.Refresh;
0
Paweł Dmitruk napisał(a):

aby odświeżyć:

Form1.Qprodukty.Refresh;

mam wersję 7.0.3 zeos, nie działa w tej wersji.
Naprawili to w najnowszej wersji 7.2... Ale nie wiem
czy by mi to pomogło, przynajmniej w moim przypadku.
Jak będę miał czas to sprawdzę... dzięki

2

zapewne powodem są transakcje a raczej brak ich obsługi u Ciebie. Domyślnie rozłączenie się z bazą powoduje zatwierdzenie otwartych transakcji i wtedy dane są widoczne. FB ma też kilka poziomów izoloacji transakcji - poczytaj - w 99% przypadków odpowiednią jest Read Commited. Generalnie każda operacja zmiany danych powinna wyglądać w ten sposób:

  • start transakcji
  • zmiana danych (insert/update/delete), jeśli trzeba to kilka operacji powinno być zgrupowanych w transakcji (np. klasyczne zapisanie nagłówka i pozycji faktury powinno się odbywać w jednej transakcji)
  • jeśli pkt 2 się powiódł to zatwierdzenie transakcji
  • jeśli pkt 2 się nie powiódł to cofnięcie transakcji i obsługa błędu

Natomiast klasyczne odświeżenie danych w query to query.close a potem query.open.

0
abrakadaber napisał(a):

Natomiast klasyczne odświeżenie danych w query to query.close a potem query.open.

Ja bym dodał, że jak query podpięte jest pod DBGrida, to czasami warto jeszcze ustawić się na poprzednim rekordzie. Trzeba zapamiętać np. ID rekordu i potem dać Locate na query po polu ID szukając danego ID. Bez tego będziemy po Open ustawieniu na pierwszym rekordzie.

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