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

Bases de données Delphi Discussion :

[XE5-FireBird-FireDac] multi-utilisateurs en mode reseau


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut [XE5-FireBird-FireDac] multi-utilisateurs en mode reseau
    Bonjour,
    Quel moyen simple à utiliser pour contrer les problèmes lors d'une utilisation réseaux; plusieurs utilisateurs ouvrent une fiche[Article], comment bloquer ou donner un access readonly et informer les autres comme quoi la fiche est locked!?

    Merci

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Quel moyen simple à utiliser pour contrer les problèmes lors d'une utilisation réseaux; plusieurs utilisateurs ouvrent une fiche[Article], comment bloquer ou donner un access readonly et informer les autres comme quoi la fiche est locked!?
    Pourquoi veux tu bloquer l'accès pendant que tu travailles sur une fiche ?

    Firebird est conçu pour travailler à plusieurs sur la même table et de par son principe, il gère les utilisateurs sans aucune difficulté.

    Si tu as un souci, c'est que tu n'es pas en mode serveur, mais en mode embedded.

    Mais peut être que je n'ai pas compris ta question ou les raisons de ta demande. Si c'est le cas, tu peux nous en dire un peu plus et nous montrer un exemple.

    A+

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci pour votre réponse,
    une question bête, comment réagit firebird lors d'une mise a jour d'une information, par exemple , fiche Article:
    Article1 ouvert par user1 en mode modification[code article modifié] en même temps user2 l'ouvre en mode modification[code article modifié]..
    J'aimerai bien avoir un exemple de code si c'est possible
    Bon dimanche

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Pour répondre à ta question, chaque intervenant va ouvrir une transaction et faire ses modifications. Dès qu'il a terminé, il valide ce qui en principe doit déclencher un COMMIT, lequel transfère les informations dans la table. Le premier qui valide, entraîne une modification de la table. Puis le second, lorsqu'il va valider à son tour, va conduire vers une nouvelle modification de la table.

    Exemple : si les deux intervenants modifient le prix d'un article, d'une valeur de 1.00 €, le premier le porte à 1,20 € puis le second à 1,10 €. Le prix qui sera définitivement dans la table sera 1,10 €. Par contre si le second valide son prix avant le premier, le prix définitif sera 1,20 €. C'est le dernier qui COMMIT qui a raison, la base étant incompétente dans ce domaine.

    Il est possible de changer cette mécanique en programmant une contrainte pour éviter qu'une autre personne modifier le prix alors que l'article est en cours de modification. Le second intervenant est généralement informé par l'envoi d'un message d'avertissement.

    Une application correctement conçue fera un rafraîchissement des données auprès de tous les utilisateurs, qui travaillent sur la même table, dès qu'une modification a été réalisée.

    Dans certaines situations, les droits d'accès sont limités et seule une personne peut faire les modifications, lorsqu'elles présentent des conséquences pour l'activité économique de l'entreprise.

    Voici un résumé rapide, après toutes ces questions doivent être étudiées préalablement à la conception de la base et du programme qui sera chargé des insertions, modifications et suppressions. En général, la visualisation est possible en permanence sauf confidentialité.

    A ta disposition pour un complément d'information si nécessaire.

    A+

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Après relecture de ma réponse précédente, je pense que ce point nécessite une explication complémentaire.
    Pour répondre à ta question, chaque intervenant va ouvrir une transaction et faire ses modifications
    Cette approche dépend de la méthode utilisée pour mettre à jour les données. La règle est de laisser une transaction ouvert le moins longtemps possible.

    A titre personnel, je procède ainsi :

    J'ai une fiche qui comprend les colonnes de la table à modifier. Je fais mes modifications en ne sollicitant la table que pour la lecture des informations qu'elle contient.

    Pour INSERER ou MODIFIER la table de ma base de données, j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Query.ParamByName('pCol1').AsInteger := Valeur1;
    Query.ParamByName('pCol2').AsString:= Valeur2;
    DB.StartTransaction;
    try
      Query.ExecSQL;
      DB.Commit;
    except
       on E: Exception do
       begin
          if DB.InTransaction then
            DB.Rollback;
          ShowMessage('Erreur dans l''enregistrement'); 
       end;
    end;
    DB = Connexion base de données.

    Cette approche peut variée suivant les composants utilisés (Query, Tables, etc), mais l'idée générale est là.

    En espérant que ces précisions permettront de mieux répondre à ta demande.

    A+

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Merci bcp pour votre précieuse aide.
    Je préfère utiliser query , c'est plus propre est plus rapide à l’exécution.
    Une autre question, que pensez vous de l'utilisation de Firedac!?
    merci

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 577
    Points : 1 073
    Points
    1 073
    Par défaut
    Bonjour,

    Je ne peux pas te donner mon avis sur Firedac, car je ne l'utilise pas.

    Pour mes accès bases de données, j'utilise essentiellement ZeosLib et UIB.

    Désolé.

    A+

Discussions similaires

  1. [conception] [07] mode multi-utilisateurs
    Par Temak31 dans le forum Modélisation
    Réponses: 5
    Dernier message: 23/04/2007, 17h05
  2. Acces multi-utilisateur en reseau, comment ca marche ?
    Par okparanoid dans le forum Access
    Réponses: 2
    Dernier message: 14/10/2006, 10h08
  3. Blocage en mode multi-utilisateurs / multi-postes
    Par ruman dans le forum Access
    Réponses: 6
    Dernier message: 27/06/2006, 08h49
  4. Passage en Mode Multi-utilisateur
    Par joxbl dans le forum Requêtes
    Réponses: 1
    Dernier message: 30/11/2005, 23h15

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