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

WinDev Discussion :

Comment effectuer dans un etat formulaire des sommes ou soustractions sur les champs créés dans celui-ci


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut Comment effectuer dans un etat formulaire des sommes ou soustractions sur les champs créés dans celui-ci
    Bonjour

    Désirant editer des liassses fiscales paramétrables je cherche le moyen d’effectuer des opérations sur différents champs de saisie et calucl créés sur un etat formulaire afin de pouvoir les superposer sur un une image de fond

    Pour essayer de comprendre le fonctionnement de windev j’ai créer un etat formulaire dans lequel j’ai créé des champs de saisie repartis sur deux colonnes

    Chaque champs a pour code de lire dans un fichier HF le montant à affichier
    Cela fonctionne parfaitement


    Au bas de chaque colonne doit se trouver un champs permettant de calculer l’addition des champs correctement affichés
    Une troisème colonne dont chaque ligne permet de calculer la différence des deux colonnes de gauche

    Je cherche donc des exemples me permettant de comprendre la programmation de telles fonctions à l’avance merci

  2. #2
    Membre régulier Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Points : 124
    Points
    124
    Par défaut
    Bonjour,
    il y a des champs prédéfinis qui fait des totaux dans leur description regarde sur la barre d'outils dans l'éditeur d'états

  3. #3
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    merci bruce 207
    je ne vois de fonction prédéfinies permettant d 'obtenir ce que je désire

    il s'agit 'un état formulaire les colonnes ne sont pas définies automatiquement par l'éditeur d'état

    pour mieux comprendre mon besoin

    imaginer un tableau immobilisation "excel" de 3 colonnes
    1er colonnes le montant brut des immobilisations"
    2ème colonnes le montant des amortissements pratiqués
    la 3ème colonnes pour le calcul des valeurs nettes comptables
    une fois le tableau réalise et les formules de calcul fonctionnelle
    dans excel je peux me permettre de déplacer chaque case sans influence
    sur les résultats

    comment obtenir un résultat identrque en wjndev

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Avec Excel on n'agit pas du tout comme on pourrait le faire avec un Etat formulaire, un Etat c'est un document destiné à être imprimé il peut être manipulé par programmation et un peu en aperçu mais c'est tout, avec l'aperçu avant impression d'Excel c'est pareil.
    Pour agir sur les lignes ou les colonnes il faut créer une fenêtre avec un champ Table.

  5. #5
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Salut Basam

    j'ai pris excel pour exemple car dans excel une fois que le tableau et les formules fonctionnent correctement on peut deplacer les cases sans changer le resultat des formules
    chose que l'on devrait pouvoir effectuer sans probleme que dans les etats vierge ou formulaire car dans les autres comme tu le mentionne,
    Pour agir sur les lignes ou les colonnes il faut créer une fenêtre avec un champ Table" mais on ne peut pas a ma connaissance deplacer a volonte les differents champs

    j'ai partiellement trouver une solution, le calcul avait pour resultat la concatenation des valeurs des champs declarés en monnaitaire
    j'ai donc utilisé val()
    par contre certaines formules ne donnent pas le resultat escompté

    je pense que les rubriques ou champs calculés doivent etre creés dans un certain ordre

    je suis donc à la recherche de la bonne methode de creation de ces champs

    à l'avance merci

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Avec les versions les plus récentes de WD tu peux déplacer les colonnes en utilisation, comme sur Excel, ou rendre invisibles les colonnes par exemple (clic en haut à droite de la table) bien entendu, tout ça depuis une fenêtre.

    Pour en revenir aux état, tu peux tout à fait créer des champs non reliés à une rubrique et le remplir par programmation, par exemple dans le code avant impression du Bloc Corps.
    Donne plus de détail sur le point qui te bloque.
    A+

  7. #7
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    bonsoir basam95

    mon principal problème était d'effectuer des sommes, additions et soustractions de rubriques crées
    à force d essais je me suis aperçu qu'il fallait utiliser dans la syntaxe "Val(rubrique)"

    maintenant je me trouve confronter à un soucis
    les additions ou soustractions s'effectuent mais ne fournissent pas toujours le bon resultat

    je pense que cela provient de l'ordre dans lequel sont crées les rubriques
    y a t'il une solution autre que de recréer une nouvelle rubrique pour qu"elle soit crée postérieurement aux rubriques à additionner ou à soustraire

    d'autre part utilisant que la version Express certaines fonctions ne me sont pas autorisées

    comment faire pour inclure en fond de page
    une copie d'une page de liasse fiscale obtenue en pdf sur le site des impots ne disposant pas de scanner

    à l'avance merci

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    je ne connais pas les limitations des versions express, quoiqu'il en soit sur la version classique tu peux créer un état basé sur une image (ou un fichier pdf), c'est automatique, en fait le fond de l'état sera représenté par cette image.

    En ce qui concerne les calculs, tu peux forcer le recalcul de tes champs dans le code Avant impression du bloc dans lequel se trouvent les totaux en parcourant les champs dont la valeur sert au calcul, la fonction Val() converti une valeur texte numérique en valeur numérique, si tes champs sont numérique ça ne sert à rien, sinon quel intérêt de faire des calculs arithmétiques sur des champs texte ?

    Toutefois si les totaux sont dans le bloc fin du document et que les montants à additionner se trouvent dans le bloc corps, tu peux utiliser un champ calculé avec la fonction Somme, basé sur le champ du bloc corps.

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Citation Envoyé par basam95 Voir le message
    je ne connais pas les limitations des versions express
    Le lien se trouve dans cette discussion http://www.developpez.net/forums/d28...igration-p-tp/

  10. #10
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Bonjour Basam95

    la version Express ne permet pas de gerer les PDF

    Mon etat Formulaire est crée automatiquement qu'avec un seul Bloc
    Dans ce bloc j'ai créer des champs numériques
    le seul moyen d'obtenir des sommes de ces champs et d ' utiliser la fonction Val()
    Quelle est la fonction qui peemet de parcourir les Champs ??? qui ne sont pas alignés


    a l' avance merci

    micro 16

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Je ne comprends pas exactement le problème, le parcours des champs de type rubrique peut se faire en utilisant directement le nom du champ.
    Si tu as 2 champs RUB_Champ1 et RUB_Champ2 et que tu veux mettre le total dans RUB_Total alors il n'y a qu'a faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RUB_Total = RUB_Champ1 + RUB_Champ2
    mets une copie de ton écran et de ton code pour être plus explicite.

  12. #12
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    voici la copie des formules qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     // Ce calcul est juste
    CALC_CALCUL = CALC_CALCUL1 + CALC_CALCUL2 + CALC_CALCUL3 + CALC_CALCUL4 + CALC_CALCUL5...
    + CALC_CALCUL6 + CALC_CALCUL7 + CALC_CALCUL8 + CALC_CALCUL9 + CALC_CALCUL11
     
    // Ce Calcul s'effectue en présentant une erreur d' addition (écart de la variable  CALC_CALCUL11)
    //	 CALC_CALCUL12 = CALC_CALCUL1 + CALC_CALCUL2 + CALC_CALCUL3 + CALC_CALCUL4 + CALC_CALCUL5...
    //  + CALC_CALCUL6 + CALC_CALCUL7 + CALC_CALCUL8 + CALC_CALCUL9 + CALC_CALCUL11
     
     
    // Cette formule fonctionne
    CALC_AX =Val( ABAG)+Val(ADAG)+Val(AFAG)+Val(AHAG)+Val(AKAG)+Val(AMAG)+Val(APAG)+Val(ARAG)+Val(ATAG)+Val(AVAG)
     
    // cette formule  additionne des chaînes de caractères représentant le montant de champs
    //	CALC_AX = ABAG+ADAG+AFAG+AHAG+AKAG+AMAG+APAG+ARAG+ATAG+AVAG
    Calc_calcul12 est en réalité une variable renommée, elle a été crée avant les autres variables, c'est pourquoi je pense que l'ordre de création des variables doit avoir une importance

    à plus

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Où se trouve ton code, dans quel évènement (Avant impression bloc corps, code d'initialisation de l'état, etc.) ?

    Je ne comprends pas l'intérêt de faire des calcul sur des champs texte ?

  14. #14
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Bonsoir

    je suis d'accord avec toi
    mais pour moi actuellement c'est la seule solution pour obtenir le resultat voulu..
    j'ai essayez le code aux differents endroit
    dans le code du corps
    dans le code des variables et de champs

    en fait je desire des champs affichant le montant de liasse fiscale avec le libelle de la liasses devant
    dans initialisation du code champs de saisi je vais lire le montant de la liasse dans la rubrique monétaire d'un fichier HF le champs de saisie parametre en monnaitaire donne apparemment une chaine dans les formules de calcul

    la est le problème ..

    merci de ton soutien

  15. #15
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    615
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 615
    Points : 841
    Points
    841
    Par défaut
    Bonjour
    J'ai un état basé sur une requête mais mes champs n'apparaissent pas dans le bon format. Je passe donc une procédure dans avant impression de corps.
    Cela se fait à la volée.
    Mon coprs est en fait un tableau de données.
    Pour avoir des sommes, j'ai créé une table dans ma fenêtre qui lance l'état. Dans cette table je mets toutes les infos y compris celles que j'ai calculées. Ensuite je fais un état sur ce champ table
    Gancau

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Ok,

    Attention lorsque tu met un calcul dans le code d'initialisation des champs,
    Dans l'ordre l'initialisation est la suivante :
    * traitement "Ouverture" de l'état.
    * traitement "Initialisation" des blocs de l'état.
    * traitement "Initialisation" des champs.
    Selon la position de ton code tout peut changer.
    Il est préférable de faire une requête comme le dit Gancau puis d'affecter automatiquement le résultat de la requête aux champs concernés et dans le bon format. Puis faire les calcul dans le code avant impression du bloc
    A+

  17. #17
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Bonsoir basam95 et gancau

    Je ne comprends pas pourquoi créer des requêtes
    Je n’arrive pas à comprendre pourquoi une monétaire devient chaîne de caractères

    Pour faire simple
    Je crée un état formulaire
    Dans l’initialisation de l’état je déclare les monétaires AA = 10, AB = 20, AC = 30 et AD = 60 (AD correspondant à la somme de AA + AB + AC

    Dans un premier temps, je crée dans le corps de mon état les Champs de saisie
    Type monétaire CAA traitement avant impression CAA = AA
    Type monétaire CAB traitement avant impression CAB = AB
    Type monétaire CAD traitement avant impression CAD = CAA + CAB

    Résultat de l’exécution
    CAA = 10
    CAB= 20
    CAD=1020

    Dans un second temps, je crée dans le corps de mon état le Champ de saisie
    Type monétaire CAC traitement avant impression CAC = AC
    Je modifie CAD
    traitement avant impression CAD = CAA + CAB + CAC

    Résultat de l’exécution
    CAA = 10
    CAB= 20
    CAC= 30
    CAD=1020

    Je suis donc bien obligé d’utiliser la fonction Val()
    Et de créer un nouveau champ de saisie CAD pour que le traitement prenne en compte CAC dans CAD

    J’utilise des champs saisie afin d’avoir un libellé devant le montant afin que le libellé et le montant soient déplacé en même temps lors de la mise en page de mon formulaire

    J’espère avoir été clair dans mon exposé pour mieux comprendre le problème sur lequel je bute

    A+

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Ok je comprends mieux. Il n'est pas possible d'utiliser le type monétaire dans un champ de saisie sur un état, il faut utiliser un champ de type numérique à la place (réel).

    En ce qui concerne les calculs il est préférable de les faire dans le traitement de sortie de champ. Par contre il faut réafficher l'état pour rafraichir les données.

    l'autre solution consiste à faire la saisie dans une fenêtre dont le fond est l'image souhaitée, puis d'imprimer l'état correspondant (après avoir enregistrer les données dans un fichier par exemple)
    A+

  19. #19
    Futur Membre du Club
    Profil pro
    chef entreprise
    Inscrit en
    Juillet 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : chef entreprise

    Informations forums :
    Inscription : Juillet 2010
    Messages : 22
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    J’ai changé la définition des variables en entier : cela ne permet toujours pas d’effectuer des additions arithmétiques
    Je n‘ai pas pu tester le calcul dans le traitement de sortie de champ car je n’ai pas trouvé dans l’aide comment programmer le réaffichage et où taper le code
    J’ai inversé dans ma formule l’ordre d’addition des champs de saisie , j’ obtients donc une nouvelle chaine des variables (concaténation des valeurs), le champ CAC n’est toujours pas pris en compte

    Dans le test « pour faire simple » les données sont initialisées dans l’état comme entier par contre dans le projet initial, elles proviennent d’un fichier (déclarées monétaires dans l’analyse)

    Autre soucis l’état formulaire pdf offre la possibilité de saisir des données en mode aperçu
    Supposons que je modifie la valeur de CAA (10) par 20 y a-t-il une programmation particulière à effectuer
    Bon we a+

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    410
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 410
    Points : 513
    Points
    513
    Par défaut
    Salut,

    Dans le traitement de sortie de ton champ tu peux faire quelque chose comme ça pour modifier les valeurs dans ton fichier d'origine
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Client.Nom = Saisie_Nom
    HModifie(Client)
    Bien entendu il faut dans ce cas que l'enregistrement manipulé corresponde, sinon il faut d'abord lire le bon enregistrement.
    Pour que les modifs soient visible il faut ré-exécuter l'état (par exemple en changeant l'imprimante)

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/03/2014, 21h28
  2. Réponses: 3
    Dernier message: 26/09/2008, 17h52
  3. Réponses: 3
    Dernier message: 15/04/2008, 18h17
  4. Comment modifie une requete pour avoir des sommes?
    Par F@ce27 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 16/06/2006, 13h47
  5. Comment voir les champs créés dans les tables?
    Par Missvan dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 18/02/2004, 10h27

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