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 :

Recherche dans plusieurs colonnes d'une requête [AC-2003]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Recherche dans plusieurs colonnes d'une requête
    Bonjour ,

    Je voudrais faire une recherche dans un formulaire.
    J'ai une liste déroulante dans laquelle je sélectionne une valeur.
    J'ai une liste de résultat basée sur une requête.
    Je filtre bien sur un champ mais peut on faire un filtre sur (par exemple du champ1 au champ10)?

    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
     
    Private Sub RefreshQuery()
       Dim SQL As String
       Dim SQL2 As String
       Dim SQL3 As String
       Dim SQLWhere  As String
     
     
     SQL = "SELECT CodePoto, NomArret, Ligne1, Ligne2, Ligne3 From RInfonouvpoto Where TNouvpoto!CodePoto <> 0"
     
    If Not Me.chkLigne1 Then
       SQL = SQL & "And RInfonouvpoto!Ligne1 = '" & Me.cmbRechLigne & "' "
       SQL2 = SQL2 & " And RInfonouvpoto!Ligne2  = '" & Me.cmbRechLigne & "'"
       SQL3 = SQL3 & " And RInfonouvpoto!Ligne3  = '" & Me.cmbRechLigne & "'"
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - InStr(SQL2, "Where ") - InStr(SQL3, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
       Me.lstResults.RowSource = SQL
       Me.lstResults.Requery
     
    End Sub
    Cordialement

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Il faut répéter ta condition colonne par colonne.
    On ne peut pas faire un truc du genre Where [Champ1] and [Champ2] and [Champ3] = 25.
    Il faut faire Where [Champ1]=25 and [Champ2]=25 and [Champ3]=25.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut C'est limpide.
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Il faut répéter ta condition colonne par colonne.
    On ne peut pas faire un truc du genre Where [Champ1] and [Champ2] and [Champ3] = 25.
    Il faut faire Where [Champ1]=25 and [Champ2]=25 and [Champ3]=25.

    A+
    Merci ,
    Je l'avais sous les yeux mais je ne le voyais pas...

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Question subsidiaire
    Bonjour,

    Est il possible de simplifier la saisie des champs.
    En faisant le tri de ce champ à ce champ?
    du style
    Where du [Champ1] au[Champ3]=25 ?

    Merci

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Hélas non, il faut y aller champ par champ.

    Access n'est pas dans Excel et il travaille mal horizontalement.
    Évidement tu peux un peu te simplifier la vie en faisant du code qui va générer ton SQL mais au final on va travailler champ par champ.

    Ici un exemple (ultra simpliste) de code qui automatise la création de sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    dim sql as string
    dim listeChamp() as variant:listeChamp=array("Champ1", "Chanp2", "Champ3")
     
    dim i as long:for i=lbound(listeChamp) to ubound(listeChamp)
      if sql<>"" then
         sql=sql & " and "
      end if
     
      sql=sql & "[" & listeChamp(i) & "]=25"
     
    next i
     
    debug.print sql
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Je teste le plus rapidement possible
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Hélas non, il faut y aller champ par champ.

    Access n'est pas dans Excel et il travaille mal horizontalement.
    Évidement tu peux un peu te simplifier la vie en faisant du code qui va générer ton SQL mais au final on va travailler champ par champ.

    Ici un exemple (ultra simpliste) de code qui automatise la création de sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim sql as string
     
    dim listeChamp() as variant:listeChamp=array("Champ1", "Chanp2", "Champ3")
     
    dim i as long:for i=lbound(listeChamp) to ubound(listeChamp)
      if sql<>"" then
         sql=sql & " and "
      end if
     
      sql=sql & "[" & listeChamp(i) & "]=25"
     
    next i
     
    debug.print sql
    A+
    Merci en attendant .
    Je crois avoir compris
    Mais tu sais avec les amateurs ...

    Cordialement

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Attention, mon code est vraiment minimaliste.

    Il suppose notamment que tous les champs sont de type numérique.

    Si tu veux quelque chose de plus subtile, c'est plus complexe.
    Note aussi qu'il y a plusieurs tutoriel sur les formulaires de recherche ici :
    https://access.developpez.com/cours/...#formrecherche

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Oui je connais ces tutos et ils m'ont permis de développer un outil plutôt performant pour le béotien que je suis.
    Mais je but sur ce type de recherche depuis très longtemps et j'ai eu beau fouiller le forum dans tous les sens je n'y ai pas trouvé la réponse .
    Pour l'instant

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Type texte
    Citation Envoyé par marot_r Voir le message
    Attention, mon code est vraiment minimaliste.

    Il suppose notamment que tous les champs sont de type numérique.

    Si tu veux quelque chose de plus subtile, c'est plus complexe.
    Note aussi qu'il y a plusieurs tutoriel sur les formulaires de recherche ici :
    https://access.developpez.com/cours/...#formrecherche

    A+
    Cela ne fonctionne pas les champs sont de type texte...

    Dommage

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Retour en arrière,
    Quand je test de manière à filtrer collonne par collone via ce code cela ne filtre pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     SQL = "SELECT CodePoto, NomArret, Ligne1, Ligne2, Ligne3, Ligne4 From RInfonouvpoto Where TNouvpoto!CodePoto <> 0"
     
    If Not Me.chkLigne1 Then
       SQL = SQL & "And RInfonouvpoto!Ligne1  Or RInfonouvpoto!Ligne2 Or RInfonouvpoto!Ligne3  Or RInfonouvpoto!Ligne4= '" & Me.cmbRechLigne & "'"
     
    End If
     
     
      SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
    Je n'arrive pas à implanter les collones de la bonne manière.
    Help!

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonsoir,
    il faut mettre la valeur de la liste déroulante cmbRechLigne à chaque ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SQL = "SELECT CodePoto, NomArret, Ligne1, Ligne2, Ligne3, Ligne4 From RInfonouvpoto Where TNouvpoto!CodePoto <> 0"
     
    If Not Me.chkLigne1 Then
       SQL = SQL & " And (RInfonouvpoto!Ligne1= '" & Me.cmbRechLigne & _
            "' Or RInfonouvpoto!Ligne2= '" & Me.cmbRechLigne & _
    	"' Or RInfonouvpoto!Ligne3= '" & Me.cmbRechLigne & _
    	"' Or RInfonouvpoto!Ligne4= '" & Me.cmbRechLigne & "')"
    End If
     
      SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Technicien Marketing
    Inscrit en
    Décembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Technicien Marketing
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2014
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Merci beaucoup !
    Effectivement c'est super je croyais avoir testé ce mode d'écriture mais visiblement ne maitrisant pas la synthax j'ai du me trompé lors de mes essais.
    Merci beaucoup

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

Discussions similaires

  1. Count dans plusieurs colonne d'une même table
    Par macfleid dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/07/2008, 20h43
  2. [SQL] Recherche dans le résultat d'une requête
    Par Ekik dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/03/2007, 10h32
  3. [SQL Server] rechercher dans plusieurs champs d'une table
    Par houla! dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/08/2006, 09h37
  4. Recherche dans plusieurs colonnes d'une table
    Par yoline dans le forum Access
    Réponses: 4
    Dernier message: 26/07/2006, 11h58
  5. Recherche dans plusiuers colonnes d'une table
    Par yoline dans le forum Access
    Réponses: 3
    Dernier message: 25/07/2006, 13h00

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