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 :

[WD9]info d'un tableau vers un tableau d'une autre fenêtre


Sujet :

WinDev

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut [WD9]info d'un tableau vers un tableau d'une autre fenêtre
    Bonjour tout le monde,

    Voilà j'ai 2 fenêtre dont une Qui se nomme "SuiviInter" et la deuxième se nomme "ChoixActe".

    Dans la première fenêtre j'ai un bouton qui me permet d'ouvrir ma deuxième fenêtre et un tableau avec une colonne (Désignation).
    Dans la deuxième fenêtre j'ai un tableau nommé "Table_1" composé de 3 colonnes qui sont Référence, Désignation, PU-HT. Et dans cette même fenêtre j'ai un bouton qui me permet de remplir le tableau de ma première fenêtre par rapport à la ligne de "Table_1" que j'aurais choisi.

    Donc je souhaiterais pouvoir sélectionner une ligne du tableau de ma deuxième fenêtre et remplir la colonne de mon tableau de la première fenêtre.

    Je vois pas comment je peux faire cela, quelqu'un pourrais-t'il m'aider s'il vous plais??

    Merci d'avance!!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Voir ExecuteTraitement dans l'aide

    Ensuite tu fais une procédure qui te permet de remplir ta table.

  3. #3
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à kwasin
    J'ai regardé l'aide pour ExecuteTraitement mais je vois pas ce que je peux faire avec cela pour mon problème??

    Cordialement.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Faudrait chercher un peu, non ?

    Bon, si j'ai compris ton affaire.

    Dans la 1ere fenêtre, tu crées une procédure pour remplir ta colonne à partir des données que sélectionneras dans la 2eme fenetre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Procedure P_RemplitMaTable( Param1, Param2, Param3)
    ---La tu inseres le code de ta procedure
    Dans le bouton de ta 2eme fenêtre, tu récupères les données à envoyer à la fenêtre1, et tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExecuteTraitement( fenetre1.P_RemplitMaTable, trtProcedure, Valeur1, Valeur2, Valeur3)
    Et le tour est joué.

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à kwasin
    Je vient d'essayer ce que tu ma dit mais j'ai une erreur et je vois pas pourquoi.

    Voici le code de la procédure (je sais pas trop si c'est bien ça que je dois mettre!!) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PROCEDURE P_remplitTableau()
    SuiviInter.Table1.Designation = Choix_Acte.Table_ACTE.A_DESIGNACT
    Voici l'appel de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExécuteTraitement(SuiviInter.P_remplitTableau(), trtProcedure)
    Voici l'erreur de compilation :
    Erreur :Aucune syntaxe de ExécuteTraitement ne correspond.
    Choix_Acte.Choix, Clic, ligne 1, colonne 1
    Cordialement.

  6. #6
    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
    Le message d'erreur est explicite non ?
    Tu as une erreur de syntaxe sur ExécuteTraitement()
    Regarde l'aide pour avoir la syntaxe correcte

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à Guardian
    J'ai bien compris le message mais je vois pas ou se situe l'erreur de syntaxe.

    Je viens de trouver le pourquoi du problème : c'étais parce que j'avais mis les parenthèse de la procédure.

    Mais lorsque je teste mon application ça fonctionne pas.

    Voici les étapes que le debugage effectue :
    * J'ouvre la première fenêtre (=SuiviInter)
    * Je clique sur le bouton qui ouvre la deuxième fenêtre (=Choix actes)
    * Choix actes est ouverte, je sélectionne la ligne souhaitée et je clique sur le bouton(ou se situe lapel de la procédure[ExécuteTraitement])
    * il atteint ExécuteTraitement puis il rentre dans la procédure
    * mais j'obtiens que la colonne de ma première fenêtre = "".

    Mais je n'est rien qui s'affiche dans ma colonne désignation de ma première fenêtre.
    Avez-vous une idée pour résoudre mon problème car je vois pas trop.

    Merci d'avance!!

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Personnellement, j'aurais créé ma procédure avec un paramètre (c'est plus propre) et aurait affecte à ma colonne le paramètre passé !

    Voila !

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à kwasin
    Bonjour,

    Désolé de répondre que maintenant mais pas eu le temps plustôt.

    Donc j'ai rajouter un paramètre comme tu ma conseillé ce qui me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Code de la procédure :// Syntaxe :
    //P_remplitTableau (<Col_Des>)
    //
    // Paramètres :
    // 	Col_Des : désignation
    // Valeur de retour :
    // 	Aucune
    
    PROCEDURE P_remplitTableau(Col_Des)
    Choix_Acte.Table_ACTE.A_DESIGNACT = SuiviInter.Table1.Designation
    Col_Des = Choix_Acte.Table_ACTE.A_DESIGNACT
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Code d'appel de la procédure (derrière bouton) : Col_Des est une chaîne
    ExécuteTraitement(SuiviInter.P_remplitTableau, trtProcédure, Col_Des)
    Malheureusement ça n'a pas réglé totalment le problème c'est à dire lorsque je choisi la désignation dans ma deuxième fenêtre et que je clique sur le bouton ben il me fait disparaitre la désignation mais rien ne s'affiche dans le tableau de ma première fenêtre.

    J'ai réalisé un debug et je me suis rendu compte que mon paramètre est toujours égal à "".

    Si quelqu'un a une idée, c'est pas de refus car je vois pas trop comment faire.

    Merci d'avance!!

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Bonjour,

    Je ne comprend rien à ton code, et pense ne pas comprendre le but de ta manoeuvre !

    Quel est, exactement, le but du clic sur le bouton de la fenêtre 2 ?

    Pourrais-tu joindre les images des 2 fenêtres et des explications claires de ce que tu veux obtenir ?

    Enfin, que sais-tu de la programmation, en général ? et Windev en particulier ?

  11. #11
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à kwasin
    Voici ci-joint dans le document Word les 2 fenêtres.

    La première fenêtre : "SuiviInter"
    La deuxième fenêtre : "ChoixActe"

    Lorsque je clique sur le bouton 'Choix d'actes' de "SuiviInter" la fenêtre "ChoixActe" s'ouvre. {Jusque la pas de souci}
    Ensuite ma deuxième fenêtre donc "ChoixActe" me permet de choisir l'acte que je souhaite sélectionner dans la liste du tableau.
    Lorsque l'acte est sélectionné, je clique sur le bouton 'Choisir' de ma deuxième fenêtre et je souhaiterais que l'acte sélectionné soit affiché dans le tableau de "SuiviInter". Et ainsi de suite, ben oui car je peux avoir plusieurs actes!!

    J'espère avoir étais assez claire?? !!

    Cordialement!!

  12. #12
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Oui, là tu as été très clair, et je ne vois aucune difficulté !

    Donc dans ta fenêtre "SuiviInter" tu créés une procedure "P_RecupActe"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Procedure P_RecupActe( cp_Acte est une chaine)
     
    TableAjoute( "TableActes", cp_Acte)
    Le code du bouton de la fenêtre "ChoixActe" devrait correspondre à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Local
       cl_Acte est une chaine
     
    cl_Acte = Col_DesignationActe[ Table_Actes]
    ExecuteTraitement( SuiviInter.P_RecupActe, trtProcedure, cl_Acte)
    Et hop, le tour est joué !

  13. #13
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à kwasin
    Ok merci beaucoup effectivement ça fonctionne, j'en étais pas loin enfin faut que je revoye le fonctionnement des procédure jcroi bien mais merci tu m'a bien éclairé!!

    Il me reste a faire pour un produit!!

    Merci pour tout!!

    P.S. : je mettrais résolu une fois que j'aurais fais pour produit c'est pour être sur que j'ai réussit!!

    Cordialement

  14. #14
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut
    J'ai eu l'idée de rajouter une colonne dans mon tableau de ma fenêtre "SuiviInter" que je nommerai "Acte_ou_produit" auquel je souhaiterais affecter "Acte" lorsque j'ai choisi un acte et "Produit" si j'ai choisi un produit.
    Si on regarde bien le document word précédemment envoyé, on voit bien que l'on peux choisir soit acte, soit produit.

    Pour cela j'ai réalisé le code suivant (je montre que si c'est pour un acte vu que pour le produit c'est pareil) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Procedure P_RecupActe( cp_Acte est une chaine)
    TableAjoute( "TableActes", cp_Acte)
    Table1.Acte_ou_Produit = "Acte"
    Cela fonctionne que pour le premier choix car si je choisi un deuxième acte, ça m'affiche juste la désignation du deuxième acte.

    EXEMPLE :
    Je choisit un acte : "Essai simple" dans le tableau de ma fenêtre "SuiviInter" ça m'affiche :
    Désignation Acte_ou_produit
    Huile moteur Acte
    Et si je choisi un deuxième acte : "Essai frein" alors ça m'affiche la chose suivante:
    Désignation Acte_ou_produit
    Essai simple Acte
    Essai frein

    Je pense que mon erreur est tout bête surement du fait que je devrais dire que c'est pour chaque choix d'acte mais je vois pas comment le traduire.

    Merci d'avance!!

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    C'est tout ce qui de plus normal !

    Modifies ta procedure P_RecupActe de cette manière !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Procedure P_RecupAct( cp_Acte est une chaine)
    TableAjouteLigne( TablesActes, cp_Acte, "Acte")
    Créés toi ensuite une seconde procedure P_RecupProd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Procedure P_RecupProd( cp_Prod est une chaine)
    TableAjouteLigne( TablesActes, cp_Prod, "Produit")

    Maintenant, si je peut me permettre, quelques conseils.

    1) Je stockerais dans ma table "Actes_et_Produits" de "suiviinter" les "références" des produits et des actes ( dans des colonnes invisibles, pourquoi pas) afin de simplifier le stockage des données.
    2) Je me pencherais sérieusement sur le guide d'autoformation de Windev, car je pense que tu n'as pas complètement saisi le fonction des tables!

    Quand tu écris
    Code :
    Procedure P_RecupActe( cp_Acte est une chaine)
    TableAjoute( "TableActes", cp_Acte)
    Table1.Acte_ou_Produit = "Acte"
    Le "TableAjoute" ajoute une ligne en fin de table.
    Table1.Acte_ou_Produit = "Acte" modifie la valeur de la colonne Acte_ou_Produit de la ligne en cours ! TableAjoute ne modifie pas la ligne en cours !

  16. #16
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à kwasin
    Merci pour ton aide. J'aurais pas pensé pouvoir faire comme cela!!

    Après avoir cherché sur tout le forum windev de "developpez.com" et fait quelques recherches je n'ai pa trouvé mon bonheur donc j'espère le trouver dans cette discussion.

    J'aimerais que l'on puisse pas rajouter plusieurs fois le même acte ou le même produit dans la table de ma fenêtre "SuiviInter". Si quelqu'un a une idée??

    Merci d'avance!!

  17. #17
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    Peut etre que le plus simple aurait été de faire une table reliée a un fichier.

    Les ajours se feraient avec un hajoute. En mettant une clef unique sur le fichier et en testant herreurdoublon le tour est joué.

    Sinon avant le tableajoute faire une boucle sur la table pour voir si il y est déja...
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  18. #18
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à mogwai162
    Ben faire une table reliée a un fichier dans mon cas ne m'étais pas trop possible.

    Ben oui j'y es bien pensé a faire une boucle avant le table ajoute mais je vois pas comment traduire les choses suivantes :
    * la recherche dans la table en fonction de la sélection.

    En gros je vois pas comment faire ma boucle, enfin j'ai pensé plutôt un "si" mais c'est tout!!

    Cordialement.

  19. #19
    Membre chevronné
    Avatar de mogwai162
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 376
    Points : 1 860
    Points
    1 860
    Par défaut
    quelquechose dans le genre là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour i = 1 à tableoccurrence(TablesActes)
    si 'nomcol'[i] = cp_Acte alors
       Erreur("existe déjà")
       reprisesaisie (??)
    fin
     
    TableAjouteLigne( TablesActes, cp_Acte, "Acte")
    Patrick Catella

    Je ne réponds pas aux messages privés si ceux ci suivent un sujet. Il est préférable pour tous de poursuivre la discussion dans le sujet d'origine.

    Je suis Concepteur développeur Windev (10 ans) et Windev mobile (4 ans) en recherche d'emploi. J'etudie toute proposition

  20. #20
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à mogwai162
    Je viens d'essayer mais j'ai un nouveau problème.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    PROCEDURE P_RecupActe(cp_Acte est une chaîne, cp_ref est une chaîne)
                 i est une chaîne
    	POUR i = 1 A TableOccurrence(Table1)
    		SI Designation[i] = cp_Acte ALORS
    			Erreur("existe dèja")
    			RepriseSaisie(Choix_Acte)
    		FIN
    	FIN	
                 TableAjouteLigne("Table1" , cp_ref, cp_Acte, "Acte")
    Mon problème c'est qu'il m'autorise plus à insérer plusieurs lignes. Voici l'erreur affiché :
    Erreur à la ligne 12 du traitement Procédure locale P_RecupActe.
    Opérateur ++ interdit
    et il me renvoie à la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    POUR i = 1 A TableOccurrence(Table1)
    Si quelqu'un aune idée?? Moi je vais essayé de trouver pourquoi mais si quelqu'un a une idée, qu'il n'hésite pas!!

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2014, 15h19
  2. Remplir un tableau avec des données d'une autre feuille
    Par nomade333 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/04/2012, 12h17
  3. Réponses: 7
    Dernier message: 27/04/2012, 17h06
  4. Réponses: 1
    Dernier message: 08/03/2007, 11h03

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