Delphi - BDE - Ako určiť cestu, kde sa vytvorí PDOXUSRS.NET?
Čo treba urobiť, aby sa súbor PDOXUSRS.NET nevytvoril na C:\ na na mnou určenej ceste?
Čo treba urobiť, aby sa súbor PDOXUSRS.NET nevytvoril na C:\ na na mnou určenej ceste?
Zpět do poradny Odpovědět na původní otázku Nahoru
Pouzij komponentu TSession a tu prirad databazi, popr. vychozi objekt TDatabase.Session
Musis nastavit cesty pro PDoxUser.NET LCK soubory a pak teprve pripojit DB
Vyzerá to jednoducho, ale veľmi tomu nerozumiem. Mám databázu urobenú tak, že mám nejaké TQuery, ktoré fungujú ako samostatné, takže mám priradiť TSession každému TQuery?
Pouzij komponentu TDatabase, nastav jeho property Database.Session cestu a v QUERY vypln property Database
Ak správne rozumiem tak:
Database.Session := PrgDir + DBDir;
Query.Database := Database;
Vraj je to read only vlastnosť (v helpe to bolo naznačené zápisom pre C++).
Tohle urcite ne. TSession je objekt. Nemuzes do nej priradit retezec.
Takze radeji:
Session.NetFileDir := ...
Session.PrivateDir := ...
Dobre, ale ako s TQuery?
Prostuduj si zdroják Rce_BDE.pas, který jsem ti kdysi posílal. Cesta se nastavuje v metodě SetSessionPath. Pozor, v BDE musí mít všichni uživatelé, přistupující ke společným sdíleným síťovým datům, stejný PDOXUSRS.NET! Když cestu nastavíš u defaultní Session, bude platit automaticky pro všechna data v programu.
A já dodám, že nejen stejný, ale podle doporučení namapovaný na stejném síťovém disku (stejné písmenko)
Tam to ide ešte cez tvoj objekt TRce a to je na mňa dosť. Ešte to samozrejme študujem, ale nie je to pre mňa jednoduché sa v tom vyznať.
No nič, takže ešte raz:
TfrmMain.DatabaseBeforeConnect(Sender: TObject):
Database.Session.NetFileDir := PrgPath + DBDir;
Database.Session.PrivateDir := PrgPath + DBDir;
TfrmMain.FormCreate(Sender: TObject):
Query.Database := ??? <- čo priradiť sem? je to vlastnosť len na čítanie, čo s tým?
Query.DatabaseName := PrgPath + DBDir;
1. Místo do TfrmMain.DatabaseBeforeConnect to klidně prdni do FormCreate.
2. U TQuery to je celkem fuk, nemusíš tam dávat nic, jestliže v SQL příkazu uvedeš celou cestu k tabulce(tabulkám) Tedy: TQUery.Database nedávat nic (správně tam ani nic nejde dát). Do TQuery.DatabaseName taky klidně nic (a tabulky určit celou cestou). Když už něco, tak cestu k hlavním datům. Lze zde také zadat Alias dat, který nastavíš v BDE Administratoru.
V tom mým modulu je to trošku komplikovanější, protože ten zjišťuje, jestli existuje Alias databáze z BDE Administratoru (aby fungovalo napojení třeba na jiné databáze než BDE). Když takový nenalezne, vytvoří si dočasný Alias na vlastní triko na nastavenou cestu dat ze spuštění programu .
RCE, ďakujem!!! Točil som sa okolo správneho riešenia ako prd v gaťách a toto ma nenapadlo. Posielam .
Presunul som to z TfrmMain.DatabaseBeforeConnect do TfrmMain.FormCreate a funguje to. Len by ma zaujímalo, prečo JaFi radil aj úpravu v Query.
Taky je to jedna z možností . Protože v BDE je databází adresář, lze to obojím způsobem. Kdybys to ale přes BDE Admin připojil třeba na Oracle, nevystačíš si už jen s jednoduchou cestou k datům (ani jí nebudeš vědět), ale musíš to napojovat přes Alias databáze .
PS: V DatabaseBeforeConnect je už pozdě na nastavování dat, tato událost je určena k ošetření uživatelského jména a hesla k databázi.
To je na mňa moc. Na to, že som s ozajstnými databázovými programami začal len koncom minulého roka som na tom celkom dobre. Teraz mám už jeden čisto Delphi + SQL program za sebou (aj vďaka osadenstvu poradne) a už sa vychytávajú muchy.
JaFi radil Database ke Query, abys nemusel vypisovat cestu, k adresari.
Tu si nastavis na jednom miste - v TDatabase.
Predstav si, ze budes mit program, ktery bude mit data pro jednlive roky ulozneny v jednotlivych adresarich. Co je jednodussi pri prepnuti roku? Nastavit cestu na jednom miste v TDatabase nebo to osetrovat pro kazdou komponentu, ktra k datum pristupuje?
To RCE: Aliasy? Fůj. Všechno můžeš natavit v TDatabase a jejich parametrech a to i programově. Být zavislý na Aliasu, který ti může kdokoliv zlikvidovat... A navíc bys jej musel nastavovat na všech stanicích...
Dobre, pre moje potreby to fungovalo aj tak, ako radil Rce, ale ako to dostať do Query, keď to sa bránilo zubami-nechtami?
Jj. Vím, vím. Přes aliasy je to trošku nezávislejší na prostředí. Můžu (teda kdybych náhodou někdy chtěl ) to napojit jak na MQSQL, tak i na MySQL... I když na to raději používám ADO, než BDE . Jeden můj program při nastavování databází programově nádherně všem odstřelil InfoMapu . BTW přes BDE Administrátora jsem to stejně dělal asi jen jednou, ale tu možnost v programech mám. Když to nenajde alias z BDE Admina, udělá si to přechodně samo svoje .