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éactualiser une table


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développement VBA
    Inscrit en
    Décembre 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développement VBA

    Informations forums :
    Inscription : Décembre 2008
    Messages : 44
    Points : 38
    Points
    38
    Par défaut Réactualiser une table
    Bonjour,
    Je suis en train de m'initier avec Windew Express
    J'ai deux fenêtres, une fenêtre de Départ (EXPRESS_FEN_Départ) avec une table et un fichier Hyperfile. Cette table comporte une liste d'écritures Débit-Crédit.
    Un bouton Ajouter m'ouvre une fenêtre Saisie pour enregistrer une nouvelle écriture.
    Cette écriture est bien enregistrée dans la base mais n'est pas restituée lorsque je reviens sur la fenêtre Départ après avoir fermé la fenêtre Saisie.
    Si je ferme et rouvre mon projet, ma table est cette fois à jour.

    Le code qui m'est proposé pour mettre à jour les données de ma fenêtre Départ est :
    ExécuteTraitement(EXPRESS_FEN_Départ,trtPriseFocus)
    La prise de focus n'a pas l'air d'être prise en compte et pourtant en pas à pas, il balaye bien le code qui suit ....

    Prise de focus de EXPRESS_FEN_Départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HLitPremier(EXPRESS_Mouvement,IDEXPRESS_Mouvement)
    TANTQUE PAS HEnDehors
    TableAjoute(TABLE_EXPRESS_Tmouv,EXPRESS_Mouvement.IDEXPRESS_Mouvement+TAB+EXPRESS_Mouvement.Date+TAB+EXPRESS_Mouvement.Descriptif+TAB+EXPRESS_Mouvement.Dépense+TAB+EXPRESS_Mouvement.Recette)
    HLitSuivant(EXPRESS_Mouvement)
    FIN
    Lorsque je valide un nouvel enregistrement j'ai le code

    Clic sur BTN_Valider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    EcranVersFichier(EXPRESS_FEN_Saisie)
    HAjoute(EXPRESS_Mouvement)
    ExécuteTraitement(EXPRESS_FEN_Départ,trtPriseFocus)
    Ferme(EXPRESS_FEN_Saisie)

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    je comprend pas pourquoi tu dois faire un hajoute à chaque prise de focus de ta fenetre principale.

    Dans ton Bouton Ajouter tu as un code de ce style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sur clic BTN_AJOOUTER
    ouvre(saisie)
    le traitement dans ta fenetre principale se bloque alors, en attendant que la fenetre Saisie soit fermée.

    Pourquoi ne pas lancer la mise à jour de tes tables une fois que la fenêtre Saisie a rendu la main. C'est à dire directement dans le code du bouton Ajouter.

    Remarque : Si tu lance exploreur ou la calculette, si tu reviens sur ta fenetre Windev, Tu relance Hajoute dans ta table en reprenant le focus il me semble. Pourtant il est probable que tu n'es pas fini ta saisie dans ta page.

    Si je peux, je te conseille d'éviter les ajouts supression sur des prises de focus. Une mégarde est toujours probable.

    Essaie donc le traitement directement sur le bouton Ajouter.

    Citation Envoyé par RENAUDER Voir le message
    Prise de focus de EXPRESS_FEN_Départ

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    HLitPremier(EXPRESS_Mouvement,IDEXPRESS_Mouvement)
    TANTQUE PAS HEnDehors
    TableAjoute(TABLE_EXPRESS_Tmouv,EXPRESS_Mouvement.IDEXPRESS_Mouvement+TAB+EXPRESS_Mouvement.Date+TAB+EXPRESS_Mouvement.Descriptif+TAB+EXPRESS_Mouvement.Dépense+TAB+EXPRESS_Mouvement.Recette)
    HLitSuivant(EXPRESS_Mouvement)
    FIN
    Je pense également qui te manque un tableaffiche(<Nom de ta table>).
    Elle doit être à jour lors de la premiere ouverture de ta fenêtre mais tu ne rafraichit pas l'écran lorsque tu reprend le focus sur la fenêtre Saisie.

    CF le TP 3 qui fonctionne très bien sur mon windev express 12 comme le tien

    le bouton Valider se trouve sur ta fenetre Saisie. Le bouton Ajout sur ta fenetre départ.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExécuteTraitement(EXPRESS_FEN_Départ,trtPriseFocus)
    permet de reproduire un code d'une même fenêtre. Dans le TP on l'utilise avec le bouton supprimer pour reproduire le traitement codée dans la même fenêtre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Bouton supprimer
    HLitRecherchePremier(EXPRESS_MOUVEMENT,IDEXPRESS_MOUVEMENT,TMOUV.COL_Colonne5)
    //TMOUV.COL_Colonne5 correspond à la valeur cherché
    //on recherche la première occurence (içi l'unique)
    TANTQUE HTrouve(EXPRESS_MOUVEMENT) = Vrai
    HSupprime(EXPRESS_MOUVEMENT)	//on supprime l'enregistrement
    TitreSuivant("Info")
    DélaiAvantFermeture(500)
    Info("Ligne : " + TMOUV.COL_Colonne5 + " supprimée")
    HLitSuivant(EXPRESS_MOUVEMENT,IDEXPRESS_MOUVEMENT) //La ligne est unique sinon on supprime chacune des occurences
    FIN
    ExécuteTraitement(EXPRESS_FEN_depart,trtPriseFocus)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Bouton Valider
    EcranVersFichier(EXPRESS_FEN_saisie)
    HAjoute(EXPRESS_MOUVEMENT)
    Ferme
    Relis le TP et mets le code au bon endroit, ca fonctionnera surement mieux

    N'oublie pas de vider la table également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sur prise de focus
    TableSupprimeTout(TMOUV)
    ...
    ...
    N'oublie pas le code est lié à la fenêtre, si tu lance ta commande dans une autre fenêtre, celle-ci à le focus lors du lancement du code, les variables prises sont celles de ta fenêtre "Saisie" lorsque tu souhaites faire ton execute traitement. Hors ce code est fait pour la fenêtre Départ qui n'a pas obtenu le focus puisque c'est encore ta fenêtre Saisie qui le possède. D'où ton problème de mise à jour.

    Windev est orientée Objet.

    Ce qui signifie que si tu code

    Tmouv.colonne5 par exemple tu fais reference à la colonne5 de l'objet Tmouv qui est contenu dans la fenêtre du code.

    si tu code Mafenetre.Tmouv.colonne5 tu fais réference à un objet plus précis puisque tu lui as assigné une provenance (Mafenetre).

    ce qui peut te permettre de te passer de certaines variables Globale (qui sont lié au programme) et de variables locales (qui sont lié à la fenêtre). Tu peux pointer vers des éléments d'autres feêtres que si le nom est clairement identifié et si les fenêtres sont ouvertes. Si tu ne precises pas plus, considère que tu es en local donc lié à la fenêtre active.

    Si tu fais un bouton fermer, garde à l'esprit que l'action fermer est effective quand tout le code est passé et non pas uniquement lorsque tu clic sur le bouton.

Discussions similaires

  1. [WD17] Supprimer une ligne sans réactualiser la table
    Par labib23dz dans le forum WinDev
    Réponses: 2
    Dernier message: 11/12/2013, 12h51
  2. Réponses: 3
    Dernier message: 14/06/2007, 13h35
  3. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 17h16
  4. Pb d'auto-incrément sur une table v7
    Par Nivux dans le forum Paradox
    Réponses: 9
    Dernier message: 26/12/2002, 12h05
  5. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55

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