Recordset et Access

Résolu
badmintoneur Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
badmintoneur Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -
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

3 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
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)
1
badmintoneur Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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....
0
badmintoneur Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
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
0