Recordset et Access

Résolu
Bonjour,

Je vous remercie par avance du temps que vous voudrez bien me consacrer pour mon petit problème.
Mon soucis est que je n'arrive pas à accéder à des enregistrements autres que celui de ma première ligne dans ma table client. Lorsque j'effectue donc une recherche d'un nom dans ma base, le recordset reste vide et donc on me renvoie aucun resultat. Je vous montre le code :

Private Sub B_client_rechercher_Click()

Dim nompersonne As String
Dim requete As String
Dim cnnl As ADODB.Connection
Set cnnl = CurrentProject.Connection
Dim critere As String

Dim recordset As New ADODB.recordset
recordset.activeconnection = cnnl

If LD_client_recherche.Value = "Nom" Then
critere = CLI_nom
End If
If LD_client_recherche.Value = "Prenom" Then
critere = CLI_prenom
End If
If LD_client_recherche.Value = "Société" Then
critere = CLI_société
End If
If LD_client_recherche.Value = "Mail" Then
critere = CLI_mail
End If
If LD_client_recherche.Value = "Tel1" Then
critere = CLI_tel1
End If
If LD_client_recherche.Value = "Tel2" Then
critere = CLI_tel2
End If
If LD_client_recherche.Value = "Tel3" Then
critere = CLI_tel3
End If
If LD_client_recherche.Value = "Fax" Then
critere = CLI_fax
End If

requete = "select * from client where '" & critere & "' = '" & T_client_recherche.Value & "'"
recordset.Open requete ' execution requete

If Not recordset.EOF Then

T_client_consulter_nom.Value = recordset.Fields(1) ' remplissage des champs avec le resultat de la requête
T_client_consulter_prenom.Value = recordset.Fields(2)
T_client_consulter_société.Value = recordset.Fields(3)
T_client_consulter_adresse.Value = recordset.Fields(4)
T_client_consulter_codepostal.Value = recordset.Fields(5)
T_client_consulter_ville.Value = recordset.Fields(6)
T_client_consulter_mail.Value = recordset.Fields(7)
T_client_consulter_tel1.Value = recordset.Fields(8)
T_client_consulter_tel2.Value = recordset.Fields(9)
T_client_consulter_tel3.Value = recordset.Fields(10)
T_client_consulter_fax.Value = recordset.Fields(11)
T_client_consulter_pays.Value = recordset.Fields(12)
T_client_consulter_genre.Value = recordset.Fields(13)

Else

message = MsgBox("Aucun resultat pour cette recherche", vbExclamation, "Recherche")

End If

recordset.Close
Set recordset = Nothing
Set cnnl = Nothing

End Sub

Merci de votre aide
Configuration: Windows 7 / Safari 532.5

3 réponses

  1. C'est bon j'ai résolu le probléme, c'était simplement à cause d'un accent sur la variable critére et d'oubli de double côte sur les critère CLI. Une fois enlevé tout va mieux

    Merci en tout cas de m'avoir accorder du temps
    1. Merci beaucoup pour ton aide "fou du volant" ^^

      Mais en exécutant le code que tu m'a transmit Access me fais parvenir un message d'erreur de ce genre :

      erreur 3021, Aucun enregistrement en cours

      Pourtant ma table existe bien et mon premier enregistrement arrive toujours à apparaitre dans les textbox tandis que les autres non....
      1. Bonjour,

        Tu devrais essayer de faire un truc comme ça :

        Dim cnx As ADODB.Connection
        Dim rst As ADODB.Recordset
        Dim Query As String
        
        If LD_client_recherche.Value = "Nom" Then 
        critere = CLI_nom 
        End If 
        If LD_client_recherche.Value = "Prenom" Then 
        critere = CLI_prenom 
        End If 
        If LD_client_recherche.Value = "Société" Then 
        critere = CLI_société 
        End If 
        If LD_client_recherche.Value = "Mail" Then 
        critere = CLI_mail 
        End If 
        If LD_client_recherche.Value = "Tel1" Then 
        critere = CLI_tel1 
        End If 
        If LD_client_recherche.Value = "Tel2" Then 
        critere = CLI_tel2 
        End If 
        If LD_client_recherche.Value = "Tel3" Then 
        critere = CLI_tel3 
        End If 
        If LD_client_recherche.Value = "Fax" Then 
        critere = CLI_fax 
        End If 
        
        
        Query = "select * from client where '" & critere & "' = '" & T_client_recherche.Value & "'" 
        
        
        Set cnx = CurrentProject.Connection
        
        Set rst = cnx.Execute(Query)
        
        If rst.RecordCount <> 0 Then
            rst.MoveFirst
            While Not rst.EOF
                T_client_consulter_nom.Value = rst.Fields(1) ' remplissage des champs avec le resultat de la requête 
                T_client_consulter_prenom.Value = rst.Fields(2) 
                T_client_consulter_société.Value = rst.Fields(3) 
                T_client_consulter_adresse.Value = rst.Fields(4) 
                T_client_consulter_codepostal.Value = rst.Fields(5) 
                T_client_consulter_ville.Value = rst.Fields(6) 
                T_client_consulter_mail.Value = rst.Fields(7) 
                T_client_consulter_tel1.Value = rst.Fields(8) 
                T_client_consulter_tel2.Value = rst.Fields(9) 
                T_client_consulter_tel3.Value = rst.Fields(10) 
                T_client_consulter_fax.Value = rst.Fields(11) 
                T_client_consulter_pays.Value = rst.Fields(12) 
                T_client_consulter_genre.Value = rst.Fields(13) 
                rst.MoveNext
            Wend
        Else
            MsgBox "Pas d'enregistrement"
        End If
        
        rst.Close
        cnx.Close
        
        Set rst = Nothing
        Set cnx = Nothing


        De la part d'un ancien fou du volant ...
        ;o)