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 :

Detection si une BD est sollicitée


Sujet :

Bases de données Delphi

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut Detection si une BD est sollicitée
    J'ai une Table PARADOX sur un ordinateur X.

    Les ordinateurs A,B,C et D peuvent accéder à cette table.

    Existe t'il un moyen pour l'ordinateur X de savoir si un ordinateur à ouvert la table et si oui lequel ?

    En fait je voudrais que l'ordinateur X envoit un message aux ordinateurs A,B,C et D lorsque l'un d'eux ouvre la table (que se soit en lecture ou en écriture) du genre :

    Le PC ?? est connecté en ce moment.

    Es ce possible et quelqu'un à t'il une idée ?

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Je ne sais pas si c'est directement possible... Mais quel en est le but ?
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut Le but
    Nous avons un programme qui fonctionne à merveille et donne 100 % satisfaction tant au niveau de son cout qu'au niveau des fonctionalités --> de bonnes raisons pour ne pas en changer.

    Ce programme (qui gère notre planning) fonctionne parfaitement bien en monoposte (logique se sont des tables PARADOX).

    Plusieurs personnes doivent travailler sur ce programme (mais jamais en même temps en principe)

    La logique voudrait que je modifie le proramme pour qu'il fonctionne en réseau, mais je n'y connais rien dans se domaine et Interbase m'a laissé un souvenir épouventable du genre : "Pauvre connard fais de la dentelle de bruge plutôt que de la programmation". D'autre part nous fonctionnons ave un budget 0 --> pas question de penser faire faire cette modif.

    Je voulais juste mettre les tables PARADOX sur le serveur, créer des disques virtuels pour que les programmes des différentes machines puissent accéder et en plus faire un petit prog qui bloqué les programmes pour ne permettre que l'intervention d'un seul user à la fois sur la table.

    Autre question, si je fais mes disques virtuels et que le PC A accède aux tables, que se passe t'il quand le PC B essaye en même temps ? Si le PC B reçoit simplement un message d'erreur rendant la connection impossible mon problème est résolu !

  4. #4
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Et bien !! Paradox c'est vrais n'est pas un SGBD Client / Serveur mais il travail plutot en réseau Tu peut régler ça. Tu installe le DBE partout tu règle les NetDir pour qu'ils pointent tous sur le même répertoire Exemple "\\Serveur\Tables" Tu Map le répertoire Tables du Serveur Exemple "G:\" pour l'utiliser comme alias. Tu met LocalShare à True comme ça sa peut marcher.
    Par la suite Paradox va vérouiller les enregistrements qui sont en UPDATE ou en INSERT et si une applicatio tente en même temps de le modifier vous aurez droit un message qui vous explique que la table est vérouillée.
    Si par contre vous avez le code de cette application Vous pouvez mettre la tables en mode Exclusif celà empêche d'autre application d'utiliser les tables déjà utilisées.
    En contre partie si tu n'a pas de code vous pouvez concevoir une application qui essaie d'ouvrir une table de l'application en cause en mode exclusif si elle echoue c'est qu'elle est utlisée sinon tu lance l'application.
    Finalement si tu veux vraiment Savoir le nombre d'utilisateur d'une table Paradox en réseau tu as le lien :
    http://www.bdesupport.com/faq.htm
    d'où la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    function GetTableUsers(aTable : TTable) : Integer;
    var
      TmpCursor: hdbicur;
      LockInfo: LOCKDesc;
      Status: dbiResult;
      UserCount : Integer;
    const
      NO_TABLE_LOCK = 4;
    begin
      UserCount := 0;
      Check(DbiOpenLockList(aTable.Handle, True, True, TmpCursor));
      Check(DbiSetToBegin(TmpCursor));
      Repeat
        Status := DbiGetNextRecord(TmpCursor, dbiNOLOCK, @LockInfo, Nil);
        If (Status <> DBIERR_EOF) and (LockInfo.iType = NO_TABLE_LOCK) Then 
      Inc(UserCount);
      Until (Status <> DBIERR_NONE);
      Check(DbiCloseCursor(TmpCursor));
      Result := UserCount;
    end;
    Mais qu'est ce que j'ai pu être loooooooooong
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  5. #5
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut Immertion
    Hello petit delphiste, suite à ton très intéressante réponse j'ai quelques questions :

    > Tu installe le DBE partout
    Cela implique que je dois installer Delphi ? Pour le moment Delphi est installé sur le PC qui uttilise l'appli !

    >tu règle les NetDir pour qu'ils pointent tous sur le même répertoire Exemple "\\Serveur\Tables"
    Le serveur est sous Windows 2003 server ce qui implique une gestion des droits vraiment pas simple. On à un répertoire "public" qui contient ce qui est accessible,à tous, puis je mettre les tables dedans ? Comment faire pour régler les NetDir ? C'est quoi un NetDir ?

    >Tu Map le répertoire Tables du Serveur Exemple "G:\"
    En fait je dois créer un disque virtuel qui est le même sur chaque machine et qui correspond au dossier dans lequel sont les tables c'est ca ?

    >Tu met LocalShare à True comme ça sa peut marcher.
    Ca se trouve ou LocalShare ?

    >Par la suite Paradox va vérouiller les enregistrements qui sont en UPDATE ou en INSERT et si une application tente en même temps de le modifier vous aurez droit un message qui vous explique que la table est vérouillée.
    --> donc tout le monde peut lire la table et voir les données et même si un des users est en train de modifier les données mais par contre un seul à la fois peut être en insert ou en edit pour faire des modif, c'est ca ? Par contre les affichages ne sont pas raffraichis je suppose ?

    >Si par contre vous avez le code de cette application Vous pouvez mettre la tables en mode Exclusif celà empêche d'autre application d'utiliser les tables déjà utilisées.
    On a le code c'est moi qui ai fais ce PRG, mais comment mettre les tables en mode exclusif ?

  6. #6
    Membre confirmé Avatar de JustMe
    Inscrit en
    Juillet 2002
    Messages
    479
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 479
    Points : 593
    Points
    593
    Par défaut
    Bon
    1 - Tu n'est pas obligé d'installer Delphi partout tu cherche sur le net ou dans ce site comment installer le DBE sans installer Delphi.
    2 - Le NetDir c'est le repertoire réseau de Paradox il est configuré dans DBE (DBEADMIN.EXE) dans l'onglet configuration ensuite dans le treeview Configuration | Pilote | natif | Paradox tu as NetDir. Tu peux mettre les tables dans ton repertoire public oui mais il doit être partagé Full.
    3 - Mapper est présente dans le menu contextuel quand tu parcours ton voisinage C'est à dire tu crée un lecteur réseau.
    4 - LocalShare se trouve aussi dans le DBEADMIN.
    5 - Tout le monde peut lire la table mais on modifie un seul à la fois et les données ne sont pas rafraichies.
    6 - le mode exclusif peut être fixé dans la propriété de la table.Exclusive Soit True ou False.
    j'espère que ça va t'aider un peut.
    <On fait la science avec des faits, comme on fait une maison avec des pierres : mais une accumulation de faits n'est pas plus une science qu'un tas de pierres n'est une maison> **Poincaré**

  7. #7
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 016
    Points : 308
    Points
    308
    Par défaut Merci petit Delphiste
    Merci petit Delphiste pour ces infos très utiles. Je ne comprends pas tout mais tu attire mon attention sur des fonctions relatives au BD PARADOX que je ne connaissais pas encore et avec mon livre ca devrait devenir plus clair.

    PS : Ta petit image associée à ton pseudo ne s'affiche pas.

    A+

Discussions similaires

  1. comment detecter si une popup est ouverte
    Par Jacobian dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/10/2008, 15h54
  2. detecter si une option est selectionnee dans un select
    Par fey dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/07/2008, 20h18
  3. detecter qu'une classe est abstraite
    Par glindayzar dans le forum C++
    Réponses: 19
    Dernier message: 31/07/2007, 01h04
  4. Detecter si une jvm est installée sur le poste client
    Par jpastier dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 02/02/2007, 11h43
  5. Réponses: 2
    Dernier message: 21/02/2006, 17h53

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