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 :

Mettre une appli en réseau


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut Mettre une appli en réseau
    Bonjour,

    j'ai écrit une appli mono poste mais je voudrais pouvoir l'utiliser en réseau. C'est à dire 4 PC et la base access serait sur un des PC.

    J'ai fais quelque test chez moi mais quand je modifie un enregistrement il n'est pas à jour sur l'autre PC ou bien si j'essaie de le modifier j'ai un message me disant que l'enregistrement n'a pas été trouvé.

    Quelqu'un peut m'expliquer la marche à suivre?

    D'avance merci

    Codial

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut Mettre une appli en réseau
    Bonjour,

    personne pour répondre à cette question ?

    Cordialement

    Codial

  3. #3
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    ben moi j'utilise pas access, mais plus généralement il me semble qu'il faut
    - sur le poste qui fait la modif, forcer l'écriture dans la base (vider les caches)
    - sur les autres : rafraichir l'affichage
    non ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour,
    sur le poste qui fait la modif, forcer l'écriture dans la base (vider les caches)
    Oui je pense mais concrètement? Je ne vois pas!!!!

    Cordialement

    Codial

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    As-tu modifié les paramètres de connexion à la base de donnée ?
    Si tu utilise les composants ADO voici un exemple pour creer la chaine de connexion selon le repertoire partagé et si ta base de donnée est dans le même repertoire.


    Tmp := ExtractFilePath(ParamStr(0));
    // Reperoire de l'application
    Sys_Dir := Copy(Tmp, 1, length(TMP)-1);
    FName := Sys_Dir + '\Taxe.MDB';
    Tmp := 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;';
    Tmp := Tmp + 'Data Source=' + FName + ';';
    Tmp := Tmp + 'Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";';
    Tmp := Tmp + 'Jet OLEDB:Registry Path="";Jet OLEDBatabase Password="";Jet OLEDB:Engine Type=5;';
    Tmp := Tmp + 'Jet OLEDBatabase Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;';
    Tmp := Tmp + 'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";';
    Tmp := Tmp + 'Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;';
    Tmp := Tmp + 'Jet OLEDBon''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;';
    Tmp := Tmp + 'Jet OLEDB:SFP=False';
    If FileExists(FName) Then
    With DB do
    Try
    Connected := false;
    Provider := 'Microsoft.Jet.OLEDB.4.0';
    ConnectionString := tmp;
    Open;
    Except
    end;

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    En fait les paramètres de connexion de ma bases de données sont bons.

    Ce qui se passe c'est quand sur un pc, disons le PC 2, je modifie un enregistrement les changements effectués ne sont pas à jour quand j'interroge sur le PC 1. Ils ne sont reconnus que lorsque je relance l'appli.

    Je galère là dessus. Si tu as une solution !!!

    Cordialement

    Codial

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Pour demander le rafraîchissement d'un ADOQuery (par exemple) tu peux utiliser la méthode Requery du compo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.ButtonRafraichirClick(Sender: TObject);
    begin
      ADOQuery1.Requery;
    end;
    @+ Claudius

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,

    Pour demander le rafraîchissement d'un ADOQuery (par exemple) tu peux utiliser la méthode Requery du compo.
    Oui je sais celà, mais le problème ne vient pas de là à mon avis, il vient du fait que j'ai mis cette appli en réseau, sinon elle tourne bien!

    Je pense qu'en réseau il y a quelque chose à faire, mais quoi?

    Je cherche!....

    Cordialement

    Codial

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Août 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 60
    Points : 90
    Points
    90
    Par défaut
    Regarde du coté des tutoriaux pdf, y'en a un qui parle des bases de données en réseau si mes souvenirs sont bons

    Il fait une vingtaine de page

  10. #10
    Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Mettre une appli en réseau
    Citation Envoyé par agasse51
    Bonjour,

    As-tu modifié les paramètres de connexion à la base de donnée ?
    Si tu utilise les composants ADO voici un exemple pour creer la chaine de connexion selon le repertoire partagé et si ta base de donnée est dans le même repertoire.
    Bonjour agasse51

    J'utilise les outils ADO et DataModule, j'aimerais savoir si les codes seront implémentés dans quel unités ?
    le partage du repertoire que contient le programme et la Base de données suffit seul pour activer l'accès multi-postes?

    J'ai tenté de faire quelques chose avec la création de fichier INI, mais j'ai le message d'erreur fichier ISAM introuvable
    je suis en entente de votre suite

    Merci d'avance pour votre aimable coopération

    Lema

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par Maldus
    Regarde du coté des tutoriaux pdf, y'en a un qui parle des bases de données en réseau si mes souvenirs sont bons

    Il fait une vingtaine de page
    Il y a un excellent tutorial "Programmer ADO en Delphi " de J-M Rabilloud.
    Il faut regarder les infos concernant le curseur .
    Selon l'option choisie, le rafaichissement se fait sur les autres postes.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut
    Bonjour,

    merci pour les réponses et notamment à agasse51. Je suis en train de lire le tuto avec intérêt et effectivement la partie sur les curseurs semble répondre à mes préoccupations.

    Ce que je n'ai pas bien compris encore c'est comment rafraichier les données modifiées, mise à part Refresh qui ferme ré ouvre le jeu d'enregistrement. Je m'en sort avec Bookmark mais je ne sais pas si c'est bien celà!!!

    Cordialement

    Codial

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par codial
    Bonjour,

    merci pour les réponses et notamment à agasse51. Je suis en train de lire le tuto avec intérêt et effectivement la partie sur les curseurs semble répondre à mes préoccupations.

    Ce que je n'ai pas bien compris encore c'est comment rafraichier les données modifiées, mise à part Refresh qui ferme ré ouvre le jeu d'enregistrement. Je m'en sort avec Bookmark mais je ne sais pas si c'est bien celà!!!

    Cordialement

    Codial
    Bonjour,
    Dans le cas d'un curseur "serveur" la modification des données sera visible par l'utilisateur

    Dans le cas d'un curseur "Client", l'on peut forcer cette mise à jour avant la modification. Il faut ajouter un évènement "Beforeedit"
    suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TData.taBatBeforeEdit(DataSet: TDataSet);
    Var BK : TBookMark;
    begin
      With dataset Do
        Try
          Bk := GetBookmark;
          Refresh();
          GoToBookmark(bk);
          FreeBookmark(bk);
        Except
        end;
    Cette procedure peut être unique pour TOUS LES DONNEES car elle fait référence au DATASET

    Si l'on fait référence à un ADODATASET ou ADOQUERY l'on peut utiliser :
    MONDATASET.Requery([]);

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 74
    Points
    74
    Par défaut Mettre une appli en réseau
    Bonjour,

    merci pour la réponse détaillée (que je lis ce matin ) je vais la tester de suite.

    Ceci dit, je permets de poser encore une question car je n'ai pas bien saisi dans quel cas on choisit un curseur serveur ou un curseur client ?

    Pour le moment j'ai mis sur mes tables un curseur serveur!!

    Cordialement

    Codial

Discussions similaires

  1. [WD10] mettre une application en réseau
    Par tuetman dans le forum WinDev
    Réponses: 6
    Dernier message: 10/05/2012, 18h38
  2. mettre une appli dans la zone de notification
    Par azräel dans le forum VB.NET
    Réponses: 1
    Dernier message: 12/02/2009, 12h54
  3. Mettre une base en réseau
    Par tib59 dans le forum Sécurité
    Réponses: 10
    Dernier message: 10/06/2008, 14h49
  4. Mettre une appli sur un serveur
    Par Premium dans le forum JWS
    Réponses: 1
    Dernier message: 18/07/2007, 14h12
  5. mettre une appli en icone dans la barre des taches
    Par oeil de nuit dans le forum Windows
    Réponses: 10
    Dernier message: 14/08/2006, 13h43

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