Mon rs.EOF fonctionne une fois sur 2

la tahzan Messages postés 2 Date d'inscription samedi 18 mars 2006 Statut Membre Dernière intervention 4 avril 2011 - 4 avril 2011 à 18:20
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 5 avril 2011 à 18:52
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
4 avril 2011 à 19:49
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)
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
4 avril 2011 à 22:23
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
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 avril 2011 à 06:35
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
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
5 avril 2011 à 18:52
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
0
Rejoignez-nous