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] recherche multi criteres


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2005
    Messages
    271
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 271
    Points : 91
    Points
    91
    Par défaut [formulaire] recherche multi criteres
    ai essyaer de creer une recherche multi criteres d apres le tutorial de C@feine mais le mien est un peu different puisqu il joint plusieurs tables.

    J ai plusieures problemes :
    _quand je decoche, utilisation incorrecte de NULL
    _ la recherche marche pas tt simplement
    _qd j ouvre le formulaire suele mes references apparaissent...

    Voici le code :
    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
     
    Option Compare Database
     
     
    Private Sub cochercouleur_Click()
        Me.listecouleur.Visible = Not Me.listecouleur.Visible
        RefreshQuery
    End Sub
     
     
    Private Sub cochermodele_Click()
        Me.listemodele.Visible = Not Me.listemodele.Visible
        RefreshQuery
    End Sub
     
    Private Sub cocherposition_Click()
        Me.listeposition.Visible = Not Me.listeposition.Visible
        RefreshQuery
    End Sub
     
     
    Private Sub Form_Open(Cancel As Integer)
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "cocher"
                ctl.Value = -1
            Case "liste"
                ctl.Visible = False
        End Select
    Next ctl
     
    Me.Listeresult.RowSource = "SELECT PIÈCE.REF_PIÈCE, EXISTER_COULEUR.NOM_COULEUR, EXISTER_MODÈLE.NUM_MODÈLE, EXISTER_POSITION.NOM_POSITION FROM ((PIÈCE INNER JOIN EXISTER_COULEUR ON PIÈCE.REF_PIÈCE = EXISTER_COULEUR.REF_PIÈCE) INNER JOIN EXISTER_MODÈLE ON PIÈCE.REF_PIÈCE = EXISTER_MODÈLE.REF_PIÈCE) INNER JOIN EXISTER_POSITION ON PIÈCE.REF_PIÈCE = EXISTER_POSITION.REF_PIÈCE"
    Me.Listeresult.Requery
     
    End Sub
     
     
    Private Sub listecouleur_BeforeUpdate(Cancel As Integer)
        RefreshQuery
    End Sub
     
    Private Sub listemodele_BeforeUpdate(Cancel As Integer)
        RefreshQuery
    End Sub
     
    Private Sub listeposition_BeforeUpdate(Cancel As Integer)
        RefreshQuery
    End Sub
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT PIÈCE.REF_PIÈCE, EXISTER_COULEUR.NOM_COULEUR, EXISTER_MODÈLE.NUM_MODÈLE, EXISTER_POSITION.NOM_POSITION FROM ((PIÈCE INNER JOIN EXISTER_COULEUR ON PIÈCE.REF_PIÈCE = EXISTER_COULEUR.REF_PIÈCE) INNER JOIN EXISTER_MODÈLE ON PIÈCE.REF_PIÈCE = EXISTER_MODÈLE.REF_PIÈCE) INNER JOIN EXISTER_POSITION ON PIÈCE.REF_PIÈCE = EXISTER_POSITION.REF_PIÈCE WHERE PIÈCE!REF_PIÈCE<>0;"
    If Me.cochercouleur Then
        SQL = SQL & "And EXISTER_COULEUR!NOM_COULEUR = '" & Me.listecouleur & "' "
    End If
    If Me.cochermodele Then
        SQL = SQL & "And EXISTER_MODÈLE!NUM_MODÈLE = '" & Me.listemodele & "' "
    End If
    If Me.cocherposition Then
        SQL = SQL & "And EXISTER_POSITION!NOM_POSITION = '" & Me.listeposition & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
    SQL = SQL & ";"
     
     
     Me.Listeresult.RowSource = SQL
     Me.Listeresult.Requery
     
    End Sub
    Volia si vous avez besoin de precision je me ferais une joie de vous repondre

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 84
    Points : 38
    Points
    38
    Par défaut Recherche multicritere
    Bonjour,

    Suite a ce que j'ai compris de ton probleme et apres avoir moi même travaille sur ce probleme pour gerer de la materiovigillance a l'hopital. Je te conseille les choses suivantes :

    Developpe ton probleme et decrit un peu ta base de données.

    Apres avoir teste le tuto de Cafeine et celui de Frabice, je te conseille, d'apres ce que j'ai compris de ton probleme, le tuto de Fabrice qui semble plus adapté à une recherche sur plusieurs criteres et plusieurs tables en s'incrementant entre elles.

    Raphael

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    il faudrait déboguer ton SQL, j'ai écrit un tuto sur le sujet :
    http://cafeine.developpez.com/access...el/debugprint/

    comme ça tu aurais vu qu'en ayant mis ";" à la fin ... ça risque de compliquer l'affaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQL = "SELECT PIÈCE.REF_PIÈCE, EXISTER_COULEUR.NOM_COULEUR, EXISTER_MODÈLE.NUM_MODÈLE, EXISTER_POSITION.NOM_POSITION FROM ((PIÈCE INNER JOIN EXISTER_COULEUR ON PIÈCE.REF_PIÈCE = EXISTER_COULEUR.REF_PIÈCE) INNER JOIN EXISTER_MODÈLE ON PIÈCE.REF_PIÈCE = EXISTER_MODÈLE.REF_PIÈCE) INNER JOIN EXISTER_POSITION ON PIÈCE.REF_PIÈCE = EXISTER_POSITION.REF_PIÈCE WHERE PIÈCE!REF_PIÈCE<>0;"
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 32
    Points : 19
    Points
    19
    Par défaut
    salut à toi, je suis novice en VB mais j'ai réussi à faire marcher ma recherche multicritères provenant de plusieurs table en passant par la création d'unr requete rqy_recherche spécifique à mes besoins. voila le code:

    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
    Option Compare Database
     
    Private Sub chkSociété_Click()
     
    If Me.chkSociété Then
        Me.cmbRechSociété.Visible = False
    Else
        Me.cmbRechSociété.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkFournisseur_Click()
     
    If Me.chkFournisseur Then
        Me.cmbRechFournisseur.Visible = False
    Else
        Me.cmbRechFournisseur.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkDemandeur_Click()
     
    If Me.chkDemandeur Then
        Me.cmbRechDemandeur.Visible = False
    Else
        Me.cmbRechDemandeur.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkCode_Click()
     
    If Me.chkCode Then
        Me.cmbRechCode.Visible = False
    Else
        Me.cmbRechCode.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechSociété_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechFournisseur_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechDemandeur_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechCode_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    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 "cmb"
                ctl.Visible = False
     
        End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT num_commande, date_reception, libellé, [Somme De totalht], etat, code, fournisseur, demandeur, societe FROM qry_recherche;"
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT num_commande, date_reception, libellé, [Somme De totalht], etat, code, fournisseur, demandeur, societe FROM qry_recherche WHERE num_commande Is Not Null "
     
    If Not Me.chkSociété Then
        SQL = SQL & "And societe = '" & Me.cmbRechSociété & "' "
    End If
    If Not Me.chkFournisseur Then
        SQL = SQL & "And fournisseur = '" & Me.cmbRechFournisseur & "' "
    End If
    If Not Me.chkDemandeur Then
        SQL = SQL & "And demandeur = '" & Me.cmbRechDemandeur & "' "
    End If
    If Not Me.chkCode Then
        SQL = SQL & "And code = '" & Me.cmbRechCode & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "qry_recherche", SQLWhere) & " / " & DCount("*", "qry_recherche")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub lstResults_DblClick(Cancel As Integer)
     
    DoCmd.OpenForm "commande1", acNormal, , "num_commande  = '" & Me.lstResults & "' "
     
     
    End Sub
    Private Sub Commande26_Click()
    On Error GoTo Err_Commande26_Click
     
     
        DoCmd.Close
     
    Exit_Commande26_Click:
        Exit Sub
     
    Err_Commande26_Click:
        MsgBox err.Description
        Resume Exit_Commande26_Click
     
    End Sub
    bon courage.

    modération : cafeine,

Discussions similaires

  1. [AC-2003] Probleme Formulaire recherche multi critere
    Par Ardiden31 dans le forum VBA Access
    Réponses: 18
    Dernier message: 15/08/2019, 11h18
  2. [AC-2007] Probleme avec formulaire recherche multi criteres
    Par reservoirfrog dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/11/2012, 16h10
  3. [formulaire] recherche multi critere multi table
    Par luz_negra dans le forum IHM
    Réponses: 21
    Dernier message: 28/11/2007, 00h22
  4. [Formulaire]Recherche Multi Critere
    Par sumtech dans le forum IHM
    Réponses: 5
    Dernier message: 18/04/2007, 16h40
  5. Recherche Multi-criteres dans un formulaire
    Par valery17 dans le forum Access
    Réponses: 6
    Dernier message: 22/05/2006, 16h17

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