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 :

[Formulaire]Problème de gestion requête/formulaire


Sujet :

IHM

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut [Formulaire]Problème de gestion requête/formulaire
    Bonjour!

    J'ai crée une base de donnée avec une table "armoire_electrique" stockant un certain nombre d'armoires éléctriques qui ont chacune des surfaces différentes et qui ont pour caractéristique principale leur "dimension" (clef primaire de la table(type texte) ) et une table "materiel_electrique" stockant différents types de matériel éléctrique, chaque matériel possédant une surface précise.

    Dans mon pied de formulaire principal(crée à partir de la table "matériel éléctrique", je calcule dans une zone de texte une:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [surface_totale]=somme([surface_unitaire]*[quantité])
    Ensuite, comme il faut prévoir une marge par rapport à cette surface qui doit être saisie par l'utilisateur, j'ai créé une autre zone de texte intitulée [coef_marge] et enfin une dernière zone de texte intitulée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [surface_marge]=[coef_marge]*somme([surface_unitaire]*[quantité])
    Au niveau du formulaire principal, il n'y a aucun soucis, tout se passe bien..
    Ensuite, je lance une requête sur la table "armoire" qui me renvoie l'armoire éléctrique dont la surface est immédiatement supérieure à cette [surface_marge].
    Dès lors, je dispose de trois problèmes:
    1-D'une part, access me demande d'entrer cette [surface_marge] car il ne reconnait pas cette variable.
    2-D'autre part, je souhaiterai afficher le résultat de cette requête sur mon formulaire principal et non sur une fenêtre à part.
    3-Enfin, lorsque j'imprime le formulaire, bizarement, [coef_marge] et [surface_marge] n'apparaissent pas et sont remplacés par un espace blanc

    Pour ce qui est du premier problème, j'ai rajouté un champ [surface_marge] dans la table "armoire" mais je n'arrive pas à créer le lien entre [surface_marge] qui a été calculée en pied de formulaire et [surface_marge] que j'ai crée dans la table "armoire": j'ai donc un problème de stockage de donnée dans une table...
    Sinon, en ce qui concerne les autres problèmes, je ne vois vraiment pas du tout comment faire... alors je vous en prie aidez moi

    et merci beaucoup de votre attention

    Cordialement,

    Kariiim

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut stockage dans une table
    Re
    toujours en ce qui concerne le problème du stockage dans une table, je sais que cela s'effectue à l'aide d'une requête "ajout" mais commen est-il possible de stocker dans ma table la valeur de [coeff_marge] qui est une valeur saisie par l'utilisateur dans le pied de formulaire principal???

    Merci pour votre aide...

  3. #3
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par kariiim
    Dès lors, je dispose de trois problèmes:
    1-D'une part, access me demande d'entrer cette [surface_marge] car il ne reconnait pas cette variable.
    2-D'autre part, je souhaiterai afficher le résultat de cette requête sur mon formulaire principal et non sur une fenêtre à part.
    3-Enfin, lorsque j'imprime le formulaire, bizarement, [coef_marge] et [surface_marge] n'apparaissent pas et sont remplacés par un espace blanc
    1- A priori tu ne dois pas créer de champ [surface_marge] dans ta table armoire. En effet, tu dois plutôt reprendre directement dans ta requête le même calcul que tu fais dans ton pied de formulaire et t'en servir comme critère de comparaison avec le champ [surface_unitaire] présent dans ta requête. Pour cela tu peux par exemple faire directement référence à ta zone de texte intitulée
    [surface_marge].
    Si jamais tu devais stocker pour chaque armoire les infos relatives à la surface avec coéficient appliqué (cas où chaque table aurait sa valeur de coef de façon permanente), c'est la valeur du coéficient que tu dois stocker. Dans ce cas, tu n'aurais qu'à faire référence à ce champ pour calculer la surface après coef, que ce soit dans le formulaire ou dans la requête ou n'importe où ailleurs.

    2- Il ne devrait pas y avoir de problème particulier pour réaliser cela dès lors que tu procèdes comme indiqué dans le point 1. Pour afficher les données tu peux utiliser un sous formulaire. Dans ce cas, tu n'as même pas besoin d'utiliser la valeur du contrôle [surface_marge] comme critère dans la requête car tu peux le spécifier directement en tant que filtre de ton sous formulaire.
    Bien entendu, il faudra faire un Me.Requery sur sur le sous formulaire après chaque mise à jour du contrôle [coef_marge]. Si à l'ouverture de ton formulaire tu rencontres un souci pour le calcul de la somme [surface_totale] parce que la source du form principal (la table matériel éléctrique) ne contient aucun enregistrement, alors utilise directement la fonction de regroupement de domaine DSum() pour calculer ta somme. Ainsi ton contrôle [surface_totale] sera indépendant et tu pourras toujours faire ton calcul et te servir du résultat de ce calcul comme critère de ta requête ou du filtre de ton sous form...

    3- a mon avis ceci est dû au fait que les champs ont une valeur null.
    (\ _ /)
    (='.'=)
    (")-(")

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut re
    Le problème est que la valeur de [coeff_marge] doit être saisie par l'utilisateur dans le formulaire principal, [coeff_marge] ne correspond pas à un champ présent dans la table "armoire", ce qui fait que la valeur de [coeff_marge] n'est pas prise en compte pour le le calcul de [surface_marge]... :s

  5. #5
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Je sais bien ! Mais rien ne t'empêche si tu ne veux pas créer de champ [coeff_marge] dans ta table, de faire référence au contrôle du pied de form !
    (\ _ /)
    (='.'=)
    (")-(")

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut Re
    Quand je fais référence au contrôle du pied de form et j'exécute la recquête suivante:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [coeff_marge]*(Sum([surface_unitaire]*[quantité])) AS surface_marge
    FROM [Matériel éléctrique];

    access me demande de saisir le coeff marge et quand je saisis par exemple la valeur 1.3,j il me renvoie une erreur..
    je ne comprends pas :s

    encore merci pour ton aide

  7. #7
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par kariiim
    access me demande de saisir le coeff marge et quand je saisis par exemple la valeur 1.3,j il me renvoie une erreur..
    Tu dois utiliser la virgule et non le point comme séparteur de décimales.

    Dans ta requête, tu dois indiquer la référence complète à ton contrôle[coeff_marge] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT forms![NomDuFormPrincipal]![coeff_marge]*(Sum([surface_unitaire]*[quantité])) AS surface_marge
    FROM [Matériel éléctrique];
    Et le form doit être ouvert au moment de l'éxécution de la requête.
    (\ _ /)
    (='.'=)
    (")-(")

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    Lors de l'execution de la recquête il me renvoie toujours une erreur et en plus dans le formulaire principal, comme j'ai supprimé les champs coeff_marge et surface_marge de la table "armoire", access me renvoie "#Nom ?" dans les champs du formulaire qui ont pour source contrôle [coeff_marge] et [surface_marge]. :s :s :s :s
    ?????

  9. #9
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par kariiim
    dans le formulaire principal, comme j'ai supprimé les champs coeff_marge et surface_marge de la table "armoire", access me renvoie "#Nom ?" dans les champs du formulaire qui ont pour source contrôle [coeff_marge] et [surface_marge].
    Tu dois supprimer la référence aux champ de table dans tes contrôles. C'est la propriété SourceContrôle.
    Pour le contrôle [coeff_marge], tu laisses la propriété SourceContrôle vide. Pour le contrôle surface_marge, tu peux mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =nz([coef_marge],0)*somme([surface_unitaire]*[quantité]
    Citation Envoyé par kariiim
    Lors de l'execution de la recquête il me renvoie toujours une erreur
    C'est normal car ton contrôle [coeff_marge] dans le form est en erreur. Règle le problème comme indiqué ci dessus.
    (\ _ /)
    (='.'=)
    (")-(")

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    Pour le contrôle surface_marge, lorsque je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =nz([coef_marge],0)*somme([surface_unitaire]*[quantité])
    access me renvoie une erreur de syntaxe... ??????
    que fait la fonction "nz"?
    [coef_marge] ne correspond à rien vu que je l'ai supprimé de la table..
    JE comprends plus trop :s

  11. #11
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par kariiim
    que fait la fonction "nz"?


    Citation Envoyé par kariiim
    [coef_marge] ne correspond à rien vu que je l'ai supprimé de la table..
    Dans ton calcul, par coef_marge, j'entendais le nom du contrôle dans lequel on saisit le coef.
    (\ _ /)
    (='.'=)
    (")-(")

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    Précedement tu m'as dis:
    "Pour le contrôle [coeff_marge], tu laisses la propriété SourceContrôle vide"

    et ensuite dans ton dernier message tu m'as dis:

    "Dans ton calcul, par coef_marge, j'entendais le nom du contrôle dans lequel on saisit le coef"

    C'est pourquoi je ne savais pas s'il fallait le laisser vide ou pas...

    AInsi, j'ai appelé le controle dans lequel on saisit le coef : [coeff_marge]
    et ensuite pour le contrôle surface_marge, j'ai mis le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =nz([coeff_marge],0)*somme([surface_unitaire]*[quantité])
    et pour ce code ,il me renvoie une erreur de syntaxe...

    que faire???

    merci encore

  13. #13
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Nomme ton contrôle coeff_marge et non [coeff_marge].

    Ensuite utilise cett eexpression :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =nz([coeff_marge];0)*somme([surface_unitaire]*[quantité])
    (\ _ /)
    (='.'=)
    (")-(")

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    quand je nomme mon controle coeff_marge, access me renvoie #Nom sur le formulaire principal
    et ensuite lorsque j'utilise cette eexpression :
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =nz([coeff_marge];0)*somme([surface_unitaire]*[quantité])
    voici le message d'erreur qui s'affiche:

    L'objet ne contient pas d'objet d'automatisation 'coeff_marge'.
    Vous avez essayé d'éxécuter une procédure Visual Basic pour définir une propriété ou une méthode pour un objet. Cependant, le composant ne rend pas la propriété ou méthode disponible pour les opérations d'automatisation.
    Consultez la documentation du composant pour plus d'information sur les propriétés et méthodes disponibles pour les opérations d'automatisation.


    Je ne comprends vraiment plus rien :s :s
    désolé de t'embêter autant mais avant de poster tous ces messages, je me suis vraiment cassé la tête à ce sujet...

    encore une fois merci pour ton attention et ton aide...

  15. #15
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Assure-toi de ne pas confondre le nom du contrôle et sa porpriété Source Contrôle (ControlSource).

    Tu nommes ton contrôle comme tu veux (mais pas de crochets quand même !), et comme source de données de ton contrôle, tu ne mets rien.
    (\ _ /)
    (='.'=)
    (")-(")

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    merci beaucoup!
    le problème numero 3 est résolu!!!
    je vais désormais m'occuper des 2autres et mettrais le signe résolu dès que j'en serai venu à bout, c'est à dire demain je l'espère!!!

    Encore merci beaucoup pour ton aide précieuse!!!

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    Citation Envoyé par FRED.G
    1- A priori tu ne dois pas créer de champ [surface_marge] dans ta table armoire. En effet, tu dois plutôt reprendre directement dans ta requête le même calcul que tu fais dans ton pied de formulaire et t'en servir comme critère de comparaison avec le champ [surface_unitaire] présent dans ta requête. Pour cela tu peux par exemple faire directement référence à ta zone de texte intitulée
    [surface_marge].
    Si jamais tu devais stocker pour chaque armoire les infos relatives à la surface avec coéficient appliqué (cas où chaque table aurait sa valeur de coef de façon permanente), c'est la valeur du coéficient que tu dois stocker. Dans ce cas, tu n'aurais qu'à faire référence à ce champ pour calculer la surface après coef, que ce soit dans le formulaire ou dans la requête ou n'importe où ailleurs.

    Ca fait plus de deux heures que je me casse la tête sur le problème numéro 1 que j'ai exposé hier, j'ai repris le même calcul que j'effectue en pied de formulaire dans une requête intitulée Calcul surface_marge. Mais pourquoi m'en servir comme critère de comparaison avec le champ [surface_unitaire] ? Ce n'est pas plutôt avec [surface_armoire] qu'il faudrait faire la comparaison?
    Ainsi je ne sais pas comment faire pour que lorsque j'exécute la requête "select_armoire" access ne me demande plus d'entrer la [surface_marge]! J'ai pensé pensé qu'il fallait éxécuter la requête "select_armoire" sur le résultat de la requête "Calcul surface_marge" mais apparement je ne fais fais pas les bons liens et access me renvoie toujours une erreur!!

    Je ne sais vraiment plus comment m'y prendre...

    merci de bien vouloir m'éclairer..

    Cordialement,

    Kariiim

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut
    Au fait, je ne dois pas stocker pour chaque armoire les infos relatives à la surface avec coéficient appliqué car chaque table n'a pas sa valeur de coef de façon permanente.

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut presque résolu...
    Ouuf! j'ai résolu le problème numéro 1!!!
    En fait, il fallait juste ajouter dans la requête "select_armoire" la requête "calcul surface_marge" sans créer aucun lien entre la table "armoire" et la requête "calcul surface_marge", cette dernière permettant uniquement d'identifier la variable [surface_marge] de telle sorte que access ne la redemande plus lors de l'exécution de la requête "select_armoire".

    Il ne me reste désormais plus que le problème 2 à résoudre, en l'occurence afficher le résultat de la requête "select_armoire" dans le formulaire principal en utilisant un sous-formulaire... mais j'avouerai ne pas avoir tout compris dans ce qu'a écrit FRED.G...

    Citation Envoyé par FRED.G
    2- Il ne devrait pas y avoir de problème particulier pour réaliser cela dès lors que tu procèdes comme indiqué dans le point 1. Pour afficher les données tu peux utiliser un sous formulaire. Dans ce cas, tu n'as même pas besoin d'utiliser la valeur du contrôle [surface_marge] comme critère dans la requête car tu peux le spécifier directement en tant que filtre de ton sous formulaire.
    Bien entendu, il faudra faire un Me.Requery sur sur le sous formulaire après chaque mise à jour du contrôle [coef_marge]. Si à l'ouverture de ton formulaire tu rencontres un souci pour le calcul de la somme [surface_totale] parce que la source du form principal (la table matériel éléctrique) ne contient aucun enregistrement, alors utilise directement la fonction de regroupement de domaine DSum() pour calculer ta somme. Ainsi ton contrôle [surface_totale] sera indépendant et tu pourras toujours faire ton calcul et te servir du résultat de ce calcul comme critère de ta requête ou du filtre de ton sous form...
    Quelques éclaircissements sur le Me.Requery seraient bienvenus!!

    Encore merci beaucoup pour tout!!!

  20. #20
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par kariiim
    Ouuf! j'ai résolu le problème numéro 1!!!
    En fait, il fallait juste ajouter dans la requête "select_armoire" la requête "calcul surface_marge" sans créer aucun lien entre la table "armoire" et la requête "calcul surface_marge", cette dernière permettant uniquement d'identifier la variable [surface_marge] de telle sorte que access ne la redemande plus lors de l'exécution de la requête "select_armoire".
    Il se peut tout à fait que j'ai mal compris tes besoins précis et confondu [surface_unitaire] avec [surface_armoire] dans mes explications. Normalement tu devrais être capable de rectifier par toi-même. J'ai un doute sur ta requête. Montre-nous donc son sql.
    Et au passage, si tu peux réexpliquer une fois clairement ce que tu veux exatement, ça pourra pas faire de mal.

    Après on pourra régler le pb 2 facilement.
    (\ _ /)
    (='.'=)
    (")-(")

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/06/2015, 22h04
  2. Réponses: 11
    Dernier message: 02/05/2007, 08h56
  3. Réponses: 6
    Dernier message: 19/04/2007, 15h03
  4. [RegEx] [Formulaire]= problème d'envoi de formulaire avec pièces jointes
    Par lyamarin dans le forum Langage
    Réponses: 22
    Dernier message: 03/04/2007, 13h29
  5. Réponses: 7
    Dernier message: 28/03/2007, 17h26

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