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 :

Interbase en réseau:commit ne s'appliquent pa aux autres pc?


Sujet :

Bases de données Delphi

  1. #1
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut Interbase en réseau:commit ne s'appliquent pa aux autres pc?
    Voila, j'ai developpé une application utilisant des datasets et interbase, lorsque je l'utilise en réseau, ce que je modifie sur un poste ne s'applique sur les autres (même la création de nouveaux enregistrements) que après redémarrage du logiciel. J'effectue bien des 'CommitRetaining' sur la transaction du poste effectuant les modifications, et le poste client effectue bien des 'Close/Open sur ses datasets pour raffraichir ses données.

    Que faire pour que les modifications se répercutent immédiatement?

    Attention le .NET sur PDA peut causer des chutes de cheveux

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    En mode transactionnel c'est un COMMIT sur ta BD qui valider les données.
    Toutefois il faut comprendre en détail les objets qui accede à ta base et si ceux ci n'utilise pas un cache. Une fois que ton commit et fait sur la base , tu dois fermer la transaction.

  3. #3
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    Euh, c'est pas tres pratique de devoir refermer la transaction et la réouvrire en pleine utilisation, y a t'il pas moyen de juste mettre à jour la transaction?

    Et le pire c'est que les données semblent bien être enregistrées dans la base, c'est les autres postes qui ne voient pas les modifications tant que l'on ne les à pas relancé.

    Attention le .NET sur PDA peut causer des chutes de cheveux

  4. #4
    Membre expérimenté
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Points : 1 331
    Points
    1 331
    Par défaut
    PS : je met CachedUpdates a false sur mes datasets.
    Les données semblent bien s'enregistrer dans la base avec le CommitRetaining, mon pb est juste de trouver le moyen de rafraichir les changements sur les autres postes.

    Attention le .NET sur PDA peut causer des chutes de cheveux

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Bonjour à tous,

    Celà m'interessa fortement, est ce que vous n'auriez pas un exemple de code source à donner, genre de fonction(table) pour tous les tables sinon on peut procéder autrement.

    En fait j'ai lu sur Help sur Delphi concernant CommitRemaning, je ne pige pas très bien, pourriez vous citer des explications claire ainsi des avantages ou inconvénients concernant Comit, ComitRemaining, et ...

    J'espère que les membres expérimentés Delphi-Interbase/firebird nous informerons.

    Merci à vous
    Cordialement

    Fred ;-)

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 55
    Points : 43
    Points
    43
    Par défaut
    Salut!
    J'ai exactement le meme souci et j'arrive à la meme conclusion que toi...Les données de ne rafraichissent pas!!

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Mai 2004
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Le CommitRetainig ne fait qu'enregistrer les données sur le serveur mais ne récupère pas les données des autres postes. Pour cela il faut obligatoirement passer par Commit .

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par DarkWinter
    Le CommitRetainig ne fait qu'enregistrer les données sur le serveur mais ne récupère pas les données des autres postes. Pour cela il faut obligatoirement passer par Commit .
    Bjr,

    Pourriez-vous nous donner un exemple de code source afin d'y voir au plus clair.

    Je vous remercie de votre compréhension.
    Cordialement

    Fred ;-)

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 163
    Points : 90
    Points
    90
    Par défaut
    Salut à tous,

    En fait j'ai trouvé la solution avec mes amis de ma classe.

    Pour le faire actualiser automatiquement en réseau avec Interbase, donc tu as un querry, il faudra créer un IBTransaction par querry (table) et là ça marche.
    Cordialement

    Fred ;-)

  10. #10
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Citation Envoyé par DarkWinter
    Le CommitRetainig ne fait qu'enregistrer les données sur le serveur mais ne récupère pas les données des autres postes. Pour cela il faut obligatoirement passer par Commit .

    Aille aille aille...

    Que d'incomprehensions....

    Je rectifie donc :

    Le CommitRetaining fait exactement la même chose que le Commit. Sauf qu'il ne ferme pas la transaction et donc ne ferme pas les objets DB qui y sont attachés.

    Maintenant résolution du probleme :

    Ne changez pas vos CommitRetaining en Commit si ca vous arrange.
    Pourquoi les autres postes ne voient pas les modifications ??

    Ils sont dans une transaction de type snapshot qui a été ouverte avant le commit de l'autre poste...

    Solutions :
    1-Fermer la transaction et la réouvrir (ne pas confondre avec le dataset... car s'il y a plusieurs dataset d'ouvert, la fermeture d'un dataset ne ferme pas la transaction
    2 ou bien configurer la transaction en mode readCommited...

    Tout simplement.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2010, 11h11
  2. Réponses: 3
    Dernier message: 03/10/2009, 22h51
  3. Réponses: 2
    Dernier message: 10/08/2007, 15h43
  4. Réponses: 15
    Dernier message: 15/12/2006, 18h18

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