Bonjour, je suis nouveau sur ce forum et je débute dans la programmation sous Access VBA.
Voilà, je vous explique mon problème.
je réalise une apllication multi-utilisateurs sous Access. Par souci de sécurité (afin que les utilisateurs ne puissent pas trifouiller dans les tables) on a décider de disposer de 2 bases de données : l'une est la base de données locale (baselocale.mdb) qui sera installée sur chaque poste et qui contient tous les formulaires, l'autre est la base de données sur le serveur (baseserveur.mdb) qui contient uniquement les tables.
le lien entre les 2 bases est réalisé grâce à un fichier (emp.ini) dans lequel on lit l'emplacement de la base. Voici le code sur ouverture d'un formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
Private Sub Form_Load()
If Dir(Access.CurrentProject.Path & "\emp.ini") = "" Then
   MsgBox "Fichier d'emplacement non trouvé"
DoCmd.Close
End If
 
Open Access.CurrentProject.Path & "\emp.ini" For Input As #1
Input #1, emplacement
Close #1
 
End Sub
et le code pour utiliser la base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
 
Private Sub Valider_Click()
 
Dim bd As Database
Dim tcli As Recordset
 
Set bd = DBEngine.Workspaces(0).OpenDatabase(emplacement & "\baseserveur.mdb")
Set tcli = bd.OpenRecordset("client")
MsgBox tcli![nomcli]
End Sub
Mon souci vient du fait que mes formulaires contiennent des zones de listes déroulantes dont le contenu est une requête ou une table.
Ma question est comment renseigner le contenu des zones de listes de façon à ce qu'elles utilisent les tables de ma base distante (baseserveur.mdb)?

J'ai essayé de remplir manuellement les listes, mais cela ne fonctionne pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
marequête = "SELECT...WHERE ID='" & ME.id & "'"
set bd = DBEngine.Workspaces(0).OpenDatabase(emplacement & "\baseserveur.mdb")
'emplacement est une variable globale déclarée dans un module et renseignée en lisant le contenu de emp.ini (il contient le dossier contenant la base baseserveur.mdb)
set ttable = bd.OpenRecordset(marequête, db_open_dynaset)
 
me.MalisteDéroulante.RowSourceType = "Table/Query"
me.MalisteDéroulante.RowSource = ttable
me.MalisteDéroulante.Requery
merci d'avance pour votre aide précieuse.