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 :

Colonne calculée dans une table. [WD16]


Sujet :

WinDev

  1. #1
    Membre actif
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Points : 231
    Points
    231
    Par défaut Colonne calculée dans une table.
    Bonjour à tous.

    J'ai un petit souci sur une table :

    J'ai 3 colonnes, Débit|Crédit|Montant.

    La colonne montant est remplie avec une simple boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tabletrie(table,"date")
    POUR i=1 A  TableOccurrence(TABLE)
    	SI i>1
    		TABLE.MONTANT[i]  =TABLE.MONTANT[i-1]+TABLE.DEBIT[i]-TABLE.CREDIT[i]
    	SINON
    		TABLE.MONTANT[i]  =TABLE.DEBIT[i]-TABLE.CREDIT[i]
    	FIN
     
    FIN


    Ma table est bien remplie au premier affichage, j'ai les bon montants qui se suivent dans l'ordre de trie par date.

    Par-contre, si je trie après remplissage ma table sur une autre colonne, ma colonne montant perd toute signification car elle était remplie à la base sur un trie par date.

    Je cherche donc un moyen de relancer ma boucle quelque soit l’évènement sur ma table, un tri sur une autre colonne, une modif de montant au débit ou credit par exemple.

    J'ai essayé de faire clair, mais si besoin je peux mettre des copies d’écran.

    Merci pour le coup de main.

  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,
    Il suffit de mettre la boucle dans une procédure locale, et de l'appeler à chaque fois que nécessaire...

    Autre solution, mettre le code de calcul du montant (sans la boucle) dans la section "Affichage d'une ligne de la table".


    Tatayo.

  3. #3
    Membre actif
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Points : 231
    Points
    231
    Par défaut
    Malheureusement le code "Affichage d'une ligne" n'est pas exécuté après le trie sur une colonne.
    Ensuite pour l'appel à la procédure, (la boucle est déjà dans une procédure), si je le place l'appel dans le code "A chaque trie" d'une colonne, elle est appelée avant que le trie ne se fasse.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Bonjour,


    Je ne vois pas pourquoi " le montant perd toute signification" et il faudrait recalculer cette colonne.
    Si je comprend bien, la colonne montant est le solde du compte par exemple.
    Un solde est ce qui reste sur le compte à un instant t.
    Si l'on trie par libellé au lieu de la date et que l'on recalcule le solde en fonction du trie, on perd le solde à l'instant t.
    Bref je n'ai peut être pas compris toute la problématique au quel cas suivre une des indications de tatayo.


    EDIT : dans ce cas utiliser les événements pour détecter le trie sur la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    
    Evénement("pCalculMontant", "TABLE1", 1529)
    Cordialement

    Madsl@nD

  5. #5
    Membre actif
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Points : 231
    Points
    231
    Par défaut
    Je comprends pas le pourquoi de cette demande non-plus pour tout te dire.
    Pour moi le solde suit la "date" des lignes d'écritures.
    Si après je trie ma table sur le libellé, le solde en face de chaque ligne doit rester le solde a la date de la ligne.

    Mais pour une question de pratique, les comptables demandent à pouvoir recalculer selon le tri fait sur la table...

    Pour l'évènement même topo, la procédure est exécutée avant le tri .
    Me faudrait un moyen de l'exécuter après le tri en faite...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 217
    Points : 487
    Points
    487
    Par défaut
    Dans ce cas, il faut annuler le tri dans la procédure de l'évènement , le faire par programmation, puis faire le calcul.

    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
    
    PROCEDURE pCalculMontant()
    
    // _EVE.lParam designe le sens du tri
    // _EVE.wParam contient le numéro de la colonne
    l_Sens est une chaîne
    
    // Annuler le tri automatique
    _EVE.Retour = 0
    
    //detection du sens du tri
    SI PAS_EVE.lParam ALORS
    	l_Sens = "-"
    FIN
    
    //Trie sur la colonne
    TableTrie(TABLE1,l_Sens+TableEnumèreColonne(TABLE1,_EVE.wParam))
    
    //Votre traitement de calcul

  7. #7
    Membre actif
    Inscrit en
    Avril 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 308
    Points : 231
    Points
    231
    Par défaut
    Un grand merci, ça va mettre vachement utile de savoir qu'on peut stopper un évènement de cette manière.


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

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/08/2013, 15h35
  2. [Normalisation] Colonne calculée : dans la table ou dans une vue ?
    Par Kropernic dans le forum Schéma
    Réponses: 12
    Dernier message: 18/01/2013, 20h52
  3. colonne calculée dans une table
    Par gicquairea dans le forum WinDev
    Réponses: 6
    Dernier message: 10/10/2007, 06h10
  4. colonne calculée dans une vue
    Par jfc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/04/2006, 16h11

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