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 :

Access 2019 #Erreur injustifiée sur formule de somme dans sous-formulaire


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut Access 2019 #Erreur injustifiée sur formule de somme dans sous-formulaire
    Bonjour les Forumeurs,

    Je soumets à votre sagacité ou vos expériences vécues, une erreur inadmissible - amho - de MS Access que je pratique depuis ses premières versions en 1992. Je crois avoir un certaine expérience depuis 1969 en langages de programmation et je dois en avoir pratiqué une dizaine comme analyste-programmeur et construit au moins une centaine d'application MS Access pour moi et mes nombreux clients.

    Mais passons à l'essentiel que je veux décrire au mieux pour éviter si possible toutes ambiguïtés : j'obtiens "#Erreur" dans un pied de sous-formulaire quand je veux faire la somme des volumes en litre des Eléments qui composent un Objet. J'ai une autre application qui avec des caractéristiques et formules similaires fait sa somme correctement, sans réchigner ! Je ne vois pas la raison de cette discrimination dans le comportement de MS Access.

    J'ai créé une base de .ACCDB (MS ACCESS 2019) pour gérer l'Inventaire de nos meubles ou objets divers. J'ai donc une table tblObjet avec son identifiant idsObjet_K, la description de l'objet et le nombre d'objets. J'ai ensuite la table tlkpElément avec son identifiant idsElém_K et sa description. Comme un Elément peut faire partie de plusieurs objets, j'ai créé la table de liaison tblPartie qui pour l'objet lngObjet_Kr (clef complétée par un n° séquentiel arbitraire intN°_K) indique par lng_Elem_R quel est l'élément qui fait partie de l'Objet et avec intQté combien d'Eléments composent l'Objet. Par exemple, un tableau, c'est 1 Objet et 1 Elément mais une bibliothèque en kit (LUNDIA pour ceux qui connaissent encore) est 1 Objet avec une série d'éléments : échelles, tablettes, connexions et accessoires.

    Voici un extrait de la structure des tables que j'ai réussi à mettre dans ma réponse suivante.

    J'ai créé un formulaire frmObjet qui permet de rentrer les données propres à l'objet et de gérer son sous-formulaire fsubElément qui contient une ligne par Elément composant l'Objet. Chaque ligne d'Elément indique combien d'Elément sont inclus (intQté), le volume d'un Elément unique (intVolum) et le volume pour les Eléments comptés (ctlQxVol = intQté*intVolum), A noter que ce clacul a été testé avec champ + formule ou un champ calculé dans la requête sous-jacente. Le champ s'affiche correctement dans chaque ligne et le calcul est correct, c'est un minimum avec un ordinateur correct (Windows 10 Professional).

    Mais quand je veux afficher dans le pied ou l'en-tête du sous-formulaire la somme des volumes totaux de la série d'Eléments d'un Objet, j'obtiens cette biess (Wallon de Belgique == bête) d'erreur avec les formules :
    =Somme([VolTot]) où VolTot est un champ calculé dans la requête sous-jacente.
    =Somme([intQté]*[intVolum])
    plus d'autres variantes aussi errorisées, que l'Objet compte 1 ou plusieurs Eléments.

    Dans l'autre application avec 1 facture et ses lignes, l'en-tête du sous-formulaire des Lignes affiche la somme des valeurs de chaque ligne avec :
    =Somme([cMontant])
    où cMontant est la valeur nette de la ligne : (Qté*PrixUnit)-Ristourne (pour faire court pour une fois !).

    Je ne vois pas la différence entre les 2 applications qui expliquerait l'Erreur By Microsoft dans mon application d'Inventaire.
    Cela fait un paquet d'heures que je rame et me tire les cheveux qui me restent sans progresser du moindre bit. Je vais recréer une nouvelle base .ACCDB et importer ou lier tous les objets et tester !

    En toute humilité, même si je m'explique en long et en large, j'espère que vous pourrez éclairer ma lanterne.

    D'avance, Merci
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  2. #2
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut structure des tables
    Nom : G11mh_Inventaire.jpg
Affichages : 76
Taille : 15,2 Ko
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  3. #3
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut
    Re-Bonjour,

    J'avais écrit : « Je vais recréer une nouvelle base .ACCDB et importer ou lier tous les objets et tester. ». C'est fait et j'ai toujours la même erreur. Donc j'ai supprimé ma "nouvelle" base de données et repris la sauvegarde.

    Donc, je suis toujours dans le même pétrin incompréhensible et insoluble sans les idées averties de l'un ou l'une d'entre vous que je remercie d'avance.

    Je vais essayer de retrouver le résultat correct pour l'afficher dans le formulaire principal et supprimer les calculs dans le sous-formulaire. Si je trouve une solutios, je vous en ferai part.
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 876
    Points : 4 751
    Points
    4 751
    Par défaut
    Bonjour,

    C'est peut être dû au fait que tu veux afficher ton calcul dans un sous-formulaire. A voir ...
    Une maniére de s'en tirer est de faire le calcul via le recordsetclone du sous-form et là ça doit marcher

    cordialement
    "Always look at the bright side of life." Monty Python.

  5. #5
    Membre du Club
    Homme Profil pro
    Retraité à 65 ans
    Inscrit en
    Juin 2007
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité à 65 ans

    Informations forums :
    Inscription : Juin 2007
    Messages : 60
    Points : 61
    Points
    61
    Par défaut
    Merci micniv pour cette réponse. Je n'ai jusqu'à présent pas utilisé la technique du "recordsetclone subform" puisque cela fonctionnait très bien sans cela. Et l'autre application fournit le bon résultat sans cette technique. L'idée est de présenter le volume total de tous les Eléments d'un Objet même sans avoir fait une quelconque opération sur les enregistrements du sous-formulaire.
    Bonne journée.
    Michel

    Office 2019 Pro Plus, Win10 Pro 64 bits ; Access et VBA depuis Access 2 ; encore actif même si retraité ; seul utilisateur de mon PC.

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 876
    Points : 4 751
    Points
    4 751
    Par défaut
    Si tu ne veux pas utiliser de code, c'est ton droit.
    sinon vois l'exemple ci-dessous, c'est très simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    Public Sub RefreshTotaux()
        Dim ssfrm As Form
        Dim strSql As String, s1 As Double
     
        Set ssfrm = Me.F_commande1_sf1.Form
        s1 = 0
        If ssfrm.RecordsetClone.RecordCount > 0 Then
            ssfrm.RecordsetClone.MoveLast
            ssfrm.RecordsetClone.MoveFirst
            While Not ssfrm.RecordsetClone.EOF
                s1 = s1 + CDbl(Nz(ssfrm.RecordsetClone!Recal_montant, 0))
                ssfrm.RecordsetClone.MoveNext
           Wend
        End If
        Me.zSelect_count = ssfrm.RecordsetClone.RecordCount
        Me.montant_total = s1
     
    Exit_0:
        Set ssfrm = Nothing
    End Sub
    "Always look at the bright side of life." Monty Python.

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2021, 23h38
  2. somme dans sous-formulaire.
    Par Sebastien31t dans le forum Access
    Réponses: 1
    Dernier message: 04/10/2020, 14h30
  3. Réponses: 1
    Dernier message: 11/07/2019, 19h41
  4. correction erreur bug sur formule
    Par tseoy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/08/2015, 15h41
  5. Pb de sommes dans sous formulaires !
    Par Fredri dans le forum Access
    Réponses: 10
    Dernier message: 11/01/2006, 12h09

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