Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

chemin du DataBaseName dans propriétés

5 réponses
Avatar
Pascal
bonjour

j'essaie de renseigner mon controle DATA (DataBaseName )dans les propriétés
de cette manière :
"app.path" & "\Ctt.mdb"
visiblement pas la bonne méthode
car si je mets le chemin en dur et que j'excécute sur autre pc, le chemin
n'existe pas et me donne une erreur Disque

merci de m'aider

Pascal

5 réponses

Avatar
Pascal
Bon en cherchant......un peu j'ai trouvé ceci
Ctt.mdb suffit apparement
SORRY mais cela servira...peut-être à d'autres!

je promets de réfléchir avant de poster

pascal

"Pascal" a écrit dans le message de news:

bonjour

j'essaie de renseigner mon controle DATA (DataBaseName )dans les
propriétés
de cette manière :
"app.path" & "Ctt.mdb"
visiblement pas la bonne méthode
car si je mets le chemin en dur et que j'excécute sur autre pc, le chemin
n'existe pas et me donne une erreur Disque

merci de m'aider

Pascal


Avatar
jean-marc
"Pascal" wrote in message
news:
bonjour

j'essaie de renseigner mon controle DATA (DataBaseName )dans les
propriétés
de cette manière :
"app.path" & "Ctt.mdb"
visiblement pas la bonne méthode



Non, effectivement pas :-)

La chaine de caractère "app.path" est égale
à "app.path", et ce toujours et partout.

On voit d'ailleurs mal comment une chaine
de caractères pourrait se transformer en
autre chose qu'elle même ...

En revanche, App.path sans les guillemets
sera évalué à l'exécution.

Et donc, pour faire propre on fait comme ceci:

Private Const DB_NAME As String = "Ctt.mdb"
'
Private Sub Command1_Click()

Dim dbLocation As String

dbLocation = App.Path & "" & DB_NAME
End Sub

Avec le nom de la base dans une constante nommée
et pas hard-codée au milieu des fonctions.

Note que rien ne garantit à priori que l'utilisateur
qui lance l'application possède les privilèges requis
pour lire/écrire dans App.path.

Il y a des endroits prévus pour cela. Voir à ce sujet:
http://faq.vb.free.fr/index.php?question3



Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Pascal
hello Jean-marc,
ce n'est pas par programmation que je cherchais à faire cela!
je renseignait seulement la propriété du controle Data
en renseignant simplement le nom de la base (CTT.mdb) (et pas son chemin),
il est pris apparement par défaut dans le app.path

La chaine de caractère "app.path" est égale
à "app.path", et ce toujours et partout.



oui cela me parait élémentaire aussi!
je parlais de propriété du DATA CONTROLE
d'ailleurs essaies de mettre ceci dedans tu auras une erreur
app.path & "" & Ctt.mdb, OU app.path & "Ctt.mdb"
je pensais donc naturellement que l'ensemble était pris en tant que chaine

Note que rien ne garantit à priori que l'utilisateur
qui lance l'application possède les privilèges requis
pour lire/écrire dans App.path.



dans mon cas d'application tout est fait dans ce sens

Merci pour ton intervention, bien à toi
Pascal

"jean-marc" a écrit dans le message de news:
4744271c$0$22313$

"Pascal" wrote in message
news:
bonjour

j'essaie de renseigner mon controle DATA (DataBaseName )dans les
propriétés
de cette manière :
"app.path" & "Ctt.mdb"
visiblement pas la bonne méthode



Non, effectivement pas :-)

La chaine de caractère "app.path" est égale
à "app.path", et ce toujours et partout.

On voit d'ailleurs mal comment une chaine
de caractères pourrait se transformer en
autre chose qu'elle même ...

En revanche, App.path sans les guillemets
sera évalué à l'exécution.

Et donc, pour faire propre on fait comme ceci:

Private Const DB_NAME As String = "Ctt.mdb"
'
Private Sub Command1_Click()

Dim dbLocation As String

dbLocation = App.Path & "" & DB_NAME
End Sub

Avec le nom de la base dans une constante nommée
et pas hard-codée au milieu des fonctions.

Note que rien ne garantit à priori que l'utilisateur
qui lance l'application possède les privilèges requis
pour lire/écrire dans App.path.

Il y a des endroits prévus pour cela. Voir à ce sujet:
http://faq.vb.free.fr/index.php?question3



Cordialement,

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;









Avatar
jean-marc
"Pascal" wrote in message
news:
hello Jean-marc,
ce n'est pas par programmation que je cherchais à faire cela!
je renseignait seulement la propriété du controle Data
en renseignant simplement le nom de la base (CTT.mdb) (et pas son chemin),
il est pris apparement par défaut dans le app.path



Oups, j'ai lu trop vite :-)

Et effectivement, si tu ne spécifies pas
de chemin, il va prendre le fichier dans
le répertoire courant.

C'est parfois un peu piégeant, car si on lance
ton programme avec un .bat qui va chercher l'exe
dans un autre répertoire, le chemin courant sera
celui du bat, et alors il ne trouvera pas la
base :-(

C'est pourquoi en général, dans l'IDE et pour le temps
du développement, on écrit une valeur en dur dans la
propriété, puis ensuite, dnas la version finale,
on écrit explicitement la propriété depuis le code,
par exemple dans une procédure d'init appellée
depuis le form_load.

La dite procédure d'init habituellement va lire un
fichier de configuration qui contient le chemin de
la base. On le lit puis on affecte la propriété.

Voila :-)

Cordialement,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Pascal
hello,
je vais suivre tes conseils, cela me parait bien plus propre
merci
Pascal

"jean-marc" a écrit dans le message de news:
47445a53$0$22321$
"Pascal" wrote in message
news:
hello Jean-marc,
ce n'est pas par programmation que je cherchais à faire cela!
je renseignait seulement la propriété du controle Data
en renseignant simplement le nom de la base (CTT.mdb) (et pas son
chemin), il est pris apparement par défaut dans le app.path



Oups, j'ai lu trop vite :-)

Et effectivement, si tu ne spécifies pas
de chemin, il va prendre le fichier dans
le répertoire courant.

C'est parfois un peu piégeant, car si on lance
ton programme avec un .bat qui va chercher l'exe
dans un autre répertoire, le chemin courant sera
celui du bat, et alors il ne trouvera pas la
base :-(

C'est pourquoi en général, dans l'IDE et pour le temps
du développement, on écrit une valeur en dur dans la
propriété, puis ensuite, dnas la version finale,
on écrit explicitement la propriété depuis le code,
par exemple dans une procédure d'init appellée
depuis le form_load.

La dite procédure d'init habituellement va lire un
fichier de configuration qui contient le chemin de
la base. On le lit puis on affecte la propriété.

Voila :-)

Cordialement,


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;