Path d'une DB Access (en réseau) en vb

el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 3 août 2004 à 10:47
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 - 3 août 2004 à 12:43
salut les gens,

je souhaiterais retrouver automatiquement le chemin de la base de données.

je m'explique, j'ai une fonction qui me retourne les personnes connectées actuellement à la DB, mais cette fonction ne marche que sur le serveur (mon pc), et pas sur les clients.
ps : pour ouvrir la DB sur les clients, je vais juste dans les favoris réseaux.

la couille arrive ici :
strChemin = Left(strChemin, InStr(1, strChemin, ".")) + "LDB"


le débogueur surligne "left". sachant que juste avant j'ai :

strChemin = CurrentDb.Name
CurrentDb.Close


j'aimerais que ce chemin soit valide même si la DB est ouverte a distance... genre : "\\PC13\mon_dossier\ma_db.mdb"

4 réponses

Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
3 août 2004 à 11:04
Salut ;0)

Utilise la fonction suivante :

Function fCurrentDBDir() As String

Dim strDBPath As String
Dim strDBFile As String

strDBPath = CurrentDb.Name
strDBFile = Dir(strDBPath)
fCurrentDBDir = Left(strDBPath, Len(strDBPath) - Len(strDBFile))

End Function

Bonne prog'

Guy
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
3 août 2004 à 11:15
lut,

en effet ca marche bien ca, mais ce n'est pas exactement ce que je veux....

CurrentDB.name retourne :
"C:\SYLVAIN\04-08-03\db1.mdb"

ta fonction retourne :
"C:\SYLVAIN\04-08-03"

ce que je veux : (PC41 étant le nom de mon PC)
"\\PC41\C:\SYLVAIN\04-08-03"

^^
0
Neo.balastik Messages postés 796 Date d'inscription jeudi 17 mai 2001 Statut Membre Dernière intervention 5 mai 2009 7
3 août 2004 à 11:30
Salut ;O)

Tu confonds un peu...
Il est impossible pour la fonction de retourner \\PC41 si la DB est on local...

Par contre si d'un autre pc, tu ouvres la DB via le chemin UNC \\PC41\C:... la fonction te retourna bien \\PC41\SYLVAIN\04-08-03"

Pour réaliser ce dont tu désires, il faut concaténer le nom du PC avec celui de ma fonction.

Voici la fonction pour récupérer le nom de la machine :

Private Declare Function apiGetComputerName Lib "kernel32" Alias _
"GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSMachineName() As String

Dim lngLen As Long
Dim lngX As Long
Dim strCompName As String

lngLen = 16
strCompName = String$(lngLen, 0)
lngX = apiGetComputerName(strCompName, lngLen)
If lngX <> 0 Then
fOSMachineName = Left$(strCompName, lngLen)
Else
fOSMachineName = ""
End If

End Function

'Ceci te donnera ce dont tu demandes -> \\PC41\C:\SYLVAIN\04-08-03"

MsgBox "\" & fOSMachineName & "" & fCurrentDBDir

Guy
0
el_teedee Messages postés 497 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 13 juillet 2015 9
3 août 2004 à 12:43
j'ai tester ta fonction, elle retourne bien le nom de l'ordi.

mais ca va pas marcher !

je veux que ma fonction, retourne le nom de l'ordi SUR LEQUEL la base de données se trouve . . .

j'ai été sur un autre pc (un PC client), et j'ouvre ma DB se trouve dans ce dossier:
\\PC41\SYLVAIN\04-08-03
y'a pas le c:\

bon, et il faut se dire aussi, que le nom du serveur, ou même le serveur lui meme peut changer, donc il me faudrait la meme fonction mais qui retourne "\\NomServeur\Chemin" ou "\\NomServeur\Chemin\MaBase.mdb"

Car, je pense que si j'éxécute fOSMachineName() sur le client il va renvoyer :
\\PC_Client\ et pas \\Serveur\ qui m'intéresse :)
0
Rejoignez-nous