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 :

Requête avec report des soldes précédents [WD22]


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : juin 2015
    Messages : 85
    Points : 87
    Points
    87
    Par défaut Requête avec report des soldes précédents
    Bonjour à tous j ai un souci ,dans mon mini application de compte bancaire .Je m explique,le compte à subit 7 mouvement entre la période du 29/10/2019 au 01/11/2019 ce qui lui donne un solde Crediteur de 121307 ce qui est normal car ma requête fait un select from.....sum((...)) avec paramètre les 2 bornes de mes date ,mais la pour avoir les bon soldes il faut faire le parcours de tout le fichier ce qui est normal
    Nom : capture1.jpeg
Affichages : 102
Taille : 99,1 Ko

    maintenant lorsque j exclu les date antérieurs j ai un solde créditeur de 6307 (qui n est pas le bon solde en compte)

    Nom : capture 2.jpeg
Affichages : 101
Taille : 61,5 Ko

    Alors ce que je voudrais faire s est de pouvoir par exemple en date du 01/11/2019 au 01/11/2019 avoir le solde du 29/10/2019 au 31/10/2019 qui sera comme repport de ces dates (car on peut décider de connaitre le solde d un compte et si jamais l individu a un compte ouvert par exemple en 1995 et que son derniers mouvement a lieu le 01/11/2019 on peut décider d éditer son compte de du 20/01/2018 au 01/11/2019 mais il faudrait que le système puisse prendre en compte les element de 1995 au 20/01/2018 qu il devra reporter sous forme de solde précédent et ce solde sera additionné à celle du 20/01/2018 au 01/11/2019 et la on pourra un bon solde)
    Nom : Capture4.PNG
Affichages : 85
Taille : 287,6 Ko

    voici à quoi ressemble mon etat
    Nom : Capture5.PNG
Affichages : 98
Taille : 29,5 Ko

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    avril 2010
    Messages
    677
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2010
    Messages : 677
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour
    Executes la requete pour la premiere periode. Mets le resultat dans une variable.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 693
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,
    Si nous avions ton analyse et/ou la requête qui alimente l'état, ce serait plus simple.
    Il y a peut être plus simple, mais ça tourne

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : juin 2015
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par Voroltinquo Voir le message
    Bonjour,
    Si nous avions ton analyse et/ou la requête qui alimente l'état, ce serait plus simple.
    Bonjour
    Nom : Capture6.PNG
Affichages : 84
Taille : 33,8 Ko

    Nom : Capture7.PNG
Affichages : 84
Taille : 23,5 Ko
    Code SQL : 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
    34
    35
    36
    SELECT 
    	Mouvement.IDMouvement AS IDMouvement,	
    	Mouvement.Piece_comptable AS Piece_comptable,	
    	Mouvement.Date_Mouv AS Date_Mouv,	
    	Ecr_compt.Num_Compte AS Num_Compte,	
    	Compte.Lib_Compte AS Lib_Compte,	
    	Mouvement.Code_Journal AS Code_Journal,	
    	Ecr_compt.Description_Ecr AS Description_Ecr,	
    	Mouvement.Valider AS Valider,	
    	Ecr_compt.Credit_Ecr AS Credit_Ecr,	
    	SUM(( Ecr_compt.Credit_Ecr - Ecr_compt.Debit_Ecr ) ) AS Solde,	
    	Ecr_compt.Debit_Ecr AS Debit_Ecr
    FROM 
    	Mouvement,	
    	Ecr_compt,	
    	Compte
    WHERE 
    	Compte.Num_Compte = Ecr_compt.Num_Compte
    	AND		Mouvement.IDMouvement = Ecr_compt.IDMouvement
    	AND
    	(
    		Mouvement.Valider = 1
    		AND	Mouvement.Date_Mouv BETWEEN {ParamDate_Mouv} AND {ParamDate_Mouv1}
    		AND	Ecr_compt.Num_Compte = {ParamNum_Compte}
    	)
    GROUP BY 
    	Mouvement.IDMouvement,	
    	Mouvement.Piece_comptable,	
    	Mouvement.Date_Mouv,	
    	Ecr_compt.Num_Compte,	
    	Mouvement.Code_Journal,	
    	Ecr_compt.Description_Ecr,	
    	Mouvement.Valider,	
    	Ecr_compt.Credit_Ecr,	
    	Ecr_compt.Debit_Ecr,	
    	Compte.Lib_Compte

    et je rempli mon état par
    Nom : Capture8.PNG
Affichages : 83
Taille : 34,2 Ko

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : juin 2015
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par Yusep Voir le message
    Bonjour
    Executes la requete pour la premiere periode. Mets le resultat dans une variable.
    Dans ce cas il va falloir au préalable remplir mon état par programmation .?

  6. #6
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 676
    Points : 5 860
    Points
    5 860
    Par défaut
    Tu as en gros 2 façons d'opérer.

    1. Modifier la requête pour qu'elle renvoie une ligne de plus que la requête actuelle. Cette ligne va arriver en premier, et elle apparaîtra en 1er dans le document.
    2. Laisser la requête comme elle est. Modifier l'Etat en ajoutant une ligne en 'entête de page' ou dans 'entete de document', puis faire en sorte d'écrire les bonnes données dans cette nouvelle ligne.

    Les 2 plans sont valables.

    Yusep semble partir vers l'option 2. Voroltinquo semble partir vers l'option 1.

    Il faut que tu définisses ton plan (option 1 ou option 2), et ensuite, les gens pourront t'aider.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : juin 2015
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    je suis partant pour l'option1 Modifier la requête pour qu'elle renvoie une ligne de plus que la requête actuelle. Cette ligne va arriver en premier, et elle apparaîtra en 1er dans le document

  8. #8
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 676
    Points : 5 860
    Points
    5 860
    Par défaut
    Donc dans ce cas, il faut faire quelque chose comme ça :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select Mouvement.IDMouvement AS IDMouvement,	  etc etc 
    from  etc etc 
    UNION
    select  etc etc etc

    Après le mot UNION, c'est ta requête actuelle, pas de changement.
    Avant le mot UNION, il faut mettre une requête qui va renvoyer une seule ligne, avec les données que tu veux afficher dans la 1ère ligne de ton rapport.

    Les 2 requêtes doivent renvoyer le même nombre de colonnes, dans le même ordre.
    Il faut regarder l'aide sur le mot UNION si tu ne connais pas.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : juin 2015
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    Bonsoir finalement j ai choisi l'option 2 qui m était plus abordable j ai pu avoir à quelque chose

    voici le code que je met à l ouverture de mon état

    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
     
        //Déclaration des  variables permettant de faire la sommes sur rupture Credit et Debit de la requete "REQ_Grand_Livre" 
        // avec 2 bornes Min et Max ---Mouvement.Date_Mouv BETWEEN {ParamDate_Mouv} AND {ParamDate_Mouv1}---sur date
    rSomme_Grand_Livre_C, rSomme_Grand_Livre_D est un réel 
        //Déclaration des  variables permettant de faire la sommes sur rupture Credit et Debit de la requete "REQ_Grand_Livre_Prec" 
        // avec une seule borne 'Mouvement.Date_Mouv < {ParamDate_Mouv1}' sur date ce qui nous permettra de ressortir les valeur qui sont en deca des bornes 
    rsomme_Grand_Livre_Prec_C,rSomme_Grand_Livre_Prec_D est un réel
     
    //*****
    HExécuteRequête(REQ_Grand_Livre_Prec,hRequêteDéfaut,FEN_Rapport_cmpt_gle.SAI_Date3,FEN_Rapport_cmpt_gle.SAI_compte_aux)
    POUR TOUT REQ_Grand_Livre_Prec   
    	rsomme_Grand_Livre_Prec_C +=REQ_Grand_Livre_Prec.Credit_Ecr
    	rSomme_Grand_Livre_Prec_D +=REQ_Grand_Livre_Prec.Debit_Ecr
    	Lib_solde_prec_solde=(rsomme_Grand_Livre_Prec_C-rSomme_Grand_Livre_Prec_D)
    FIN
    Lib_solde_prec_credit=rsomme_Grand_Livre_Prec_C
    Lib_solde_prec_debit=rSomme_Grand_Livre_Prec_D
     
     
    HExécuteRequête(REQ_Grand_Livre,hRequêteDéfaut,FEN_Rapport_cmpt_gle.SAI_Date3,FEN_Rapport_cmpt_gle.SAI_Date4,FEN_Rapport_cmpt_gle.SAI_compte_aux)
    POUR TOUT REQ_Grand_Livre 
    	rSomme_Grand_Livre_C +=REQ_Grand_Livre.Credit_Ecr
    	rSomme_Grand_Livre_D  +=REQ_Grand_Livre.Debit_Ecr
    FIN
     
    CALC_Credit_Ecr=(rsomme_Grand_Livre_Prec_C+rSomme_Grand_Livre_C)
    CALC_Debit_Ecr=(rSomme_Grand_Livre_Prec_D+rSomme_Grand_Livre_D)
     
    HExécuteRequête(REQ_GL,hRequêteDéfaut,FEN_Rapport_cmpt_gle.SAI_compte_aux)
    et voici le code que je met à Lecture des données de l etat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LIB_Solde +=(LIB_Credit_Ecr1-LIB_Debit_Ecr1)
    j ai ce resultat
    Nom : Capture9.PNG
Affichages : 34
Taille : 41,3 Ko

    mais entemps normal je devrai avoir ceci

    Nom : Capture10.PNG
Affichages : 34
Taille : 22,9 Ko

    il doit y avoir un dédail qui m échape surtout sur ce code LIB_Solde +=(LIB_Credit_Ecr1-LIB_Debit_Ecr1)

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2015
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : juin 2015
    Messages : 85
    Points : 87
    Points
    87
    Par défaut
    Bonjour j ai pu trouver la solution Merci
    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
      SI Lib_solde_prec_solde  =0 ALORS
      	LIB_Solde = (LIB_Credit_Ecr1-LIB_Debit_Ecr1)+LIB_Solde
     
      FIN
     
     
     SI Lib_solde_prec_solde  <> 0 ALORS
     	SI ncpt = 1 ALORS	
    	LIB_Solde =Lib_solde_prec_solde + (LIB_Credit_Ecr1-LIB_Debit_Ecr1)
    SINON
     
    	LIB_Solde = (LIB_Credit_Ecr1-LIB_Debit_Ecr1)+LIB_Solde	
    FIN
    FIN
    ncpt ++

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 10/02/2010, 15h11
  2. export requête avec choix des champs à exporter
    Par NATOU2 dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/12/2008, 19h18
  3. sauvegarde avec effacement des données précédentes
    Par cbleas dans le forum Administration
    Réponses: 2
    Dernier message: 15/09/2008, 12h03
  4. requête avec vérification des données
    Par dieudo dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/02/2008, 12h25
  5. Problème de requête avec cumul des conditions sur un champ
    Par UtopieAmbiante dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2006, 11h52

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