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 :

Réalisation d'une procédure


Sujet :

WinDev

  1. #1
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Réalisation d'une procédure
    Nom : Modele Cotisation.JPG
Affichages : 364
Taille : 41,9 Ko
    Bonjour à tous Je veux réaliser une procédure qui permet au mutualiste d'effectuer son versement et le versement est utilisé pour le cotisation
    un Exemple plus précis
    un mois de cotisation = 500
    si le mutualiste effectue un versement de 500 c'est soit pour le mois de janvier 2015
    si il paye par la suite 500 c'est pour le mois de février 2015
    Mais si il paye 2000, les 2000 c'est 500 pour Mars 2015, 500 pour Mai 2015, 500 pour juin 2015, 500 pour juillet 2015
    Cette procédure doit me permettre de partager le versement du mutualiste sur le nombre de mois équivalent à son versement
    Merci à vous

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Pouvez vous nous poster votre code et/ou nous indiquer le point qui vous pose problème.
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 359
    Points : 508
    Points
    508
    Par défaut Modification pour conserver une cohérence de la discussion
    Slt,

    Mais si tu veux que nous t'aidions, comme le dis très bien dsr57, il faut que tu nous dises ce qui te pose problème ?

    Ou peut-être ne sais-tu pas par où commencer et là c'est autre chose. On ne peut que te conseiller de commencer par l'auto formation Windev, tu devrais y apprendre beaucoup de chose. Ensuite, ce forum d'entraide prendra tout son sens puisqu'il te permettra de demander de l'aide sur les détails qui te pose problème, même s'ils relèvent de l'informatique de base, à partir du moment où tu as commencé la démarche et fais l'effort de chercher avant de demander.

    Aide toi et le forum t’aidera ;-)
    Je connais, suis passé par là, comme la plupart d’ailleurs d'entre nous.
    Les solutions les plus simples sont les plus efficaces

  4. #4
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Nom : Cotisation Membre.JPG
Affichages : 183
Taille : 59,5 Ko

    Voici 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    // declaration des variables	
    	dMadate est une Date
    	j, k est un entier
     
    	// Slection des inforations relatifs au mutualiste en cour
    	REQ_Selection_Mutualiste_Paraemetre.ParamIDMUTUALISTE = SC_Fiche.COMBO_IDMutualiste
    	HExécuteRequête(REQ_Selection_Mutualiste_Paraemetre)
     
    	// La variable Madate reçoit la date d'adhésion du mutualiste
    	dMadate = REQ_Selection_Mutualiste_Paraemetre.datMutualiste
     
    	j = modulo(SC_Fiche.SAI_MontantVersement, REQ_Selection_Mutualiste_Paraemetre.montantCotisation)
     
    	SI j <> 0 ALORS
    		Erreur("Veuillez entrer un Multiple de : " + REQ_Selection_Mutualiste_Paraemetre.montantCotisation)
    		RETOUR
    	FIN
     
    	// On l'ajoute dans la table versement
    	EcranVersFichier()
    	HAjoute(Versement)
     
     
    	// Le nombre de versement à effectuer dans la table cotisation
    	j = SC_Fiche.SAI_MontantVersement / REQ_Selection_Mutualiste_Paraemetre.montantCotisation
     
    	REQ_Selection_Derniere_Cotisation_Mutualiste.ParamIDMUTUALISTE = SC_Fiche.COMBO_IDMutualiste
    	HExécuteRequête(REQ_Selection_Derniere_Cotisation_Mutualiste)
     
    	SI REQ_Selection_Derniere_Cotisation_Mutualiste.IDMois <> 0 ALORS
     
    		POUR i=1 A j
     
    			REQ_Selection_Derniere_Cotisation_Mutualiste.ParamIDMUTUALISTE = SC_Fiche.COMBO_IDMutualiste
    			HExécuteRequête(REQ_Selection_Derniere_Cotisation_Mutualiste)
     
    			SI REQ_Selection_Derniere_Cotisation_Mutualiste.IDMois = 12 ALORS				
    				Cotisation.anneeCotisation = REQ_Selection_Derniere_Cotisation_Mutualiste.anneeCotisation + 1
    				Cotisation.IDMois = 1				
    			SINON				
    				Cotisation.anneeCotisation = REQ_Selection_Derniere_Cotisation_Mutualiste.anneeCotisation
    				Cotisation.IDMois = REQ_Selection_Derniere_Cotisation_Mutualiste.IDMois + 1				
    			FIN
     
    			Cotisation.IDMutualiste = SC_Fiche.COMBO_IDMutualiste
    			Cotisation.IDVersement = Versement.IDVersement
    			Cotisation.datCotisation = SC_Fiche.SAI_DatVersement
    			Cotisation.montantCotisation = REQ_Selection_Mutualiste_Paraemetre.montantCotisation
    			HAjoute(Cotisation)
     
    		FIN	
     
    	SINON	
     
    		Cotisation.IDMutualiste = SC_Fiche.COMBO_IDMutualiste
    		Cotisation.IDVersement = Versement.IDVersement
    		Cotisation.datCotisation = SC_Fiche.SAI_DatVersement
    		Cotisation.montantCotisation = REQ_Selection_Mutualiste_Paraemetre.montantCotisation
    		Cotisation.IDMois = dMadate..Mois
    		Cotisation.anneeCotisation = dMadate..Année
    		HAjoute(Cotisation)
     
    		k = j - 1
     
     
    			POUR i = 1 A k
     
    			FIN
    			REQ_Selection_Derniere_Cotisation_Mutualiste.ParamIDMUTUALISTE = SC_Fiche.COMBO_IDMutualiste
    			HExécuteRequête(REQ_Selection_Derniere_Cotisation_Mutualiste)
     
    			SI REQ_Selection_Derniere_Cotisation_Mutualiste.IDMois = 12 ALORS				
    				Cotisation.anneeCotisation = REQ_Selection_Derniere_Cotisation_Mutualiste.anneeCotisation + 1
    				Cotisation.IDMois = 1				
    			SINON				
    				Cotisation.anneeCotisation = REQ_Selection_Derniere_Cotisation_Mutualiste.anneeCotisation
    				Cotisation.IDMois = REQ_Selection_Derniere_Cotisation_Mutualiste.IDMois + 1				
    			FIN
     
    			Cotisation.IDMutualiste = SC_Fiche.COMBO_IDMutualiste
    			Cotisation.IDVersement = Versement.IDVersement
    			Cotisation.datCotisation = SC_Fiche.SAI_DatVersement
    			Cotisation.montantCotisation = REQ_Selection_Mutualiste_Paraemetre.montantCotisation
    			HAjoute(Cotisation)
     
    	FIN
    Il fonctionne bien mais quelque fois je rencontre des difficultés surtout au niveau de la boucle
    En effet, cette requête:

    REQ_Selection_Derniere_Cotisation_Mutualiste.ParamIDMUTUALISTE = SC_Fiche.COMBO_IDMutualiste

    lors du parcourt de la boucle retourne souvent la même information

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    HExecuteRequete ne se positionne pas sur le résultat de la requête

    ça exécute juste la requête, pour se positionner sur le résultat il faut faire un POUR TOUT ou un parcours avec HLitPremier/HLitSuivant, comme indiqué dans l'aide

  6. #6
    Candidat au Club
    Inscrit en
    Février 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    J'ai essayé avec le deux méthodes mais toujours le même résultat voici les méthodes

    La première méthode

    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
    34
    35
    36
    POUR i = 1 A j		
     
          REQ_Selection_Derniere_Cotisation.ParamIDMEMBRE = SC_Fiche.COMBO_IDMembre
          ResExecution = HExécuteRequête(REQ_Selection_Derniere_Cotisation)
     
          SI ResExecution = Faux ALORS
                Erreur("Erreur d'initialisation de la requête" + RC + HErreurInfo())
                RETOUR
          FIN
          HLitPremier(REQ_Selection_Derniere_Cotisation)
          TANTQUE PAS HEnDehors()				
     
     
                 SI REQ_Selection_Derniere_Cotisation.IDMois = 12 ALORS					
                        Cotisation.aneeCotisation = REQ_Selection_Derniere_Cotisation.aneeCotisation + 1
                        Cotisation.IDMois = 1	
                 SINON				
                       Cotisation.aneeCotisation = REQ_Selection_Derniere_Cotisation.aneeCotisation
                       Cotisation.IDMois = REQ_Selection_Derniere_Cotisation.IDMois + 1	
                 FIN							
     
                 Cotisation.IDVersement = Versement.IDVersement
                 Cotisation.datCotisation = SC_Fiche.SAI_DatVersement
                 Cotisation.montantCotisation = REQ_Selection_Membre_Groupe_Parametrer.montantCotiGroupe
                 Cotisation.IDMembre = SC_Fiche.COMBO_IDMembre
                 Cotisation.datjourC = DateHeureSys()
                 HAjoute(Cotisation)
     
                 HLitSuivant(REQ_Selection_Derniere_Cotisation)
     
            FIN
     
    HLibèreRequête(REQ_Selection_Derniere_Cotisation)	
     
     
    FIN // POUR i = 1 A j

    La deuxième méthode

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    POUR i = 1 A j		
     
    POUR i = 1 A k
     
     
    REQ_Selection_Derniere_Cotisation.ParamIDMEMBRE = SC_Fiche.COMBO_IDMembre
     
    ResExecution = HExécuteRequête(REQ_Selection_Derniere_Cotisation)
     
    SI ResExecution = Vrai ALORS
     
    POUR TOUT REQ_Selection_Derniere_Cotisation 
     
     
    SI REQ_Selection_Derniere_Cotisation.IDMois = 12 ALORS					
     
    Cotisation.aneeCotisation = REQ_Selection_Derniere_Cotisation.aneeCotisation + 1
     
    Cotisation.IDMois = 1	
     
    SINON				
     
    Cotisation.aneeCotisation = REQ_Selection_Derniere_Cotisation.aneeCotisation
     
    Cotisation.IDMois = REQ_Selection_Derniere_Cotisation.IDMois + 1	
     
    FIN
     
     
    Cotisation.IDVersement = Versement.IDVersement
     
    Cotisation.datCotisation = SC_Fiche.SAI_DatVersement
     
    Cotisation.montantCotisation = REQ_Selection_Membre_Groupe_Parametrer.montantCotiGroupe
     
    Cotisation.IDMembre = SC_Fiche.COMBO_IDMembre
     
    Cotisation.datjourC = DateHeureSys()
     
    HAjoute(Cotisation)
     
    FIN // FIN POUR TOUT REQ_Selection_Derniere_Cotisation 
    FIN //SI ResExecution = Vrai
     
    FIN // POUR i = 1 A K
    Voici la vrai problème lors d'une nouvelle insertion le code fonctionne correctement
    mais c'est lors d'une modification que le problème se pose

  7. #7
    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 faut penser à utiliser les balises "code" pour rendre celui-ci un peu plus lisible...
    Je ne sais pas s'il s'agit d'une erreur de copier/coller, mais je vois déjà un problème dans la "deuxième version":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    POUR i = 1 A j 
     
     POUR i = 1 A k
    Tu fait deux boucles imbriquées en utilisant la même variable. Ca ne peut pas fonctionner !

    Cela étant dit, je te suggère t'utiliser les outils de WinDev: pose un point d'arrêt sur la première ligne de ton code, lance le projet, puis quand l'exécution s'arrête sur le point d'arrêt, tu peux continuer pas à pas en surveillant le contenu des variables.

    Tatayo.

    P.S. j'ajoute un dernier petit conseil: i,j,k comme nom de variable, ce n'est pas très parlant. Il FAUT utiliser des noms explicites pour rendre ton code compréhensible, même pour une simple boucle.

Discussions similaires

  1. [WD17] Réaliser une procédure automatique
    Par karim15 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/04/2013, 09h44
  2. Procédures de réalisation d'une interface utilisateur
    Par noviceman1 dans le forum Débuter
    Réponses: 2
    Dernier message: 07/03/2011, 15h15
  3. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  4. Annulation des opérations réalisées par une procédure
    Par philoflore dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2008, 17h55
  5. Fin de programme dans une procédure
    Par Sinclair dans le forum Langage
    Réponses: 13
    Dernier message: 29/11/2002, 22h30

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