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] Feuille et sous feuille de données - Somme de champ calculé


Sujet :

IHM

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [Formulaire] Feuille et sous feuille de données - Somme de champ calculé
    Bonjour,
    je vais essayé d'être clair...

    J'ai un formulaire principal dans lequel j'ai un sous formulaire (appelons le frmSF1) en mode feuille de données. Dans frmSF1, j'ai un autre sous formulaire (frmSF2) lui aussi en mode feuile de données.

    Au final à l'affichage, j'obtiens une feuille de données (frmSF1) contenant des sous feuilles de données (frmSF2). Jusqu'ici tout va bien...

    Le problème commence quand je souhaite indiquer dans les lignes de frmSF1 le résultat d'une somme de champ calculé de frmSF2.
    En effet, quand dans frmSF2 je demande en pied de formulaire à effectuer la somme d'un champ, le calcul se réalise correctement.
    Mais quand je demande le report de cette somme dans frmSF1, le report se fait bien pour la première ligne mais pas pour les suivantes.
    Par ailleurs, quand je fais une modification dans une ligne de la sous feuille de données (frmSF2), la mise à jour de la somme n'a pas lieu, même après un recalc F9.

    Très concrètement sur l'image jointe, le total HT du chapitre (dernière colonne "Total HT Chap") ne correspond pas la somme des montants Ht des lignes de la sous feuille de données.

    J'ai bien remarqué que quelqu'un avait eu le même problème dans les posts, mais personne n'a répondu...
    Quelqu'un a t-il une solution ou tout au moins des pistes de résolution ?

    Merci d'avance !!!
    Images attachées Images attachées  

  2. #2
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Pas de réponses ?
    Personne n'a eu le problème ??
    Tout le monde est en vacances ou quoi ?

  3. #3
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Comment fais-tu le report de ta somme vers SF1 ?

    Peux-tu nous donner les codes des requetes de SF1 et SF2 et eventuellement la structure des tables si elle n'est pas trop compliquée, on y verrait plus clair...
    merci
    puis et puis et encore . Sinon sans oublier et

  4. #4
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Alors.

    Dans SF2, j'ai une zone de texte qui s'appelle [sommeht] et qui fait la somme d'un calcul sur 2 champs de ma table, soit : Somme ([puht]*[quantite])

    Dans SF1, j'ai une autre zone de texte, que j'appelle [Zmontantchap] à qui je mets comme source controle : =SF2.Formulaire!sommeht

    C'est peut-être, et même surement mon report qui ne va pas...
    La curiosité étant que j'ai le bon montant pour la première ligne, mais pas pour les autres.

    Pour les codes des requetes, je suppose que tu veux parler des sources de mes sous-formulaires ??
    Si oui, les requetes sont les suivantes, mais je ne suis pas sûr que ça apporte quelque chose :
    - pour SF1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT tblChapitredevis.devID, tblChapitredevis.numchap, tblChapitredevis.intitulechap, tblChapitredevis.chapID
    FROM tblChapitredevis
    ORDER BY tblChapitredevis.numchap;
    - pour SF2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT tblDetaildevis.devID, tblDetaildevis.chapID, tblDetaildevis.detID, tblDetaildevis.ligne, tblDetaildevis.artID, tblBiblio.intituleart, tblDetaildevis.complement, tblDetaildevis.qte, tblUnite.intituleute, tblDetaildevis.puht, tblBiblio.puhtart, tblTva.tva
    FROM tblUnite INNER JOIN (tblTva INNER JOIN (tblBiblio INNER JOIN tblDetaildevis ON tblBiblio.artID = tblDetaildevis.artID) ON tblTva.tvaID = tblBiblio.tvaart) ON tblUnite.uteID = tblBiblio.uteID
    ORDER BY tblDetaildevis.devID, tblDetaildevis.chapID, tblDetaildevis.ligne;
    Merci d'avance si tu trouves une solution !!

  5. #5
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Oui, je pense que l'erreur vient du report. En fait, il n'y a qu'un seul SF2 (contrairement a ce qu'on peut voir dans le resultat), du coup, il va te chercher systematiquement la meme valeur!

    Alors, je pense qu'il faut calculer cette somme dans la requete de SF1 directement. Tu crées un nouveau champ et tu utilises la fonction DSum()

    Ca va te faire la somme que tu souhaites. Je vais avoir du mal a te le faire pour ton cas ma ca devrait te donner qqc comme ca:

    Zmontantchap: DSum("MontantHT","ZZrequete",[devID])

    Avec ZZrequete qui correspond grosso modo a la requete de SF2.

    Je me casse bientot du boulot, je te réponds demain si tu as des questions

    Pense a mettre des balises codes quand tu as du code a mettre (le bouton #). Si SQL, tu mets CODE=SQL
    puis et puis et encore . Sinon sans oublier et

  6. #6
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut On avance...
    Merci Timoth pour ces infos.

    Cependant, je me tente une requète, et access me répond qu'il y a des erreurs de syntaxe

    Bon, si j'ai bien compris, ma fonction DSum doit intégrer les éléments suivants, en clair : faire la Dsomme de l'expression correspondant à la multiplication des champs [puht] * [quantite], dans le domaine de ma table tblDetaildevis, où le champ [devID] correspond à la zone de texte devID de mon formulaire SF1.

    Ce que je traduis en expression de requête par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DSum ("[puht]*[quantite]","tblDetaildevis",[devID]=Forms!frmMain!frmSF1.Form.devID)
    Marche pas... Je me gaufre carrément ou non ?
    Je pars du taf là et je suis en déplacement demain.
    Merci de me répondre si tu peux

  7. #7
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Non, [devID] ne doit pas correspondre au champ de ton formulaire SF1, tu vas te récupérer a nouveau le meme résultat partout.
    Il faut qu'il soit le meme que le champ [devID] de la requete source de ton formulaire SF1.
    Resumons
    Chaque enregistrement de ton formulaire SF1 a un champ [devID]. Pour chacun de ces enregistrements, il doit aller lire la somme des [puht]*[quantite] dans ta table tblDetaildevis en sommant les enregistrements qui ont le meme champ [devID] que celui dans la requete source de SF1.

    Tu n'es pas tres loin quand meme. J'écrirais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DSum ("[puht]*[quantite]","tblDetaildevis","[devID]=" & [devID]
    Le [devID] entre crochets est celui de la table tblDetaildevis, celui apres le & est celui de ta requete dans laquelle tu rajoutes ce champ DSum (celui de ta requete source de SF1)

    Si tu fais reference a ton formulaire, il te lira systematiquement la meme valeur (la premiere), par conséquent, tu auras toujours le meme résultat.

    En esperant que ca soit plus clair.
    A bientot
    puis et puis et encore . Sinon sans oublier et

  8. #8
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Ca marche :)
    Merci Timoth pour ton aide,

    Ca marche maintenant à la fois dans mon SF1 où je fais la somme intermédiaire par chapitre, et dans mon frmMain où je fais le total des chapitres.

    J'ai cependant une dernière ch'tite question. Alors que ma DSum s'effectue automatiquement (sans recalc) dans mon frmMain si je change une valeur dans SF2, je suis obligé de lancer un Recalc après MAJ pour ma DSum de mon SF1.

    J'aurai oublié une étape ?
    C'est à cause de ma structuration en Feuille + Sous feuille de données ?

    Merci
    Byplane

  9. #9
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    J'aurai du mal à te répondre là dessus mais connaissant Access, ce n'est pas étonnant du tout. Le rafraichissment des formulaires apres modification des enregistrements est obligatoire. C'est mal foutu je sais mais c'est comme ça !

    Si le Recalc est un peu lourd, tu peux essayer la formule Requery sur SF1. Je suis pas super à l'aise sur les différences de ces méthodes.

    A bientot
    puis et puis et encore . Sinon sans oublier et

  10. #10
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    L'essentiel c'est que ça fonctionne !!!

    J'ai effectivement moi aussi un peu de mal entre recalc / refresh / repaint / requery...

    Merci encore de ton aide

    A+Byplane

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

Discussions similaires

  1. [CR 10] Somme de champs calculés
    Par Vincinho dans le forum Formules
    Réponses: 4
    Dernier message: 02/02/2023, 16h55
  2. [AC-2003] Somme de champ calculé dans un Etats
    Par Djromé dans le forum IHM
    Réponses: 0
    Dernier message: 04/11/2009, 20h14
  3. Regroupage de données + somme des champs
    Par sylvebarbe78 dans le forum Linq
    Réponses: 8
    Dernier message: 16/07/2009, 14h16
  4. somme sur champ calculé et table liée
    Par pierrot67 dans le forum Bases de données
    Réponses: 6
    Dernier message: 06/11/2006, 18h02
  5. [Access2K] Somme de champ calculé?
    Par Gronain dans le forum Access
    Réponses: 5
    Dernier message: 05/06/2006, 12h16

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