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:
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
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
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.
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
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 :
merci d'avance pour votre aide précieuse.
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
Partager