[ trunka @ 18.06.2007. 09:42 ] @
Kako da prikažem progres bar koji mi se 'okida' pozivom stored procedure? Preciznije, hoću da mi progress bar (u Delphi aplikaciji) daje informaciju koliko dugo se izvršava stor.proc...
Naravno, problem je što ne znam koliki bi bio maximalni limit za progress bar...Čula sam da to ni ne može da se uradi, obzirom da nemam informaciju o maximalnoj veličini progres bar-a.
Koristim inače ADO komponente (TADOStoredProc)...
P.S. ukoliko postoji mogućnost da se tako nesto uradi, zamolila bih vas da budete preciznije, jer stvarno nemam ideju kako da to uradim
[ savkic @ 18.06.2007. 10:46 ] @
Trajanje izvršavanja nekog upita u RDBMS nije moguće tačno predvideti, može biti trenutan a može i da traje desetinama minuta, sve zavisi od upita i od podataka. Postoji nwkoliko mogućnosti,
Prikaz progresa (ili neke animacije) u kružnoj kontroli, ne zna se koliko će izvršavanje trajati ali barem se nešto mrda.
Čuvanje dužine trajanja prethodnih izvršavanja tih upita pa se onda na osnovu toga predviđa trajanje i naredne.
Ako se ta operacija sastoji iz jedinica iste ili približne dužine možeš iz SP nekako okidati kada se obradi jedna jedinica ili možeš obradu prebaciti u sam Delphi program.
[ priki @ 21.06.2007. 07:23 ] @
pa to nije moguce izvrsiti ni na jednom RDBMS-u,
jer nikad ne znas koliko je server opterecen
od strane konekcija drugih korisnika ili od nekih job-ova sto odradjuje u medjuvremenu

koliko vidim, tebe izgleda muci i to sto ti se cela aplikacija blokira dok se
izvrsava ta procedura, to je vec druga stvar, problem je sto ti poziv procedure
ide kroz isti thread kao i korisnicki interfejs i onda ide mucenje racunara
odakle je pozvana procedura.

To se resava tako sto se poziv procedure stavi u poseban thread,
idealno resenje bi bilo neki thread pooler ili dva tri, gde bi stavljala sve te pozive
procedura, funkcija i ostalog prema RDBMS erveru

Srdjo
[ Milos D @ 22.06.2007. 13:55 ] @
Ne koristim ADO ali vidim da ADO query ima OnFetchProgress event. Probaj da stored proc izmenis tako da vraca informaciju o tome "dokle je stigao". Na primer, ako stored proc treba da obradi 1000 recorda (uradis count na pocetku da bi znala koliko ih je), onda posle 10% vratis "10" kao rezultat, pa "20" itd sve do "100" i to pratis preko eventa?