Mon rs.EOF fonctionne une fois sur 2

Signaler
Messages postés
2
Date d'inscription
samedi 18 mars 2006
Statut
Membre
Dernière intervention
4 avril 2011
-
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
-
Bonjour et excuser moi,
je resume mon probleme:j'essaye de m'authentifier avec des comptes mais l'authentification fonctionne 1 fois sur 2. j'utilise vb6 , mysql et myodbc 5.1.Voici mon code:

Dim rs As New ADODB.Recordset
rs.Open "select * from compte where login='" & Text1.Text & "' and pwd='" & Text2.Text & "' and type='revendeur'", conn
If rs.EOF = True Then
MsgBox ("Votre login ou votre mot de passe revendeur est incorrecte")

else
........................
Le probleme que j'ai bien l'enregistrement dans ma table ,lorsque je test avec vb ca passe pas et si je prend la requete et je l'execute dans mysql elle trouve mon enregistrement.merci d'avance pour votre aide.

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Pourquoi tester EOF ?
Mieux vaudrait tester rs.RecordCount > 0
Bien sûr, assure-toi que ta connexion est opérationnelle en vérifiant le conn.State = adStateOpen après le conn.Open

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
Attention à l'injection SQL ... Perso je n'ai jamais de problèmes avec rs.EOF mais je n'ouvre pas non plus le recordset de façon habituelle :
Public Function Pure(S As String) As String
 Pure = Replace(S, "'", "''")
End Function

Dim rs As ADODB.Recordset
Set rs = conn.Execute("SELECT * FROM compte WHERE login='" & Pure(Me.Text1.Text) & "' and pwd='" & Pure(Text2.Text) & "' and type='revendeur';")
If rs.EOF = True Then
 MsgBox ("Votre login ou votre mot de passe revendeur est incorrect")
 '[...]
End If
rs.Close : Set rs = Nothing


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
un SELECT * est une aberration ...

faire un

SELECT COUNT(0) FROM ... WHERE ...

ensuite

if RS.Fields(0).Value Then

et oui, toujours cibler les infos requises...

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
Une aberration si on n'utilise pas les champs renvoyés. Mais je pense bien qu'il stocke les infos de l'utilisateur dans le code du Else

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question