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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

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

    personne pour répondre à cette question ?

    Cordialement

    Codial

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

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 229
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    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
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    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 confirmé
    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 : 62
    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
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    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 éclairé

    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
    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
    Nouveau candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 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
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    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
    Nouveau membre du Club
    Inscrit en
    Août 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 9
    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 éclairé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    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