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

IHM Discussion :

Passer paramètre formulaire


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut Passer paramètre formulaire
    Bonjour à tous,

    J'ai suivi à la lettre 2 tutos afin de passer un paramètre dans un formulaire qui m'ouvre une requête en fonction du numéro de série entré :

    http://warin.developpez.com/access/requeteparametre/

    N'arrivant pas à obtenir un résultat (la requête ne contient aucune donnée) j'ai décidé de suivre un tuto trouvé sur un autre site :

    Voici le code SQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie
    HAVING (((Production.Serie)=[Saisir le numéro de série]));

    Cependant malgré cela ma requête est vide.

    Je ne comprends plus rien. Pourtant le format est en texte et les données saisie sont de type "14/0001"

    Si vous avez des conseils car je sèche...


    Merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Bonjour,

    Sans avoir les données difficile de trouver donc je te suggère les étapes suivantes :

    Faire une requête de test qui demande simplement les données sans sélection.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie

    Si tu ad des données, modifier la requête de test pour introduire un critère de sélection fixe

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie
    HAVING (((Production.Serie)="14/0001"));

    Voit si cela donne un résultat.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie
    HAVING (((Production.Serie)="""" & [Saisir le numéro de série] & """"));

    Résultat ?

    A+

  3. #3
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci pour ta réponse!

    J'ai testé tes 3 codes (il manquait la mention "FROM" que j'ai rajouté). Les 2 premiers me renvoient bien des valeurs mais pas le dernier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie
    HAVING (((Production.Serie)="""" & [Saisir le numéro de série] & """"));
    Du coup je ne comprends vraiment pas d'ou ça peut venir...

    Est-il possible que ce problème vienne du fait que ma table source est un lien ODBC?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Probablement pas.

    Je pencherai plus pour le fait que Access ne 'comprend' pas ton paramètre comme on s'y attend.

    Essaye cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite, [Saisir le numéro de série] as TestParam
    GROUP BY Production.Serie
    HAVING (((Production.Serie)="14/0001"))
    Cela devrait te permettre de voir ce que Access voit quand tu lui passe ton paramètre.

    A+

  5. #5
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Je viens de comprendre! ne numéro de série est suivi de 3 espaces! Comment faire pour éviter cela?

  6. #6
    rnd
    rnd est déconnecté
    Membre habitué Avatar de rnd
    Homme Profil pro
    Prestataire indépendant
    Inscrit en
    Mars 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Prestataire indépendant

    Informations forums :
    Inscription : Mars 2004
    Messages : 142
    Points : 188
    Points
    188
    Par défaut
    Bonjour,

    Est ce que c'est uniquement ce numéro de série ou c'est tous qu'il sont suivi d'espaces? Si oui, est ce que le nombre d'espaces et fixe ou variables.
    Qu'elle la nature de ta tables ODBC?

    Cdt, Renaud.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Tu peux aussi essayer cela, le trim() va retirer les espaces avant et après.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie
    HAVING (((Production.Serie)=trim([Saisir le numéro de série])));
    ou cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT trim(Production.Serie) as Serie, Sum(Production.Quantite) AS SumOfQuantite
    GROUP BY Production.Serie
    HAVING ((trim(Production.Serie)=trim([Saisir le numéro de série])));
    A+

  8. #8
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Bonjour Renaud,

    Non le numéro de série peut avoir soit 2 soit 3 espaces avec le dernier numéro. Je pense que le champs est fait pour contenir 10 caractères hors mes numéros de séries sont composés soit de 7 soit de 8 caractères.

    Concernant le type de lien il me semble que c'est une base oracle (dont je n'ai pas trop le droit de toucher...)

  9. #9
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci marot_r ça fonctionne! Comment expliquer qu'il faut mettre 3 espaces dans le textbox alors qu'en passant directement le paramètre dans la requête cela fonctionne?

    De plus comment faire pour passer ce paramètre via un formulaire ?

    Encore merci pour ton aide précieuse!

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Citation Envoyé par John Parker Voir le message
    Merci marot_r ça fonctionne! Comment expliquer qu'il faut mettre 3 espaces dans le textbox alors qu'en passant directement le paramètre dans la requête cela fonctionne?
    Désolé aucune idée.

    De plus comment faire pour passer ce paramètre via un formulaire ?
    Remplacer [Saisir le numéro de série] par [Forms]![NomTonForm]![NomTonChampDansForm]. Si le formulaire est ouvert, Access récupère la valeur du champ.


    Note : Access va remplacer Forms[/CODE] par [CODE]Formulaires mais c'est la même chose et quand tu es dans du code VBA il faut utiliser Forms.

    Note bis : le coup du [Forms]![NomTonForm]![NomTonChampDansForm] marche aussi dans un formulaire et dans un rapport. Dans ce cas là mettre =[Forms]![NomTonForm]![NomTonChampDansForm]

    A+

  11. #11
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci l'ami! Je viens de tester dans un formulaire ouvert
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [Forms]![Controle]![lot]
    en tapant les 3 espaces après le numéro de série puis j'ouvre ma requête "Commande" et ça ne me renvoie à nouveau rien...

    C'est à ni rien comprendre!

    Voici un exemple de ma base:
    Testparametre.zip

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    Bonjour,

    Pourrais-tu reposter le SQL de ta requête ?

    A+

  13. #13
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Voici le code SQL. J'ai mis un exemple de ma base dans le message juste au dessus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    FROM Production
    GROUP BY Production.Serie
    HAVING (((Production.Serie)=[Forms]![Controle]![lot]));

  14. #14
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 370
    Points : 23 844
    Points
    23 844
    Par défaut
    OK essaye avec cela.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Production.Serie, Sum(Production.Quantite) AS SumOfQuantite
    FROM Production
    GROUP BY Production.Serie
    HAVING (((Production.Serie)=trim([Forms]![Controle]![lot])));

    A+

  15. #15
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Je viens de tester dans mon exemple en pièce jointe et ça ne marche toujours pas...
    Fichiers attachés Fichiers attachés

  16. #16
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour tout le monde.

    Je ne comprends pas pourquoi tu veux passer par une requête paramétrée. A lire les posts précédents et la demande de départ, et si j'ai bien compris le but recherché, le plus simple ne serait-il pas de choisir le lot dans une liste déroulante, et d'afficher dans le formulaire le ou les enregistrements correspondant au choix fait dans la liste déroulante.

    C'est ce que je me suis permis de faire dans ta base test. Si cela peut t'aider...

    Cordialement
    Fichiers attachés Fichiers attachés

  17. #17
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci pour ton aide, ça fonctionne bien avec une liste déroulante. Le problème est que ma base contient des milliers de numéros de séries. Les retrouver dans une liste déroulante devient compliqué par conséquent...

  18. #18
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.

    J'ai des bases avec des milliers d'enregistrements de noms. Dans une liste déroulante, avec l'option "Limiter à liste" sur Oui, triée dans l'ordre croissant, c'est très facile de les retrouver puisqu'il suffit de taper le premier caractère, puis le suivant, et ainsi de suite : on arrive facilement et rapidement à celui recherché, sans erreur possible. Mais bon, c'est juste une suggestion...

    Cordialement

Discussions similaires

  1. [AC-2010] Passer paramètre à une requête dans un formulaire
    Par John Parker dans le forum IHM
    Réponses: 1
    Dernier message: 28/04/2015, 17h34
  2. Passer un formulaire en paramêtre
    Par tribaleur dans le forum VBA Access
    Réponses: 5
    Dernier message: 21/02/2008, 11h41
  3. Passer paramètre lors d'un filtrage sur formulaire
    Par niavlys77 dans le forum IHM
    Réponses: 2
    Dernier message: 06/12/2006, 22h02
  4. Passer paramètres d'un formulaire sur plusieurs JSP
    Par itr dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 02/05/2006, 18h42
  5. [AS2] passer paramètre à un constructeur par attachMovie()
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 06/08/2005, 03h32

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