Bonjour à tous, je doit faire un serveur avec une base de donnée qui gère les entrée et les sorties d'une salle avec un lecteur de carte, le problème c'est que je veut passer un entier NumeroAcces à une requête en base de donnée mais à chaque fois il me fait une erreur : type de donnée incompatible dans l'expression du critère. Pouvait vous m'aider SVP??? Voici le code :

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Dim nbclient As Integer
Dim connexion As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim MessageRecu As String
Dim NumLect_Carte As Integer
Dim NumMess As Integer
 
 
Private Sub Envoye_Click()
    If MessEnvoye.Text <> "" Then
        For i = 0 To nbclient
            Winsock1(i).SendData MessEnvoye.Text
        Next i
    End If
End Sub
 
Private Sub Form_Load()
nbclient = 0
NumMess = 0
 
'insertion du chemin d'accès à la base de donnée
connexion.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;Data Source = C:\Documents and Settings\julien et jean\Bureau\travail\Prog\2eme annee\Serveur Lecteur Carte\Bdd2.mdb;"
connexion.Open   'ouverture de la connexion
End Sub
 
Private Sub LancServ_Click()
    If PortServ = "" Then
        MsgBox "Veillez saisir le port", vbOKOnly, "erreur"
    Else
        Winsock1(0).LocalPort = PortServ.Text
        Winsock1(0).Listen
        PortServ.Enabled = False
        LancServ.Enabled = False
    End If
End Sub
 
Private Sub Quitter_Click()
    For i = 0 To nclient
        Winsock1(i).Close
    Next i
End Sub
 
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    nbclient = nbclient + 1
    Load Winsock1(nbclient)
    Winsock1(nbclient).Accept requestID
    Winsock1(nbclient).SendData ("[?]")
    NumLect_Carte = nbclient
    MessEnvoye.Enabled = True
    Envoye.Enabled = True
End Sub
 
Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim Reception As String
Winsock1(Index).GetData Reception
MessRecu = MessRecu & Reception & vbCrLf
For i = 1 To nbclient
    Winsock1(i).SendData MessRecu.Text
    PauseTime = 0.01
    Start = Timer
    Do While Timer < Start + PauseTime
        DoEvents
    Loop
Next i
 
NumMess = NumMess + 1
 
 
'si c'est le premier message, il s'agit du numéro de salle
If NumMess = 1 Then
    'on retire les crochets du message
    numsal = Mid(Reception, 2, 3)
 
    'envoi d'une requête pour vérifier le numéro de la salle inscrite dans la base de donnée
    rst.Open "SELECT NumSalle FROM AccesSalle where numsalle=""" & numsal & """;", connexion
 
    'on parcours la boucle tant qu'il y a encore des enregistrements
    If Not rst.EOF Then
        'si le numéro est inscrit dans la base alors on envoi OK
        Winsock1(NumLect_Carte).SendData ("[OK]")
    Else
        'sinon on envoi NOK et on ferme la connexion
        Winsock1(NumLect_Carte).SendData ("[NOK]")
    End If
 
rst.Close
End If
 
'si c'est le deuxième message, alors il s'agit d'une trame
If NumMess = 2 Then
 
    Dim numbadge As String
    Dim numacces As String
    Dim NumeroAcces As Variant
    'on récupère l'identifiant de l'utilisateur
    numbadge = Mid(Reception, 2, 8)
    Debug.Print numbadge
 
    'on récupère le numéro de l'utilisateur
    numacces = Mid(Reception, 11, 1)
    NumeroAcces = CInt(numacces)
    Debug.Print numacces
    Debug.Print NumeroAcces
 
  'erreur est ici
    rst.Open "SELECT NumBadge FROM utilisateur WHERE NumAcces='NumeroAcces';", connexion
 
    If Not rst.EOF Then
        Winsock1(NumLect_Carte).SendData ("[OK]")
    Else
        Winsock1(NumLect_Carte).SendData ("[NOK]")
    End If
 
rst.Close
End If
 
End Sub
Merci d'avance pour la réponse