1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

WD Tableau de Bord : Actualiser le contenu

Discussion dans 'Windev' créé par Barou, Déc 10, 2019.

  1. Barou

    Barou New Member

    Inscrit:
    Sept 16, 2018
    Messages:
    18
    J'aime reçus:
    0
    Bonjour à tous, jusque là, vous m'avez beaucoup aider, je suis parvenu à créer une application "Gestion Scolaire avec un Tableau de Bord qui récapitule certaines informations depuis l'Accueil. Mais le souci, c'est que j'ai tout fais pour actualiser le Tableau de Bord sans fermer l'application et ouvrir à nouveau, mon souhait de de faire directement la mise à jour du Tableau de Bord, comme Ajax le fait avec les Navigateurs. j'ai besoin de votre aide pour y parvenir. Merci d'Avance.

    Capture d'écran

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  2. Barou

    Barou New Member

    Inscrit:
    Sept 16, 2018
    Messages:
    18
    J'aime reçus:
    0
    Capture d'écran

    [​IMG]
     
  3. popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,879
    J'aime reçus:
    1,531
    Essaie HSurveille, TimerSys ou TDBAffiche
     
  4. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Tu devras aussi exécuter ton code via des Thread ou Tâches parallèles pour ne pas bloquer l'utilisateur pendant le rafraichissement
     
  5. Barou

    Barou New Member

    Inscrit:
    Sept 16, 2018
    Messages:
    18
    J'aime reçus:
    0
    Merci beaucoup à vous tous,
    Mais le souci c'est que la fenêtre saisie des données est différente de la fenêtre où il y ale Tableau de Bord, je sais pas pourquoi, mais j'ai essayé avec TDBAffiche et ça ne marche pas, mais par contre je ne maîtrise pas HSurveille, TimerSys. En faite je suis un débutant dans windev.
    Merci encore à vous tous...
     
  6. Barou

    Barou New Member

    Inscrit:
    Sept 16, 2018
    Messages:
    18
    J'aime reçus:
    0
    Voici le code de la Fenêtre Interne "FI_Depense_Mensuelle" il est exécute en Fin d'initialisation de la Fenêtre

    RésultatSQL est une Source de Données
    sCodeSQL est une chaîne
    // Somme des commandes par mode de règlement
    sCodeSQL = [
    SELECT DISTINCT
    MONTH(charge.datecharge) as LeMoisdelAnnee,
    SUM(depenses.Montant) AS Montant
    FROM
    charge,
    depenses
    WHERE
    charge.idcharge = depenses.idcharge
    GROUP BY MONTH(charge.datecharge)
    ]

    HExécuteRequêteSQL(RésultatSQL, hRequêteDéfaut, sCodeSQL)
    POUR TOUT RésultatSQL
    SI LIB_Montant_Dépenses_Mensuelles = Null ALORS
    LIB_Montant_Dépenses_Mensuelles = 0
    SINON
    LIB_Montant_Dépenses_Mensuelles = RésultatSQL.Montant
    LIB_Mois = RésultatSQL.LeMoisdelAnnee
    FIN

    FIN

    Je ne sais pas pourquoi, la le rafraîchissement ne se fait pas sauf si on ferme l'application et la ré-ouvrir
     
  7. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Ton widget ne se rafraichit pas car tu ne lui demande pas, ton code s'exécute à l'ouverture de la fenêtre et c'est tout.
    Tu dois demander à ton application de relancer ta procédure pour que ton widget ce réafiche.

    Soit :

    HSurveille : Sera en live, aussitôt qu'une modification sera faite sur la BD peut importe par quel ordinateur ou fenêtre. C'est ton serveur de base de données qui va indiquer à ton application qu'il y a eu un changement et ton application lancera la procédure de rafraichissement automatiquement quand elle est notifié d'un changement par le serveur.
    Contrainte du HSurveille : ta base de donnée doit être HFSQL Client/Serveur.

    Timersys : Sera sur un temps x. Donc si tu le met au 5 minutes, ta procédure se lancera au 5 min, qu'il y a eu modification ou non. Défaut tu n'est pas en live et tu peux exécuter un traitement inutilement si la BD n'a pas changer. Tu peux aussi utilisé HVersion dans ta procédure pour valider qu'il y a vraiment eu une modification à la table de donnée pour ne pas exécuter inutilement ta procédure.

    Lequel utilisé : c'est relatif à ton application, si tu veux du live, HSurveille est le meilleur selon moi. Mais faut faire attention à comment sont monter tes tables de données car toute modification entrainera le lancement de ta procédure.

    Lorsque tes procédure sont lancées, (peut importe ton Hsurveille ou timersys) les procédures sont bloquantes (s'exécute dans le thread principal). Si par exemple ta requête prend 1 seconde à s'exécuter, l'application devient geler pour l'utilisateur pendant 1 seconde. Alors tu dois lancé ta procédure via une tâche parallèle pour que ta requête s'exécute en tache de fond sans bloqué l'utilisateur et ne faire que l'affichage avec un ExecuteThreadPrincipal.
    Si tu n'as qu'un ou 2 widgets qui sont en live, tu peux tester sans taches parallèle, mais si tu as plusieurs fenêtre interne, je te conseille fortement les tache parallèle car ton application va se bloquer un peu n'importe quand pour raffraichir tes widgets.

    Ton code devrait ressembler à ca :

    HSurveille :
    Déclaration globales de FI_Depense_Mensuelle :
    HSurveille(charge, _Rafraichissement, hNumEnrTous, hsAjout+hsModification))
    HSurveille(depenses, _Rafraichissement, hNumEnrTous, hsAjout+hsModification))

    Timersys :
    Déclaration globales de FI_Depense_Mensuelle ou Fin d'initialisation de FI_Depense_Mensuelle
    Timersys(_Rafraichissement, 5min)

    Procédure _Rafrichissement
    Tu met ton code que tu nous a écrit plus haut tout simplement
    Idéalement utilisé les taches parallèles ici, mais bon, je ne rentrerais pas dans les détails de comment faire ca car je vais y passé mon avant-midi :p
     
    suenodesign et popoy aiment ça.
  8. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Je voudrais utiliser des threads et des tâches parallèles, mais franchement, j'ai rencontré quelques difficultés. Pouvez-vous m'aider?
     
  9. PhantomX

    PhantomX Member

    Inscrit:
    Juil 11, 2018
    Messages:
    78
    J'aime reçus:
    61
    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,
    ce n'est pas tellement compliqué en sois une fois que tu as compris.
    Ce

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , m'a permis d'avancer quand même bien dans le sujet.

    Après les fêtes je vais avoir plus de temps, je diminue mes jours de travail de 5 à 3 jours pour me consacrer à des projets perso et des formations que j'aimerais suivre depuis longtemps. Je trouverais bien un petit peu de temps pour
    écrire quelque chose, ou monter un petit vidéo (peut-être une chaine youtube) qui sait.
     
    faq et WX1331 aiment ça.
  10. Dandypunk

    Dandypunk Well-Known Member

    Inscrit:
    Nov 28, 2019
    Messages:
    544
    J'aime reçus:
    297
    Le problème de HSurveille est qu'il ne fonctionne que sur HFSQL C/S. Dans les autres cas, il faudra utiliser un trigger "après" en modification, en ajout et éventuellement en suppression.
    Ce trigger appellera TDBAffiche
    Pour plus d'info sur les triggers :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    suenodesign apprécie ceci.
  11. faq

    faq Active Member

    Inscrit:
    Fev 13, 2019
    Messages:
    411
    J'aime reçus:
    35

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ,
    ce n'est pas tellement compliqué en sois une fois que tu as compris.
    Ce

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , m'a permis d'avancer quand même bien dans le sujet.

    Après les fêtes je vais avoir plus de temps, je diminue mes jours de travail de 5 à 3 jours pour me consacrer à des projets perso et des formations que j'aimerais suivre depuis longtemps. Je trouverais bien un petit peu de temps pour
    écrire quelque chose, ou monter un petit vidéo (peut-être une chaine youtube) qui sait.
    Cliquez pour agrandir...

    Merci

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    pour ton retour et aussi bon courage pour travail que tu va entamer.
     
  • channibal

    channibal Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 22, 2018
    Messages:
    210
    J'aime reçus:
    277
    Bonjour,

    C'est simple, pour se faire ton code doit être mit aussi dans la partie : Rafraîchissement du Widget.


    [​IMG]

    Bon dev.



    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Voici le code de la Fenêtre Interne "FI_Depense_Mensuelle" il est exécute en Fin d'initialisation de la Fenêtre

    RésultatSQL est une Source de Données
    sCodeSQL est une chaîne
    // Somme des commandes par mode de règlement
    sCodeSQL = [
    SELECT DISTINCT
    MONTH(charge.datecharge) as LeMoisdelAnnee,
    SUM(depenses.Montant) AS Montant
    FROM
    charge,
    depenses
    WHERE
    charge.idcharge = depenses.idcharge
    GROUP BY MONTH(charge.datecharge)
    ]

    HExécuteRequêteSQL(RésultatSQL, hRequêteDéfaut, sCodeSQL)
    POUR TOUT RésultatSQL
    SI LIB_Montant_Dépenses_Mensuelles = Null ALORS
    LIB_Montant_Dépenses_Mensuelles = 0
    SINON
    LIB_Montant_Dépenses_Mensuelles = RésultatSQL.Montant
    LIB_Mois = RésultatSQL.LeMoisdelAnnee
    FIN

    FIN

    Je ne sais pas pourquoi, la le rafraîchissement ne se fait pas sauf si on ferme l'application et la ré-ouvrir
    Cliquez pour agrandir...
     
    Man, PhantomX, WX1331 et 1 autre personne aiment ça.
  • Partager cette page

    Chargement...