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 :

Recherches multi criteres et multi tables [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 20
    Points
    20
    Par défaut Recherches multi criteres et multi tables
    Bonjour ,

    J’applique aujourd’hui la recherche multi critères (decrite par Cafeine) sur une requête nommée "Query1" (plutôt complexe) et je rencontre plusieurs difficultés. Je vous en remercie d’avance. Mon projet touche a sa fin. Il me reste plus que cette fameuse recherche multi critères et multi table a effectuer !! Je m’explique : Prenons ma table « Adhesive Tests » (je voudrais vous postez egalement mon Access de 1.5Mo mais je n'y arrive pas, taille maxi de la piece jointe de 0.5Mo... je vous mets donc un extrait de mon code).
    Un test adhésif étant constitué de :
    • 1 « supplier »
    • 1 « adhesive avec son supplier »
    • 1 « material avec son supplier »
    • 1 autre « material avec son supplier »
    Maintenant mon objectif est d’arriver à rechercher un « Adhesive Test » a partir de son supplier par exemple. Le problème est que si l’on regarde dans le code que je vous ai fourni, il est impossible de faire la distinction entre : « Adhesive Test Supplier », « Adhesive Supplier », « Material 1 Supplier » et « Material 2 Supplier » car tous ces « suppliers » sont recherchés dans la même table « Suppliers »… (Vous me suivez ?)
    Voila donc ma première difficulté : Faire la différence entre tous ces « suppliers », sachant qu’ils sont tous recherchés dans la même table. Pour résoudre ce problème j’ai pensé à effectuer ma recherche directement sur ma requête « Query1 » mais je n’y arrive pas non plus ».

    Mon 2eme problème est plus simple à expliquer. Lorsque je lance une recherche a partir du champ "MaterialType" par exemple, j’obtiens l'erreur suivante:
    Run-time error ‘3079’ : The specified field ‘Materials!MaterialType' could refer to more than one table listed in the FROM clause of your statement.
    Je pense que ce n’ait pas anodin et que ces 2 problèmes sont liés…
    Quelqu’un serait il comment reprendre tout ça ?

    MERCI
    Cosmo

    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
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
     
    SQL = "SELECT * FROM Query1 Where AdhesiveTests.IDAdhesiveTest <> 0 "
     
    'Pour une recherche a partir d'infos sur le "test adhesif"
    If Me.chkAdhesiveTestID Then
        SQL = SQL & "and AdhesiveTests!IDAdhesiveTest = " & Me.txtAdhesiveTestID & " "
    End If
    If Me.chkTestName Then
        SQL = SQL & "and AdhesiveTests!TestName = '*" & Me.cmbTestName & "*' "
    End If
    If Me.chkSpecification Then
        SQL = SQL & "and AdhesiveTests!Specification like '*" & Me.TxtSpecification & "*' "
    End If
     
    'Pour une recherche a partir d'infos sur l'"adhesive test supplier"
    If Me.chkAdhesiveTestSupplierSupplierID Then
        SQL = SQL & "And Suppliers!IDSupplier = " & Me.txtAdhesiveTestSupplierSupplierID & " "
    End If
    If Me.chkAdhesiveTestSupplierSupplierName Then
        SQL = SQL & "And Suppliers!SupplierName = '" & Me.cmbAdhesiveTestSupplierSupplierName & "' "
    End If
    If Me.chkAdhesiveTestSupplierTown Then
        SQL = SQL & "And Suppliers!Town like '*" & Me.txtAdhesiveTestSupplierTown & "*' "
    End If
    If Me.chkAdhesiveTestSupplierCountry Then
        SQL = SQL & "And Suppliers!Country = '" & Me.cmbAdhesiveTestSupplierCountry & "' "
    End If
    If Me.chkAdhesiveTestSupplierContact Then
        SQL = SQL & "And Suppliers!Contact like '*" & Me.txtAdhesiveTestSupplierContact & "*' "
    End If
     
     
    'Pour une recherche a partir d'infos sur l'"adhesif"
    If Me.chkAdhesiveID Then
        SQL = SQL & "and Adhesives!IDAdhesive = " & Me.txtAdhesiveID & " "
    End If
    If Me.chkAdhesiveType Then
        SQL = SQL & "and Adhesives!AdhesiveType = '" & Me.cmbAdhesiveType & "' "
    End If
    If Me.chk1Kor2K Then
        SQL = SQL & "and Adhesives!1Kor2K = '" & Me.cmb1Kor2K & "' "
    End If
    If Me.chkAdhesiveName Then
        SQL = SQL & "and Adhesives!AdhesiveName like '*" & Me.txtAdhesiveName & "*' "
    End If
     
     
    'Pour une recherche a partir d'infos sur l'"adhesive supplier"
    If Me.chkAdhesiveSupplierSupplierID Then
        SQL = SQL & "And Suppliers!IDSupplier = " & Me.txtAdhesiveSupplierSupplierID & " "
    End If
    If Me.chkAdhesiveSupplierSupplierName Then
        SQL = SQL & "And Suppliers!SupplierName = '" & Me.cmbAdhesiveSupplierSupplierName & "' "
    End If
    If Me.chkAdhesiveSupplierTown Then
        SQL = SQL & "And Suppliers!Town like '*" & Me.txtAdhesiveSupplierTown & "*' "
    End If
    If Me.chkAdhesiveSupplierCountry Then
        SQL = SQL & "And Suppliers!Country = '" & Me.cmbAdhesiveSupplierCountry & "' "
    End If
    If Me.chkAdhesiveSupplierContact Then
        SQL = SQL & "And Suppliers!Contact like '*" & Me.txtAdhesiveSupplierContact & "*' "
    End If
     
     
    'Pour une recherche a partir d'infos sur le "material substrate 1"
    If Me.chkMaterialM1ID Then
        SQL = SQL & "and Materials!IDMaterial = " & Me.txtMaterialM1ID & " "
    End If
    If Me.chkMaterialTypeM1 Then
        SQL = SQL & "and Materials!MaterialType = '" & Me.cmbMaterialTypeM1 & "' "
    End If
    If Me.chkMaterialNameM1 Then
        SQL = SQL & "and Materials!MaterialName like '*" & Me.txtMaterialNameM1 & "*' "
    End If
    If Me.chkHeatTreatmentM1 Then
        SQL = SQL & "and Materials!HeatTreatment = '" & Me.cmbHeatTreatmentM1 & "' "
    End If
    If Me.chkPreTreatmentM1 Then
        SQL = SQL & "and Materials!PreTreatment = '" & Me.cmbPreTreatmentM1 & "' "
    End If
    If Me.chkPreTreatmentSupplierM1 Then
        SQL = SQL & "and Materials!PreTreatmentSupplier = '" & Me.cmbPreTreatmentSupplierM1 & "' "
    End If
    If Me.chkFabricationProcessM1 Then
        SQL = SQL & "and Materials!FabricationProcess = '" & Me.cmbFabricationProcessM1 & "' "
    End If
     
    'Pour une recherche a partir d'infos sur le "material 1 supplier"
    If Me.chkMaterial1SupplierSupplierID Then
        SQL = SQL & "And Suppliers!IDSupplier = " & Me.txtMaterial1SupplierSupplierID & " "
    End If
    If Me.chkMaterial1SupplierSupplierName Then
        SQL = SQL & "And Suppliers!SupplierName = '" & Me.cmbMaterial1SupplierSupplierName & "' "
    End If
    If Me.chkMaterial1SupplierTown Then
        SQL = SQL & "And Suppliers!Town like '*" & Me.txtMaterial1SupplierTown & "*' "
    End If
    If Me.chkMaterial1SupplierCountry Then
        SQL = SQL & "And Suppliers!Country = '" & Me.cmbMaterial1SupplierCountry & "' "
    End If
    If Me.chkMaterial1SupplierContact Then
        SQL = SQL & "And Suppliers!Contact like '*" & Me.txtMaterial1SupplierContact & "*' "
    End If
     
    'Pour une recherche a partir d'infos sur le "material substrate 2"
    If Me.chkMaterialM2ID Then
        SQL = SQL & "and Materials!IDMaterial = " & Me.txtMaterialM2ID & " "
    End If
    If Me.chkMaterialTypeM2 Then
        SQL = SQL & "and Materials!MaterialType = '" & Me.cmbMaterialTypeM2 & "' "
    End If
    If Me.chkMaterialNameM2 Then
        SQL = SQL & "and Materials!MaterialName like '*" & Me.txtMaterialNameM2 & "*' "
    End If
    If Me.chkHeatTreatmentM2 Then
        SQL = SQL & "and Materials!HeatTreatment = '" & Me.cmbHeatTreatmentM2 & "' "
    End If
    If Me.chkPreTreatmentM2 Then
        SQL = SQL & "and Materials!PreTreatment = '" & Me.cmbPreTreatmentM2 & "' "
    End If
    If Me.chkPreTreatmentSupplierM2 Then
        SQL = SQL & "and Materials!PreTreatmentSupplier = '" & Me.cmbPreTreatmentSupplierM2 & "' "
    End If
    If Me.chkFabricationProcessM2 Then
        SQL = SQL & "and Materials!FabricationProcess = '" & Me.cmbFabricationProcessM2 & "' "
    End If
     
    'Pour une recherche a partir d'infos sur le "material 2 supplier"
    If Me.chkMaterial2SupplierSupplierID Then
        SQL = SQL & "And Suppliers!IDSupplier = " & Me.txtMaterial2SupplierSupplierID & " "
    End If
    If Me.chkMaterial2SupplierSupplierName Then
        SQL = SQL & "And Suppliers!SupplierName = '" & Me.cmbMaterial2SupplierSupplierName & "' "
    End If
    If Me.chkMaterial2SupplierTown Then
        SQL = SQL & "And Suppliers!Town like '*" & Me.txtMaterial2SupplierTown & "*' "
    End If
    If Me.chkMaterial2SupplierCountry Then
        SQL = SQL & "And Suppliers!Country = '" & Me.cmbMaterial2SupplierCountry & "' "
    End If
    If Me.chkMaterial2SupplierContact Then
        SQL = SQL & "And Suppliers!Contact like '*" & Me.txtMaterial2SupplierContact & "*' "
    End If
     
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "Query1", SQLWhere) & " / " & DCount("*", "Query1")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub

  2. #2
    Membre à l'essai
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 20
    Points
    20
    Par défaut
    Quelqu'un serait il faire une recherche sur les champs d'une requete plutot que sur ceux d'une table pour resoudre ce probleme?
    J'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Queries!Query1!MON_CHAMP
    mais ca ne marche pas (Query1 etant la requete dans laquelle je souhaite rechercher)

  3. #3
    Membre à l'essai
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 20
    Points
    20
    Par défaut
    Bon j'essaie de relancer parce que je n'ai plus d'idee la! Quoi tenter?
    Je suis quasiment sur que mon probleme se situe ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
    
    SQL = "SELECT * FROM Query1 Where AdhesiveTests.IDAdhesiveTest <> 0 "
    
    'Pour une recherche a partir d'infos sur le "supplier de l'adhesif"
    If Me.chkAdhesiveSupplierCountry Then
        SQL = SQL & "And Suppliers!Country = '" & Me.cmbAdhesiveSupplierCountry & "' "
    End If
    Car j'effectue ma recherche sur le champ "Country" de la table "Suppliers", alors qu'il faudrait que je fasse cette recherche a partir du champs "AdhesiveSupplierCountry" de la requete "Query1"...
    Y aurait t'il un moyen?

    MERCIIII

    Cosmo

  4. #4
    Membre à l'essai
    Étudiant
    Inscrit en
    Avril 2009
    Messages
    59
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2009
    Messages : 59
    Points : 20
    Points
    20
    Par défaut
    Laissez c'est bon, resolu...

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

Discussions similaires

  1. tri multi criteres dans une table
    Par louiwahl dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/02/2010, 23h36
  2. [formulaire] recherche multi critere multi table
    Par luz_negra dans le forum IHM
    Réponses: 21
    Dernier message: 28/11/2007, 01h22
  3. Multi critere sur 2 tables possible?
    Par Dieu091 dans le forum VBA Access
    Réponses: 7
    Dernier message: 01/06/2007, 12h17
  4. gui pour recherche multi critere
    Par komando dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 02/12/2005, 20h08
  5. Réponses: 14
    Dernier message: 15/06/2005, 14h14

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