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 Rafraichir une base FireBird (TIBTable) en réseau ??


Sujet :

Bases de données Delphi

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

    Informations forums :
    Inscription : Février 2005
    Messages : 151
    Points : 82
    Points
    82
    Par défaut Comment Rafraichir une base FireBird (TIBTable) en réseau ??
    Bonjour,

    Je souhaite faire fonctionner une appli D7 pro/ firebird en réseau. J'ai un problème pour rafraichir les données en réseau. Quand j'ajoute des données dans la table, pour compte le nombre d'enregistrement je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    showmessage(inttostr(TableDay.RecordCount)); // connaitre le Nb de rec avant rafraichissement
    TableDay.Refresh;
    showmessage(inttostr(TableDay.RecordCount)); //connaitre le nb de rec après rafraichissement
    Bien évidemment, après insertion des données je fait un commit. Sur le pc ou j'ai inséré les données, le rafraichissement fonctionne.Mais je n'arrive à rafraichir la base sur l'autre poste.

    NB : j'utilise le meme compte (user et pass) pour faire mes tests sur 2 pc en réseau. J'utilise les composants IB livrés avec delphi 7 pro. La version FireBird est la 1.5
    Voici mon lien pour ma database (sur les 2 postes) :
    pst-chev-m001:C:\Test\MaBase.FDB

    Merci de m'aider car là, je ne c'est pas comment faire.

    Max

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Avant tout, jamais utiliser la propriété RecordCount qui ne correspond pas à ce que l'on souhaite vraiment (car techniquement, TOUTES les données ne sont pas ramenée (fetched) donc, le count n'est pas exploitable). Pour palier ce dédsagréement, et tester s'il y a ou pas au moins un enregistrement en résultat, il faut plutot faire ce test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if Not (JvUIBDataSet1.Eof and JvUIBDataSet1.Bof) then
      //y au moins un enregistrement
    else
      //c vide
    Ou bien, si c'est le nombre de lignes qui nous interresse, il faut préférer carrément la requete exprée (SELECT COUNT(*) FROM LA_TABLE ) car en réseau le but est de minimiser le volume de données a faire transiter, et plutot faire bosser le serveur.

    Ensuite, pour la question posée il faut bien avoir compris le principe des transactions, et remplacer l'utilisation de la méthode Refresh par un Close; puis un Open; (et etre certain du paramétrage des transactions et de son état)
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 151
    Points : 82
    Points
    82
    Par défaut
    Merci beaucoup! Ca marche!

    Par contre, pour rafraichir, je ferme ma base de données et j'ouvre ensuite toutes les tables.

    Ca marche bien comme ça mais j'espère que c'est bien comme ça qu'il faut faire.

    Merci,
    Max

  4. #4
    Membre actif Avatar de touhami
    Inscrit en
    Avril 2002
    Messages
    327
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 327
    Points : 264
    Points
    264
    Par défaut
    Bonjour,
    si tu utilise les composants IBX , alors tu possede le fameux composant IBEventAlerter , pour l'utilisation voir :
    http://www.developpez.net/forums/viewtopic.php?t=475714
    Bon developpement.

Discussions similaires

  1. comment sécuriser une base FIREBIRD ?
    Par cantador dans le forum Firebird
    Réponses: 5
    Dernier message: 27/02/2015, 15h58
  2. [firebird & access] Comment connecter une base de données Firebird avec Access
    Par Alpha001 dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 26/02/2010, 12h33
  3. Réponses: 2
    Dernier message: 10/04/2009, 12h59
  4. Comment utiliser une base FireBird avec Delphi5
    Par cmali67 dans le forum Bases de données
    Réponses: 8
    Dernier message: 24/03/2009, 00h37
  5. Comment acceder a une base firebird
    Par kase74 dans le forum Débuter
    Réponses: 0
    Dernier message: 06/12/2008, 15h56

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