begin process at 2008 08 22 02:04:20
1 229 747 membres
19 nouveaux aujourd'hui
14 267 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent [ Base de données / Access ] (garoul)

Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent le 23/04/2007 16:49:13

garoul
outil de recherche multi-critère

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


Re : Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent le 23/04/2007 23:16:52

chaibat05

Bonsoir,
 à première vue il y a deus anomlies dans tes expressions:

1° espace manquant avant le And
2° astérisque en trop après like si le critère est
    ...commençant par...

Correction proposée
SQL = SQL & " And [Gestion Livres]!Auteur like '" & texteAuteur.Text & "*' "

pareil pour toutes les autres...


Re : Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent le 23/04/2007 23:20:02

chaibat05

à part la première expression, des crochets manquent
au nom de la table Gestion Livres


Re : Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent le 23/04/2007 23:28:16

chaibat05

en période de test, il ne faut jamais utiliser
de On Error Resume Next, sinon tu ne sauras jamais
ou est ce que ça bloque...

Vires tout les On Error...
Remplaces les par un seul On Error Goto MonErreur à ce niveau

If cocheClés Then

On Error Goto MonErreur
    SQL = SQL & "And Gestion Livres!Clés like '* " & texteClés.Text & "*' "
...

En Fin de la procédure Rafraichir, rajoutes ces lignes

listeRésultats.Requery
Exit Sub
MonErreur:
MsgBox Err.Description
End Sub


Re : Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent le 24/04/2007 14:21:43

byob

Un site qui peut t'aider
[ Lien ]

Il suffit juste d'appliquer à ton cas, car tu as juste des textbox.

Les modifs se font en tps reel.

a la fin du lien de la page tu trouvera un .mdb de se qui a été fait

si ça peut t'aider


Re : Outil de recherche multi-critères. Corrigez mon code SVP ! Urgent le 24/04/2007 15:43:15

farouk_ch

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)).



Classé sous : sql, gestion, visible, livres, subprivate

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS