IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

erreur "3021" pilote odbc


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 38
    Points : 42
    Points
    42
    Par défaut erreur "3021" pilote odbc
    slt tous le monde!
    quelqu'un peut m'aider a résoudre cette erreur. a chaque fois que j'entre le nom et le mot de passe utilisateur, il m'affiche une erreur:BOF ou EOF es égal à true ou l'enregistrement actuel a été supprimé. L'opération demandée nécessite un enregistrement actuel. Pourtant ya des enregistrement dans ma table Utilisateur. Il marche aussi en DAO mais dès que je change en ADODB il m'affiche cette erreur

    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
    Option Explicit
     
    Public LoginSucceeded As Boolean
     
    Private Sub cmdCancel_Click()
        LoginSucceeded = False
        Me.Hide
    End Sub
     
    private sub  cmdOK()
        Dim cn As ADODB.Connection
        Dim record As ADODB.Recordset
        Set cn = New ADODB.Connection
        Set record = New ADODB.Recordset
     
        cn.Open "DSN=BDDSources", "", ""
        record.Open "SELECT * FROM Utilisateur WHERE Utilisateur.[Nom Utilisateur]      LIKE '" & Text1.Text & "'", cn, adOpenDynamic, adLockOptimistic
     
        If Text1.Text = record.Fields(0) And Text2.Text = record.Fields(1) Then
            LoginSucceeded = True
            Me.Hide
            MsgBox "Welcome", vbOKOnly, "Login"
        Else
            MsgBox "Invalid Password, try again!", vbInformation, "Login"
            Text2.SetFocus
            SendKeys "{Home}+{End}"
        End If
        cn.Close
        record.Close
        Set cn = Nothing
        Set record = Nothing
    end sub
    merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Si l'erreur se produit à l'ouverture de la BD (ligne 16), tu peux simplifier en passant cn.Open "DSN=BDDSources".
    Si l'erreur se produit à l'ouverture du recordset (ligne 17), essais record.Open "SELECT * FROM Utilisateur WHERE Utilisateur.[Nom Utilisateur] LIKE %'" & Text1.Text & "'%", cn, adOpenDynamic, adLockOptimistic.
    Par contre il est étonnant de rechercher une information avec un Like puis de faire une condition sur une égalité If Text1.Text = record.Fields(0), là je comprend pas bien.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 38
    Points : 42
    Points
    42
    Par défaut
    j'ai réparer le pilote odbc et il m'afficher plus cette erreur.
    mais pour le condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if text1.text =record.fields(0) and text2.text =record.fields(1)
    , c'est toujours "invalid password" peut etre a cause de l'égalité comme tu m'a dit mais je sais pas comment faire
    pourtant ce condition marche tres bien en SQL comme ceci

    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
    Option Explicit
     
    Public LoginSucceeded As Boolean
     
    Private Sub cmdCancel_Click()
        LoginSucceeded = False
        Me.Hide
    End Sub
     
    private sub  cmdOK()
        Dim db as database
        Dim record as recordset
        Dim s as string
        Set db = OpenDatabase("E:\Logiciel\DTS\VB6\Access\Utilisateur.mdb")
        s= "SELECT * FROM Utilisateur WHERE Utilisateur.[Nom Utilisateur]      LIKE '" & Text1.Text & "'"
        Set record= db.OpenRecordset(s, dbOpenDynaset)
     
        If Text1.Text = record.Fields(0) And Text2.Text = record.Fields(1) Then
            LoginSucceeded = True
            Me.Hide
            MsgBox "Welcome", vbOKOnly, "Login"
        Else
            MsgBox "Invalid Password, try again!", vbInformation, "Login"
            Text2.SetFocus
            SendKeys "{Home}+{End}"
        End If
     
        dbClose
        record.Close
     
    end sub

  4. #4
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Juste avant la condition If, ajoute ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Debug.Print "verification Nom Utilisateur"
    Debug.Print Text1.Text & "|" & vbNewLine & record.Fields(0) & "|"
    Debug.Print "verification mot de passe"
    Debug.Print Text2.Text & "|" & vbNewLine & record.Fields(2) & "|"
    En revenent à l'éditeur VB6, regardes le résultat dans la fenêtre Execution (Ctrl + G)

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2014
    Messages : 38
    Points : 42
    Points
    42
    Par défaut
    ok ça a marché, j'ai changé le type de donnée "Mot de passe" de la table "Utilisateur" en memo
    en tous cas merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 08/02/2009, 22h31
  2. Erreur Pilote ODBC sur pages ASP
    Par zouritte dans le forum ASP
    Réponses: 2
    Dernier message: 12/12/2004, 13h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo