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écupération de données d'une ligne précédente d'un champ table


Sujet :

WinDev

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Récupération de données d'une ligne précédente d'un champ table
    Bonjour,
    Mon problème n'est pas facile a expliqué.
    Voilà, j'ai un tableau de 8 colonnes qui doit permettre de saisir des règlements de facture, c'est à dire qu'une facture peut être payer en plusieurs fois et je souhaite enregistrer chaque paiement.
    Il faut aussi que j'automatise les calculs.
    Par exemple, pour une facture n°001 de 5000 euros payée en 5 fois, il faudrait que j'ai dans mon tableau l'affichage suivant pour la colonne Reste à payer:

    N°|Mode|N°pièce|TTC|Mt global CHQ|Mt affecté|resteapayer|avance
    1 CHEQUE 1001 5000 1000 1000 4000 0
    1 CHEQUE 1001 5000 1000 1000 3000 0
    1 CHEQUE 1001 5000 1000 1000 2000 0
    1 CHEQUE 1001 5000 1000 1000 1000 0
    1 CHEQUE 1001 5000 1000 1000 0 0

    sauf que dans mon code actuel je ne récupère pas les bons indices donc mes calculs sont faux car l'indice retenu est l'indice de la 1ère ligne et le résultat est le suivant, c'est pas bon car il me calcule pour la 2è ligne mais il prend pas l'indice suivant pour le calcul de la 3è ligne et ainsi de suite:

    N°|Mode|N°pièce|TTC|Mt global CHQ|Mt affecté|resteapayer|avance
    1 CHEQUE 1001 5000 1000 1000 4000 0
    1 CHEQUE 1001 5000 1000 1000 3000 0
    1 CHEQUE 1001 5000 1000 1000 2000 0
    1 CHEQUE 1001 5000 1000 1000 2000 0
    1 CHEQUE 1001 5000 1000 1000 2000 0

    Ci-dessous 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
    /////////vérification du n° de facture
    POUR i=1 _A_ TableOccurrence(TABLE_REQ_Facturesvalidees)
    	nIndiceligne1=TableCherche(TABLE_REQ_Facturesvalidees.COL_Nofact,TABLE_REQ_Facturesvalidees.COL_Nofact[TableSelect(TABLE_REQ_Facturesvalidees)])
    	nIndicelignesuivante=TableSelect(TABLE_REQ_Facturesvalidees)
    	nNofact=TABLE_REQ_Facturesvalidees.COL_Nofact[nIndiceligne1]
    	nTTC=TABLE_REQ_Facturesvalidees.COL_Mt_TTC[nIndiceligne1]
    	nNopiece=TABLE_REQ_Facturesvalidees.COL_NoPiece[nIndiceligne1]
    	nMtGlobal=TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndiceligne1]
    	nMtReglement=TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndiceligne1]
    	nAvance=TABLE_REQ_Facturesvalidees.COL_Avance[nIndiceligne1]
    	nCptnopiece=nCptnopiece
    	SI nNofact=TABLE_REQ_Facturesvalidees.COL_Nofact[nIndicelignesuivante] ET nIndiceligne1<>nIndicelignesuivante ALORS
     
    		nCptnopiece=nCptnopiece+1
    		SI nCptnopiece=2 ALORS
     
     
    		SI TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]>TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]ALORS	
     
    			TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]
    			TABLE_REQ_Facturesvalidees.COL_Solde[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_MtReglement-TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]
    			TABLE_REQ_Facturesvalidees.COL_Avance[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]-TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]
     
    		SINON SI TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]<TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]ALORS	
    			TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]
    			TABLE_REQ_Facturesvalidees.COL_Solde[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]-TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]
    			TABLE_REQ_Facturesvalidees.COL_Avance[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]-TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]
     
    			SINON SI TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]ALORS	
    					TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]
    				TABLE_REQ_Facturesvalidees.COL_Solde[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_Solde[nIndiceligne1]-TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]
    				TABLE_REQ_Facturesvalidees.COL_Avance[nIndicelignesuivante]=TABLE_REQ_Facturesvalidees.COL_MTGlobal[nIndicelignesuivante]-TABLE_REQ_Facturesvalidees.COL_MtReglement[nIndicelignesuivante]
    		FIN	
    		//FIN
    	SINON SI TABLE_REQ_Facturesvalidees.COL_Nofact[nIndicelignesuivante]<>nNofact ALORS
    			Info("faux")
    			FIN
    	FIN
     
    FIN
    Y a-til un moyen de récupérer l'indice de l'avant dernière ligne s'il y a plus de deux lignes pour une même facture?

    Merci d'avance.

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    est-ce que quelqu'un connaît un moyen de parcourir toutes les lignes d'un tableau, et de récupérer chaque données des lignes qui possédent le même n° de facture?

    Merci d'avance.

  3. #3
    Membre éclairé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 970
    Points : 766
    Points
    766
    Par défaut
    Bonsoir Heiti,

    Je ne souhaite pas vous perturber, mais personnellement, j'ai opté pour un autre principe:

    1- Deux tables (ou fichiers pour HF)
    a) ENTETES_FACTURES
    b) LIGNES_FACTURES

    2- Une fenêtre avec 2 tables mémoires.

    De là,

    a) j'appelle le code client (via une combo par exemple)
    b) S'affiche les factures en cours dans la première table mémoire.
    c) Un clic sur une ligne permet l'affichage des règlements effectués dans la seconde table
    d) Saisie du règlement
    e) Validation (requête Insert)

    A noter que la première table mémoire correspond à la table (fichier) ENTETE_FACTURES et la seconde à celle de LIGNES_FACTURES.

    De là, le problème du "reste à régler" se solutionne par une simple formule dans une colonne de la 2eme table mémoire.

    Ceci n'est qu'un avis, bien entendu.
    Mais cela fonctionne assez bien de mon coté.

    Bonne soirée
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    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 Raptor92 Voir le message
    1- Deux tables (ou fichiers pour HF)
    a) ENTETES_FACTURES
    b) LIGNES_FACTURES
    +1

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2008
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Bonjour, merci pour les réponses.

    Votre principe se rapproche du mien, c'est à dire que j'ai déjà 2 tables(fichiers) :
    ENTETE_FACTURES, LIGNES_FACTURES, et une autre table REGLEMENTS dont laquelle je dois ajouter tous les règlements d'une facture.

    Ensuite sur ma fenêtre actuelle j'ai mon tableau et une combo qui affiche les clients.

    a) je choisis le client depuis la combo
    b) ma 1ère colonne du tableau lorsque je clique dessus affiche un pop-up qui récapitule toutes les factures du client (table alimentée par une requête paramétrée=>paramètre codeclient choisit depuis la combo)
    c) je double clique sur une ligne le pop-up se ferme et ça remplit mon tableau
    d) je remplis mes données du règlement
    e) je valide

    sauf que les calculs se font mal.
    Les formules de calculs sont à la sortie de la colonne Mt_Global, code dans le 1er message.

    Je vais essayer votre raisonnement, et vous tiens au courant.

    Merci.

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/11/2010, 12h00
  2. Réponses: 35
    Dernier message: 10/12/2009, 21h07
  3. [XL-2003] Récupération données d'une ligne dans userform
    Par cantal15 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/06/2009, 15h52
  4. Réponses: 2
    Dernier message: 20/03/2009, 12h25
  5. Réponses: 4
    Dernier message: 05/04/2004, 10h09

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