[Delphi]Cela cesta k souboru na siti

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod dyžon 14. 3. 2016 18:59

Cau,
potreboval bych prosim poradit jak zjistim celou cestu na siti vcetne pismena jednotky HDD
chci nastavit cestu k databazi pres OpenDialog. FileName vypise cetu \\DYZON\data\data.fdb
v IBDatabase ale cestu musim zadat ve formatu IP:Jmeno svazku:\adresar
IP si zjistim z rozdelenyho OpenDialog.FileName kde vyparsuju \\DYZON
ale jde nejak zjistit i pismeno te jednotky (jmeno svazku) ???
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod Wikan 14. 3. 2016 22:44

Takže máš databázový server na jednom stroji a samotnou databázi na jiném? To není zrovna dobrý nápad.
Wikan
Moderátor
Uživatelský avatar

Odeslat příspěvekod silenyJohn 15. 3. 2016 06:45

takto sa nikdy nepristupuje na db. Bude to robit len problemy a pri viacerych klientoch si zlikvidujes databazu, lebo nebude spravne fungovat lock zaznamov.
silenyJohn
Junior

Odeslat příspěvekod powlcz 15. 3. 2016 08:51

To je opravdu špatný nápad, proč neuložíš databázi spolu s aplikací? Pak máš path:= ExtractFilePath(Application.ExeName);
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod dyžon 15. 3. 2016 08:52

k databazi pristupuje vice stroju, takze je na jednom a ostatni se pripojuji.
Ono to ani moc jinak nejde si myslim.
Ted to mam tak, ze nacitam cestu z .INI, kam ji musim napsat rucne a pri spusteni se mi nacte do IBDatabase
Kód: Vybrat vše
IBDatabase.DatabasePath:= Ini.ReadString('DATA',Path','');

u databaze mam jeste par souboru, ktery nacitam, ale tam uz mi staci ta cesta:
\\DYZON\data\info.dat
chtel bych vytvorit instalator a pri prvnim spusteni programu v pripade, ze nebude cesta zadana se spusti form nastaveni, kde se vsechno vyplni vcetne CreateDatabase a podobne.
budu rad za kazdej napad, jak to udelat ??

databaze je samozrejme na stroji, kde je nainstalovanej firebird.
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod powlcz 15. 3. 2016 09:00

Nedá se to jinak udělat, budeš muset mít síťovou složku ve Windows s databázovým file. Písmeno jednotky nepotřebuješ, místo "\\DYZON\" dáš "\\*IP*\", jestli ti teda nevyhovuje DNS jméno serveru/počítače v síti.
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod dyžon 15. 3. 2016 09:33

powlcz, diky,
vyzkousim, az prijdu domu.
vim, ze to chtelo za tim IP uplnou cestu k souboru:
192.168.1.1:D:\ddata\data.fdb ... nasdileny mam adresar data
zkusim teda:
\\192.168.1.1\data\data.fdb .... pokud by tohle fungovalo, tak je to presne to co hledam.
na netu jsem jeste nasel nejaky psani o UNC, ale zatim jsem z toho moc nevycet.
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod powlcz 15. 3. 2016 09:36

Fungovat to bude, ale jistější je DNS jméno, protože IP nemusíš mít statickou a při restartu PC ti může přiřadit router jinou... V podstatě nevidím důvod proč ti DNS název vadí, podle mne nesmysl :-)
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod dyžon 15. 3. 2016 10:05

no me to nevadi, vadi to IBDatabase.
kdyz dam IbDatabase.DatabasePath:= \\DYZON\data\data.fdb, tak se proste k te databazi nepripoji, pise to mam pocit Unavailable database.
Potrebuje tam prave to IP a uplnou cestu.
Prave protoze se IP meni, tak chci pri startu podle DNS zjisti aktualni IP a pak teprve nacist a pripojit databazi.
Idealne bych se IP nejradsi uplne vyhnul, ale IBDatabase to vyzaduje.
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod powlcz 15. 3. 2016 10:17

Jo tak. Mno tak mu možná vadí ty "\\", jelikož to rozhraní IBDatabase prostě neumí rozparsovat. K předpotopnímu rozhraní hold předpotopní přístup.

Jasně zkus formát
servername:DriveLetter:\filesystem-path\database-file
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod dyžon 15. 3. 2016 10:20

Jasně zkus formát
servername:DriveLetter:\filesystem-path\database-file


no to je prave ta hlavni otazka ...
jak zjistim z OpenDialogu prave DriverLetter a vsechny adresare pred nasdilenym adresarem.
vraci mi hodnotu \\DYZON\shared dir\ ....
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Odeslat příspěvekod JanFiala 15. 3. 2016 10:37

Pokud pujdes pres lokalni cestu, vrati ti to disk a vsechny adresare. Pokud pujdes do pocitace pres sit, vrati ti to sitovou cestu.
Takze pokud chces lokalni cestu, nechod v open dialogu pres sit.
Co můžeš udělat dnes, odlož na včerejšek
JanFiala
Expert
Uživatelský avatar

Odeslat příspěvekod powlcz 15. 3. 2016 11:02

Jinými slovy OpenFileDialog.FileName ti vrátí přesně to, co uživatel vybere, ne tak jak chceš ty :)
Chronický Ujížděč na nevhodnostech
powlcz
Junior

Odeslat příspěvekod silenyJohn 15. 3. 2016 11:13

k db sa nikdy nepristupuje cez sietovu cestu. ak ju chces mat na sieti, tak musis ist cestou klient-server. teda tam kde je fdb musi bezat fb server a potom sa klient pripaja nie cez local, ale tcpip na ten server v tvare <server>/3050:<cesta k db> pripadne si das na servri alias a ak bezi na 3050, tak u klienta staci <ip, alebo meno>:<alias>
silenyJohn
Junior

Odeslat příspěvekod dyžon 15. 3. 2016 11:18

asi jsem to napsal spatne.
z tech ostatnich PC musim jit pres sit, ale path k databazi musi byt zapsanej jako kdybych sel pres lokalni .. ve tvaru DriveLetter:\dir\dir\shared dir\soubor s tim, ze pred to vlozim IP serveru.

proste se v tom motam a zadny rozumny reseni .. teda pokud bude fungovat rada od powlcz:
\\192.168.1.1\data\data.fdb , tak mam vyhrano ...

mozna by bylo jednodussi predelat to na jiny komponenty nez IB
poradite mi prosim, co by bylo vhodny? pripominam, ze databaze musi jit pripojit pres network path .... IB to zda se neumi.

-- 15. 3. 2016 11:25 --

silenyJohn, diky, zkusim i ten tvuj zapis, bohuzel az odpoledne.
firebird muzu do instalacniho baliku pridat, ale kvuli UAC si myslim, ze bude slozitejsi vytvorit alias ve firebirdu, proto to resim takhle.
proste tam, kde bude nainstalovanej firebird, bude ulozena i databaze a potrebuju jen vytvorit uzivatelsky nastaveni vsem PC na siti pro pripojeni k databazi.
uz nevim jak to napsat, ale hlavne chci prvne vyzkouset ty dva zapisy, co jste mi poradili.
AMD FX-6300; Gigabyte 970A-DS3P; DDR3 8192MBytes; AMD Radeon HD 6700 Series
dyžon
Junior
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků