[ XGhost @ 21.05.2014. 03:32 ] @
Kako da uradim obradu izuzetka prilikom neuspjesne konekcije na bazu, prilikom startanja aplikacije.

Probao sam

begin
Connection1.Connected:=true;
try
Logiranje;
finally
showmessage ('Potrebna vam je veza sa internetom');
end;
[ shablagoo @ 21.05.2014. 06:11 ] @
Code:
 try
    ADOConnection1.Connected := True;
    except
    on e: EADOError do
    begin
      MessageDlg('Greška pri konektovanju.', mtError,
                  [mbOK], 0);
      Exit;
    end;
  end;
[ XGhost @ 21.05.2014. 11:33 ] @
Ne moze tako, ne moze se niti kompajlirati program
niti pokrenuti iako je connection false i tek kad se program podigne klikom na dugme se uspostavi

komponenta je UniDac
Uniconnection

[Ovu poruku je menjao XGhost dana 21.05.2014. u 12:43 GMT+1]
[ krle_zr @ 21.05.2014. 12:24 ] @

Za hvatanje izuzetaka na UniDac koristi EUniError, dole imaš jedan moj primer povezivanja na više baza podataka plus na lokalne.

Code:


procedure TfrmMain.PoveziNaBazu;
begin
  with dm do
  begin
  try
    frmMain.Update;
    Screen.Cursor := crHourGlass;

    NapredakPripreme.GaugeMax := 8;
    NapredakPripreme.Caption := 'Povezivanje na ' + Konekcija.ServerBaze;
    NapredakPripreme.ButtonCancel := False;
    NapredakPripreme.Open(PanelNapredak);


     ConnMsSql.Server := Konekcija.ServerBaze;
     ConnMsSql.Username:= Konekcija.User_Name;
     ConnMsSql.Password:= Konekcija.Pass;
     ConnMsSql.Connect;
     NapredakPripreme.GetGauge.StepIt;

     PgConn.Server := Konekcija.IP_Pg;
     NapredakPripreme.Caption := 'Povezivanje na ' + Konekcija.IP_Pg+'-backoffice...';
     NapredakPripreme.GetLabel.Update;
     PgConn.Connect;

     NapredakPripreme.GetGauge.StepIt;
     NapredakPripreme.Caption := 'Preuzimanje podataka o prodavnicama...';
     NapredakPripreme.GetLabel.Update;
     ProdavniceQP.Open;

     NapredakPripreme.GetGauge.StepIt;
     NapredakPripreme.Caption := 'Preuzimanje podataka o barkodovima...';
     NapredakPripreme.GetLabel.Update;
     ASWQP.Open;

     NapredakPripreme.GetGauge.StepIt;
     NapredakPripreme.Caption := 'Preuzimanje podataka o artiklima...';
     NapredakPripreme.GetLabel.Update;
     ASWQ_B2P.Open;

     NapredakPripreme.GetGauge.StepIt;
     dbfArtikal.Active := True;
     NapredakPripreme.GetGauge.StepIt;
     dbfBCODE.Active := True;
     NapredakPripreme.GetGauge.StepIt;
     dbfSKLROB.Active := True;
     NapredakPripreme.GetGauge.StepIt;

     if PgConn.Connected then
       UpdateLog('Uspešno povezan na: ' + dm.PgConn.Server);

     DatotekaQ.SQL.Clear;
     DatotekaQ.SQL.Add('SELECT [Naziv],[Putanja],[Operacija],[Lokacija],[Prefiks], [PrijaviGresku] FROM [Datoteka] order by ID_Datoteka');
     DatotekaQ.Open;
     DatotekaQ.First;

  except
    on E:EUniError do
    begin
      MessageDlg('Nema konekcije ka bazi podataka!' + sLineBreak +
                      'Pozovite IT sluzbu.', mtError, [mbOK], 0);
      UpdateLog('Nema konekcije ka bazi podataka!', 'Nema konekcije ka bazi podataka! ' + E.Message);
      UgasiProgram;
    end;
    on EL: Exception do
    begin
      MessageDlg('Nema konekcije ka lokalnoj bazi podataka!' + sLineBreak +
                      'Pozovite IT sluzbu.', mtError, [mbOK], 0);
      UpdateLog('Nema konekcije sa DBF-ovima!', 'Nema konekcije sa DBF-ovima! ' + EL.Message);
      UgasiProgram;
    end;
  end;
  NapredakPripreme.Close;
  end;
end;