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 :

Comment mettre à jour ma liste d'objets si ajout d'un tuple dans ma BDD ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Par défaut Comment mettre à jour ma liste d'objets si ajout d'un tuple dans ma BDD ?
    Bonjour à tous,

    Dans le cadre de mon stage j'ai réalisé une application de la manière suivante :

    Dans la BDD :
    J'ai une table Institution.
    J'ai également des tables d’associations comme par exemple SecteurInstitution qui reprend les secteurs dans lesquels cette institution est active.


    Dans mon application


    Lors de la première ouverture de cette interface, je récupère tous les tuples de ma table Institution, je crée des objets Institution que je rajoute à une liste d'objets institution.
    Je fais ensuite une requête sur mes tables d’associations qui associent, par exemple, à chaque objet Institution une liste de secteurs.
    Une fois le chargement terminé, je rempli une listbox de ma fenêtre "recherche des institutions"
    NB : la récupération des tuples ne se fait uniquement si ma liste d'objets institution est vide !

    Vous suivez toujours ?

    Je vous donne un aperçu de l'interface :




    Vous remarquez qu'à droite se trouve un « volet » avec une série de critères de recherche, ceux-ci modifient le contenu de la listbox une fois qu'on clique sur le bouton rechercher.

    Afin de garder les critères de recherche, je ne ferme jamais "recherche institution" mais je la cache.


    Mon application se trouve sur un serveur.

    Problème :

    Soit X et Y deux personnes différentes sur des postes différents utilisant le programme en même temps
    X rajoute l'institution MICROSOFT
    (L’ajout se fait bien dans la BDD)
    MAIS : Y ne peut pas voir MICROSOFT. Il est obligé de relancer le programme pour que MICROSOFT apparaisse dans la recherche d'institution.

    Comment faire pour que Y ne doive pas relancer le programme. N'aurais-je pas du travailler avec des objets ? L'utilisation d'un DataSource permettrait-il la résolution du problème ?

    Faire un bouton rafraichir qui recharge la liste est une option... Mais je souhaiterais savoir comment l'éviter ?

    Merci beaucoup de votre aide !

  2. #2
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Bonjour,

    Lorsque tu charge tes éléments dans tes listes, celles ci sont en mémoire.
    Lorsque tu fais des ajouts dans ta base de données alors que les éléments sont déjà chargé, ceux ci ne prennent pas en compte les ajouts.

    Pour cela il faut que tu recharge tes éléments et que tu reconstruise ton composant.

    Pour éviter de faire un bouton "Rafraichir", tu peux utiliser un timer qui par exemple, toute les n secondes va te rafraichir tes éléments et les recharger dans ta liste.

    Ou alors ce même timer, toute les n secondes va compter le nombre d'item dans ta liste et comparer le nombre dans ta table. si le nombre est différent il te rafraichirai la liste, sinon il ne fais rien.

    Après peut y a t'il d'autres moyens.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    il y a en effet plusieurs possibilités :

    - rafraichir avec un timer et comparer ce qui revient avec tes éventuelles classes ; s'il y a peu de données ca peut suffire

    - si ta bd le permet, utiliser le service de notification de changement de données, comme le service broker pour sql server (pas dispo sur sql express) avec notification de requete
    ca revient à peu près au même qu'avec un timer sauf que ca se fait que quand c'est nécessaire

    - passer par un système maison de notification reste le plus performant, donc nécessaire avec beaucoup de données et clients, mais ce n'est pas le plus simple et rapide à coder ; là aussi plusieurs possibilités, wcf, socket, dans la base etc...
    via wcf/socket et un exe serveur on peut savoir qui est connecté, quand X ajoute une données, le serveur prévient les autres clients connectés en passant l'info changée
    en passant par la base, on peut se faire une table qui contient les modifs (genre date, table, clé changée, et type de modif (ajout/update/del)) et lire dedans toutes les secondes ce qui est supérieur à la dernière date lue pour voir si on doit rapatrier des données
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 24
    Par défaut
    L'utilisation de "datasource" ou "databinding" auraient-ils pu me simplifier la tâche ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 18/10/2014, 17h51
  2. Comment mettre à jour le CD de Delphi 6 ?
    Par Hell dans le forum EDI
    Réponses: 1
    Dernier message: 01/08/2005, 16h39
  3. [Rave Report] Comment mettre à jour le produit
    Par Leesox dans le forum Rave
    Réponses: 2
    Dernier message: 11/04/2005, 21h00
  4. Comment mettre à jour un exécutable ?
    Par rvzip64 dans le forum Langage
    Réponses: 10
    Dernier message: 09/12/2004, 18h43
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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