Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Hendlovanje "Connection Failed" kod TADOConnection

[es] :: Pascal / Delphi / Kylix :: Hendlovanje "Connection Failed" kod TADOConnection

[ Pregleda: 2382 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.zaslon-telecom.si.



+1 Profil

icon Hendlovanje "Connection Failed" kod TADOConnection15.01.2007. u 12:07 - pre 210 meseci
Ovako,

Imam jedan datamodule sa TADOConnection objektom i mnogo formi sa jednom ili vise TADOQuery nakacenim na taj TADOConnection. Tokom rada programa zbog loseg rada mreze, resetovanja servera ili ko-zna-cega pukne ta veza izmedju TADOConnection-a i underlying servera, i aplikacija izbaci jedan veliki "connection failed" msgbox na sred ekrana. U 99% slucajeva samo je potrebno zatvoriti i otvoriti TADOConn., ali ne postoji event OnError ili sl. Zna li neko kako se ovo hendluje, ne bih da opkoljavam svaki TADODataset.open sa try..except?

Znam da ovo ne bi bio problem kada bi umesto TADOConn. svaki TADODataset imao svoj conn. string, ali moze li se resiti sa TADOConnection?
 
Odgovor na temu

savkic
Igor Savkić

Moderator
Član broj: 92186
Poruke: 2739



+92 Profil

icon Re: Hendlovanje "Connection Failed" kod TADOConnection15.01.2007. u 15:35 - pre 210 meseci
> oseg rada mreze, resetovanja servera ili ko-zna-cega pukne ta veza izmedju TADOConnection-a i underlying servera, i aplikacija izbaci jedan veliki
> "connection failed" msgbox na sred ekrana. U 99% slucajeva samo je potrebno zatvoriti i otvoriti TADOConn., ali ne postoji event OnError ili sl.
> Zna li neko kako se ovo hendluje, ne bih da opkoljavam svaki TADODataset.open sa try..except?

Handluj Application.OnException.
 
Odgovor na temu

_v!rus_
BGD

Član broj: 40451
Poruke: 313
*.zaslon-telecom.si.



+1 Profil

icon Re: Hendlovanje "Connection Failed" kod TADOConnection16.01.2007. u 08:42 - pre 210 meseci
To sam i pokusao da izbegnem ali izgleda da nema druge...

Izgleda da TADOConn.Close i Open ne vrsi posao jer zatvori sve vezane datasete, probacu da u tom error handleru prvo pokupim sve aktivne datasete, pa posle close/open da ih ponovo aktiviram.

U principu, u 90% slucajeva se kod ADO-a koristi klijentski kursor, znaci staticka kopija recorda, svaki naredni insert ili update osvezava jedan record. Mislio sam da mozda postoji naci da se underlying konekcija resetuje u slucaju pada konekcije bez da se moraju svi dataseti zatvoriti (sto se desi kada uradis TADOConn.Close), ne vidim potrebu za stalnom konekcijom kod klijentskog kursora. Ako neko zna nesto vise na ovu temu neka kaze, verujem da je ovo common problem.
 
Odgovor na temu

aleksandarpopov
IT consultant
Senta

Član broj: 57172
Poruke: 484
82.131.209.*

Sajt: www.linkedin.com/in/aleks..


Profil

icon Re: Hendlovanje "Connection Failed" kod TADOConnection16.01.2007. u 13:09 - pre 210 meseci
Naravno da konekcija ne treba da ti je stalno otvorena. Koristi batch optimistic locking...

otvoris konekciju -> prevuces potrebne podatke u dataset -> zavoris konekciju

sada korisnik moze da menja podatke na klijentu

otvoris konekciju -> postujes promenjene podatke iz dataseta na server-> zatvoris konekciju

Sad kako ces ti to sve uklopiti u tvoje resenje to vec ne znam...

Pozdrav!

RTFM
 
Odgovor na temu

bondja

Član broj: 10286
Poruke: 167
*.adsl.static.sezampro.yu.



+3 Profil

icon Re: Hendlovanje "Connection Failed" kod TADOConnection16.01.2007. u 14:58 - pre 210 meseci
Svi ClientDataSet ili AdoQuery ili stavec treba da ima Connected, Active := false
u design modu. U principu preko TAdoQuery iscitavas podatke, a ucitavanje uradis preko
query: TAdoQuery (podesis SQL string) i onda pozivas preko funkcije (otprilike):

f-ja readDB( query: TADoQuery): boolean; // vraca true ako je uspesna
begin
Result := false;

try
if query.Active then
query.Close;

// konektujemo se na bazu:
if NOT AdoConn1.Connected then
AdoConn1.Open;

query.Open;
Result := TRUE;
except
On E: EDatabaseError do
MessageDlg(PChar(E.Message), mtError, [mbOK], 0);
end
end;

Ako ovo ne prodje, moguci razlozi i provere istih:
- MS Server service ne radi (?!?), mozes da proveris da li ti
SQL Server radi (procedura koja proverava da li radi (neki) servis je:
ServiceGetStatus('', 'MSSQLSERVER')
- izgubio si konekciju izmedju racunara ( mozes da proveris da li
vidis IP adresu doticnog racunara na kome se nalazi baza, tj da li
mozes da pristupis tom racunaru).

itd. Otprilike proveravas konekciju na vise nivoa u programu, a cim
iscitas / upises podatke, konekcije gasis (DRZIS IH ZATVORENE)
Ako pukne u toku iscitavanja/upisa podataka, to ce try/except da uhvati.

poz.
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Hendlovanje "Connection Failed" kod TADOConnection

[ Pregleda: 2382 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.