IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

[Formulaire]Rcherche multi-critères dans un formulaire sur plusieurs tables


Sujet :

IHM

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut [Formulaire]Rcherche multi-critères dans un formulaire sur plusieurs tables
    Bonjour,
    Je ne suis pas une habituée des forums... vous excuserz alors mon inexpérience. J'ai lu le tuto sur les recherche multi-critères, et j'ai même basé mon formulaire sur cet exemple. Mais..hic.. ca ne fonctionne pas...

    Je commence du début, je vous explique donc, ce que je veux faire... J'ai un formulaire (frmRecherche) que j'ai crée avec tous des case à cocher et des boites txt indépendantes.J'ai donc 11 critères basés sur 2 tables, et regrouper dans un formulaire qui s'appelle frmResultat où dans le fond tout ma base de données est stockée.
    L'usager doit donc cliquer sur la case à cocher dans le (frmRecherche) la boite txt apparait et les résultats doivent apparaître dans une liste de résultat. Ainsi par exemple, si je cherche un client qui s'appelle Marc, la liste de tous les clients s'affichera ainsi que leurs coordonnées.

    Mais, rien ne se passe lorsque j'inscrit quelques choses dans le formulaire de recherche.. je vois bien mes erreurs en rouge mais je ne sais pas par quoi les remplacer...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    Option Compare Database
     
    Private Sub chkCie_Click()
     
    If Me.chkCie Then
        Me.txtCie.Visible = True
    Else
        Me.txtCie.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub chkNoFacture_Click()
     
    If Me.chkNoFacture Then
        Me.txtNoFacture.Visible = True
    Else
        Me.txtNoFacture.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub chkCouleurs_Click()
     
    If Me.chkCouleurs Then
        Me.txtCouleurs.Visible = True
    Else
        Me.txtCouleurs.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
     
     
    Private Sub chkDateAchata_Click()
     
    If Me.chkDateAchata Then
        Me.txtDateAchata.Visible = True
    Else
        Me.txtDateAchata.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub chkDateAchatDe_Click()
     
    If Me.chkDateAchatDe Then
        Me.txtDateAchatDe.Visible = True
    Else
        Me.txtDateAchatDe.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub chkLivrea_Click()
     
    If Me.chkLivrea Then
        Me.txtLivrea.Visible = True
    Else
        Me.txtLivrea.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub chkNoClient_Click()
     
    If Me.chkNoClient Then
        Me.txtNoClient.Visible = True
    Else
        Me.txtNoClient.Visible = False
    End If
     
    RefreshQuery
     
    End Sub
     
     
     
     
    Private Sub chkNom_Click()
     
    If Me.chkNom Then
        Me.txtNom.Visible = True
    Else
        Me.txtNom.Visible = False
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkPrenom_Click()
     
    If Me.chkPrenom Then
        Me.txtPrenom.Visible = True
    Else
        Me.txtPrenom.Visible = False
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkTousLesProduits_Click()
     
    If Me.chkTousLesProduits Then
        Me.txtTousLesProduits.Visible = True
    Else
        Me.txtTousLesProduits.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub chkVille_Click()
     
    If Me.chkVille Then
        Me.txtVille.Visible = True
    Else
        Me.txtVille.Visible = False
    End If
     
    RefreshQuery
    End Sub
     
    Private Sub Détail_Click()
     
    End Sub
     
    Private Sub Form_Load()
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
                ctl.Caption = "-*-*-"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
         End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT Client.NoClient, Clients.Prenom, Clients.Nom, Clients.Cie, Clients.Ville, Factures.Livrea, Factures.NoFacture, TousLesProduits, Couleurs, DateAchatDe, DateAchata FROM Clients, Factures"
    Me.lstResults.Requery
    End Sub
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT Client.NoClient, Clients.Prenom, Clients.Nom, Clients.Cie, Clients.Ville, Factures.Livrea, Factures.NoFacture, TousLesProduits, Couleurs, DateAchatDe, DateAchata FROM Clients, Factures Where frmresultat!Codresultat <> 0 "
     
    If Not Me.chkNoFacture Then
        SQL = SQL & "And frmresultat!NoFacture like '*" & Me.txtNoFacture & "*' "
    End If
     
    If Not Me.chkNoClient Then
        SQL = SQL & "And frmresultat!NoClient like '*" & Me.txtNoClient & "*' "
    End If
     
    If Not Me.chkPrenom Then
        SQL = SQL & "And frmresultat!Prenom like '*" & Me.txtPrenom & "*' "
    End If
     
    If Not Me.chkNom Then
        SQL = SQL & "And frmresultat!Nom like '*" & Me.txtNom & "*' "
    End If
     
    If Not Me.chkCie Then
        SQL = SQL & "And frmresultat!Cie like '*" & Me.txtCie & "*' "
    End If
     
    If Not Me.chkVille Then
        SQL = SQL & "And Resultat!Ville like '*" & Me.txtVille & "*' "
    End If
     
    If Not Me.chkLivrea Then
        SQL = SQL & "And Resultat!Livrea like '*" & Me.txtLivrea & "*' "
    End If
     
    If Not Me.chkTousLesProduits Then
        SQL = SQL & "And Resultat!TousLesProduits like '*" & Me.txtTousLesProduits & "*' "
    End If
     
    If Not Me.chkCouleurs Then
        SQL = SQL & "And Resultat!Couleurs like '*" & Me.txtCouleurs & "*' "
    End If
     
    If Not Me.chkDateAchatDe Then
        SQL = SQL & "And Resultat!DateAchatDe like '*" & Me.txtDateAchatDe & "*' "
    End If
     
    If Not Me.chkDateAchata Then
        SQL = SQL & "And Resultat!DateAchata like '*" & Me.txtDateAchata & "*' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
     
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub txtNoClient_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
    Private Sub txtNoFacture_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
    Private Sub txtPrenom_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txtNom_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txtCie_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txtVille_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
     
     
    Private Sub txtLivrea_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txtTousLesProduits_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txtCouleurs_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txtDateAchatDe_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
     
    Private Sub txDateAchata_BeforeUpdate(cancel As Integer)
    RefreshQuery
    End Sub
    Espérant que vous pourrez m'aider

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Bonjour et bienvenue sur le forum Office de DVP.

    Si tu pouvais nous donner les erreurs, parce que là, j'ai déjà lu le journal aujourd'hui.

    Si tu nous les donnes une à une, c'est plus facile.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Heureux-oli
    Bonjour et bienvenue sur le forum Office de DVP.

    Si tu pouvais nous donner les erreurs, parce que là, j'ai déjà lu le journal aujourd'hui.

    Si tu nous les donnes une à une, c'est plus facile.
    Désolé ... Voici les codes d'erreurs qui m'apparaissent...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
                ctl.Caption = "-*-*-"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
         End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT Client.NoClient, Clients.Prenom, Clients.Nom, Clients.Cie, Clients.Ville, Factures.Livrea, Factures.NoFacture, TousLesProduits, Couleurs, DateAchatDe, DateAchata FROM Clients, Factures"
    Me.lstResults.Requery
    End Sub
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT Client.NoClient, Clients.Prenom, Clients.Nom, Clients.Cie, Clients.Ville, Factures.Livrea, Factures.NoFacture, TousLesProduits, Couleurs, DateAchatDe, DateAchata FROM Clients, Factures Where frmresultat!Codresultat <> 0 "
     
    If Not Me.chkNoFacture Then
        SQL = SQL & "And frmresultat!NoFacture like '*" & Me.txtNoFacture & "*' "
    End If
     
    If Not Me.chkNoClient Then
        SQL = SQL & "And frmresultat!NoClient like '*" & Me.txtNoClient & "*' "
    End If
     
    If Not Me.chkPrenom Then
        SQL = SQL & "And frmresultat!Prenom like '*" & Me.txtPrenom & "*' "
    End If
     
    If Not Me.chkNom Then
        SQL = SQL & "And frmresultat!Nom like '*" & Me.txtNom & "*' "
    End If

  4. #4
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    essai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Client.NoClient, Clients.Prenom, Clients.Nom, Clients.Cie, Clients.Ville, Factures.Livrea, Factures.NoFacture, TousLesProduits, Couleurs, DateAchatDe, DateAchata FROM Clients, Factures Where forms!frmresultat!Codresultat <> 0 "
    ps:
    heureux-oli te demandais les erreurs pas le code ou tu as un problème

    puisque tu es nouveau:
    pense a nous: c'est difficile de nous retrouver parfois dans notre propre code alors ceux des autres...
    identifie mieux ton problème: tu as un problème de SQL puisque les résultats de ta requete ne fonctionne pas, pas un problème de formulaire.
    évite donc de mettre 261 lignes de code si tu veux avoir plus de résultat.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci bcp Vodiem, je vais essayer ce que tu m'as écrit......
    Je vais éviter les romans la prochaine fois.
    Je me sens un peu mêlé dans tout ça.. je vous remercie donc de votre aide.

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonjour;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Client.NoClient, Clients.Prenom...."
    La table Client ou Clients?

    Cordialement.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci, il vient un temps qu'on a beau se relilre et on ne voit même plus ses fautes de frappe...
    j'ai effectuer les corrections, mais je n'arrive toujours pas à faire fonctionner la recherche, lorsque je clique sur la case à cocher pour permettre d'insérer le texte à rechercher.... mon texbox s'affiche mais aussi une petite fenetre s'ouvre et me demande d'entrer une valeur de paramêtre pour chaque champ de mon formulaire; et même de cette façon aucune liste de résultat ne s'affiche...
    Comment faire pour éviter que les fenêtres s'ouvrent... je ne sais même pas où est l'erreur...
    Si quelqu'un peut m'aider..merci à l'avance

  8. #8
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    dans les sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "And frmresultat!Nom like '*" & Me.txtNom & "*' "
    retire tous les frmresultat! ca devrait aller mieux et met des parenthèses entre les conditions (c'est plus lisible)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "And (Nom like '*" & Me.txtNom & "*') "
    mais un conseil, j'ai fait plusieurs recherche multicritère, avant de lancer la requete je fais la visu de la sql pour voir s'il y a qq qui cloche, si je ne vois pas je recopie la sql dans une requete et je vois ce qui marche pas.

    faut pas te leurrer: je ne pense pas que quelqu'un ai réussi a faire fonctionner du premier coup sa requete

    tu limite au départ les critères de ta sql: where true
    puis petit a petit une condition, puis une autre pas les 11 en meme temps...

    et si tu vois pas tu post le sql généré

    bon courage

Discussions similaires

  1. [AC-2007] Requête dynamique multi-critères dans un sous-formulaire
    Par fclus dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/10/2011, 15h35
  2. recherche multi-critères dans un formulaire de recherche
    Par sam1975 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/08/2009, 18h12
  3. Réponses: 5
    Dernier message: 04/03/2009, 20h03
  4. Réponses: 2
    Dernier message: 23/05/2007, 07h31
  5. Réponses: 6
    Dernier message: 18/03/2007, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo