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

VBA Access Discussion :

[VBA]RECHERCHE MULTI-CRITERES de Caféine sous Access 2003


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut [VBA]RECHERCHE MULTI-CRITERES de Caféine sous Access 2003
    Bonjour à vous, j'ai décidé de faire appel à vôtre talent car je n'arrive pas à corrigé 2 erreurs qui ce trouve dans mon formulaire. Tout d'abord j'ai suivi à la lettre les étapes du Tutoriel de Caféine. Avant d'aller plus loin voici le code de mon formulaire de recherche
    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
    Option Compare Database
     
    Private Sub chkFabricant_Click()
     
    If Me.chkFabricant Then
        Me.txtRechNomDuFabricant.Visible = False
    Else
        Me.txtRechNomDuFabricant.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
     
    Private Sub chkUsagePrincipal_Click()
     
    If Me.chkUsagePrincipal Then
        Me.cmbRechUsagePrincipal.Visible = False
    Else
        Me.cmbRechUsagePrincipal.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkNomCommun_Click()
     
    If Me.chkNomCommun Then
        Me.txtRechNomCommun.Visible = False
    Else
        Me.txtRechNomCommun.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkNomGénérique_Click()
     
    If Me.chkNomGénérique Then
        Me.txtRechNomGénérique.Visible = False
    Else
        Me.txtRechNomGénérique.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
     
    Private Sub chkEndroit_Click()
     
    If Me.chkEndroit Then
        Me.cmbRechEndroit.Visible = False
    Else
        Me.cmbRechEndroit.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechUsagePrincipal_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechEndroit_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 "txt"
                ctl.Visible = False
                ctl.Value = ""
     
            Case "cmb"
                ctl.Visible = False
     
        End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT CodMedia, NomDuFabricant, NomGénérique, NomCommun, Endroit FROM T_Produits_Info_Complet;"
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT CodMedia, NomDuFabricant, NomGénérique, NomCommun, Endroit FROM T_Produits_Info_Complet Where T_Produits_Info_Complet!CodMedia <> 0 "
     
    If Not Me.chkFabricant Then
        SQL = SQL & "And T_Produits_Info_Complet!NomDuFabricant like '*" & Me.txtRechNomDuFabricant & "*' "
    End If
    If Not Me.chkUsagePrincipal Then
        SQL = SQL & "And T_Produits_Info_Complet!UsagePrincipal = '" & Me.cmbRechUsagePrincipal & "' "
    End If
    If Not Me.chkNomCommun Then
        SQL = SQL & "And T_Produits_Info_Complet!NomCommun like '*" & Me.txtRechNomCommun & "*' "
    End If
    If Not Me.chkNomGénérique Then
        SQL = SQL & "And T_Produits_Info_Complet!Titre like '*" & Me.txtRechNomGénérique & "*' "
    End If
    If Not Me.chkEndroit Then
        SQL = SQL & "And T_Produits_Info_Complet!Endroit = '" & Me.cmbRechEndroit & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "T_Produits_Info_Complet", SQLWhere) & " / " & DCount("*", "T_Produits_Info_Complet")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
     
     
    Private Sub lstResults_DblClick(Cancel As Integer)
     
    DoCmd.OpenForm "Saisie", acNormal, , "[CodMedia] = " & Me.lstResults
     
     
    End Sub
     
    Private Sub txtRechNomDuFabricant_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub txtRechNomCommun_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub txtRechNomGénérique_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
    Mon premier problème ce situe au niveau du check box "chkNomGénérique" lorsque je clic sur cette case une erreur apparaît ( Erreur d'execution 2001 ) il me renvoit alors dans le Code et en jaune
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.lblStats.Caption = DCount("*", "T_Produits_Info_Complet", SQLWhere) & " / " & DCount("*", "T_Produits_Info_Complet")
    . J'essaie de déchiffrer cela mais je n'y parvient pas. J'ai procédé à une vérification complété du code VS celui de Caféine. Et j'ai pas trouvé d'erreur.

    Mon 2 pb , dans ma zone de liste "lstResults" j'ai seulement l'information du CodMedia qui apparait. Et aucun Titre comme celui de Caféine. Et dans la section propriété de "lstResults" j'ai sous la section "contenu" SELECT [CodMedia], [NomDuFabricant], [NomGénérique], [NomCommun], [Endroit] FROM T_Produits_Info_Complet;. J'ai cru à première vue que c'était l'ordre des champs dans ma table qui était en défaut j'ai alors changer l'ordre pour quelle soit indentique à celle de Caféine. Et le résultat est le même seulement le CodMedia s'affiche dans la zone de liste. Et ce qui m'importe ce sont les autres informations.

    Également si je clic en premier sur le crochet du NomGénérique et que par la suite je clic sur celui du Fabricant et du NomCommun j'optiens la même erreur . Cependant si je clic sur fabricant ou NomCommun j'ai pas de problèmes ils recherchent les informations et le tout ce met à jour.

    Et le double clic sur la sélection choisi dans la zone de liste fonctionne il me revois en dans formulaire "Saisie" et m'affiche la bonne information.

    La base de donnée fonctionne principalement sous le Formulaire Saisie. J'aimerais ajouter un bouton pour ouvrir le formulaire de recherche et effectuer la recherche et qu'il me retourne dans mon formulaire Saisie au lieu d'en ouvrir un second. J'aimerais connaître la façon de faire dans le code pour cette option si possible.


    Je ne sais pas si mes explications sont claires sinon je peux ajouter d'autre informations pour la rendre plus précise.

    J'ai en pièces jointe quelques photos de mon formulaire recherche et de ma table.

    Merci à l'avance.

  2. #2
    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;

    Je jette un petit coup d'oeil sur ton post et une première question me vient :
    Tu as bien une étiquette nommée :lblStats?

    Cordialement.

    PS: J'essaie d'aller plus loin dans ma lecture..

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut Oui j'ai le label lblStats
    J'en profite pour inclure dans la discussion une partie de ma base de données , vous y trouverez les formulaires ainsi que les tables en questions. Ceci sera s'en doute plus facile à comprendre..




    Notez que dans le dossier .zip il s'y trouve un dossier images car j'utilise un gestionnaire externe de photos. il est donc essentiel pour le fonctionnement de la base de données. Cependant j'ai minimiser le dossier à une seule photo et également j'ai supprimé la plupart de la base afin de focuser uniquement sur mon formulaire frmRecherche ainsi que le formulaire Saisie. Et la table qui s'y rattache.


    Merci

  4. #4
    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;

    Tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "And T_Produits_Info_Complet!Titre like '*" & Me.txtRechNomGénérique & "*' "
    Ce serait mieux avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "And T_Produits_Info_Complet!NomGénérique like '*" & Me.txtRechNomGénérique & "*' "
    M'interpelle la source de ta zone de liste-->"lstResults". Une seule colonne?

    Cordialement.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut Merci un problème de reglé il en reste 1 seul .
    Effectivement , j'ai modifié le code selon vôtre idées et j'avais oublié de modifier ce bout la. Tout mes check box fonctionne mais j'ai toujours seulement une colonne qui apparait et j'aimerais avoir 4 colonnes. je continue mes recherches si vous avez une idée faite moi le savoir.

    Merci

  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;

    Pour la source de ta liste ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Produits_Info_Complet.CodMedia, T_Produits_Info_Complet.NomDuFabricant, T_Produits_Info_Complet.NomGénérique, T_Produits_Info_Complet.NomCommun, T_Produits_Info_Complet.Endroit, T_Produits_Info_Complet.UsagePrincipal
    FROM T_Produits_Info_Complet;
    Tes colonnes :0cm;5cm;2,505cm;3cm;1cm;2cm

    Cordialement

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut Second problème de reglé
    l'affichage de mes colonnes fonctionne à 99% j'avais seulement à inscrire 5 colonnes au lieux de 1 dans les propriété.

    Il me reste maintenant à obtenir le titre dans chacune des colonnes comme sur le tuto de Caféine. Si vous avez une idées.

    Merci

  8. #8
    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;

    lstResults-->Format-->En-têtes colonnes-->Oui

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/03/2010, 11h56
  2. [AC-2000] Recherche multi-criteres VBA
    Par stan057 dans le forum VBA Access
    Réponses: 4
    Dernier message: 23/06/2009, 03h43
  3. Réponses: 1
    Dernier message: 01/08/2006, 14h47
  4. gui pour recherche multi critere
    Par komando dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/12/2005, 19h08
  5. Réponses: 14
    Dernier message: 15/06/2005, 13h14

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