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 :

Calcul dans un tableau [WD17]


Sujet :

WinDev

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 61
    Points : 21
    Points
    21
    Par défaut Calcul dans un tableau
    Bonjour,
    Je suis débutante dans le domaine de la programmation windev, Je veux créer un tableau de la forme suivante:
    Fourniseurs----Janv------fev-----mars -----......----dec----Total
    fr1-----------tot-f1----tot-f1
    fr2-----------tot-f2----tot-f2
    fr3-----------tot-f3----tot-f3
    fr4-----------tot-f4----tot-f4
    .
    .
    .
    Total----------tot1----tot2 ---...-----------------tot12----TOT

    j'ai réussi à remplir la colonne "fournisseur" à partir d'une requête sur le fichier "fournisseur", mais les totaux affichés de chaque fournisseur par mois sont des valeurs fausses
    voilà mon code
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    TableSupprimeTout(TABLE_Stat)
    //remplir colonne fournisseur
    sdDonnéeCommande est une Source de Données
    sdSRequeteCommande est une Source de Données
    sdSRequeteCommande = "SELECT fournisseur.idfr AS idfr from fournisseur"
    SI PAS HExécuteRequêteSQL(sdDonnéeCommande,sdSRequeteCommande) ALORS
    	Erreur(HErreurInfo())
    	Close()
    SINON
     
    	POUR TOUT sdDonnéeCommande
    		indice est un entier=0
    		indice=TableAjouteLigne(TABLE_Stat,sdDonnéeCommande.idfr)
    		//remplir les lignes de chaque fournisseur
    		POUR TOUT bonliv 
    		    SI bonliv.idfr=sdDonnéeCommande.idfr   ALORS
     
    		   	   SELON bonliv.datbl..Mois
    				  CAS 1: TABLE_Stat.COL_Janv[indice]=TABLE_Stat.COL_Janv+bonliv.totttc
    				  CAS 2: TABLE_Stat.COL_Fev[indice]=TABLE_Stat.COL_Fev+bonliv.totttc
    				  CAS 3: TABLE_Stat.COL_Mars[indice]=TABLE_Stat.COL_Mars+bonliv.totttc
     
    			   FIN
    		   FIN	
    		FIN
    	FIN	
    //calcul totaux par mois
    	NumLigne est un entier = TableAjouteLigne(TABLE_Stat,"TOTAL")
    	Trace("NumLigne",NumLigne)
    	TABLE_Stat.COL_Janv[NumLigne]= TABLE_Stat.COL_Janv[ligneTotal]	
    	TABLE_Stat.COL_Fev[NumLigne]= TABLE_Stat.COL_Fev[ligneTotal]	
    	TABLE_Stat.COL_Mars[NumLigne]=TABLE_Stat.COL_Mars[ligneTotal]	
    FIN
    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Déjà il faut corriger les lignes 19 à 21:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CAS 1: TABLE_Stat.COL_Janv[indice]=TABLE_Stat.COL_Janv[indice]+bonliv.totttc
    Ensuite je trouve la logique un peu limite: pour chaque commande, balayer tous les bl pour trouver les correspondant. Pourquoi ne pas lancer directement une requête qui calcul les cumuls par fournisseur/mois ?

    Tatayo.

  3. #3
    Membre habitué Avatar de Toytoy31
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2010
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2010
    Messages : 74
    Points : 183
    Points
    183
    Par défaut
    Bonjour

    Nous sommes là pour t'aider

    La ligne suivante n'est pas bonne car tu ne définit pas le bon type de variable.. Ce n'est pas une source de données mais une chaine dans ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sdSRequeteCommande est une Source de Données //* => sdSRequeteCommande est une Chaine
    Ensuite, concernant le parcours de ta requete, essayes ce code :

    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
     
    POUR TOUT sdDonnéeCommande
    		indice est un entier=0
    		indice=TableAjouteLigne(TABLE_Stat,{sdDonnéeCommande+".idfr",indRubrique})
    		//remplir les lignes de chaque fournisseur
    		POUR TOUT bonliv 
    		    SI bonliv.idfr={sdDonnéeCommande+".idfr",indRubrique}   ALORS
     
    		   	   SELON bonliv.datbl..Mois
    				  CAS 1: TABLE_Stat.COL_Janv[indice]=TABLE_Stat.COL_Janv+bonliv.totttc //* à quoi correspond [indice] ? où l'as tu déclaré ?
    				  CAS 2: TABLE_Stat.COL_Fev[indice]=TABLE_Stat.COL_Fev+bonliv.totttc
    				  CAS 3: TABLE_Stat.COL_Mars[indice]=TABLE_Stat.COL_Mars+bonliv.totttc
     
    			   FIN
    		   FIN	
    		FIN
    	FIN
    Dis moi ce que tu en penses et essayes ce code

    Cordialement
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag

    Bonne continuation et bon dev surtout

  4. #4
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 771
    Points
    1 771
    Par défaut
    Tu devrais regarder du côté du champ tableau croisé dynamique
    Il me semble tout a fait adapté pour ce que tu veux faire quoi qu'en version 17 je ne suit pas sur qu'il existait

    Sinon on peut le faire avec une requête dont on crée dynamiquement les colonnes des mois.
    C'est un peu plus compliqué, j'ai déjà posté des exemples notamment celui ci où toute la démarche est détaillée
    http://www.developpez.net/forums/d13...e/#post7572572
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 61
    Points : 21
    Points
    21
    Par défaut
    Merci beaucoup Tatayo, Totoy et laurent pour vos réponses,

    Tatayo: j'ai corrigé les llignes et ça marche , concernant votre proposition j'ai pas de grand idée concernant les sommes avec les requêtes pour ce là j'ai utilisé cette méthode
    Je sais pas s'il faut changer tout le code avec les requête ou bien se n'est pas nécessaire

    Toytoy: j'ai testé votre proposition mais elle m'a renvoyé des redondances au niveau des fournisseurs (chaque fournisseur se répète 3 fois)

    Laurent: du premier vue j'ai trouvé que c'est trop compliqué je vais testé

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Quelle est la structure des deux fichiers concernés par ce code ?
    La requête ressemblerait à ceci:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select idfr,datebl,sum(totttc)
    from bonliv
    group by idfr,datebl
    order by idfr
    Elle regroupe les BLs par date/fournisseur, en sommant le total ttc. Il suffit de boucler sur le résultat pour remplir le tableau, en ajoutant une ligne à chaque fois que le fournisseur change.
    Il est certainement possible d'extraire l'année directement dans la requête, mais j'avoue que j'ai la flemme de chercher

    Tatayo.

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

Discussions similaires

  1. calcul dans un tableau
    Par nicolasferraris dans le forum Langage
    Réponses: 5
    Dernier message: 22/04/2009, 15h05
  2. [A-02] Insérer un champ calculé dans un tableau croisé dynamique
    Par atoffoli75 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2008, 08h55
  3. [AIDE] Calcul dans un tableau (JSP+Struts)
    Par Diablo_22 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 07/11/2008, 14h40
  4. champs calculés dans un tableau croisé
    Par abdoing dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 23/08/2007, 19h11
  5. Réponses: 4
    Dernier message: 03/08/2007, 13h48

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