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 :

Gestion des accès concurrents sous DELPHI/PARADOX.


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Février 2003
    Messages : 124
    Points : 63
    Points
    63
    Par défaut Gestion des accès concurrents sous DELPHI/PARADOX.
    Bonjour,
    J'ai developpé une application de gestion de stocks sous DELPHI/PARADOX que je dois mettre en réseau. Un agent doit saisir les mouvements de stock et son supérieur doit en même temps valider ses saisies. En d'autres termes les 2 utilisateurs doivent être connectés au même moment et pouvoir accéder presqu'aux mêmes tables en lecture/écriture. A l'essai de mon appli, lorsqu'un utilisateur est déjà connecté, une tentative d'une seconde connexion par un autre utilisateur est acceptée, mais lorsqu'il tente d'acceder au même module que le 1er utilisateur une boîte de dialogue affiche un message du genre :

    < "Le projet GesStock.exe a provoqué une classe d'exception EDBEngineError avec le message 'Enrégistrement verrouillé par un autre utilisateur.
    Table : S:\NomTable.DB
    Utilisateur : NomPC'. Processus stoppé. Utilisez Pas-à-pas ou exécuter pour continuer" OK - Aide. >.

    Comment puis-je gérer ces accès conncurrents sous paradox et permettre à mes utilisateurs de travailler en même temps s'ils le souhaitent ?

    Merci d'avance de votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2003
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : Burkina Faso

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Février 2003
    Messages : 124
    Points : 63
    Points
    63
    Par défaut
    J'ai trouvé cette solution dans la FAQ DELPHI, mais elle ne marche pas à la pratique. Je n'ai pas si j'ai oublié quelque chose ou quoi :

    Il est possible de travailler à plusieurs sur les même tables Paradox. Bien qu'il soit vivement recommandé d'utiliser un SGDB Client/Serveur ( Interbase, Oracle, etc... ) dans le cas d'une gestion de base de données multipostes.

    Les tables doivent être placées dans un répertoire partagé sur un ordinateur. Les postes clients auront alors un lecteur réseau connecté sur ce répertoire partagé. Il faut ensuite configurer le BDE pour le partage des tables.

    Dans l'administrateur BDE : ( toutes les applications utilisant le BDE doivent être arrêtées.
    Dans l'onglet configuration
    Aller dans Configuration->Pilote->Natif->Paradox
    Modifier la valeur de NetDir pour et sélectionner le lecteur réseau.
    Aller ensuite dans Configuration->Système->Init
    Mettre LocalShare à True.
    Enregistrer les modifications.
    Encore une fois, merci de votre aide.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Il est possible de mettre en réseau une application Delphi / Paradox.

    Personnellement, j'en ai plusieurs qui fonctionnent parfaitement.

    Pour cela, il faut que toutes les applications aient un accès unique à PDOXUSRS.NET. Il faut donc créer un répertoire spécifique sur le serveur pour inclure PDOXUSRS.NET. L'application de chaque utilisateur doit ensuite pointer vers ce répertoire.

    Si tu ne réussis pas avec ces quelques vagues explications. Je ferai une recherche pour t'adresser le schéma complet de mise en oeuvre.

    En effet, cela fait quelques temps que je n'ai pas réalisé une application Delphi Paradox. Il faut donc faire quelques rafraichissements de mémoire.

    Pour le verrouillage, il peut toujours se produire si le 2ème utilisateur veut écrire sur un enregistrement déjà utilisé par le 1er utilisateur. Là, il s'agit d'un problème de programmation avec une table à accès unique ou pas, le temps de blocage d'un enregistrement, etc. C'est à ce niveau qu'il faut éventuellement faire des modifications

    Cordialement

  4. #4
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonsoir,

    Je suis intéresser par le sujet et je ne suis pas arrivé à mettre mon applic en réseau. En fait l'application accede sumultanément à des tables se trouvant dans des sous-dossiers différents stockés dans un même dossier alors je ne sais pas si il faut creer des lecteurs réseau pour chaque sous-dossier ou seulement pour le dossier principale qui contient ces sous-dossiers et avec en plus partager le lecteur oû se trouve le PDOXUSRS.NET?

    j'ai :

    c:\DossierPrincipale\base
    c:\DossierPrincipale\demo\data
    c:\PDOXUSRS.NET

    Alors base et data contiennent tout deux des tables

    Je vous remercie
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  5. #5
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 67
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    Je regarde aujourd'hui ou demain et t'adresse un mémo comment j'ai procédé.

    Déjà, de mémoire, il est nécessaire que les dossiers et sous-dossiers soient sur le disque serveur. Il en est de même pour PDOXUSRS.Net

    Si disk serveur = F, il faut :

    F:\Dossierprincipal\base
    F:\Dossierprincipal\demo\data
    F:\Dossierprincipal\Pdx\PDOXUSRS.net

    Le point le plus important est que toutes les applications qui tournent sur les différents postes soient reliées au dossier F:\Dossierprincipal\Pdx\PDOXUSRS.net. C'est ce fichier qui gèrer les utilisateurs dans les accès, les conflits, les verroullages, etc.

    Ne pas oublier d'installer le DBE sur le serveur.

    Au lancement de ton application sur un poste, le BDE devra pointer sur le fichier
    F:\Dossierprincipal\Pdx\PDOXUSRS.net. Cela peut se faire dans ton programme au moment du lancement ou avec l'administrateur BDE où tu inclus dans configuation Paradox - NET DIR - le chemin du fichier PDOXUSRS.net. Dans notre exemple, F:\Dossierprincipal\Pdx.

    En principe, tout devrait être ok.

    Met en place les éléments ci-dessus, tu verras les difficultés qui restent à résoudre.

    L'explication pourrait être plus clair, mais il faut que je reprenne le dossier d'analyse et de déploiement.

    En tout cas, cette approche décousue prouve que des applications qui tournent depuis 10 ans sur 30 postes ne posent aucun souci car j'ai oublié la méthode. Attention, le danger pour Paradox se sont les volumes. Dans mon cas il s'agit de volumes faibles.

    Depuis, les nouvelles applications sont développées avec Firebird ou Interbase.

    Cordialement

  6. #6
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour, et merci

    J'avais creer un dossier PDX en mettant dedans le PDOXUSRS.NET
    ca me donne fichier.LCK introuvable dans le dossier TEMP qui est creer par l'application et affecter à la propriete PrivateDir du composant session.

    Mais comme j'ai constaté que des fichiers.LCK sont creer dans le dossier BASE
    alors j'ai mis le PDOXUSRS.NET dans BASE et ca ma donnée le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    EXCEPTION EDBEngine Error
    in module nomDeFichier.exe at xxxxx
    NETWORK INITIALISATION FAILED
    PERMISSION DENIED
    FILE : Y:\PDOXUSRS.NET
    DIRECTORY : Y:\
    Merci !
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  7. #7
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Pour résoudre ce problème, il faut créer (ou connecter) un lecteur réseau qui va pointer sur le disque de ton serveur en lui donnant une lettre. Ex : R. Ensuite il faut faire la même chose sur les autres postes clients et les lecteurs réseaux ainsi crées doivent tous porter la lettre R. Car quand on accède un disque distant, le système inclut dans le nom du disque d'autres infos en plus de la lettre.

    N'oublies pas d'inclure dans le programme, au démarrage : exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
          Session.NetFileDir := R:\ + chemin;
          Session.PrivateDir := 'C:\Temp';
    BON DEV.

  8. #8
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    je ferais le test demain je n'ai pas une seconde machine ici
    Merci beaucoup !!
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  9. #9
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Session.NetFileDir := R:\ + chemin;
    Pardon ... puisque je dois rajouter le chemin dans le NetFileDir cela voudrait dire que R: ne pointera que vers la racine de l'unité et non le chemin complet vers les tables ?
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

Discussions similaires

  1. Gestion des accès concurrents - comment faire ?
    Par Janitrix dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 22/05/2008, 14h22
  2. Réponses: 9
    Dernier message: 30/04/2008, 09h55
  3. Réponses: 1
    Dernier message: 17/10/2006, 04h39
  4. Gestion des accès concurrent
    Par nicoaix dans le forum Access
    Réponses: 3
    Dernier message: 06/07/2006, 15h54
  5. Gestion des accès concurrents à une table
    Par kodo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/06/2006, 14h05

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