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 :

Soustraction dans Etat


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut Soustraction dans Etat
    Bonsoir à tous,

    J'ai un état filtré par jour et opérateur.

    il indique le nbre de pièces produites, les déchets, le fully time..... Je peux avoir plusieurs lignes pour une seule journée, comme je peux n'avoir qu'une seule ligne.
    Dans le cas où j'ai plusieurs lignes, la dernière ligne correspond au total.

    J'essaie de trouver un fonction qui me permettrait de soustraire chaque ligne afin d'obtenir un résultat par ligne en partant de la dernière ligne. J'ai tenté SomDom mais j'ai pas tout compris, et le résultat n'est pas correct (texte55 dans ma photo ci-dessous).

    Par exemple, et toujours en partant de l'image ci-dessous, pour le nombre de pièces produites, sur la 1ère ligne le résultat sera 86094 et sur la 2ème ligne 10633 (96727-86094).

    Une bonne âme pourrait-elle me venir en aide, svp ?

    Très bonne soirée.
    Sandrine
    Nom : Capture d’écran 2022-11-18 182829.jpg
Affichages : 94
Taille : 50,2 Ko

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut Pas sûr de comprendre
    Bonjour,

    Comment filtrez-vous votre état ?

    Il s'agit bien de soustraire le nombre de pièces produites d'une ligne à celui de la ligne précédente, ce sont bien des valeurs cumulées au départ ?

    Si c'est le cas, alors supposons que vous ayez déjà une requête nommée LaRequete qui filtre les données par jour et par opérateur.

    Une possibilité serait d'utiliser une sous-requête dans un champ calculé pour faire cette différence entre 2 lignes :

    ResultatLigne : NbrePieces - nz((select Top 1 R1.NbrePieces from LaRequete R1 where R1.Id<LaRequete.Id order by Id Desc);0)

    La sous-requête ramène le nbre de pièces produites de la ligne précédente.

    • Id: champ identifiant la ligne
    • NbrePieces : champ contenant le nombre de pièces produites


    Une autre possibilité pour prendre en compte directement la source de données de l'état s'est de mettre du code sur l'événement "Au Formatage" ("Format" en anglais) ou "Sur impression" ("Print") de la section détail de l'état :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    ' Déclaration de la variable en haut du module de l'état
    Dim NbrePiecesPrec As Long
    ' Procédure événementielle déclenchée au formatage de la section détail de l'état
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
        ' Calcul de la différence entre le nombre de pièces de la ligne courante et celui de la ligne précédente
        [ResultatLigne] = [NbrePieces] - NbrePiecesPrec
        NbrePiecesPrec = [NbrePieces] ' Copie du nombre de pièces pour la ligne suivante
    End Sub

    Cordialement.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Merci pour votre aide.

    Il s'agit bien de soustraire le nombre de pièces produites d'une ligne à celui de la ligne précédente, ce sont bien des valeurs cumulées au départ ?

    Si c'est le cas, alors supposons que vous ayez déjà une requête nommée LaRequete qui filtre les données par jour et par opérateur.
    Oui c'est bien l'objectif, et oui je me base sur une requête nommée R_KPI_IND

    Concernant la 1ère possibilité
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultatLigne : NbrePieces - nz((select Top 1 R1.NbrePieces from LaRequete R1 where R1.Id<LaRequete.Id order by Id Desc);0)
    que j'ai adapté en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ResultatLigne : PiecesProd - nz((select Top 1 R1.PiecesProd from R_KPI_IND R1 where R1.N°TableauBord<R_KPI_IND.N°TableauBord order by N°TableauBord Desc);0)
    J'ai un message d'erreur = "Référence circulaire causée par R_KPI_IND".

    Concernant la 2ème possibilité que j'ai adapté de cette façon =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    ' Déclaration de la variable en haut du module de l'état
    Dim PiecesProdPrec As Long
    ' Procédure événementielle déclenchée au formatage de la section détail de l'état
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
        ' Calcul de la différence entre le nombre de pièces de la ligne courante et celui de la ligne précédente
        [ResultatLigne] = [PiecesProd] - PiecesProdPrec
        PiecesProdPrec = [PiecesProd] ' Copie du nombre de pièces pour la ligne suivante
    End Sub
    Rien ne s'affiche dans mon champ indépendant [ResultatLigne]



    Merci encore
    Sandrine

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut
    Rebonjour,

    Citation Envoyé par planetesud Voir le message
    Concernant la 1ère possibilité
    ...
    J'ai un message d'erreur = "Référence circulaire causée par R_KPI_IND".
    Oui, c'est normal, il faut créer une 2e requête (R_KPI_IND_2) basée sur R_KPI_IND dans laquelle vous insérez ce champ calculé contenant la sous-requête.

    Cette 2e requête (R_KPI_IND_2) doit être la source de données de l'état.

    Remarque : il faudra peut-être ajouter un critère pour filtrer la sous-requête sur les champs date et opérateur.

    Citation Envoyé par planetesud Voir le message
    Concernant la 2ème possibilité que j'ai adapté de cette façon =
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    ' Déclaration de la variable en haut du module de l'état
    Dim PiecesProdPrec As Long
    ' Procédure événementielle déclenchée au formatage de la section détail de l'état
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
        ' Calcul de la différence entre le nombre de pièces de la ligne courante et celui de la ligne précédente
        [ResultatLigne] = [PiecesProd] - PiecesProdPrec
        PiecesProdPrec = [PiecesProd] ' Copie du nombre de pièces pour la ligne suivante
    End Sub
    Rien ne s'affiche dans mon champ indépendant [ResultatLigne]
    Il faut bien faire le lien en mettant [Procédure événementielle] sur la ligne "Au Formatage" dans la feuille des propriétés de la section détail :

    Nom : Detail_Format.png
Affichages : 59
Taille : 13,2 Ko

    Cordialement.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Rebonjour,

    Et encore merci.

    J'ai essayé avec la Requête R_KPI_IND2 et ça me donne le résultat demandé....

    Juste qu'il refuse un regroupement dans mon Etat, je vais le présenter différemment du coup

    Par contre, avec la procédure évènementielle, rien à faire.... mais pas grave, puisque le résultat est donné avec la requête.

    Maintenant, je vais continuer mes calculs et je me permettrais de reposter une demande en cas de problème...

    Un grand merci pour toutes ses explications qui sont super claires, une bonne fin de journée.

    Sandrine

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonsoir,

    Je suis déjà de retour....

    Du coup comment je peux faire des "sommes" dans mon état comme je ne peux pas faire de regroupement ?

    Merci encore.

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut
    Bonsoir,

    Il refuse, comment ça

    Pouvez-vous préciser les choses ?

    Sur quel champ porte ce regroupement ?

    Ce n'est pas possible sur une sous-requête, il faut mettre expression à la place de regroupement.

    Sinon, il y a les fonctions de domaine :

    Resultat: [NbrePieces] - nz(RechDom("NbrePieces";"LaRequete";"Id=" & Nz(MaxDom("ID";"LaRequete";"Id<" & [id]);0));0)

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Toujours moi.... lol

    J'ai trouvé pour l'état. J'ai créé un autre Etat avec un sous Etat (basé sur R_KPI_IND2).

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Il refuse, comment ça

    Pouvez-vous préciser les choses ?

    Sur quel champ porte ce regroupement ?
    Voici le message que j'ai : "Clause GROUP BY multi-niveau non autorisée dans une sous-requête"

    Mais j'ai écrit un autre message sans avoir vu le votre.

    J'ai créé un 1er état avec les données de R_KPI_IND et un sous état avec les données de R_KPI_IND2. A 1ère vue ça fonctionne comme ça.

    Bonne soirée

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut
    Pas de soucis, c'est vous qui décidez
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    C’est à dire?

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut
    Bonjour,

    Je ne connais pas votre base de données donc je vous laisse décider.

    Ci-joint un petit exemple avec les 2 options avec et sans le code (E_KPI_IND et E_KPI_IND2).

    Les états s'ouvrent depuis le formulaire F_Filtre.

    Cdlt
    Fichiers attachés Fichiers attachés
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    D’accord c’est gentil. Je vais y jeter un œil cet après-midi.

    Je vous souhaite un excellent dimanche.

    Cordialement
    Sandrine

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Re,

    Voyez l'image ci-dessous. Dans votre base j'ai le même problème, le résultat ne s'affiche pas lorsque j'utilise la procédure événementielle.

    Merci à vous.

    Nom : Capture d’écran 2022-11-20 160127.jpg
Affichages : 33
Taille : 40,7 Ko

  15. #15
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut
    Bonsoir,

    Je pense que cela vient du mode d'affichage de l'état, en mode état le code n'est pas activé, en mode aperçu avant impression oui :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'DoCmd.OpenReport "E_KPI_IND2", acViewReport, ...
    DoCmd.OpenReport "E_KPI_IND2", acViewPreview, ...
    Ou alors les macros et le code ne sont pas activés..

    Cordialement.
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2011
    Messages : 55
    Points : 34
    Points
    34
    Par défaut
    Bonsoir,

    Effectivement ça vient de l'affichage car en mode aperçu avant impression, ça s'affiche.... Fallait le savoir quand même..

    Merci vous êtes trop fort.

  17. #17
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2004
    Messages
    7 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2004
    Messages : 7 826
    Points : 18 396
    Points
    18 396
    Billets dans le blog
    34
    Par défaut
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Mettre une image de fond dans Etat QuickReport
    Par touhami dans le forum Composants VCL
    Réponses: 3
    Dernier message: 29/12/2005, 18h29
  2. requete et tri dans etats
    Par flo456 dans le forum IHM
    Réponses: 3
    Dernier message: 22/12/2005, 12h02
  3. Problème de soustraction dans un champ
    Par Tyraelina dans le forum Access
    Réponses: 1
    Dernier message: 18/12/2005, 18h18
  4. Affichage dans etat
    Par rollly dans le forum Access
    Réponses: 6
    Dernier message: 29/09/2005, 17h26
  5. Photo dans Etat
    Par Coquelicot dans le forum IHM
    Réponses: 19
    Dernier message: 16/09/2005, 03h51

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