Bonjour,
Ca fait une heure et demie que je tourne en rond, je ne trouve pas la solution, ni d'exemple pour m'en sortir. Pouvez vous me donner un coup de main ?
Alors voilà: j'ai une table tabPreferences comportant une dizaine de champs et une seule ligne d'enregistrement. Je l'utilise pour stocker des variables qui sont appellées à partir de mes différents modules, formulaires, états.
(Cette table définie le nom de ma boite, son adresse, etc. Comme nous allons bientôt changer de propriétaires, certaines infos vont changer, les stocker dans une table me facilitera la migration !)
J'ai écrit une fonction sous vba qui me retourne la valeur demandée:
Exemple: PreferenceExtraire("NomSociete") et ça me donne: Nom de la société
Voici le code de cette fonction:
Je vois le problème, le strChamp n'est pas du bon type, ce n'est pas une variable de type string qu'il attend.
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 Private Function PreferenceExtraire(strChamp As String) Dim Db As Database Dim req As QueryDef Dim rs As Recordset 'Composition de la requete SQL DoCmd.SetWarnings False Set Db = CurrentDb() Set req = Db.CreateQueryDef("") req.SQL = "SELECT tabPreferences." & strChamp & " FROM tabPreferences;" Set rs = req.OpenRecordset ' C'est ici que ça se gâte ! ' J'aurais aimé le faire avec qu'une seule ligne de code: ' PreferenceExtraire = rs!strChamp ' mais j'ai un message d'erreur: Elément non trouvé dans cette collection ' Alors, j'ai contourné le problème comme suit: Select Case strChamp Case "NomSociete" PreferenceExtraire = rs!NomSociete Case "Initiales" PreferenceExtraire = rs!Initiales Case "AdresseRue1" PreferenceExtraire = rs!AdresseRue1 Case "CodePostal" PreferenceExtraire = rs!CodePostal Case "DomaineMail" PreferenceExtraire = rs!DomaineMail End Select 'Mais ce n'est pas très élégant, surtout que j'ai beaucoup plus de champs à traiter ! req.Close End Function
J'ai essayé sans succès
et toutes ses variantes syntaxiques.
Code : Sélectionner tout - Visualiser dans une fenêtre à part PreferenceExtraire = rs!Field.name(strChamp)
Là, je sèche
Comment éviter tous ces select case ?
Merci pour votre aide,
kenavo,
Jean-Marc
Partager