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

Access Discussion :

Listes imbriquées qui ne marchent pas


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut Listes imbriquées qui ne marchent pas
    Bonjour,

    Tout d'abord je tiens à préciser que si je poste ici c'est que je suis déjà allé voir la faq et que j'ai déjà fait des recherches sur le forum.

    Je suis un noob en access/VBA et je suis en train de fabriquer un projet access qui s'appuie sur une base de données sql server 2000. Mon problème est le suivant:

    J'ai une liste déroulante SltBase basée sur une table Bases, chaque base contient plusieurs barèmes et dans ma deuxième liste, SltBar j'aimerais afficher les barèmes qui font partie de la base sélectionnée dans la première liste.
    Ma requête pour la première liste est:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "Bases"."base_id", "Bases"."base_val" FROM "Bases" ORDER BY "base_val";
    Ma requête pour la seconde liste est:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT bar_num, bar_nom FROM Baremes WHERE (bar_base = '[Forms]![Recherche]![SltBase]')
    Mon formulaire s'appelant "Recherche". Et j'ai mis un Me!SltBar.Requery sur la proprièté "Avant MAJ" de SltBase

    Normalement ça devrait marcher mais non. En rajoutant un sous formulaire basé sur la requete de ma deuxième liste SltBar, je me suis rendu compte qu'elle ne renvoyait rien. Pourtant si je fais un:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT bar_num, bar_nom FROM Baremes WHERE bar_base='une_valeur_valide';
    ça renvoie quelquechose.

    J'ai déjà essayé de refaire un fichier adp pour voir si ca venait de mon fichier mais ça ne marche toujours pas.

    Avez vous une idée sur l'origine du problème?
    Merci par avance pour vos propositions

    Edit: Je travaille avec Access 2003 (si ça peut vous aider)

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Pourquoi exécutes-tu une action sur avant mise à jour ?

    A mon sens, c'est sur après mise à jour qu'il faut exécuter ton action. Avant le contrôle est vide.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse.
    J'ai mis le requery sur "Avant MAJ" parce que c'est le dernier que j'ai essayé. Sinon, "Avant Maj", "Après MAJ", "Si modification", "Sur changement" ne marchent pas. A priori, le problème vient de la deuxième requête puisqu'elle ne renvoie rien, je doute sur la syntaxe de mon where... Si je tape

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = '[Forms]![Recherche]![SltBase]')
    est ce que ça ne recherche pas le champ où bar_base vaut: [Forms]![Recherche]![SltBase] au lieu de chercher le champ où bar_base vaut la valeur contenue dans le controle SltBase ?

  4. #4
    Membre averti
    Inscrit en
    Avril 2006
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 316
    Points : 367
    Points
    367
    Par défaut
    Bonjour,

    Regarde si [Forms]![Recherche]![SltBase] contient bien une valeur.

    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Excuse ma noobitude mais comment faut faire?

  6. #6
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Dan ston code, tu peux toujours faire un ou encore un pour afficher la valeur contenue dans ton contrôle pendant l'exécution de ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim montest a
    MsgBox [Forms]![Recherche]![SltBase]
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  7. #7
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Dan ston code, tu peux toujours faire un ou encore un pour afficher la valeur contenue dans ton contrôle pendant l'exécution de ton code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    MsgBox [Forms]![Recherche]![SltBase]
    Debug.print [Forms]![Recherche]![SltBase]
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Merci beaucoup pour toutes ces précisions.
    quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox [Forms]![Recherche]![SltBase]
    ça renvoie les bonnes valeurs, j'en reviens donc à ma question de tout à l'heure, à savoir, si je tape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = '[Forms]![Recherche]![SltBase]')
    est ce que ça ne recherche pas le champ où bar_base vaut: [Forms]![Recherche]![SltBase] au lieu de chercher le champ où bar_base vaut la valeur contenue dans le controle SltBase ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = '[Forms]![Recherche]![SltBase]')
    Avec cette syntaxe, tu compares bar_base avec '[Forms]![Recherche]![SltBase]' en temps que chaine de caractère, si tu veux tester la valeur, tu dois enlever les quotes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = [Forms]![Recherche]![SltBase])

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT bar_num, bar_nom FROM Baremes WHERE (bar_base = '[Forms]![Recherche]![SltBase]')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT bar_num, bar_nom FROM Baremes WHERE (bar_base = " & [Forms]![Recherche]![SltBase]& ")"
    Essaie comme ça.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Merci, j'ai essayé ta solution malheureusement ça ne marche pas ça m'affiche une erreur: '&[Forms]![Recherche]![SltBase]&': nom de colonne incorrect

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    les " ' " représentent quoi dans ton message.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Oleff
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = '[Forms]![Recherche]![SltBase]')
    Avec cette syntaxe, tu compares bar_base avec '[Forms]![Recherche]![SltBase]' en temps que chaine de caractère, si tu veux tester la valeur, tu dois enlever les quotes.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = [Forms]![Recherche]![SltBase])
    Merci pour ta réponse.

    Malheureusement, cette syntaxe renvoie l'erreur suivante(que je ne comprends pas non plus...):

    Instruction sql incorrecte. Vérifiez le filtre du serveur sur la source de l'enregistrement du formulaire

  14. #14
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT bar_num, bar_nom FROM Baremes WHERE (bar_base = " & [Forms]![Recherche]![SltBase]& ");"
    Essaie avec un ; en plus
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Désolé ça ne marche pas avec un ; en plus.

    Cependant, je viens d'essayer de faire la meme manip avec un fichier mdb, donc avec une base access et ca marche parfaitement avec la syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE (bar_base = [Forms]![Recherche]![SltBase])
    Le problème serait donc à cause de la base sql server, car quand j'utilise cette syntaxe j'obtiens l'erreur:
    Instruction sql incorrecte. Vérifiez le filtre du serveur sur la source de l'enregistrement du formulaire

    Avec le texte d'aide associé:

    Access peut effectuer une évaluation des données ou des instructions SQL fournies par des références locales, mais pas des données fournies par une fonction dans Visual Basic pour Applications (VBA). Ce message d'erreur s'affiche lorsque l'instruction SQL contient des erreurs de syntaxe ou une référence à une variable fournie par l'utilisateur pendant l'exécution et que l'utilisateur fournit une réponse incorrecte.

    Pour éviter que cette erreur ne se reproduise, spécifiez, comme source d'enregistrement du formulaire, une instruction SQL acceptant les paramètres.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM Products
     
    WHERE <fieldname> = <function_name - ie:@MyFunction()>
    Vous devez également définir la propriété ParamètresSaisie du formulaire de manière à référencer la fonction fournissant la variable (dans cet exemple, MaFonction()).

    Avant que la requête n'envoie les données fournies par l'utilisateur à l'instruction SQL, vérifiez que la variable a le bon format et la bonne syntaxe et qu'elle ne dépasse pas la longueur de l'instruction SQL.

    Quelqu'un peut m'expliquer comment je dois procéder car mes compétences en sql restent très basiques

  16. #16
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Essaie de transférer la valeur de ton contrôle dans une variable et de mettre la variable dans la requête.

    Après, j'ai plus rien en magasin.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 58
    Points : 37
    Points
    37
    Par défaut
    Merci pour ta réponse, j'ai trouvé la solution:

    Il faut commencer par créer une procédure stockée dans sql server de la facon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE PROCEDURE [list2]
        @param char(3)
    AS
    BEGIN
        SET NOCOUNT ON;
        SELECT bar_num, bar_nom FROM Baremes WHERE bar_base =@param
     
    END
    GO
    Pour la 2e liste il faut modifier les propriétés suivantes:

    Origine Source : Table/Vue/Proc. Stockée
    Contenu : -> laissez vide

    Pour la 1e liste il faut associer à l'événement APRES MAJ le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me!SltBar.RowSource = "EXEC list2 " & Me!SltBase.Value
    Me!SltBar.Requery
    avec : (SltBase=1e liste et SltBar=2e liste)

    et le tour est joué, mais bon fallait le savoir.

    Merci à tous pour votre aide précieuse et pour le temps que vous m'avez consacré.

    Edit:

    Sinon en fait ya beaucoup plus simple (sans utiliser de procédures stockées)

    Pour la 1e liste il faut associer à l'événement APRES MAJ le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me!SltBar.RowSource = "SELECT bar_num, bar_nom FROM Baremes WHERE bar_base ='" & Me!SltBase.Value & "';"
    Me!SltBar.Requery

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

Discussions similaires

  1. [AJAX] listes liés qui ne marchent pas sous Mozilla
    Par guigui5931 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 23/02/2009, 15h54
  2. [XSLT] Boucles imbriquées qui ne marchent pas :s
    Par Fatjo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 11/10/2007, 10h35
  3. [Système] bbcode imbriqué qui ne marche pas
    Par jexl dans le forum Langage
    Réponses: 11
    Dernier message: 22/06/2007, 12h21
  4. Liste déroulante qui ne fonctionne pas -_-'
    Par Shekhmet dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2006, 12h12
  5. Réponses: 4
    Dernier message: 01/10/2005, 13h52

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