Newsgroup: it.comp.lang.delphi
Titolo: Path di un DB su LAN tramite OpenDialog

Ciao a tutti,
vorrei dare la possibilià di selezionare il path di un database 
Firebird) mediante una OpenDialog.
Se il DB si trova nella stessa macchina dell'utente non ci sono problemi 
ad es. il path è:  C:\MyApp\MyAppData\MyDb.FDB
Quando però sposto il DB in una cartella condivisa di una LAN non riesco 
più a ottenere il path esatto tramite OpenDialog che mi ritorna:
&#124;&#124;MyLanPc\cartella_shared\MyDb.FDB
mentre il path da usare dovrebbe essere:
MyLanPc:C:\cartella_shared\MyDb.FDB
Esiste un modo per risolvere questo problema? O strade migliori da 
questa che sto provando?
Grazie.
Paolo
--- posted by geoForum on 
http://www.delphiedintorni.it

correggo la riga: 
&#124;&#124;MyLanPc\cartella_shared\MyDb.FDB
con:
&#124;&#124;MyLanPc\cartella_shared\MyDb.FDB
Paolo


Mi spiace per il terzo post consecutivo ma continuo a vedere
che il doppio slash a inizio riga viene mostrato come &#124;&#124
e vabbé, questa non mi era ancora capitata :-)


 e vabbé, questa non mi era ancora capitata :-)
Cerca (in google ovviamente) "delphi UNC path functions", ce n'e' a
bizzeffe.
Ciao
-- 
Morde

bizzeffe.
grazie ne ho trovati davvero tanti, non conoscevo il significato di UNC.
Comunque oltre ad averli trovati ne ho provati diversi ma "ciccia" mi 
danno errore o non sembran funzionare.
Ad esempio il primo sullo straconosciuto 
delphi.about.com
riporta: 
Usage:
UNCLabel.Caption := ConvertToUNCPath(ExtractFileDrive(Edit1.Text)) ; 
~~~~~~~~~~~~~~~~~~~~~~~~~
function ConvertToUNCPath
   (MappedDrive: string) : string;
var
   RemoteString : array[0..255] of char;
   lpRemote : PChar;
   StringLen : Integer;
begin
  lpRemote := @RemoteString;
  StringLen := 255;
  WNetGetConnection
     (Pchar(ExtractFileDrive(MappedDrive)) ,
                    lpRemote,
                    StringLen) ;
  Result := RemoteString;
end;
Se io lo provo mi dà questo errore
[DCC Error] uStart.pas(65): E2033 Types of actual and formal var 
parameters must be identical
dove sbaglio?


Presumo non funzioni....
Devi usare l'alias.conf di firebird
ad esempio alias.conf
MyDB = c:\share\db.fdb
Dal client che deve contattare il server :
DataBAse = Server_Firebird:MyDb
Ciao


Devi usare l'alias.conf di firebird
si mi sono guardato l'uso dell'alias ma credo ne venga suggerito 
l'utilizzo soprattutto per ragioni di sicurezza nel caso di DB residenti 
su server remoti non in LAN... se sbaglio correggetemi.
La mia domanda comunque era un'altra: come ottenere il giusto path del 
DB su cartella condivisa in LAN tramite OpenDialog.
Mi interessa poi anche il discorso del DB su server remoto con alias 
ecc. ma questo sarà oggetto di altro thread.
Grazie comunque dell'attenzione.


su server remoti non in LAN... se sbaglio correggetemi.
Credo proprio che ti stia sbagliando.....
L'alias va utilizzato proprio per fare in modo di non condividere il file
in rete ( come avviene con i file di access)
Se non vuoi utilizzare l'alais puoi sempre fare i nquesto modo senza
dover condividere il file in rete:
DataBaseName = Pc_Server_Firebird:c:\nome_cartella\Database.fdb
Ciao


Grazie dell'attenzione Loris,
ho seguito il tuo consiglio di usare l'alias e funziona.
In questo modo perň si obbliga l'utente del PC in LAN a modificare 
l'alias.conf di firebird per scriverci il path esatto.
Se fosse possibile usare una OpenDialog credo che per l'utente la cosa 
diventerebbe ancora piů semplice... ma non ho ancora trovato il modo di 
poterlo fare.



Per quale motivo l'utente dovrebbe muovere il file.fdb da una cartella ad
un' altra?
Ciao


ad un' altra?
Beh e se lo fa lo stesso :-)
A parte la battuta, cerco di chiarire meglio.
Immagina una piccola LAN con tre PC... ognuno installa in C la stessa 
applicazione contenente una cartella 'data' contenente il DB.FDB. A 
questo punto possono decidere se condividere il DB o meno mediante 
un'opzione tipo USA DB: SOLO IN LOCALE / CONDIVIDI. Se decidono di 
condividerlo il PC che fa da server deve posizionare la cartella data 
dell'app in una cartella della rete che sia condivisa con gli altri e 
naturalmente dovrebbe cambiare a manina il file alias.config.
Se questo approccio è errato ditemi pure... desidero imparare e capire 
meglio come accedere (e poi come utilizzare al meglio) un DB da più 
postazioni.
Paolo


Firebird e' un database server, e come gia' accennato non devi condividere
la cartella.
Come opzione del tuo programma non condividere la cartella , ma aggiorna
direttamente il file alias.conf di firebird.....ovviamente firebird deve
essere installato sul pc, oppure lo aggiungi al setup del tuo programma.
