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 :

Initialisation d'une liste déroulante à l'aide du SQL


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut Initialisation d'une liste déroulante à l'aide du SQL
    Bonjour à tous,

    Voila mon soucis : j'ai un formulaire "commande" (dédié à remplir la table "commande"), contenant une liste déroulante "numArticle" (valeurs qu'il va chercher dans la table "Article").

    Je voudrai que ce formulaire se remette à zéro à chaque initialisation. Le problème c'est que si la liste est initialisée à "", il ne trouve pas la correspondance dans la table Article, et m'affiche une erreur. Pour résoudre ça, j'ai voulu faire un test vérifiant si la valeur de la liste est "", et si c'est le cas, l'initialiser avec la première valeur de la table Article. J'ai vu dans les propriétés de la liste qu'elle était traduite en requête SQL (pour l'instant "SELECT Article.NumArticle FROM Article"). J'imagine donc que c'est ici qu'il faut faire des modifications pour faire apparaitre le premier numéro de la table.

    J'ai songé à faire un "if numArticle="" then (...) ", mais je me suis rendue compte que les if portaient sur la valeur dans la table, et non dans la liste.

    Est-ce que quelqu'un saurait comment faire ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Petite mise à jour :

    En attendant de pouvoir résoudre mon problème, j'ai triché en ajoutant à la liste de mes articles une valeur "sélectionner article" (je ne pouvais pas mettre de chaine vide puisque c'est une clé primaire), avec laquelle j'ai initialisé la liste (bon ok, ok, mais au moins ça n'indique plus d'erreur ^^)

    Le problème, maintenant, c'est que le formulaire enregistre tout seul une ligne à ma table commande, avec la valeur "sélectionner article".
    Il va donc falloir que je trouve un moyen de supprimer cet enregistrement, en même temps que je valide les autres données.

    J'ai vu sur le net qu'on pouvait également intégrer des requêtes SQL à l'intérieur des codes des boutons, à l'aide d'un "doCmd.RunSQL". J'ai donc essayé cette méthode, avec ce code :

    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 db As DAO.Database
    Dim rst As DAO.Recordset
    Dim req As String
     
    Set db = CurrentDb()
    req = "delete * from commande where NumArticle = 'sélectionner article' "
    Set rst = db.OpenRecordset(req)
     
    DoCmd.RunSQL (req)
     
    rst.Close
    Set rst = Nothing
    Set db = Nothing


    Quand je clique sur le bouton, Access ouvre une fenêtre sur laquelle il est écrit : "opération non valide".



    Ce problème vous inspire-t-il plus que l'autre ?
    Dans tous les cas (même si je trouve comment insérer la première valeur de ma table Article dans la liste, comme je le demandais au premier post), j'aurai de toute façon besoin de résoudre ce problème... la seule différence sera que le champ NumArticle n'aura plus la valeur "sélectionner article", mais il faudra de toute façon le supprimer...


    Si quelqu'un peut m'aider sur l'un de ces deux problèmes...

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    Bonjour,

    tu tentes de lancer une requête "Action", à l'inverse d'une requête "Selection".

    Regarde plutôt
    ou
    d'autre part, l'usage de paramètre se fait plutôt de la façon suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    delete * from commande where NumArticle = [sélectionner article]

    qui t'ouvrira une fenêtre à compléter

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Je ne suis pas sûre d'avoir compris :
    il fallait que je remplace les quotes par des crochets (même si c'est la valeur, et non pas le nom du champ ?), et que je remplace mon doCmd par un Execute, c'est bien ça ?

    J'ai fait ces deux changements, et le problème est le même. "Opération non valide".

    Peut-être que ça vient d'ailleurs ?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    Peut-on voir le code que tu as après ces modifications stp ?

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Voui m'sieur :

    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 db As DAO.Database
    Dim rst3 As DAO.Recordset
    Dim req As String
     
        Set db = CurrentDb()
        req = "delete * from commande where NumArticle = [selectionner article]"
        Set rst3 = db.OpenRecordset(req)
     
        CurrentDb.Execute (req)
     
        rst3.Close
        Set rst3 = Nothing
        Set db = Nothing

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    enlève les lignes avec ton rst3 elles ne servent à rien


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim db As DAO.Database
     
    Dim req As String
     
        Set db = CurrentDb()
        req = "delete * from commande where NumArticle = [selectionner article]"
     
        CurrentDb.Execute (req)
     
        Set db = Nothing
    devraient suffire

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    Le bon côté, c'est que je n'ai plus cette erreur

    ... le mauvais, c'est que ça ne fonctionne pas



    Mais à bien y réfléchir, peut-être que ça ne vient pas de ton code... S'il s'appelait "rst3", c'est parce qu'il y a deux autres recordSet dans ce code qui me servent à enregistrer des données. Or, j'ai une erreur sur ces enregistrement (un problème de doublons non gérés apparemment). Peut-être que le programme ne va même pas jusque tes lignes ?

    Pourtant, l'erreur porte sur le premier "rst", et l'enregistrement fait par le "rst2" est bien effectué, donc je pense que le code est quand même lu en intégralité..


    Bref, mes lignes "selectionner article" sont toujours là... =/


    Merci de ta patience

  9. #9
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 642
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 642
    Points : 34 350
    Points
    34 350
    Par défaut
    ah, mais attends,
    en relisant tes premiers posts, je me suis rendu compte que tu mettais vraiment "selectionner article" dans ton champs...

    on en revient donc à la syntaxe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    req = "delete * from commande where NumArticle = 'selectionner article'"

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 84
    Points : 35
    Points
    35
    Par défaut
    toujours pas =/

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2013, 18h26
  2. [AC-2007] Initialisation d'une liste déroulante
    Par Prettyletter dans le forum IHM
    Réponses: 5
    Dernier message: 29/04/2011, 20h21
  3. Comment ré-initialiser une liste déroulante ?
    Par jeje22 dans le forum Access
    Réponses: 5
    Dernier message: 03/06/2009, 21h32
  4. Réponses: 6
    Dernier message: 01/02/2007, 20h58
  5. Réponses: 2
    Dernier message: 07/08/2006, 11h51

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