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 :

Projet MDI - Table en saisie - MAJ autres fenêtres [WD17]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 49
    Points : 28
    Points
    28
    Par défaut Projet MDI - Table en saisie - MAJ autres fenêtres
    Bonjour,

    Voici mon problème,

    Je développe une application MDI dans laquelle l'utilisateur pourra ouvrir plusieurs fenêtres simultanément.

    Dans une de ces fenêtres j'ai une table sur fichier en saisie (Table1). Dans une autre fenêtre j'ai une table (Table2) alimentée par une requête sélectionnant des enregistrements de la Table 1.

    Ce que j'aimerais c'est que lorsque l'utilisateur saisie une ligne dans la Table1, la Table2 se mette à jour afin d'afficher le nouvel enregistrement.

    Dans le code "Sortie d'une ligne de Table1" j'ai donc placé une ligne qui met à jour la Table2, de l'autre fenêtre, via une Classe GestionnaireDeFenêtre.

    Problème : J'ai l'impression que la ligne n'est pas réelement enregistrée dans le fichier tant que le code "Sortie d'une ligne de Table1" n'a pas fini de s'éxecuter.
    Du coup la mise à jour de ma Table2 ne sert à rien..

    Avez-vous une solution pour que je puisse faire le MAJ de ma Table2 en étant sur que l'ajout à bien été réalisé dans la Table1 ?

    Merci d'avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    gères le dans la prise de focus plutôt. Mais il faudrait avoir un flag au niveau global pour savoir s'il y a besoin de mettre à jour la table.

    à bientôt,

    Nicolas

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta réponse,

    Par contre je ne vois pas comment faire même avec un indicateur global..

    Je passe bien par le focus de la fenêtre contenant la Table 2 pour déclencher la MAJ de la Table2, mais comme ce traitement est appelé depuis la "Sortie d'une ligne de ma Table1", l'enregistrement n'est pas encore ajouté et donc pas pris en compte lors de la MAJ.

    Tu pourrais m'expliquer comment faire avec l'indicateur pour que je puisse détecter le changement après la fin de l'éxecution du code de sortie de ligne de la Table1 s'il te plaît ?

    Merci.

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Lorsque tu as finis le traitement de la ligne de table 1, tu mets ton flag de MAJ table 2 à vrai. Dans le code de prise de focus de la fenêtre contenant table 2, tu testes ce flag et si celui-ci est vrai tu mets à jour la table, puis tu remets ton flag à faux et ainsi de suite.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Je comprend ce que tu veux dire, mais comment appeler la prise de focus de la fenêtre contenant la table 2 après être sorti du bloc de code "Sortie d'une ligne" de ma table1 ?

    Si je donne le focus à la fenêtre contenant la table 2 depuis ce bloc de code l'ajout n'est pas encore fait est l'update ne sert à rien. Et après être sorti du bloc je n'ai plus d'évenement...

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    La prise de focus se fera lorsque tu viendras sur la fenêtre. Aucun besoin de le faire avant, voir même de le faire plusieurs fois avant de venir sur la fenêtre contenant la table 2.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Je me suis peut être mal exprimé dans mon premier post mais l'utilisateur visualisera les deux fenêtres en même temps, et justement je voudrais que la fenêtre contenant la table2 se mette à jour sans qu'il ai à cliqué dessus.

    L'utilisateur pourra travailler sur 4 fenêtres maxi en même temps, donc il faut qu'elle se mette toutes à jour sans qu'il est à cliquer sur chacune l'une après l'autre pour déclencher la MAJ.

    Une solution pour ça ?

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Si le problème est que l'enregistrement n'est pas encore créé, il suffit peut-être de lancer un timer de 2 secondes en sortie de ligne de Table 1, qui va ensuite lancer l'affichage de la table 2.

    Tatayo.

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonsoir

    La propriété ..Modifié pourrait sans doute faire l'affaire ?

    Hemgé

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    303
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 303
    Points : 812
    Points
    812
    Par défaut
    Bonjour,

    Pour une approche générale, où les fenêtres sont "découplées", on peut utiliser les événements windows.

    (découplées = les fenêtres n'ont pas connaissance les unes des autres)

    Je propose une solution basée sur la diffusion de message Windows vers les fenêtres MDI filles:
    http://www.developpez.net/forums/d10...2/#post7516190

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 49
    Points : 28
    Points
    28
    Par défaut
    Bonjour et merci à tous pour vos réponses,

    J'ai essayer la méthode proposée par OnePoint, puisque c'est celle qui me paraissait la plus "propre", et ça fonctionne parfaitement !

    Merci beaucoup pour ce code impeccable.

    Bonne continuation à vous !

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

Discussions similaires

  1. [WM18] modification de champ saisie d'une fenêtre interne à une autre
    Par elvan49 dans le forum Windev Mobile
    Réponses: 4
    Dernier message: 30/05/2015, 10h27
  2. [AC-2010] saisie auto dans une table à partir d'une autre table
    Par Poisell dans le forum Modélisation
    Réponses: 5
    Dernier message: 01/06/2012, 15h45
  3. Réponses: 2
    Dernier message: 16/11/2009, 23h23
  4. MAJ table à partir d'une autre table
    Par crouba dans le forum Requêtes
    Réponses: 1
    Dernier message: 22/07/2008, 12h27
  5. Maj d'une table à partir d'une autre
    Par gleferrec dans le forum Oracle
    Réponses: 1
    Dernier message: 24/01/2006, 11h10

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