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

Requêtes et SQL. Discussion :

Probleme recupération valeur dans un controle onglet dans requete SQL


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Probleme recupération valeur dans un controle onglet dans requete SQL
    Bonjour,

    Suite à quelques heures passées sur le net et sur VBA ACCESS, je n'ai pas trouvé de réponse qui fonctionne.

    Mon problème est que la zone liste n'affiche rien.

    Mon but et d'afficher des valeurs suivant le choix de la liste déroulante.

    J'ai un formulaire et un contrôle onglet.
    Dans une des pages du contrôle onglet j'ai une liste déroulante et zone de texte.
    J'ai ecrit le code suivant et avec toutes les combinaisons possible :
    Avec une table "Sous Categorie", un formulaire "Gestion comptes", un contrôle onglet "Zoneinfo".

    Essai1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Liste23
        .RowSourceType = "Table/Query"
        .RowSource = "SELECT [Sous Catégorie].Nom FROM [Sous Catégorie] WHERE ((([Sous Catégorie].Categorie)= [Gestion comptes]![Modifiable19]))"
    End With
    Essai2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Liste23
        .RowSourceType = "Table/Query"
        .RowSource = "SELECT [Sous Catégorie].Nom FROM [Sous Catégorie] WHERE ((([Sous Catégorie].Categorie)= [Formulaires]![Gestion comptes]![Modifiable19]))"
    End With
    Petite précision :
    J'ai directement dans un autre formulaire une liste déroulante et zone de texte avec le code suivant et cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With Liste4
    .RowSourceType = "Table/Query"
    .RowSource = "SELECT [Sous Catégorie].Nom FROM [Sous Catégorie] WHERE ((([Sous Catégorie].Categorie)=[Formulaires]![Gestion des Catégories]![Modifiable2]))"
    Merci pour votre aide.

  2. #2
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    Bonjour,

    Qu'est ce que la feuille de donnée renvoie avec l'éditeur de requête ?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Bonjour,

    Je ne sais pas dans l'éditeur de requête récupérer la valeur d'une liste déroulante.
    Cependant j'ai essayé de contourner le problème en récupérant la valeur par VBA puis l'y ajouter dans ma requête mais cela ne fonctionne pas mieux alors que "valeur" me retourne bien la bonne valeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    valeur = Forms![Gestion comptes]!Modifiable19.Value
    With Liste23
        .RowSourceType = "Field List"
        .RowSource = "SELECT [Sous Catégorie].Nom FROM [Sous Catégorie] WHERE ((([Sous Catégorie].Categorie)= '" & valeur & "'))"
    End With
    J'en conclu que le problème vient bien de ma requête.

    Qu'en dites-vous ?

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Suite et évolution
    Ca y est je connais les bases de l'éditeur de requêtes.
    Voici deux requêtes SQL faite à partir de l’éditeur de requêtes :

    Celle-ci fonctionne "Modifiable2" est dans un formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Sous Catégorie ].Nom
    FROM [Sous Catégorie ]
    WHERE ((([Sous Catégorie ].Categorie)=[Formulaires]![Gestion des Catégories]![Modifiable2]));
    Celle-ci ne fonctionne pas Modifiable19 est dans un controle onglet.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Sous Catégorie].Categorie
    FROM [Sous Catégorie]
    WHERE ((([Sous Catégorie].Categorie)=[Formulaires]![Gestion comptes]![Modifiable19]));
    Message d'erreur : en pièce jointe.

    Le problème est-il insurmontable ou trop simple ?
    Merci encore pour votre aide.
    Images attachées Images attachées  

  5. #5
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    Je ne vois pas exactement le problème.
    Peut-être une piste :
    dans la requête 1, je vois que la table se nomme [Sous Catégorie ]
    alors que dans l'autre, elle se nomme [Sous Catégorie].
    L'espace est-il uniquement du à un pb de copier/coller ?

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Merci mais après vérification le problème ne vient pas de là.
    Je commence à désespérer car je n'ai pas de réponse : recherche cours, tutoriel, forum j'en suis déjà à quelques heures.

    Avez-vous fais l'essai de votre côté ?

    2 Tables : Catégories et Sous Catégorie

    • Une liste modifiable (Catégorie)
    • Une liste (Sous catégorie) mise à jour suivant valeur liste modifiable


    1 Cas : Dans un formulaire
    2 Cas : Dans une page de contrôle onglet

    Dans mon cas : le premier fonctionne mais pas le deuxième.

    Ou dois-je vous mettre en pièce jointe les éléments ?

  7. #7
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    Bizarre, je viens de faire le test. ca marche

    Je vous envoie la base de test que j'ai fait

    PS : Avez-vous pensé à faire un requery après la MAJ de la combo box ?
    Fichiers attachés Fichiers attachés

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Réponse
    Merci "dumas.blr" d'avoir pris le temps de regarder.

    Effectivement votre base fonctionne, lorsque je l'applique à la mienne cela fonctionne mais avec les identifiants des tables et non les valeurs or je n'ai pas trouvé le paramètre pour afficher les valeurs.
    Cependant j'ai passé le contenu de la liste et liste déroulante en VBA, j'ai donc dans un premier temps afficher le contenu de la liste en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Modifiable19_AfterUpdate()
     
    With Liste23
        .RowSourceType = "Table/Query"
        .RowSource = "SELECT [Sous Catégorie].Nom FROM [Sous Catégorie] WHERE ((([Sous Catégorie].Categorie)= [Formulaires]![Gestion comptes]![Modifiable19]));"
        .Requery
    End With
     
    End Sub
    Le formulaire fonctionnait aussi bien la liste déroulante avec les dentifiants (rien de changé) et la liste avec les bonnes valeurs.
    Puis dans un deuxième temps j'ai implenté la liste déroulante en VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Modifiable19_Click()
    With Modifiable19
        .RowSourceType = "Table/Query"
        .RowSource = "SELECT [Catégorie].Nom FROM [Catégorie]"
    End With
    End Sub
    Je retrouve bien les valeurs dans la liste déroulante mais la liste ne se met plus à jour.
    Pourriez-vous m'aider ? Encore une fois ...

  9. #9
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    Je retrouve bien les valeurs dans la liste déroulante mais la liste ne se met plus à jour.
    il suffit de rajouter
    pour forcer le rafraichissement.

    Maintenant, je pense qu'il y a un certain nombre de principes à respecter.
    • pourquoi vouloir affecter dans le code VBA la source de la liste modifiable, alors qu'on peut le faire dans la fenêtre propriété lors de la conception du formulaire ?
    • Cela ne se justifie que si la source change ne cours d'exécution du programme. Or, il ne semble pas que cela soit le cas.
    • Si changement de source il doit y avoir, ce n'est certainement pas lors du clic sur ce contrôle.
    • Je pense qu'il faut que vous compreniez d'abords les règles de fonctionnement des événements associés aux contrôles dans un formulaire. pour cela, je ne saurait vous conseiller de lire attentivement ce tuto très bien fait.


    enfin
    cela fonctionne mais avec les identifiants des tables et non les valeurs or je n'ai pas trouvé le paramètre pour afficher les valeurs.
    pour cela, il faut définir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RowSourceType = "Value List"
    et dans la propiété RowSource de mettre une liste de valeur séparée par des ;.
    Mais là encore, il est plus simple de le définir dès le départ dans le formulaire. Pas besoin de rajouter du code VBA sauf si changement en cours d'exécution

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Bonsoir dumas.blr et merci pour le tutoriel très instructif.

    Cependant je me suis peut être mal exprimé mais je me suis servi de votre exemple pour construire mon formulaire (donc pas en VBA) mais dans les listes à la place des noms j'ai les numeros d'enregistrements or je n'ai pas trouvé le paramètre dans la fenêtre propriété pour afficher les valeurs.

    J'ai quelques bases en VBA excel car cela fait 6 ou 7 ans que je programme, access et pour moi une nouvelle plateforme dont j'apprend tous les jours les fonctionnement de base notamment grace au tutoriel et je souhaitais par exercice implémenter les listes en VBA.

    Lorsque j'indique que la liste ne se met pas à jour;
    est présent voir poste précédent ne l'ai je pas mis au bon endroit ?

    L'initialisation de la liste déroulante n'est elle pas à mettre sur l'événement click ?

    Merci encore pour vos precieux conseils.

  11. #11
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    dans les listes à la place des noms j'ai les numeros d'enregistrements or je n'ai pas trouvé le paramètre dans la fenêtre propriété pour afficher les valeurs
    Essayez de regarder dans les propriétés nbre colonnes et largeurs colonnes (onglet format). Je pense que la réponse est là


    J'ai quelques bases en VBA excel car cela fait 6 ou 7 ans que je programme, Access et pour moi une nouvelle plateforme dont j'apprend tous les jours les fonctionnement de base notamment grâce au tutoriel et je souhaitais par exercice implémenter les listes en VBA.
    Le fonctionnement des formulaires en Acces fonctionne très différemment de ce que vous avez pu trouver sous Excel ou sur les autres applis office. C'est pour cela qu'il est très important de se familiariser aux événements associés aux formulaires et aux états.

    L'initialisation d'une liste déroulante, si la source est correctement renseigné dans la propriété du contrôle (l'équivalent des .rowsource et .rowsourcetype), s'effectuera lors du chargement du formulaire. Pas besoin pour cela de faire de codage VBA, Access s'en chargera tout seul.
    Par contre, dans le cas de listes liées, il faudra coder le rafraîchissement dans l’événement après mise à jour (afterUpdate), car c'est bien le changement de valeur dans la première liste qui doit déclencher la mise à jour. Le clic intervient à un autre moment. Pour vous familiariser avec les événements, regardez cette application téléchargeable.

    Sur les listes liées, j'ai trouvé ce tuto qui pourra vous aider.

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Nouvelles
    Bonsoir,

    J'ai consulté les tutoriels que vous m'avez indiqué et je me suis servi de votre exemple.
    Je n'arrive toujours pas à avoir le résultat escompté.
    J'ai contrôlé et reproduit fidelement votre exemple mais dans ma base cela ne fonctionne pas.
    Je suis désespéré, surtout que cela à l'air très simple.

    Je continue dans mes recherches et vous tiens au courant.

    En vous remerciant.

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut RESOLU
    Bonsoir,

    J'ai trouvé la réponse à ma question qui est :
    1. Lors de la création de la requête l'ordre et le nombre de champ à faire apparaitre est important
    2. Dans les propriétés du contrôle il faut ajuster le nombre de colonne et leur format.


    Merci encore à dumas.blr qui apris le temps de répondre.

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

Discussions similaires

  1. [AC-2010] Inserer une textbox dans un controle onglet
    Par cwouam dans le forum IHM
    Réponses: 2
    Dernier message: 01/05/2012, 23h28
  2. Recupérer valeur des ports COM (rs232) dans excel
    Par Dam1988 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/08/2010, 01h02
  3. controle à onglets dans controle à onglet
    Par FCL31 dans le forum Modélisation
    Réponses: 5
    Dernier message: 28/11/2007, 12h46
  4. Erreur sur click dans un controle Onglet
    Par jetlagger dans le forum IHM
    Réponses: 6
    Dernier message: 17/04/2007, 11h23
  5. Réponses: 4
    Dernier message: 26/05/2006, 20h02

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