Witam,
W jaki sposób odświeżyć dane z bazy Firebird bez rozłączania się z nią i ponownego łączenia?
W bazie mam zdefiniowane trigger'y które po zdarzeniu insert, update, delete wysyłają odpowiednią informacje. Moja aplikacja to odbiera i wykonuje ponowne zapytanie 'SELECT * FROM ...'. Dane jednak nie są odświeżane, muszę się rozłączyć i połączyć z bazą na nowo aby zobaczyć zmiany. Do łączenia z bazą wykorzystuję komponenty InterBase.
0
0
tranzakcje + commit - poszukaj informacji na ten temat
try
Modul.Tranzakcja.Active := false;
Modul.Tranzakcja.StartTransaction;
with Modul.Zapytanie0 do
begin
Active := false;
SQL.Clear;
SQL.Add(zapytanie);
ParamByName('ID_ODDZIALU').AsInteger := Modul.Zalogowany.id_oddzialu;
Active := true;
while not EOF do
begin
//tu wykonuję operacje odczytu
Next;
end;
Active := false;
end;
Modul.Tranzakcja.Commit;
//i potwierdzam całą operację - w tym momencie nie wystąpił żaden błąd itp.
except
Modul.Tranzakcja.Rollback;
//jeśli coś się nie powiodło, cofam wszystkie operacje jakie wykonałem od StartTransaction
end;
To jest kawałek z delphi 6 na wbudowanych komponentach do obsługi IB - ale podobna zasada będzie i dla reszty np. dla uib2
Po commit zmiany będą widoczne w bazie dla Ciebie jak i dla wszystkich innych użytkowników bazy...
0
Problem właśnie w tym że używam tranzakcji i wszystko zatwierdzam poprzez commit. Dane są zapisywane w bazie sprawdzałem to przez manager'a dla InterBase. Wprowadzałem dane także poprzez manager'a zatwierdzałem je moja aplikacja to wykrywa wykonuje zapytanie 'SELECT * FROM ...' ponownie ale to nic nie daje.