OVH Cloud OVH Cloud

Problème de chemin

4 réponses
Avatar
Guy
Bonjour la communaut=E9 !

Voici mon probl=E8me:

Je fais appel =E0 ceci pour charger une image dynamiquement=20
dans un control d'un formulaire nomm=E9 frmTemp:

Forms("frmTemp").Form.imgLogo.Picture =3D fCurrentDBDir=20
& "Logo.bmp"

En fonction d'o=F9 se trouve la DB en cours, l'image se=20
charge ou ne se charge pas.

Exemple: si le chemin retourn=E9 par fCurrentDBDir est du=20
style "C:\Toto\", il n'y a aucun probl=E8me pour charger mon=20
image. Par contre si le chemin retourn=E9 est du=20
style "C:\PROGRA~1\TOTO~1\Tata\", mon image ne se charge=20
pas. On dirait qu'Access perd les p=E9dales avec ce type de=20
chemin retourn=E9...

Voici la fonction fCurrentDBDir (qui selon moi, ne pose=20
pas probl=E8me):

Function fCurrentDBDir() As String
=20
Dim strDBPath As String
Dim strDBFile As String
=20
strDBPath =3D CurrentDb.Name
strDBFile =3D Dir(strDBPath)
fCurrentDBDir =3D Left(strDBPath, Len(strDBPath) - Len
(strDBFile))

End Function

Avez-vous d=E9j=E0 rencontr=E9 ce probl=E8me ?

Merci pour vos lumi=E8res.

Guy

4 réponses

Avatar
Loïc
Bonjour,

exemple de code (non testé) :

1) ajouter Microsoft Scripting Runtime dans Outils /
Références
2)
Dim fso As FileSystemObject
Dim f As File

Set fso = CreateObject("Scripting.FileSystemObject")
fCurrentDBDir = fso.GetParentFolderName(CurrentDb.Name)



-----Message d'origine-----
Bonjour la communauté !

Voici mon problème:

Je fais appel à ceci pour charger une image dynamiquement
dans un control d'un formulaire nommé frmTemp:

Forms("frmTemp").Form.imgLogo.Picture = fCurrentDBDir
& "Logo.bmp"

En fonction d'où se trouve la DB en cours, l'image se
charge ou ne se charge pas.

Exemple: si le chemin retourné par fCurrentDBDir est du
style "C:Toto", il n'y a aucun problème pour charger
mon

image. Par contre si le chemin retourné est du
style "C:PROGRA~1TOTO~1Tata", mon image ne se charge
pas. On dirait qu'Access perd les pédales avec ce type
de

chemin retourné...

Voici la fonction fCurrentDBDir (qui selon moi, ne pose
pas problème):

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

Avez-vous déjà rencontré ce problème ?

Merci pour vos lumières.

Guy

.



Avatar
Guy Detienne
Salut ;O)

Petite précision pour ton code...
Inutile de référencer Microsoft Scripting Runtime dans les références si tu
crées l'objet via la méthode que tu proposes (dynamiquement):

Set fso = CreateObject("Scripting.FileSystemObject")

Donc tu ne devais pas déclarer ton objet ainsi:
Dim fso As FileSystemObject

Mais ainsi:
Dim fso As Object

Et le '"Dim f As File" ne sert strictement à rien...

Pour répondre à la question posée, une méthode bien plus légère que
d'utiliser FSO est l'API GetFullPathName (tiré de AllApi.net):

Private Declare Function GetFullPathName Lib "kernel32" Alias
"GetFullPathNameA" (ByVal lpFileName As String, ByVal nBufferLength As Long,
ByVal lpBuffer As String, ByVal lpFilePart As String) As Long

Dim Buffer As String, Ret As Long
Buffer = Space(255)
Ret = GetFullPathName(CurrentDb.Name, 255, Buffer, "")
Buffer = Left(Buffer, Ret)
MsgBox Buffer

Guy (un autre)

--
__________________________________
Tchao.net: L'informatique à votre dimension
www.tchao.net
Pour toute réponse, retirer le .nospam de l'adresse mail
ou cliquez ici http://cerbermail.com/?6nQ9U2fpkD
"Loïc" a écrit dans le message de
news:8ca401c3e9be$c9d8ea00$
Bonjour,

exemple de code (non testé) :

1) ajouter Microsoft Scripting Runtime dans Outils /
Références
2)
Dim fso As FileSystemObject
Dim f As File

Set fso = CreateObject("Scripting.FileSystemObject")
fCurrentDBDir = fso.GetParentFolderName(CurrentDb.Name)



-----Message d'origine-----
Bonjour la communauté !

Voici mon problème:

Je fais appel à ceci pour charger une image dynamiquement
dans un control d'un formulaire nommé frmTemp:

Forms("frmTemp").Form.imgLogo.Picture = fCurrentDBDir
& "Logo.bmp"

En fonction d'où se trouve la DB en cours, l'image se
charge ou ne se charge pas.

Exemple: si le chemin retourné par fCurrentDBDir est du
style "C:Toto", il n'y a aucun problème pour charger
mon

image. Par contre si le chemin retourné est du
style "C:PROGRA~1TOTO~1Tata", mon image ne se charge
pas. On dirait qu'Access perd les pédales avec ce type
de

chemin retourné...

Voici la fonction fCurrentDBDir (qui selon moi, ne pose
pas problème):

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

Avez-vous déjà rencontré ce problème ?

Merci pour vos lumières.

Guy

.



Avatar
Loïc
Salut autre Guy,

Oui, bon, j'en rajoute, mais ne dit-on pas "ne donne pas
le poisson, apprend plutôt à la personne comment le
pêcher" ?...

Si Guy (l'autre) ne connaîssait pas le fso, au moins elle
aura appris à le déclarer, le référencer, et aura
découvert ses méthodes et propriétés, qui lui serviront
très probablement un autre jour...

Déformation de formateur !

-----Message d'origine-----
Salut ;O)

Petite précision pour ton code...
Inutile de référencer Microsoft Scripting Runtime dans
les références si tu

crées l'objet via la méthode que tu proposes
(dynamiquement):


Set fso = CreateObject("Scripting.FileSystemObject")

Donc tu ne devais pas déclarer ton objet ainsi:
Dim fso As FileSystemObject

Mais ainsi:
Dim fso As Object

Et le '"Dim f As File" ne sert strictement à rien...

Pour répondre à la question posée, une méthode bien plus
légère que

d'utiliser FSO est l'API GetFullPathName (tiré de
AllApi.net):


Private Declare Function GetFullPathName Lib "kernel32"
Alias

"GetFullPathNameA" (ByVal lpFileName As String, ByVal
nBufferLength As Long,

ByVal lpBuffer As String, ByVal lpFilePart As String) As
Long


Dim Buffer As String, Ret As Long
Buffer = Space(255)
Ret = GetFullPathName(CurrentDb.Name, 255, Buffer, "")
Buffer = Left(Buffer, Ret)
MsgBox Buffer

Guy (un autre)

--
__________________________________
Tchao.net: L'informatique à votre dimension
www.tchao.net
Pour toute réponse, retirer le .nospam de l'adresse mail
ou cliquez ici http://cerbermail.com/?6nQ9U2fpkD
"Loïc" a écrit dans
le message de

news:8ca401c3e9be$c9d8ea00$
Bonjour,

exemple de code (non testé) :

1) ajouter Microsoft Scripting Runtime dans Outils /
Références
2)
Dim fso As FileSystemObject
Dim f As File

Set fso = CreateObject("Scripting.FileSystemObject")
fCurrentDBDir = fso.GetParentFolderName(CurrentDb.Name)



-----Message d'origine-----
Bonjour la communauté !

Voici mon problème:

Je fais appel à ceci pour charger une image dynamiquement
dans un control d'un formulaire nommé frmTemp:

Forms("frmTemp").Form.imgLogo.Picture = fCurrentDBDir
& "Logo.bmp"

En fonction d'où se trouve la DB en cours, l'image se
charge ou ne se charge pas.

Exemple: si le chemin retourné par fCurrentDBDir est du
style "C:Toto", il n'y a aucun problème pour charger
mon

image. Par contre si le chemin retourné est du
style "C:PROGRA~1TOTO~1Tata", mon image ne se charge
pas. On dirait qu'Access perd les pédales avec ce type
de

chemin retourné...

Voici la fonction fCurrentDBDir (qui selon moi, ne pose
pas problème):

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

Avez-vous déjà rencontré ce problème ?

Merci pour vos lumières.

Guy

.




.




Avatar
Loïc
Hum, d'autre part (j'insiste), en déclarant fso comme
Object, on ne bénéficie pas de l'aide IntelliSense. Peu
pédagogique...

-----Message d'origine-----
Salut ;O)

Petite précision pour ton code...
Inutile de référencer Microsoft Scripting Runtime dans
les références si tu

crées l'objet via la méthode que tu proposes
(dynamiquement):


Set fso = CreateObject("Scripting.FileSystemObject")

Donc tu ne devais pas déclarer ton objet ainsi:
Dim fso As FileSystemObject

Mais ainsi:
Dim fso As Object

Et le '"Dim f As File" ne sert strictement à rien...

Pour répondre à la question posée, une méthode bien plus
légère que

d'utiliser FSO est l'API GetFullPathName (tiré de
AllApi.net):


Private Declare Function GetFullPathName Lib "kernel32"
Alias

"GetFullPathNameA" (ByVal lpFileName As String, ByVal
nBufferLength As Long,

ByVal lpBuffer As String, ByVal lpFilePart As String) As
Long


Dim Buffer As String, Ret As Long
Buffer = Space(255)
Ret = GetFullPathName(CurrentDb.Name, 255, Buffer, "")
Buffer = Left(Buffer, Ret)
MsgBox Buffer

Guy (un autre)

--
__________________________________
Tchao.net: L'informatique à votre dimension
www.tchao.net
Pour toute réponse, retirer le .nospam de l'adresse mail
ou cliquez ici http://cerbermail.com/?6nQ9U2fpkD
"Loïc" a écrit dans
le message de

news:8ca401c3e9be$c9d8ea00$
Bonjour,

exemple de code (non testé) :

1) ajouter Microsoft Scripting Runtime dans Outils /
Références
2)
Dim fso As FileSystemObject
Dim f As File

Set fso = CreateObject("Scripting.FileSystemObject")
fCurrentDBDir = fso.GetParentFolderName(CurrentDb.Name)



-----Message d'origine-----
Bonjour la communauté !

Voici mon problème:

Je fais appel à ceci pour charger une image dynamiquement
dans un control d'un formulaire nommé frmTemp:

Forms("frmTemp").Form.imgLogo.Picture = fCurrentDBDir
& "Logo.bmp"

En fonction d'où se trouve la DB en cours, l'image se
charge ou ne se charge pas.

Exemple: si le chemin retourné par fCurrentDBDir est du
style "C:Toto", il n'y a aucun problème pour charger
mon

image. Par contre si le chemin retourné est du
style "C:PROGRA~1TOTO~1Tata", mon image ne se charge
pas. On dirait qu'Access perd les pédales avec ce type
de

chemin retourné...

Voici la fonction fCurrentDBDir (qui selon moi, ne pose
pas problème):

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

Avez-vous déjà rencontré ce problème ?

Merci pour vos lumières.

Guy

.




.