tu peux ajouter ton message dans le code de ton bouton
ma solution consiste à travailler non pas sur la requête mais sur son querydef
mais la tienne me semble parfaite
tu peux ajouter ton message dans le code de ton bouton
ma solution consiste à travailler non pas sur la requête mais sur son querydef
mais la tienne me semble parfaite
ok, dans ce cas, je garde la mienne car je ne connais pas le querydef vraiment et la, je n'ai pas beaucoup de temps pour l'etudier...Envoyé par random
Bonjour,
il suffit de faire commencer le chemin par "\" pour que la requete recherche à partir de la racine du disque dur C:.
Si on ne fait pas commencer le chemin par "\" il cherche à partir de
"c:\documents and settings\UserEnCours\mes documents\"
Philippe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 select * from matable IN '\matable.mdb'; ' => cherche matable.mdb dans c:\ select * from matable IN 'matable.mdb'; ' => cherche matable.mdb dans c:\Documents and Settings\Utilisateur\Mes Documents\ select * from matable IN '\MonRep\matable.mdb'; ' => cherche matable.mdb dans c:\MonRep\
oui, je suis entierement d'accord avec ce que tu dis mais mon probleme ne vient pas de la, mon probleme, c'est que je ne connais pas a l'avance le chemin ou va se trouver la base de donnees. ca peut tres bien etre sur 'C:\' comme sur 'N:\mon repertoire\' ou encore tout autre chemin...Envoyé par philben
Slt,
J'ai peut-être loupé quelque chose mais pourquoi ne pas utiliser une table liée??
C'est plus pratique, tu y gagnes en performance, et il y du code dans la FAQ et le forum pour gérer les attaches en VBA.
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL
Blog Office Mon Site DVP
Ne pourrais-tu pas imaginer creer cette requete depuis VBA (avec QueryDef etc. je crois), et ainsi tu n'auras plus besoin de passer par l'utilisation de variables/fonction dans le SQL.Envoyé par doudouallemand
Tu mets ce code de creation sur le meme evenement qui declenche l'utilisation de cette requete et hop !
oui, je crois que c'est ce que je vais faire car ca m'a l'air vraiment trop galere sinon...Envoyé par Demco
sinon, Arkham46, une table liee, oui, pourquoi pas... faut que je vois ca...mais c'est interne a la base de donnees ou non?
ok, j'attends vos reponses et en fonction de ca, je ferai ce que tu as dis Demco...
Dans un programme je procède ainsi pour un problème similaire :
Au lancement de l'application il cherche le chemin de la table dans une User propriété, s'il ne l'a trouve pas il propose une recherche manuelle ou automatique.
Une fois le chemin de la table connu, je sauvegarde dans une User proprieté et au prochain lancement le programme il cherche dans la propriété, vérifie que le chemin est bon et hop.
Philippe
qu'appel tu "User propriete" ? un champ d'une table?Envoyé par philben
bonjour,
J'ajoute une propriété utilisateur à ma base de données et je la gère par les fonctions suivantes SetMyProperty et getMyProperty (dans un module standard)
et FileExists pour tester la présence de la table (ne pas oublier d'activer microsoft scripting runtime):
ensuite dans le code il faut écrire un truc comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 ' Fonction interne appelée par SetMyProperty Private Function ChangeProperty(strPropName As String, varPropType As Long, ByVal varPropValue As Variant, Optional ByVal sPathMdb As String = vbNullString) As Boolean On Error GoTo errortag Dim MyDb As dao.Database Dim prp As Property If sPathMdb = vbNullString Then Set MyDb = CurrentDb() Else Set MyDb = DBEngine.OpenDatabase(sPathMdb, True, False) End If MyDb.Properties(strPropName) = varPropValue ChangeProperty = True fin: Set prp = Nothing Set MyDb = Nothing Exit Function errortag: 'ATTENTION : la valeur des propriétés définies par utilisateur ne doivent pas être null If Err.Number = 3270 Then ' Propriété non trouvée. Set prp = MyDb.CreateProperty(strPropName, varPropType, varPropValue) MyDb.Properties.Append prp Resume Next Else ChangeProperty = False Resume fin End If End Function Public Function SetMyProperty(sName As String, sVal As String, Optional sPathMdb As String = vbNullString) As Boolean Const DBText As Long = 10 SetMyProperty = ChangeProperty(sName, DBText, sVal, sPathMdb) End Function Public Function GetMyProperty(sName As String, Optional sPathMdb As String = vbNullString) As String On Error GoTo errortag Dim MyDb As dao.Database If sPathMdb = vbNullString Then Set MyDb = CurrentDb() Else Set MyDb = DBEngine.OpenDatabase(sPathMdb, False, True) End If GetMyProperty = MyDb.Properties(sName).Value fin: Set MyDb = Nothing Exit Function errortag: GetMyProperty = vbNullString Resume fin End Function ' Test l'existence d'un fichier Public Function FileExists(sFile As String) As Boolean On Error GoTo errortag Dim fso As New Scripting.FileSystemObject FileExists = fso.FileExists(sFile) fin: Set fso = Nothing Exit Function errortag: FileExists = False Resume fin End Function
Ainsi, on effectue une fois la recherche sur le poste fraichement installé puis après plus besoin, tout se fait automatiquement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 sMonChemin = GetMyProperty("MonCheminAMoi") If sMonChemin = vbNullString or FileExists(sMonChemin) = false Then ' => recherche manuelle du path par la boite OpenFile (téléchargeable sur le site) 'vérifier la recherche manuelle, si Ok on sauve le chemin dans la propriété SetMyProperty("MonCheminAMoi", sMonChemin) endif ' Mon traitement avec le chemin sauvegardé
Voilà le principe.
@+
Philippe
ok d'accord, merci beaucoup, j'ai compris.
je vais donc passer finalement par le vba et une action sur bouton...
a tous, je mets en
...
solution: passer en code vba, ce qui revient au meme...
Partager