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 |