|
[ mr.zhile @ 21.07.2008. 15:37 ] @
| Pravim neku"malo komplikovaniju"aplikaciju..U sebi ima datamodull i par formi.Potrebno je kada se startuje aplikacija da ukoliko se ne pronadje baza na zeljenoj lokaciji,pojavi se poruka sa greskom(uhvati izuzetak),a potom se otvara opendialog iz kog se bira baza..
Neznam kako da uhvatim izuzetak,receno mi je da koristim handle u formactive...
ako moze neka pomoc ,SVaki dobronameran savet prihvatam..
Code:
procedure TFormMain.FormActivate(Sender: TObject);
begin
if not DataModuleMain.conn then
begin
ShowMessage('Greska');
dm:=TDataModuleMain.Create(Self);
Dm.OpenDialog1.Execute;
Dm.ini.WriteString('baza','put',DataModuleMain.OpenDialog1.FileName);
Dm.baza:=DataModuleMain.ini.ReadString('baza','put','');
DM.DataModuleCreate(Sender);
end;
end;
Code:
ini:=TIniFile.Create(ChangeFileExt(ExtractFilePath(Application.ExeName),'ini'));
ini.WriteString('baza','putanja','E:\DATEBASE\EMPLOYEE.GDB');
SQLConnection1.LoginPrompt := false;
Sqlconnection1.TableScope := [tsTable];
SDSKontrol.Connection.LoginPrompt := false;
SDSKontrol.Connection.TableScope := [tsTable];
SimpleDataSet1.Connection.LoginPrompt := false;
SimpleDataSet1.Connection.TableScope := [tsTable];
baza:=ini.ReadString('baza','putanja','');
try
begin
SqlConnection1.Params.Values['database'] := baza;
SQLConnection1.Open;
SimpleDataSet1.Connection.Params.Values['database']:=baza;
SimpleDataSet1.Connection.Open;
SDSKontrol.Connection.Params.Values['database']:=baza;
SDSKontrol.Connection.Open;
conn:=True;
ShowMessage('Konekcija ka bazi '+ baza +' je uspesna');
end;
except
end;
Ne kontam rad sa Hanblom,gde bi on trebao da stoji u kodu,i kako da se pozove... |
[ savkic @ 21.07.2008. 16:01 ] @
> Potrebno je kada se startuje aplikacija da ukoliko se ne pronadje baza na zeljenoj lokaciji,pojavi se poruka sa greskom(uhvati izuzetak),a
> potom se otvara opendialog iz kog se bira baza..
Mislim da je ovo višak, aplikacija sa bazom bez baze nema smisla, zašto baza ne bi postojala, odaberi jedan dir gde ćeš je smestiti i nemoj olakšavati korisniku da je šetaju. Dovoljan je jedan ini fajl iz koga će se preuzeti putanja prilikom startovanja programa.
> ne znam kako da uhvatim izuzetak,receno mi je da koristim handle u formactive...
Pogledaj u helpu exception handling.
> if not DataModuleMain.conn then
> begin
> dm:=TDataModuleMain.Create(Self);
Ovo je čudan deo, pretpostavljam da ti je DataModuleMain globalna DataModule promenljiva koja je verovatno automatski kreirana, zašto onda imaš kreiranje novog DataModula? Ponekad je potrebno imati više DM u programu ali ne verujem da je ovo slučaj.
> Dm.OpenDialog1.Execute;
Open dijalog se koristi ovako:
if OpenDialog1.Execute then
filename := OpenDialog1.FileName;
> DM.DataModuleCreate(Sender);
Ovo je još jedan čudan red, verovatno i greška.
> ini:=TIniFile.Create(ChangeFileExt(ExtractFilePath(Application.ExeName),'ini'));
> ini.WriteString('baza','putanja','E:\DATEBASE\EMPLOYEE.GDB');
Ovako svaki put resetuješ putanju do baze, ako je ručno upisana biće vraćena na default vrednost. Upis default vrednosti možeš staviti ako vrednost ne postoji (ja lično ne bih, parametri baze se čuvaju u ini fajlu ako se neko ručno igra sa njim, snosiće posledice).
[ mr.zhile @ 21.07.2008. 17:39 ] @
Open dijalog se koristi ovako:
if OpenDialog1.Execute then
filename := OpenDialog1.FileName;
ako je otvoren,a kako da se otvori?
Ok je to staviti bazu u jedan dir ali sam hteo da probam kako bi moja ideja mogla da se sprovede u delo?
Da se uvek moze otvoriti baza, takodje u programu je i opcija da se baza moze snimiti u neki drugi dir(ali to sam uspesno obavio  )
NEma u helpu skoro nista oko hanbla exception a ne znam kako da odraadim ovo?
Upravo gledam help i nekontam kako bi se primenulo za moj konkretan slucaj?
Aj mi malo konkretnije pomozite?
[Ovu poruku je menjao mr.zhile dana 21.07.2008. u 19:01 GMT+1]
[ savkic @ 21.07.2008. 18:34 ] @
> ako je otvoren,a kako da se otvori?
Kako šta da se otvori?
> NEma u helpu skoro nista oko hanbla exception a ne znam kako da odraadim ovo?
Pričam za D7 help (slično je i u novom help sistemu), otkucaš pojam exception handling, klikneš na overview i potom TopicGroup i dobićeš materijala za pola sata čitanja (redom pratiš linkove), takođe u helpu pogledaj sve drugo što se
Što se tvog problema tiče, želiš da proveriš da li baza postoji, pokušaj konektovanja na bazu i handlovanje greške ne znam da li će ti reći da li baza fizički postoji ili ne (verovatno zavisi i od baze), probaj pa ako dobiješ specifičnu grešku onda može i tako. Druga varijanta je da proveriš da li fajl baze fizički postoji, recimo sa FileExists.
[ mr.zhile @ 21.07.2008. 19:25 ] @
Mislio sam na OpenDialog.
Ja koristim Delphi 7.
To hablovanje greske sam hteo da probam,ali ne znam kako? Jel bi mogla mala pomoc u vidu nekog koda kako se to radi sa 2 forme,datamodulom i formom..isl..
[ mr.zhile @ 21.07.2008. 19:34 ] @
Da li ima mozda neki link na netu sa primerima hamblovanja?
Ako moze,pa cu valjda nesto skontati?
Nisam nasao nikakav primer u Helpu,@savkic ako znas da ima nessto molim te budi ljubazan pa postavi?
[ Miloš Baić @ 22.07.2008. 07:17 ] @
Citat: 'E:\DATEBASE\EMPLOYEE.GDB'
Ako radiš sa Firebird - om, koristi ini fajlove, ima tema o tome od skora, definiši alias u aliases.conf, u instalacionom folderu samog servera. I ako menjaš lokaciju baze, samo izmeniš u tom fajlu, na jednom mestu, ostali računari će raditi kao da nisi ništa uradio.
Što se tiče hvatanja izuzetaka, možeš koristi blok:
Code:
...
try
except
end;
...
Ili pustiti da exception dodje do Application exception handler-a ( Application.OnException). Ima u help - u, a ima i na forumu tema o tome, te google.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|