Programmation VB6

Résolu
est ce que quelqu'un peut me corriger ce bout de code svp
resultatADO.Open "SELECT motDePasse FROM employé where login = " & Text2.Text, connectionADO
j'arrive pas à faire telle requête :(
Merci!

9 réponses

  1. D'abord je vous remercie bien :) c'est tres gentil de votre part

    je trouve -plutôt c'est lui qui trouve- un problème avec cette ligne

    ModBdd.ConnectBdd
    il me demande un objet requierd
    j'ai essayé avec tout le code que vous m'avez présenté
    1. Il faut activé la référence Microsoft ActiveX Data Objects x.x Library dans Outils > références ...
  2. Voilà un code à placer dans un nouveau module. Tu renommes le module en ModBdd :

    '==========================================='
    '          Connexion ADODB                  '
    '-------------------------------------------'
    '          Module Base de données           '
    '                                           '
    ' Auteur : Polux31 - 2003                   '
    ' E-mail : ##############                   '
    '==========================================='
    
    '///////////////////////////////////////////////////////////////
    '// NE PAS OUBLIER DE COCHER DANS PROJET --> REFERENCES ...
    '// Microsoft ActiveX Data Objects x.x Library
    '///////////////////////////////////////////////////////////////
    
    Option Explicit
    
    '/////////////////////////////////'
    '// Variables globales du module
    '/////////////////////////////////'
    Private AdoCnx As ADODB.Connection
    Private CmdSql As ADODB.Command
    Private NbRs As Long
    
    '////////////////////////////////'
    '// Constantes à modifier selon le
    '// le cas d'utilisation
    '///////////////////////////////'
    Private Const BDD = "E:\projetVB1.mdb"    ' mettre le chemin de la base
    Private Const pw = ""                           ' mettre le mot de passe
    Private Const user = ""                         ' mettre le user
    
    '//////////////////////////////////////
    '// Accesseurs des variables globales
    '//////////////////////////////////////
    
    'procédure qui stocke le nombre d'enregistrement dans le recordset
    Public Sub setNbRs(ByVal nb As Integer)
        NbRs = nb
    End Sub
    
    'fonction qui retourne le nombre d'enregistrement dans le recordset
    Public Function getNbRs() As Long
        getNbRs = NbRs
    End Function
    
    
    'fonction qui retourne la connexion
    Public Function getAdoCnx() As ADODB.Connection
        getAdoCnx = AdoCnx
    End Function
    
    
    
    '//////////////////////////////////
    '// Méthodes du module
    '//////////////////////////////////
    
    'procédure de connexion à la base de donnée
    
    Public Sub ConnectBdd()
    Dim CnxString As String
    
    
    Set AdoCnx = New ADODB.Connection   'création de l'objet connexion
    
    If AdoCnx.State = adStateOpen Then  'si la base est déjà ouverte alors on sort de la procédure
        MsgBox "La connection est déjà ouverte"
        Exit Sub
    End If
    
            '======== Ouverture Access ============'
            '    A modifier pour autres bases      '
            '======================================'
            
    CnxString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & BDD & ";" & _
                       "user ID=" & user & ";" & _
                       "password=" & pw & ";" & _
                      "Persist Security Info=False"
    
    AdoCnx.Open CnxString   'passage de la chaine de connexion
    AdoCnx.CursorLocation = adUseClient
    
    On Error Resume Next
    
        If Err <> 0 Or AdoCnx.State = adStateClosed Then    'si un erreur de connexion se produit
            MsgBox "Connection impossible avec la base"
            Exit Sub
        End If
    
    End Sub
    
    'fonction qui retourne un booléen.
    'Paramètres entrées : la requête, l'objet recordset
    'Passe la requête à la base de données et récupère le résultat dans le recordset
    Public Function OpenRecordset(ByVal Requete As String, ByRef rs As ADODB.Recordset) As Boolean
        
    On Error Resume Next
      
        On Error Resume Next
        rs.Open Requete, ModBdd.AdoCnx, , , adCmdText   'passage de la requête
        
        If Err > 0 Then         'en cas d'erreur la fonction retourne Faux et on sort de la fonction
            OpenRecordset = False
            Exit Function
        End If
        
        rs.MoveFirst        'la connexion a réussi, on se place sur le 1er enregistrement
        NbRs = rs.RecordCount   'on compte le nombre de ligne retournée
        OpenRecordset = True  'la fonction retourne Vrai
        
    End Function
    
    'fonctions Suivant, Précédent, Premier, Dernier qui retourne un booléen.
    'Paramètre entrée : l'objet recordset
    'Fonctions qui permettent de parcourir les enregistrements d'un recordset
    Public Function RSLireSuivant(ByRef rs As ADODB.Recordset) As Boolean
    
        On Error Resume Next
        rs.MoveNext
        If rs.EOF Then
            RSLireSuivant = False
            Exit Function
        End If
        
        If Err <> 0 Then
            RSLireSuivant = False
            Exit Function
        End If
        
        RSLireSuivant = True
        
    End Function
    
    Public Function RSLirePrecedent(ByRef rs As ADODB.Recordset) As Boolean
    
        On Error Resume Next
        rs.MovePrevious
        If rs.BOF Then
            RSLirePrecedent = False
            Exit Function
        End If
        
        If Err <> 0 Then
            RSLirePrecedent = False
            Exit Function
        End If
        
        RSLirePrecedent = True
        
    End Function
    
    Public Function RSLirePremier(ByRef rs As ADODB.Recordset) As Boolean
    
        On Error Resume Next
        rs.MoveFirst
        If Err <> 0 Then
            RSLirePremier = False
            Exit Function
        End If
        
        RSLirePremier = True
        
    End Function
    
    Public Function RSLireDernier(ByRef rs As ADODB.Recordset) As Boolean
    
        On Error Resume Next
        rs.MoveLast
        If Err <> 0 Then
            RSLireDernier = False
            Exit Function
        End If
        
        RSLireDernier = True
        
    End Function
    
    'procédure qui ferme la connexion à la base de données
    Public Sub CloseBdd()
        AdoCnx.Close
    End Sub
    
    'procédure qui ferme le recordset
    Public Sub CloseRs(ByRef rs As ADODB.Recordset)
        rs.Close
    End Sub


    Sur le bouton du formulaire :

    Private Sub Command2_Click() 
    Dim rst As ADODB.Recordset
    Dim query As String
    
    Set rst = New ADODB.Recordset
    
    query = "SELECT motDePasse FROM employé where login = ' " & Text2.Text &  " ' "
    ModBdd.ConnectBdd
    
    If ModBdd.OpenRecordset(query, rst) = False Then
        MsgBox "veuillez verifier vos paramêtres" , VbExclamation,"Message Système"
        Exit Sub
    End If
    
    rst.MoveFirst
    While Not rst.EOF
        If rst.Fields(0) = Text4.Text Then
            form1.Show
            Unload Me
         End If 
         rst.MoveNext
    Wend
    
    ModBdd.CloseRs(rst)
    ModBdd.CloseBdd
    
    End Sub


    Reviens ici si tu as un problème

    ;o)
    1. sa ne marche toujours pas
      même si je suis débutante mais j'ai programmé cette première etape de mon projet avec vb2008 et ça a marché nikel,mais apres on m'a exigé le vb6...ça marche vraiment pas avec celui là :s
      1. Ok, je vais regarder ça de plus près
    2. Tu es bien en VB6 ?

      Essaie avec ça:

      If resultatADO.Fields(0) = Text4.Text Then


      1. y'a un problème au niveau de resultatADO.MoveFirst
        voilà ma procedure:
        Private Sub Command2_Click()
        Dim form1 As New Employé
        Dim ch As String
        Dim trouve As Boolean
        trouve = False
        Dim connectionADO As New ADODB.Connection
        Dim commandeADO As New ADODB.Command
        Dim resultatADO As New ADODB.Recordset
        connectionADO.Provider = "Microsoft.jet.OLEDB.4.0"
        connectionADO.ConnectionString = "E:\projetVB1.mdb"
        connectionADO.Open
        resultatADO.Open "SELECT motDePasse FROM employé where login = ' " & Text2.Text & " ' ", connectionADO
        resultatADO.MoveFirst
        Do While Not (resultatADO.EOF)
        If resultatADO.GetString(0) = Text4.Text Then
        form1.Show
        Me.Hide
        trouve = True
        End If
        Loop
        resultatADO.MoveNext
        If trouve = False Then
        MsgBox "veuillez verifier vos paramêtres"
        Text2.Text = ""
        Text4.Text = ""
        End If
        resultatADO.Close
        connectionADO.Close
        End Sub

        Merci pour votre aide
        1. Avant la boucle il faut faire:

          resultatADO.MoveFirst


          Et juste avant le Loop

          resultatADO.MoveNext


          Sinon tu boucles toujours sur le même enregistrement

          ;o)
          1. j'ai une erreur là au niveau de ma boucle while que mon programme ne peut aborder,j'ai testé même en incluant un msgbox tout juste apres le do while mais ça n'a pas marché,est ce que vous pouvez m'aider svp et me preciser l'erreur

            resultatADO.Open "SELECT motDePasse FROM employé where login = ' " & Text2.Text & " ' ", connectionADO
            Do While Not (resultatADO.EOF)
            ch = resultatADO.GetString(0)
            If ch = Text4.Text Then
            form1.Show
            Me.Hide
            trouve = True
            End If
            Loop
            If trouve = False Then
            MsgBox "veuillez verifier vos paramêtres"
            1. Bonjour,

              Essaies en faisant:
              resultatADO.Open "SELECT motDePasse FROM employé where login = ' " & Text2.Text & " ' ", connectionADO 


              ;o)
              1. wé c bien ça!

                Merci bien!!

                (Jazakom Allah khyran)