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épercuter les modifications dans une table suite au changement du détail d'une ligne dans une fenetre interne [WD23]


Sujet :

WinDev

  1. #1
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut Répercuter les modifications dans une table suite au changement du détail d'une ligne dans une fenetre interne
    Bonjour à tous,

    Je ne suis pas sûr que mon intitulé soit très clair je vais essayer de décrire au mieux la situation.

    J'ai une fenêtre facture qui affiche dans une table les éléments composant la facture.
    Certains items sont un regroupement d'éléments composant un kit. Par exemple j'ai un item "forfait pose porte" qui comprend la porte, la poignée la serrure et la pose.
    Pour ces items je peux afficher le détail de la ligne dans une fenêtre interne. La ligne de la table principale se déroule et affiche la table de la fenêtre interne contenant le détail.

    Jusque là ça fonctionne.

    Maintenant je souhaite pouvoir modifier le prix d'un élément affiché dans le détail (donc dans la fenêtre interne => ça j'y arrive aussi) et suite à ce changement je souhaite modifier le prix global dans la ligne de la fenêtre parent.
    C'est sur ce dernier point que je bute..... je n'arrive pas à répercuter le changement de prix dans la première table.

    J'ai bien sûr pensé à modifier directement la valeur dans le fichier de données et à recharger la table avec un tableaffiche mais niveau affichage c'est pas très propre...

    Y a t'il une possibilité de modifier juste la rubrique de la table parent..... comment faire remonter la valeur de la fenêtre interne vers la table parent?

    J'espère avoir bien expliqué le problème et vous remercie d'avance pour vos pistes !
    Bonne journée et bonne année à tous !

  2. #2
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Je n'ai pas forcément tout compris, mais ce que je ferais, c'est qu'au moment de la validation du montant de la ligne de détail (dans la FI), j'aurais un code du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MontantTotal = 0
    Pour i = 1 _A_ tableDetail..occurence
       MontantTotal += tableDetail[i].TotalLigneDetail
    FIN
    FEN_Parente.pl_AfficheMontant(MontantTotal)
    Et je ne vais pas te faire l'affront de te dire quoi mettre dans la procédure... Ni te demander si tu as pensé aux HT, TVA et TTC...

    Bonne année également.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  3. #3
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 811
    Points : 5 270
    Points
    5 270
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    L'appel de ta fenêtre interne se fait de la manière suivante:
    PROCEDURE FI_MaFI(MaTable, NoLigne)
    Dans ta FI tu peux donc avoir accès à une colonne de la ligne en cours de la table Parent :
    e.g.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaTable[NoLigne].COL_Tarif=SAI_Tarif
    En supposant que ta FI soit basée sur la table Produit et qu ton champ table (TABLE_Facture) sur la requête REQ_Facture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EcranVersFichier()
    HModifie(Produit)
    TableAffiche(MaTable,taRéExécuteRequête)
    TableEnroule(MaTable) //"Ferme" la FI
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  4. #4
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    Bonjour,
    Merci pour vos réponses et dslé pour le délai de retour.....
    voici une image du rendu pour mieux comprendre le problème
    Nom : Capture.PNG
Affichages : 171
Taille : 47,2 Ko

    Ce que je souhaite c'est pouvoir modifier des données dans la fenêtre interne et que ça se répercute directement sur la ligne de la table principale.
    Ici j'ai modifier la valeur de la main d'oeuvre en la passant à 100 (au lieu de 50 initialement)
    La somme dans la FI interne se met bien à jour (1510.09) mais la ligne de la table principale reste à 1460.09

    J'ai mis ce code dans "sortir d'une ligne de la table de la FI"

    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
    Maj_Prix_DetailFactureKit()
     
    moMontantHT, moMontantPrixRevient, moMontantPrixAchat sont des monétaires
    POUR TOUTE LIGNE DE MoiMême
     
    	moMontantHT+=TABLE_DetailFactureKit.COL_MontantHT
    	moMontantPrixRevient+=TABLE_DetailFactureKit.COL_PrixRevient
    	moMontantPrixAchat+=TABLE_DetailFactureKit.COL_PrixAchat
     
    FIN
    gPtableAppelant[gnNumeroLigne].COL_MontantHT=moMontantHT
    gPtableAppelant[gnNumeroLigne].Col_PrixRevient=moMontantPrixRevient
    gPtableAppelant[gnNumeroLigne].Col_PrixAchat=moMontantPrixAchat
     
    //info(TABLE_DetailFactureKit.COL_MontantHT[ligneTotal])
    TableEnregistre(TABLE_DetailFactureKit)
    TableEnregistre(gPtableAppelant)
    TableAffiche(gPtableAppelant,taRéExécuteRequete)
    //TableEnroule(gPtableAppelant)
    Les calculs sont bons mais les valeurs de la table principale ne changent pas.
    En plus ça me referme la FI (même en ayant supprimé "TableEnroule" => c'est surement dû aux "TableAffiche()"

    Voroltinquo es-tu sûr que
    MaTable[NoLigne].COL_Tarif=SAI_Tarif
    permette de modifier la valeur? N'est-ce pas juste un moyen de récupérer la valeur initiale dans la FI ?

    frenchsting,
    FEN_Parente.pl_AfficheMontant(MontantTotal)
    ne marche pas mieux.....

    D'autres idées ?

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    J'ai des questions :
    - Pour tes gPtableAppelant[gnNumeroLigne].COL_XXX : est-ce tu vois, en pas à pas, le changement des valeurs sur la ligne ?
    - Ensuite, les détails sont ils bien enregistrés ? càd est que tu as bien 100 en base ?

    Il y a un truc qui me chiffonne mais je n'arrive pas à mettre le doigt dessus. Je remettrai un message quand la lumière viendra...
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    Alors justement c'est là que c'est étrange:
    - le 100 est bien enregistré dans la table et le fichier mais c'est géré dans la fenêtre donc pas vraiment de soucis ici
    - pour le gPtableAppelant[gnNumeroLigne].COL_MontantHT=moMontantHT le gPtableAppelant[gnNumeroLigne].COL_MontantHT m'affiche la valeur initiale de la table parent et le moMontantHT m'affiche bien le nouveau montant HT calculé
    et après l’exécution de la ligne... pas de changement et c'est là que c'est bizarre.

    C'est pour ça que je demandait si gPtableAppelant[gnNumeroLigne].COL_MontantHT n'était pas juste en lecture......

    En espérant que ça t'éclaire.....

  7. #7
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bon ben le truc trèèèèèèès c*n : ton gnNumeroLigne est bien le bon ?
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  8. #8
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 811
    Points : 5 270
    Points
    5 270
    Billets dans le blog
    1
    Par défaut
    Je confirme que
    MaTable[NoLigne].COL_Tarif=SAI_Tarif
    permet de modifier la valeur.
    Le problème est ailleurs, ton TableAffiche annule les modifications effectuées. Dans la mesure où tu n'enregistres pas totalement ces modifications (TableEnregistre n'enregistre pas les valeurs du champ table, mais celles de la ligne en cours,) ta requête travaille avec les données enregistrées avant tes modifications (a l'écran.)
    Il faut affecter les totaux, aux colonnes de la table qui alimente ton champ TABLE_DetailFactureKit. Au besoin, il faut cocher "Enregistrer en sortie de ligne" dans la description de TABLE_DetailFactureKit.
    Ton code devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    AffecterValeurModifiées //Si la case n'est pas cochée
    //Les TableEnregistre sont inutiles
    TableAffiche(gPtableAppelant,taRéExécuteRequete)
    RQ 1
    Plutôt que de boucler, pourquoi ne pas utiliser les calculs su colonnes (comme tu l'as tenté dans ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    info(TABLE_DetailFactureKit.COL_MontantHT[ligneTotal]
    RQ 2
    Les affectations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gPtableAppelant[gnNumeroLigne].COL_MontantHT=moMontantHT
    gPtableAppelant[gnNumeroLigne].Col_PrixRevient=moMontantPrixRevient
    gPtableAppelant[gnNumeroLigne].Col_PrixAchat=moMontantPrixAchat
    sont inutiles
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  9. #9
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    Bon je stagne.... mais je vous suis très reconnaissant de vous pencher sur mon problème

    Oui mon gnNumeroLigne est bien le bon puisqu'il retourne la bonne valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Plutôt que de boucler, pourquoi ne pas utiliser les calculs sur colonnes (comme tu l'as tenté dans ton
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    info(TABLE_DetailFactureKit.COL_MontantHT[ligneTotal]
    Parce que je me suis rendu compte que le total n'était pas encore mis à jour à ce moment de l'évènement..... du coup mes totaux étaient faux

    Je viens de vérifier la case "Enregistrer en sortie de ligne" était bien cochée..... la colonne était en affichage seul je l'ai mise en saisie mais ça ne change rien....

    Je ne comprends pas pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    RQ 2
    Les affectations
    
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    123
    gPtableAppelant[gnNumeroLigne].COL_MontantHT=moMontantHT
    gPtableAppelant[gnNumeroLigne].Col_PrixRevient=moMontantPrixRevient
    gPtableAppelant[gnNumeroLigne].Col_PrixAchat=moMontantPrixAchat
    sont inutiles
    C'est pas ça qui est censé modifier les valeurs de la table parent?

  10. #10
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 811
    Points : 5 270
    Points
    5 270
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par mnssylvain Voir le message
    Parce que je me suis rendu compte que le total n'était pas encore mis à jour à ce moment de l'évènement..... du coup mes totaux étaient faux
    Les totaux son mis à jour en sortie de champ. Après, cela dépend du moment où tu déclenches ta MAJ. Logiquement à la sortie du détail (fermeture de la FI.)
    De toutes façons, le problème n'est pas là dans la mesure où normalement, la requête utilise les montants saisis dans ta fenêtre.
    Citation Envoyé par mnssylvain Voir le message
    C'est pas ça qui est censé modifier les valeurs de la table parent?
    Dans le mesure où ces affectations sont écrasées par l'exécution de la requête, elles ne modifient rien.
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  11. #11
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    Mon code est placé en "sortie d'une ligne de la table" et le total se mets à jour après l'exécution de mon code (testé en pas à pas)
    Les totaux son mis à jour en sortie de champ. Après, cela dépend du moment où tu déclenches ta MAJ. Logiquement à la sortie du détail (fermeture de la FI.)
    De toutes façons, le problème n'est pas là dans la mesure où normalement, la requête utilise les montants saisis dans ta fenêtre.
    Je reviens sur la partie en gras.... Les montants sont saisis dans la table de la FI..... mais ils n'ont pas de lien avec la requête de la fenêtre parent..... c'est pour ça que je souhaite calculer le total du détail pour l'assigner à la rubrique de la table parent .....
    Je pourrai aussi le faire en recherchant directement dans le fichier de données l'enregistrement correspondant à la ligne parent, lui affecter le nouveau montant, exécuter à nouveau la requête et afficher la table......
    Mais j'espérai pouvoir changer le montant sans avoir besoin de tout réafficher afin d'avoir une IHM plus fluide (pas de réaffichage complet de la table)

    Pour être plus clair et complet et j'ai repris tout mon fonctionnement, j'ai du faire une erreur de conception quelque part.....peut être que quelque chose vous sautera aux yeux

    J'ai donc une table "Table_Détailfacture" qui est reliée à une requête qui ne comporte qu'un seul fichier "DetailFacture"
    Cette table peut contenir des items uniques (matériel ) et des items regroupant plusieurs matériels (Kit)
    Pour ces kits j'ai donc fait une fenêtre interne qui s’ouvre sur le détail d'une ligne.
    Afin que la fenêtre ne soit disponible que pour les Kits j'ai renseigné ma fenêtre interne dans l'onglet IHM FI_DetailKit mais j'ai programmé l'attribution de la FI à l'affichage de chaque ligne

    Code affichage d'une ligne de Table_DetailFacture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Tab_DetailFactures_CalculPrix()  // mets à jour les différents prix en fonction des quantités et des remises
    index est un entier= IndiceEnCours()
    SI TABLE_DetailFactures.COL_IDKit=0 ALORS
    	TABLE_DetailFactures[index]..FenêtreDétailLigne=""
    SINON
    	TABLE_DetailFactures[index]..FenêtreDétailLigne="FI_DetailKit"
    FIN
    Cela me permet donc d'avoir le petit + en début de ligne uniquement pour les lignes concernant un KIT

    Ma fenêtre interne FI_DetailKit contient une table reliée à un fichier de données (DetailFactureKit )
    J'initialise cette fenêtre comme ceci:
    code dans Déclaration globale de Fi_DetailKit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    PROCÉDURE MaFenêtre(gPtableAppelant est un Champ,gnNumeroLigne est un entier)
    detailligne est une chaîne=(gPtableAppelant[gnNumeroLigne])
    gsValeurIDdetailFacture est une chaîne=ExtraitChaîne(detailligne,2)
    HFiltre(DetailFactureKit,IDDetailFacture,gsValeurIDdetailFacture)
    Je filtre donc les données de mon fichier pour les afficher ensuite dans la table de la FI
    Et enfin dans l’événement sortie de la ligne de la table j'ai le code que je vous avais soumis au départ:
    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
    Maj_Prix_DetailFactureKit() // => mets à jours les prix HT en fonction des remises et des quantités pour la ligne en cours
     
    moMontantHT, moMontantPrixRevient, moMontantPrixAchat sont des monétaires
    POUR TOUTE LIGNE DE MoiMême  // Boucle permettant d'avoir la somme des colonnes du détail
    	moMontantHT+=TABLE_DetailFactureKit.COL_MontantHT
    	moMontantPrixRevient+=TABLE_DetailFactureKit.COL_PrixRevient
    	moMontantPrixAchat+=TABLE_DetailFactureKit.COL_PrixAchat
    FIN
     
    // devrait mettre à jour les rubriques de la tables parent (ne fonctionne pas)
    gPtableAppelant[gnNumeroLigne].COL_MontantHT=moMontantHT
    gPtableAppelant[gnNumeroLigne].Col_PrixRevient=moMontantPrixRevient
    gPtableAppelant[gnNumeroLigne].Col_PrixAchat=moMontantPrixAchat       // en pas à pas les valeurs à de gauche ne sont pas modifiées par les valeurs de droite (moMontant...)
     
     
    //info(TABLE_DetailFactureKit.COL_MontantHT[ligneTotal]) => pas mis à jour à cette étape du déroulement => se met à jour après
    //tableenregistre(TABLE_DetailFactureKit)
    //tableenregistre(gPtableAppelant)
    TableAffiche(gPtableAppelant,taRéExécuteRequete)
    //TableEnroule(gPtableAppelant)
    Pas si simple la gestion des détails de ligne avec une FI......

  12. #12
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 811
    Points : 5 270
    Points
    5 270
    Billets dans le blog
    1
    Par défaut
    Avant d'entrer dans le vif du sujet voici quelques remarques :
    1-Comme je l'expliquais dans mon post #10, l'affectation directe dans un champ table et Tableaffiche sont mutuellement exclusifs.
    2-Les calculs sur colonnes se font en sortie de ligne
    3-Je ne comprend pas pourquoi tu tentes d'effectuer tes modifications en sortie de ligne et non en fin de saisie globale. Tu passes d'un algorithme de complexité 1 à un algorithme de complexité n voire n2 si tu boucles. J'ai peur que tu raisonnes "tableur" et non BDD.
    4-Les montants ne sont pas pris en compte dans ta requête, soit. Tu vas donc afficher les montants modifiés dans la ligne principale, toutefois, lors d'un nouvel affichage de ta facture, ces modifications ne seront pas prises en compte.
    Reprenons le problème depuis le début.
    Ton processus a pour but de gérer des lignes de factures.
    (R1) Chaque ligne comporte un produit
    (R2) Chaque produit possède un prix de base (éventuellement nul dans le cas d'une fabrication ex nihilo)
    (R3) Un produit peut avoir des composants (qui sont eux même des produits)
    (R4) Le prix total d'un produit est la somme du prix de base et du prix des composants.
    Grosso modo, l'extrait de MLD correspondant à ton problème ressemble à ça :
    Nom : 2024-01-07_17h01_26.png
Affichages : 130
Taille : 14,0 Ko
    Sommes nous s'accord ?
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

  13. #13
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    Bonjour et merci pour ta réponse

    Je raisonne surement en mode tableur... je souhaitais que les modifications se répercutent immédiatement sur la table parent (pour le sous total du kit) mais peut être que je devrais abandonner cette idée pour une modification globale en sortie du détail...

    On est à peu près d'accord sur le fonctionnement. Je dois faire en sorte que les lignes de la facture soient modifiables sans modifier le matériel. J'ai donc fait un fichier matériel indépendant sur lequel je m'appuie pour la gestion des kits et la création des factures.
    Ce qui ressemble à ça dans l'analyse , en espérant que tu n'aies pas une crise cardiaque en voyant ça !

    Nom : description analyse.PNG
Affichages : 125
Taille : 63,3 Ko

  14. #14
    Membre actif

    Homme Profil pro
    Enseignant
    Inscrit en
    Août 2006
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Août 2006
    Messages : 573
    Points : 258
    Points
    258
    Par défaut
    Bonjour,

    Me voici de retour avec enfin une explication.....
    Bien sûr comme d'habitude le problème est en général entre la chaise et le clavier

    Donc mon erreur c'est que je faisais le test sur une colonne qui est calculée lors de l'affichage de ma table.... donc du coup quelque soit la valeur que je passais par "TABLE_DetailFactureKit.COL_MontantHT[ligneTotal]", elle était ensuite recalculée.....
    Bref problème résolu....

    Et en plus en mettant le code dans la sortie de la colonne que je modifie dans le detail, la table parent se met à jour immédiatement et j'ai bien le fonctionnement comme un tableur...

    Voici le code mis en sortie de colonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TABLE_DetailFactureKit.COL_MontantHT=(TABLE_DetailFactureKit.COL_PrixUnitéVente-(TABLE_DetailFactureKit.COL_PrixUnitéVente*TABLE_DetailFactureKit.COL_Remise/100))*TABLE_DetailFactureKit.COL_Quantité
    TableEnregistre(TABLE_DetailFactureKit)  // permet de calculer la somme de la colonne
    gPtableAppelant[gnNumeroLigne].COL_PrixUnitéVente=TABLE_DetailFactureKit.COL_MontantHT[ligneTotal]  // modifie la valeur de la table parent
    TableEnregistre(gPtableAppelant) // enregistre immédiatement la table parent... => à adapter selon le traitement que l'on souhaite
    Merci beaucoup pour votre aide qui a fini par me mettre sur la bonne voie !

  15. #15
    Expert confirmé
    Avatar de Voroltinquo
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2017
    Messages
    2 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Juin 2017
    Messages : 2 811
    Points : 5 270
    Points
    5 270
    Billets dans le blog
    1
    Par défaut
    Bon courage à toi pour maintenir une base non 2FN
    Il y a peut-être plus simple, mais ça tourne.
    Quand tout a échoué utilisez l'option RTFM

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

Discussions similaires

  1. [AC-2007] Empêcher les modifications dans une table
    Par MarieRoy dans le forum Sécurité
    Réponses: 1
    Dernier message: 30/05/2017, 21h04
  2. Tracer les modification dans une table Oracle
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 3
    Dernier message: 21/09/2010, 11h48
  3. Réponses: 6
    Dernier message: 28/03/2007, 09h02
  4. empecher les modifications d'une table
    Par moicats dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2006, 16h39
  5. Tracer les modifications d'une table
    Par vinze11 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/02/2006, 13h44

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