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 :

Récupérer valeurs liste choix multiple dans une requête [AC-2010]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut Récupérer valeurs liste choix multiple dans une requête
    Bonjour à tous,
    Je suis une éternelle débutante sur Access à mesure que mes besoins évoluent...

    J'ai une liste de dates (List1) avec sélection multiples.
    Je suis susceptible de sélectionner une ou plusieurs dates en fonction des besoins.

    Ce que j'aimerais faire:
    - pouvoir (en cliquant sur le bouton "Command101"), récupérer les dates sélectionnées dans une variable (j'ai à peu près réussi à le faire)
    - utiliser les dates sélectionnées comme critère dans une requête suppression (Q_Suppression)

    Ci-dessous vous trouverez les quelques lignes que j'ai écris pour récupérer les dates sélectionnées mais je ne suis pas certaine que ça marche réellement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Command101_Click()
    Dim i As Variant
    Dim Suite As String, x As String, y As String
     
    For Each i In List1.ItemsSelected
    Suite = Suite + "#" + List1.ItemData(i) + "#" + " or "
    Next
    x = Suite
    y = Left(Suite, Len(Suite) - 4)
    End Sub
    Si une bonne âme avait une solution?
    Je suis preneuse

    Bien à vous
    Julie

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Avec quelque chose comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim VarI as Variant
    Dim monFiltre as string
    monFiltre = ""
    If me.maliste.selected.count>0 then
    	For Each VarI in Me.maliste.itemsselected
    		Si le champ est Numerique
    		Monfiltre=Monfiltre & "CHAMP = #" & format(Me.maliste.column(0,VarI), "MM/DD/YY") & "#" & " or "
    	Next VarI
    	Monfiltre=left(monfiltre,len(monfiltre)-4))
    	Currentdb.querydefs("larequete").sql="Select .... from .... where " & Monfiltre & ";")
    end if
    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    Bonjour
    Et merci pour cette réponse rapide
    Malheureusement ca ne fonctionne pas
    j'ai notamment à la fin des messages d'erreur disant "Compile error Expected: end of statement"

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Sais-tu sur quelle commande cela bloque (utilise le pas à pas pour l'exécution du code) ?
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    Oui ce sont les deux dernières lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Monfiltre=left(monfiltre,len(monfiltre)-4))
    	Currentdb.querydefs("larequete").sql="Select .... from .... where " & Monfiltre & ";")

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim VarI as Variant
    Dim monFiltre as string
    monFiltre = ""
    If me.maliste.selected.count>0 then
    	For Each VarI in Me.maliste.itemsselected
    		Si le champ est Numerique
    		Monfiltre=Monfiltre & "CHAMP = #" & format(Me.maliste.column(0,VarI), "MM/DD/YY") & "# or "
    	Next VarI
    	Monfiltre=left(monfiltre,len(monfiltre)-4)
    	Currentdb.querydefs("larequete").sql="Select .... from .... where " & Monfiltre & ";"
    end if
    Il y avait des parenthèses en trop...
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  7. #7
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    Bonjour
    alors la variable "MonFiltre" a le bon format, en revanche la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Currentdb.querydefs("larequete").sql="Select .... from .... where " & Monfiltre & ";"
    Ne produit aucun effet
    Voici ce que j'ai mis pour coller avec mon exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.QueryDefs("Q_Efface_DataPrincipale").SQL = "DELETE T_DataPrincipale.*, T_DataPrincipale.Version From T_DataPrincipale WHERE (T_DataPrincipale.Version)= MonFiltre;"
    Le code ne renvoie aucune erreur mais il n'y a aucun résultat observé

    Une idée?

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Elle devrait plutôt être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CurrentDb.QueryDefs("Q_Efface_DataPrincipale").SQL = "DELETE T_DataPrincipale.* From T_DataPrincipale WHERE (T_DataPrincipale.Version)= '" & MonFiltre & "';"
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  9. #9
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    Remplacé.
    j'ai mis une msgbox pour bien vérifié que le code va jusqu'au bout et c'est le cas.
    En revanche rien n'a été effacé, la requête suppression ne marche pas.

  10. #10
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Rien n'est effacé dans ton formulaire ou dans la table...
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  11. #11
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    Ni dans le formulaire (normal rien dans le code prévu pour) ni dans la table et c'est là où ça coince...
    Ne peut-on pas executer du code SQL sans faire référence à une requête?

  12. #12
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    La première ligne modifie ta requête, ensuite il faut l'exécuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CurrentDb.QueryDefs("Q_Efface_DataPrincipale").SQL = "DELETE T_DataPrincipale.* From T_DataPrincipale WHERE (T_DataPrincipale.Version)= '" & MonFiltre & "';"
    Docmd.OpenQuery "Q_Efface_DataPrincipale"
    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  13. #13
    Nouveau membre du Club
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Points : 34
    Points
    34
    Par défaut
    En effet ça marche!
    Un grand merci

  14. #14
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Désolé, d'avoir mis aussi longtemps à trouver le problème...

    @+.
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 21/05/2014, 20h21
  2. [AC-2007] Récupérer valeur d'un TextBox dans une requête
    Par Babacool321 dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/05/2014, 17h15
  3. Réponses: 2
    Dernier message: 03/03/2009, 17h10
  4. Récupérer la valeur d'un champ dans une requête
    Par romaintaz dans le forum JDBC
    Réponses: 7
    Dernier message: 18/08/2006, 09h13
  5. Récupérer la valeur des champs calculés dans une requète SQL dans vba
    Par FrédéricCM dans le forum Requêtes et SQL.
    Réponses: 12
    Dernier message: 28/06/2006, 16h29

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