Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 1.538 pregleda

Najnovija ↓

Prekid konekcije na Firebird 01.09.2020. u 11:02 · pre 75 meseci #1
Koristim: FB 1.5 i Delphi 10.1

Korisnik pokrene program, pa zaboravi na njega 2-3 sata. Kad se sjeti, program je izgubio konekciju na FB server. Kod sebe to ne uspjevam dobiti. Pokušavam sa zaustavljanjem i pokretanjem servisa FB.
U parametrima TFDConnection sam postavio:
AutoConnect := true
AutoReConnect := true

Kod zaustavljanja FB servisa, event AfterDisconnect se NE okine.

Kako nakon prekida konekcije ponovno ju uspostaviti? Pokušao sam u event konekcije OnError dodati:
Code:

procedure Tdm.fdcError(ASender, AInitiator: TObject; var AException: Exception);
begin
   fmMain.OtvoriDB;
end;


u Main formi, proc. OtvoriDB:
Code:

procedure TfmMain.OtvoriDB;
  ...
  if dm.fdc.Connected then
     dm.fdc.Close;
  ...
end;


dm.fdc.Connected ima vrijednost: true
dm.fdc.Close vrati grešku: [FireDAC][Phys][FB]Unable to complete network request to host "MojLap". Error writing data to the connection.
Ako izbacim dm.fdc.Close, tada mi dm.fdc.Open javi istu grešku.

Kolega ima na istom kompu program pisan u D2007 i nema tih problema.

Re: Prekid konekcije na Firebird 01.09.2020. u 11:20 · pre 75 meseci #2
Registrujej se da pratis sve exceptione, handluj tu gresku koja se javi tako sto unistis sve komponente (ili samo osnovne tipa DBConnection i DBSession) i ponovo ih napravis.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Prekid konekcije na Firebird 01.09.2020. u 12:29 · pre 75 meseci #3
savkic, probao sam, ali...

Namjerno sam izazvao error s form2.ShowModal a da nisam kreirao formu, exception je odradio, ali za konekciju kada stopiram FB server nije, javlja sistemsku grešku.

napravio sam u main formi:
Code:

  TfmMain = class(TForm)
  ...
  public
    procedure MyAppException(Sender: TObject; E: Exception);
  end;

procedure TfmMain.FormCreate(Sender: TObject);
begin
  Application.OnException := MyAppException;
end;

procedure TfmMain.MyAppException(Sender: TObject; E: Exception);
begin
   ShowMessage('Greška na:' + Sender.ClassName);
   Application.ShowException(e);
   dm.fdc.Free;
end;


Gdje griješim?
Re: Prekid konekcije na Firebird 01.09.2020. u 12:42 · pre 75 meseci #4
Application.OnException nije dobio obavestenje o toj gresci? Da je nisi hendlovao vec negde? Mislim da ce u globalni hendler ici samo one neobradjene. Takodje probaj i sa TApplicationEvents.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Prekid konekcije na Firebird 01.09.2020. u 16:08 · pre 75 meseci #5
Citat:
FranjoZG:
Koristim: FB 1.5 i Delphi 10.1

Korisnik pokrene program, pa zaboravi na njega 2-3 sata. Kad se sjeti, program je izgubio konekciju na FB server. Kod sebe to ne uspjevam dobiti. Pokušavam sa zaustavljanjem i pokretanjem servisa FB.
U parametrima TFDConnection sam postavio:
AutoConnect := true
AutoReConnect := true

Kod zaustavljanja FB servisa, event AfterDisconnect se NE okine.

Kako nakon prekida konekcije ponovno ju uspostaviti? Pokušao sam u event konekcije OnError dodati:
Code:

procedure Tdm.fdcError(ASender, AInitiator: TObject; var AException: Exception);
begin
   fmMain.OtvoriDB;
end;


u Main formi, proc. OtvoriDB:
Code:

procedure TfmMain.OtvoriDB;
  ...
  if dm.fdc.Connected then
     dm.fdc.Close;
  ...
end;


dm.fdc.Connected ima vrijednost: true
dm.fdc.Close vrati grešku: [FireDAC][Phys][FB]Unable to complete network request to host "MojLap". Error writing data to the connection.
Ako izbacim dm.fdc.Close, tada mi dm.fdc.Open javi istu grešku.

Kolega ima na istom kompu program pisan u D2007 i nema tih problema.




Možda računar kod korisnika ode u sleep?
Re: Prekid konekcije na Firebird 04.09.2020. u 09:35 · pre 74 meseca #6
Nisam uspio shvatiti zašto se kod korisnika prekine konekcija. Kod sebe to nisam uspio napraviti. Kada komp ode u sleep, nakon buđenja konekcija još uvijek postoji. Kod sebe mogu samo ručno zaustaviti servis. Našao sam naćin provjere da li je servis aktivan ili ne, ali sam na lokalnom kompu. Nisam uspio naći kako provjeriti da li je aktivan FB servis na serveru.

Problem je provjera da li konekcija još uvijek postoji. Probao sa ping-om, ali ako nema konekcije traje predugo. Pokušat ću ju staviti u zasebni thread, pa ako se thread ne izvrši za par sekundi, protumačit ću to kao izgubljenu konekciju.
Što mislite o toj ideji ili postoji neki drugi način. Google mi nije dao ništa pametno.

Nešto zanimljivo, nisam detaljno istraživao: Ako je tfdConnection.AutoReConnect := true, tada kod izgubljene konekcije tfdConnection.Close javalja grešku (pokušaj ubisa u bazu). Možda ima veze sa aktivnim transakcijama. Ako je postavljeno na false, ta greška se ne javlja.
Re: Prekid konekcije na Firebird 04.09.2020. u 10:54 · pre 74 meseca #7
> Nisam uspio naći kako provjeriti da li je aktivan FB servis na serveru.

Pokusas da se povezes na ServicesAPI? Ne znam da li FireDac ima adekvatne komponente, IBX ix ima.

> Problem je provjera da li konekcija još uvijek postoji.

Posaljes kveri i vidis ima li rezultata:
select 1 from RDB$DATABASE;
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme