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 :

Comment faire un partage d'une BD ?


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut Comment faire un partage d'une BD ?
    bonjour
    je veux créer une petite application qui manipule une base de données access sous reseau, cette base à un champs code qui s'incrémente automatiquement avec des numéro successives impaires (1,3,5....), bon la base est distante dans un serveur.
    Alors comment je peux donner à chaque poste l'adresse de la BD une fois pour toute et comment 2 (ou plus) d'utilisateurs utilisent en même temps la base (partage) , c'est à dire si l'utilisateur X est entrain de saisir des données alors un code (cd) est associé à l'enregistrement actuel automatiquement, en même temps si un utilisateur Y veut utiliser la BD simultaniment avec X alors un nouveau enregistrement doit être créer avec un nouveau code (inc (cd)) et les 2 (ou plus) utilisateurs peuvent faire leurs saisies ensemble, en même temps et sans aucun probléme.
    merci

  2. #2
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    Bonjour,

    pourquoi faire une application réseau avec Access ? Est-ce une contrainte ou as-tu le choix de la base de données ?
    Si tu as le choix, alors il serait peut-être préférable que tu t'oriente plutôt vers une base de données SQL, plus adaptée à ce type d'utilisation. Il y en a des gratuites, comme Firebird par exemple que je te conseillerai vivement, surtout si tu développe avec les outils codegear.

    Pourquoi ne pas utiliser Acces sur un réseau :
    - lorsque ta base de données va grossir, le trafic réseau va augmenter de façon considérable et tes temps de réponses se détériorer considérablement. Pas parce que Acces est mal, mais parce que acces n'a pas été conçu pour cela (sinon microsoft n'aurai pas développé SQL Server).

    Pourquoi prendre une base SQL et Firebird en particulier :
    - optimisation du réseau, et montée en charge mieux garantie
    - système de transaction pour une utilisation multi-users
    - dans ton cas tu pourras mettre à profit l'utilisation de trigger pour gérer l'auto-incrémentation en nombre impairs
    - toute les fonctionnalités d'une base de données relationnelle.

    @++
    Dany

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    salut
    bon j'ai besoin de developper une tout petite application pour saisie des informations de 1400 étudiants, donc je veux utiliser une table access pour sa simplicité et pour SQL c'est une bonne solution mais je ne sais pas programmer avec SQL et en plus il me faut en urgent cette base.
    merci

  4. #4
    Membre émérite
    Avatar de skywaukers
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2005
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 216
    Points : 2 303
    Points
    2 303
    Par défaut
    ok, tant pis

    pour le partage de la base de données, acces c'est du file sharing, donc tu mets ta base dans un répertoire partagé, et ce sera ton chemin de connexion.

    Maintenant pour ce qui est de l'ajout simultané d'enregistrement, soit acces le gère, mais tu ne connais le n° attribué qu'une fois l'enregistrement effectué, soit tu gère un compteur dans une table et tu vas chercher un nouvelle id avant chaque saisie, en prenant soin de protéger cette partie pour éviter que 2 utilisateurs prennent le même id.

    @++
    Dany

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par skywaukers Voir le message
    ok, tant pis

    pour le partage de la base de données, acces c'est du file sharing, donc tu mets ta base dans un répertoire partagé, et ce sera ton chemin de connexion.

    Maintenant pour ce qui est de l'ajout simultané d'enregistrement, soit acces le gère, mais tu ne connais le n° attribué qu'une fois l'enregistrement effectué, soit tu gère un compteur dans une table et tu vas chercher un nouvelle id avant chaque saisie, en prenant soin de protéger cette partie pour éviter que 2 utilisateurs prennent le même id.

    @++
    Dany
    bon, comment je peux mettre le chemin une fois l'application est installée sur un poste client, c'est à dire puis-je avoir une solution par exemple si je mets mon application dans un poste client dans le reseau et aprés l'installation il y aura un bouton selectionner la base puis une fenêtre ouvrir/selectionner base et ensuite je selectionne la base sous le reseau et se chemin sera enregistrer (je ne le mets pas à chaque ouverture de l'application) dans le chemin de connection ado.
    aussi comment faire cette protection pour pouvoir que 2 utilisateurq prennent le même id.
    merci

  6. #6
    Membre confirmé
    Avatar de JP.NUAGE
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 81
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 769
    Points : 542
    Points
    542
    Par défaut
    Pour connaitre le chemin d'accès à une base de donnée, tu peux utiliser un fichier .INI. C'est vrai qu'il faudra mettre ce fichier sur tous les postes. Sinon, tu peux utiliser l'objet OpenDialog. Voila un exemple que j'utilise pour récupérer un chemin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TFRM_CHOIX_BASE.Button1Click(Sender: TObject);
    begin
       OpenDialog1.Execute;
       Edit1.Text := OpenDialog1.FileName;
       ...... // ici tu fais ce que tu veux
    end;
    Dans cet exemple, Edit1 contient le chemin d'accès et si tu as déclaré le répertoire contenant ta base comme partagé (voir le Post de Skywaulker) tu verras ton répertoire comme lors d'une recherche dans Word, Excel, Explorateur.....

    A+
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  7. #7
    Membre averti Avatar de archonte
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 341
    Points : 392
    Points
    392
    Par défaut
    Citation Envoyé par dj_techno Voir le message
    2 (ou plus) d'utilisateurs utilisent en même temps la base (partage) , c'est à dire si l'utilisateur X est entrain de saisir des données alors un code (cd) est associé à l'enregistrement actuel automatiquement, en même temps si un utilisateur Y veut utiliser la BD simultaniment avec X alors un nouveau enregistrement doit être créer avec un nouveau code (inc (cd)) et les 2 (ou plus) utilisateurs peuvent faire leurs saisies ensemble, en même temps et sans aucun problème.
    Je suis bien intéressé par cette question car je developpe une petite appli fonctionnant sur le principe d'une "BDD" Acces située sur un disque reseau partagé. Les 2 seuls avantages sont (1) de ne pas nécessiter d'installation par l'administrateur du resau pour fonctionner et (2) la possibilité d'utiliser le Microsoft OLE Jet Engine disponible en standard donc de se dispenser d'installer un moteur de BDD pour une appli gérant au plus 6 utilisateurs et une centaine d'enregistrements.

    Les transactions sont-elles possible par ce biais ? (je ne m'en suis jamais servi). Seraient-elles une réponse à la question de dj_techno ?
    "Je n'ai jamais rencontré d'homme si ignorant qu'il n'eut quelque chose à m'apprendre."
    Galilée

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par archonte Voir le message
    Je suis bien intéressé par cette question car je developpe une petite appli fonctionnant sur le principe d'une "BDD" Acces située sur un disque reseau partagé. Les 2 seuls avantages sont (1) de ne pas nécessiter d'installation par l'administrateur du resau pour fonctionner et (2) la possibilité d'utiliser le Microsoft OLE Jet Engine disponible en standard donc de se dispenser d'installer un moteur de BDD pour une appli gérant au plus 6 utilisateurs et une centaine d'enregistrements.

    Les transactions sont-elles possible par ce biais ? (je ne m'en suis jamais servi). Seraient-elles une réponse à la question de dj_techno ?

    bonjour
    d'aprés se que je comprends que une table créer par MS ACCESS est gérée automatiquement, c'est à dire que access est résponsable de tout, bon pour moi je vais essayer toujours de tester si le code se répette ou non.
    Et si vous voyez une autre solution, sa va me faire du bien
    merci

  9. #9
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Citation Envoyé par dj_techno Voir le message
    aussi comment faire cette protection pour pouvoir que 2 utilisateurq prennent le même id.
    merci
    La meilleure façon pour être certain d'une attribution unique d'un numéro d'identificateur pour un enregistrement est de créer un GUID pour chaque nouvel enregistrement.
    Tu seras alors certain lors de la création même quasi simultanée de deux enregistrements de l'unicité de chaque id créé.

    Un petit renvoi vers la FAQ sur Comment créer un GUID dynamiquement.
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  10. #10
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    bonjours,
    bon j'ai partagé un repertoire dans le serveur ou se trouve le base que je veux utiliser, mais je n'arrive plus a se connecté à cette base, avec adoconnection j'utilise comme fournisseur "Microsoft Jet 4.0 OLE DB Provider" et j'ai essayé d'utiliser "Microsoft ISAM 1.1 OLE DB PROVIDER" mais pas de connection, alors SVP comment je peux se connecter cette base à travers reseau sans aucun probléme.
    merci

  11. #11
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut

    Citation Envoyé par dj_techno Voir le message
    ... mais pas de connection ...
    pas de connexion mais quels messages d'erreurs? comment se comporte l'application ?
    peut tu nous montrer toute ta chaine de connexion ?

  12. #12
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Ta dernière question à rapport avec le sujet suivant dont tu étais à l'origine.

    As-tu lu le dernier Post qui t'a été adressé à propos d'ISAM ?
    Pensez à utiliser les tags dans le titre.
    Avant de poser une question reportez-vous à la FAQ Delphi
    Respectez les règles du forum.

  13. #13
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    478
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2005
    Messages : 478
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par Pascal Jankowski Voir le message
    Ta dernière question à rapport avec le sujet suivant dont tu étais à l'origine.

    As-tu lu le dernier Post qui t'a été adressé à propos d'ISAM ?
    bonjour,
    j'ai vu le document à propos d'ISAM, mais le probléme c'est que je dois dans chaque poste (qui utilise l'application partagée) modifier la base des registres, donc il y a un du risque d'endomagé les registres.

    Et pour les messages d'erreurs, j'ai ajouté en Fichiers attachés des
    impr-ecran pour les messages d'erreurs.

    Concernant le rapport entre les deux posts que j'ai mis, c'est que chaque sujet à un probléme l'un pour la connection avec code du adoconnection et l'autre pour le partage, bon il sont liés les deux, mais j'ai voulu posé chaque sujet tout seul pour ne pas avoir d'encombrement des questions.
    merci
    Images attachées Images attachées   

Discussions similaires

  1. Comment faire des etats pour une application web ?
    Par ovh dans le forum Autres outils décisionnels
    Réponses: 6
    Dernier message: 06/07/2021, 03h25
  2. comment faire un DROP sur une NESTED TABLE
    Par gilux dans le forum Oracle
    Réponses: 1
    Dernier message: 14/03/2006, 18h07
  3. Comment faire un exécutable d'une application access
    Par b_steph_2 dans le forum Runtime
    Réponses: 4
    Dernier message: 09/02/2006, 16h21
  4. comment faire un sphère avec une texture ?
    Par fregate dans le forum OpenGL
    Réponses: 1
    Dernier message: 12/09/2005, 03h37
  5. [C#] Comment faire pour rendre invible une colonne(ListView)
    Par Jfrancois57 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 05/05/2004, 13h27

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