Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent
cs_garoul
Messages postés5Date d'inscriptionlundi 13 juin 2005StatutMembreDernière intervention27 avril 2007
-
23 avril 2007 à 16:49
farouk_ch
Messages postés12Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention20 février 2009
-
24 avril 2007 à 15:43
Voici mon outil de recherche en Image et voici en bas le code complet que j'ai utilisé.
>> Les case à cocher sont nommés : cocheNom ( par exemple cocheMatière, cocheAuteur, cocheOuvrage..)
>> Les zones de texte sont nommées : texteNom ( par exemple texteMatière, texteCote, texteInventaire)
>> Base de donnée est nommée : Gestion livres
Problème constaté :
En fait je veux en cochant un critère et en le remplissant la requtte Sql se met à jour et montre le résultat en temps réel. Le code me semble correcte parce que j'ai suivi à la lettre un tuto sur internet mais lorsque je remplie une zone de texte la zone de résultat n'affiche rien quoique ma base Gestion Livres est remplie de donnée.
Veuillez svp me préter un peu de votre temps pour trouve la lacune qui se trouve dans mon code. Je vous en serez très reconnaissant
Niveau de connaissances en VB et Sql est presque nul.
Code utilisé :
Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
Select Case Left(ctl.Name, 5)
Case "coche"
ctl.Value = 0
Case "texte"
ctl.Visible = False
End Select
Next ctl
End Sub
Private Sub rafraichir()
Dim SQL As String
SQL = "SELECT [Gestion Livres].[titre de l'ouvrage], [Gestion Livres].auteur, [Gestion Livres].n_cote, [Gestion Livres].n_inventaire, [Gestion Livres].année, [Gestion Livres].quantité FROM [Gestion Livres]"
If cocheAuteur Then
On Error Resume Next
SQL = SQL & "And [Gestion Livres]!Auteur like '*" & texteAuteur.Text & "*' "
End If
If cochematière Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Matière like '* " & texteMatière.Text & "*' "
End If
If cocheClés Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Clés like '* " & texteClés.Text & "*' "
End If
If cocheOuvrage Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Ouvrage like '* " & texteOuvrage.Text & "*' "
End If
If cocheEdition Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Edition like '* " & texteEdition.Text & "*' "
End If
If cocheAnnée Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Année like '* " & texteAnnée.Text & "*' "
End If
If cocheCote Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Cote like '* " & texteCote.Text & "*' "
End If
If cocheInventaire Then
On Error Resume Next
SQL = SQL & "And Gestion Livres!Inventaire like '* " & texteInventaire.Text & "*' "
End If
SQL = SQL & ";"
listeRésultats.RowSource = SQL
listeRésultats.Requery
End Sub
Private Sub cocheMatière_Click()
texteMatière.Visible = Not texteMatière.Visible
rafraichir
End Sub
Private Sub cocheAuteur_Click()
texteAuteur.Visible = Not texteAuteur.Visible
rafraichir
End Sub
Private Sub cocheOuvrage_Click()
texteOuvrage.Visible = Not texteOuvrage.Visible
rafraichir
End Sub
Private Sub cocheEdition_Click()
texteEdition.Visible = Not texteEdition.Visible
rafraichir
End Sub
Private Sub cocheAnnée_Click()
texteAnnée.Visible = Not texteAnnée.Visible
rafraichir
End Sub
Private Sub cocheCote_Click()
texteCote.Visible = Not texteCote.Visible
rafraichir
End Sub
Private Sub cocheInventaire_Click()
texteInventaire.Visible = Not texteInventaire.Visible
rafraichir
End Sub
Private Sub cocheClés_Click()
texteClés.Visible = Not texteClés.Visible
rafraichir
End Sub
Private Sub texteAuteur_KeyUp(KeyCode As Integer, Shift As Integer)
rafraichir
End Sub
Private Sub texteMatière_KeyUp(KeyCode As Integer, Shift As Integer)
rafraichir
End Sub
Private Sub texteAnnée_KeyUp(KeyCode As Integer, Shift As Integer)
rafraichir
End Sub
A voir également:
Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent
farouk_ch
Messages postés12Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention20 février 2009 24 avril 2007 à 15:43
Salut à tous,
Je commence par l'erreur de construction de la requete:
Prenant le cas où seule cochematière est cochée, la requete sera alors "select ... from "[Gestion Livres] And Gestion Livres!Matière like ..." !
Solution proposée: Private Sub rafraichir()
Dim SQL As String
SQL = "SELECT [Gestion Livres].[titre de l'ouvrage], [Gestion Livres].auteur, [Gestion Livres].n_cote, [Gestion Livres].n_inventaire, [Gestion Livres].année, [Gestion Livres].quantité FROM [Gestion Livres]"
dim t as integer
t=0
If cocheAuteur Then
t=1
SQL = SQL & " where [Gestion Livres]!Auteur like '*" & texteAuteur.Text & "*' "
End If
If cochematière Then
if t=1 then
SQL = SQL & " And Gestion Livres!Matière like '* " & texteMatière.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Matière like '* " & texteMatière.Text & "*' "
t=1
end if
End If
If cocheClés Then
if t=1 then
SQL = SQL & "And Gestion Livres!Clés like '* " & texteClés.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Clés like '* " & texteClés.Text & "*' "
t=1
end if
End If
If cocheOuvrage Then
if t =1 then
SQL = SQL & " And Gestion Livres!Ouvrage like '* " & texteOuvrage.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Ouvrage like '* " & texteOuvrage.Text & "*' "
t=1
end if
End If
If cocheEdition Then
if t=1 then
SQL = SQL & " And Gestion Livres!Edition like '* " & texteEdition.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Edition like '* " & texteEdition.Text & "*' "
t=1
end if
End If
If cocheAnnée Then
if t=1 then
SQL = SQL & " And Gestion Livres!Année like '* " & texteAnnée.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Année like '* " & texteAnnée.Text & "*' "
t=1
end if
End If
If cocheCote Then
if t=1 then
SQL = SQL & " And Gestion Livres!Cote like '* " & texteCote.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Cote like '* " & texteCote.Text & "*' "
t=1
end if
End If
If cocheInventaire Then
if t=1 then
SQL = SQL & " And Gestion Livres!Inventaire like '* " & texteInventaire.Text & "*' "
else
SQL = SQL & " where Gestion Livres!Inventaire like '* " & texteInventaire.Text & "*' "
t=1
end if
End If
SQL = SQL & ";"
listeRésultats.RowSource = SQL
listeRésultats.Requery
End Sub
Je vous conseil d'afficher la requete avant son exécution pour déterminer facilement la source d'erreur.(msgbox(SQL)).