Bonjour à tous,

J'utilise Access 2003.

Je cherche "simplement" à utiliser une variable string pour la condition where d'une requête select.

Ma table s'appelle Outils, la clé est N° d'identification et Type d'outil un champ dont la valeur est commune à plusieurs enregistrements.

Voici le code essayé:

Dans un module

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
Public num_identification As Variant
 
Public Function numident() As Variant
numident = num_identification
End Function
Dans ma procédure

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
Dim bdd As DAO.Database
Dim tableactive As DAO.Recordset
Dim type_outil As String
 
'On récupère la variable saisie par l'utilisateur dans le formulaire actif
num_identification = Me.Listbox_numoutil.Value
 
'Sélectionner la bdd voulue
Set bdd = CurrentDb
 
'Je pense qu'il y a un probléme de syntaxe ici
type_outil = "SELECT [Type d'outil] from [Outils] where [N° d'identification]= numident()"
Set tableactive = bdd.OpenRecordset(type_outil, dbOpenDynaset)
 
If Not tableactive.EOF Then
  tableactive.MoveFirst
  While Not tableactive.EOF
     tableactive.MoveNext
  Wend
Else
  MsgBox "La requête ne correspond à aucun enregistrement."
End If
 
'J'essaye d'utiliser le résultat de la requête
If tableactive("Type d'outil").Value = "F" Then
            masquer_masques_saisie
            Me.Textbox_diafiliere.Visible = True
 
End If
J'obtiens l'erreur 3021, aucun enregistrement en cours alors que je suis certain d'avoir un enregistrement correspondant puisque la valeur de ma variable num_identification provient d'une listbox qui elle-même récupère les numéros d'identification existants dans ma table.

Est-ce que vous avez une idée des erreurs que j'ai commises?

Merci d'avance pour vos réponses.