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

HyperFileSQL Discussion :

Mise à jour de l'affichage d'une table partagée par plusieurs utilisateurs


Sujet :

HyperFileSQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Mise à jour de l'affichage d'une table partagée par plusieurs utilisateurs
    Bonjour,

    Dans le cas de l’utilisation d’une table HyperFile Classinc installée dans un dossier partagé pour être utilisée par plusieurs postes, comment peut-on détecter sur le poste 1 que la table a été modifiée sur le poste 2 pour mise à jour automatique de l’affichage sur le poste 1.

    Exemple : cas d’un planning partagé par deux utilisateurs, si les deux sont sur le planning en même temps quand la planning est modifié sur l’un des postes, mise à jour automatique sur le second poste sans que l’utilisateur n’ait à rafraichir l’affichage.

    Merci de vos réponses...

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Mars 2002
    Messages : 899
    Points : 1 100
    Points
    1 100
    Par défaut
    A mon avis, un thread appelé en boucle, genre toutes les 5 seconde, et HVersion() pour savoir si le contenu du fichier a changé.

  3. #3
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    J'aurais aussi tendance à proposer un thread, mais ce thread serait à l'écoute d'une connexion UDP, ca éviterait les pull toutes les x secondes sur la base de données.

    Exemple de code :

    Parti réception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PROCEDURE Ecoute_socket()
    SocketCréeUDP("reception", 12345, "192.168.0.11")
     
    TANTQUE SocketExiste("reception")=Vrai
    	sMsg est une chaîne = SocketLit("reception", Vrai)
    	SI sMsg <> "" ALORS
    		ListeAjoute(liste_messages, HeureVersChaîne(Maintenant()) + " " + sMsg)
    	FIN
    FIN
    à lancer dans un thread

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThreadExécute("communucation", threadNormal, "Ecoute_socket")
    ne pas oublier de terminer le thread en fin de programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThreadArrête("communucation")
    Pour envoyer un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Socket.Option = SocketOptimiseConnexionIP
    SocketCréeUDP("envoi", 12346, "192.168.0.11")
    SocketEcrit("envoi", msg, "192.168.0.255", 12345)
    SocketFerme("envoi")

    "192.168.0.11" étant l'adresse ip de la machine ou tourne l'exécutable (voir NetAdresseIP) et faire attention si l'on plusieurs cartes réseaux.

    "192.168.0.255" étant l'adresse de broadcast dépendante du masque de sous réseau ("192.168.0.255" c'est pour un masque "255.255.255.0")

    Ce genre de message de broadcast fonctionne bien sur un réseau local, mais habituellement ne passe pas à travers les routeurs.

    12345 et 12346 étant 2 ports choisis aléatoirement, le tout étant de prendre 2 ports non habituellement utilisés par des applications classiques (pas le 80 (HTTP), le 21 (FTP), etc...)
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Octobre 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 254
    Points : 608
    Points
    608
    Par défaut
    Merci beaucoup je m'étais toujours posé la question de savoir s'il était possible de mettre en place un broadcasting pour le rafraichissement !

    Connais tu des inconvénients à utiliser ce système ? (à part le pb de routage que tu évoques).

    Cdlt, Arnaud.

    Citation Envoyé par DelphiManiac Voir le message
    J'aurais aussi tendance à proposer un thread, mais ce thread serait à l'écoute d'une connexion UDP, ca éviterait les pull toutes les x secondes sur la base de données.

    Exemple de code :

    Parti réception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PROCEDURE Ecoute_socket()
    SocketCréeUDP("reception", 12345, "192.168.0.11")
     
    TANTQUE SocketExiste("reception")=Vrai
    	sMsg est une chaîne = SocketLit("reception", Vrai)
    	SI sMsg <> "" ALORS
    		ListeAjoute(liste_messages, HeureVersChaîne(Maintenant()) + " " + sMsg)
    	FIN
    FIN
    à lancer dans un thread

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ThreadExécute("communucation", threadNormal, "Ecoute_socket")
    ne pas oublier de terminer le thread en fin de programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThreadArrête("communucation")
    Pour envoyer un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Socket.Option = SocketOptimiseConnexionIP
    SocketCréeUDP("envoi", 12346, "192.168.0.11")
    SocketEcrit("envoi", msg, "192.168.0.255", 12345)
    SocketFerme("envoi")

    "192.168.0.11" étant l'adresse ip de la machine ou tourne l'exécutable (voir NetAdresseIP) et faire attention si l'on plusieurs cartes réseaux.

    "192.168.0.255" étant l'adresse de broadcast dépendante du masque de sous réseau ("192.168.0.255" c'est pour un masque "255.255.255.0")

    Ce genre de message de broadcast fonctionne bien sur un réseau local, mais habituellement ne passe pas à travers les routeurs.

    12345 et 12346 étant 2 ports choisis aléatoirement, le tout étant de prendre 2 ports non habituellement utilisés par des applications classiques (pas le 80 (HTTP), le 21 (FTP), etc...)

  5. #5
    Membre émérite
    Avatar de DelphiManiac
    Homme Profil pro
    Homme à tout faire
    Inscrit en
    Mars 2002
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Homme à tout faire
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 147
    Points : 2 533
    Points
    2 533
    Par défaut
    A ma connaissance, pas de problème, ce n'est que de l'UDP, protocole très utilisé tout comme le TCP. Pas testé pour le moment sous Windev (je débute), mais déjà mis en place en Delphi.

    Au pire, tu peux tester cela avec une tout petit bout de code déployé sur plusieurs postes et laisser tourner avec un timer qui génère des messages aléatoirement.
    Si ce message vous a semblé utile, il est possible qu'il soit utile à d'autres personnes. Pensez au . Et n'oubliez pas le le moment venu !

    On n'a pas à choisir si l'on est pour ou contre la décroissance, elle est inéluctable, elle arrivera qu'on le veuille ou non.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/06/2010, 14h16
  2. Réponses: 4
    Dernier message: 16/09/2009, 04h23
  3. Réponses: 5
    Dernier message: 12/05/2009, 15h57
  4. [SQL SERVER 2005] mise à jour de la structure d'une table
    Par gdkenny dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 27/12/2007, 16h47
  5. Réponses: 5
    Dernier message: 29/05/2007, 10h52

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