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

VB.NET Discussion :

bdd acces lier a une DataGridview [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut bdd acces lier a une DataGridview
    Bonjour,
    J'ai une table d'une bdd access lier a une Datagridview avec un bouton mis a jour pour rafraichir la Datagridview.
    Cette petite application sert seulement a consulter la table acces via le Datagridview et a faire un graphique selon les donnés di Datagridview.

    Quand l'application est ouverte, est-il possible de rafraichir automatiquement la Datagridview si les données de la table change ?
    Et du même coup mettre a jour le graphique ?

    Ce que j'ai essayé: une boucle avec un sleep de 5 secondes a l'intérieur, rafraichi bien mais bloque aussi les autres fonctionnalités du programme.
    donc non viable.

    est-ce possible ? Avez-vous une idée?

    Merçi!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Sub refresh()
            Do
                Me.Json_to_DBTableAdapter.Fill(Me._test___CopieDataSet.json_to_DB)
                Json_to_DBDataGridView.Refresh()
                Thread.Sleep(5000)
            Loop
        End Sub

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    La pile de message n'est pas dépilée tant que tu ne sort pas de la procédure.
    Et puisque tu boucles (sans fin), tu ne sors jamais de la procédure, empêchant ainsi le rafraichissement de ton IHM.

    La solution la plus simple consiste à remplacer ta boucle par un évènement de Timer.

    Une autre, plus compliquée mais plus efficace consiste à faire ce traitement dans un Thread séparé avec des Invoke pour mettre à jour le thread principal.
    Cela implique d'interrompre le thread quand tu quittes la fenêtre.

  3. #3
    Membre émérite
    Homme Profil pro
    Programmeur analyste
    Inscrit en
    Février 2009
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Canada

    Informations professionnelles :
    Activité : Programmeur analyste
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2009
    Messages : 546
    Par défaut
    Merci popo,
    je viens d'essayé avec un timer et cela fonctionne bien.
    Dans mon cas d'utilisation quel serait l'avantage de faire ça dans faire ce traitement dans un Thread séparé au lieu de Timer ?

  4. #4
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 972
    Par défaut
    L'événement de ton timer est lié au Thread principal.
    Il interromp donc la pile de message tant que la fin de la routine n'est pas atteinte.

    Si tu as un volume important à traiter, cela va déclencher de petits freezes. Alors que si c'est un Thread que tu lances, il vit sa vie tout seul et n'interagit avec l'IHM qu'au moment où tu lui demandes.

    Tu serais en Sql Serveur j'aurais d'autres propositions.
    Avec Access, plutôt que de tout charger toutes les 5 secondes tu peux mettre en place un trigger qui alimente une autre table. Et cette table que tu lis régulièrement. Comme ça tu ne lis la table qui contient tes données que lorsque le trigger a alimenté l'autre table.

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

Discussions similaires

  1. [Débutant] Problème d'ajout d'une colonne dans une BDD accès
    Par Loic4891 dans le forum VB.NET
    Réponses: 1
    Dernier message: 03/03/2014, 09h54
  2. crée une carte + vb + bdd acces
    Par hmayda dans le forum VB.NET
    Réponses: 8
    Dernier message: 14/11/2012, 11h50
  3. [IP-2010] Gerer acces concurent a une bdd
    Par Logann23 dans le forum InfoPath
    Réponses: 0
    Dernier message: 07/02/2012, 16h44
  4. connexion a une bdd acces 2007
    Par isoman dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/10/2008, 02h20
  5. Updater une BDD à partir d'une DataGridView
    Par casavba dans le forum Windows Forms
    Réponses: 1
    Dernier message: 09/12/2007, 23h27

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