Aktywność aplikacji przy zapytaniu sql

0

Mam pytanko : czy można w jakiś sposób ustawiać aktywne okno
po wysłaniu zapytania do bazy sql, które trwa dość długo (kilka minut) tak by
uzytkownikowi po przełączeniu się na inny program i powrocie do mojego nie pokazywał
się "czysty"ekran tylko "normalne"okno aplikacji ?
Np. wykonuję update który trwa kilka minut, w tym czasie użytkownik
przełącza się np na notatnik a po jego zamknięciu mam biały ekran
i mimo tego że program wykonuje inne instrukcje (zapytania do bazy)
to staje się "aktywnym" dopiero w momencie gdy użytkownik ma coś
wykonać.

0

Czesc.

Mozesz to zrobic uzywajac Application.ProcessMessages.

Np. w ten sposob:

Query1.Active := True;
Application.ProcessMessages;
Query2.Active := True;
Application.ProcessMessages;
Query3.Active := True;
Application.ProcessMessages;

Oczywiscie to przy zalozeniu, ze te "inne instrukcje" o ktorych mowiles znajduja sie w innych query.
Radze poczytac o Application.ProcessMessages w pomocy, mozesz zastosowac ta instrukcje rowniez w petli:

while not Query.Eof do
begin
  //zrob costam
  Application.ProcessMessages;
  Query.Next;
end;
0

Zawsze też możesz użyć TThread

0

niestety jeseli jest to jedno zapytanie to
processmessages nic nie pomoze.

jedyny sposob jaki mi przychodzi to rozdzielic
obsluge zapytania i obsluge interfejsu na dwa watki...

0
Johny_Morfina napisał(a)

niestety jeseli jest to jedno zapytanie to
processmessages nic nie pomoze.

Napisałem przecież:

Oczywiscie to przy zalozeniu, ze te "inne instrukcje" o ktorych mowiles znajduja sie w innych query.

Mozna tez uruchomic Query asynchronicznie np. korzystając z ADO.

0
Wodzu napisał(a)
Johny_Morfina napisał(a)

...

Napisałem przecież:

...

spojz na czas - jak zaczynalem pisac to Twojej odpowiedzi jeszcze nie bylo :p

0

No wlasnie spojrzalem, napisales przeciez ponad godzine po mojej wypowiedzi i nawiazales do processmessages. Oj Johny ;-)

0

Dziękuję wszystkim za naprowadzenie na właściwe tory.
Na razie processmessages działa ale pokombinuję z wątkami bo mnie zaciekawiły.

0

Pokombinuj z asynchronicznym query i callbackiem. Bedzie prosciej.

Pozdrawiam.

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