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 :

mise à jour à travers DBgrid


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 27
    Points
    27
    Par défaut mise à jour à travers DBgrid
    Bonjour ;

    je voudrai savoir s'il est possible de retarder la mise à jour qui se fait sur une table à travers un DBgrid. Car dès qu'on passe d'une ligne à une autre du DB grid, les changements effectués sur la 1ère ligne sont répercutés dans la table.

    merci d'avance.

  2. #2
    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

    Citation Envoyé par linda80
    je voudrai savoir s'il est possible de retarder la mise à jour qui se fait sur une table à travers un DBgrid. Car dès qu'on passe d'une ligne à une autre du DB grid, les changements effectués sur la 1ère ligne sont répercutés dans la table.
    D'entrée comme ça je réponds non ce n'est pas possible.
    Ce comportement n'est pas lié au DBGrid en lui-même mais au DataSet. Avant un déplacement dans un DataSet, celui effectue implicitement un Post, si l'enregistrement à été modifié.

    Si tu tiens à 'retarder' tes mises à jour, il faut passer par ClientDataSet par exemple ou MemTable avec lesquels tu gardes la maîtrise d'appliquer les mises à jour ou non.

    [edit]
    Ou alors, demander confirmation à l'utilisateur (Poster cet enreg O/N ?) dans l'evènement BeforeScroll.
    [/edit]

    @+ Claudius

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 37
    Points : 27
    Points
    27
    Par défaut
    Merci pour votre réponse cl@udius, je viens de découvrir qu'en mettant la propriété local update du data set du db grid à true, les changements effectués sur le db grid ne sont pas répercutés sur la table, reste à trouver un moyen pour effectuer tous ces changements à travers un bouton

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    La validation du contenu de la table est décrite dans la discussion suivante:
    393050

  5. #5
    Membre habitué Avatar de abdelghani_k
    Inscrit en
    Octobre 2002
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Octobre 2002
    Messages : 184
    Points : 150
    Points
    150
    Par défaut
    Bonjour ALWEBER,

    Je ne sais si linda80 a demandé la validation du contenu de la table
    mais elle a écrit :
    ... retarder la mise à jour qui se fait sur une table à travers un DBgrid. Car dès qu'on passe d'une ligne à une autre du DB grid, les changements effectués sur la 1ère ligne sont répercutés dans la table.

    Je vais proposer une autre solution :
    Moi je n'ai jamais travaillé avec ClientDataSet ou MemTable.
    J'utilise Interbase 6.5 et si je veux retarder mes mises à jour vers la base,
    je travailles avec le cache ou la mémoire cache en mettant la prioprité de IBTable CachedUpdates à True et au niveau de AfterPost j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    IBDataBase.ApplyUpdates([IBTable]);
    IBTransaction.CommitRetaining;
    Et voici le help de delphi concernant CachedUpdates :

    Lorsque les mises à jour en mémoire cache sont activées, les mises à jour d'un ensemble de données (comme la transmission de modifications,l'insertion de nouveaux enregistrements ou la suppression d'enregistrements) sont stockées dans une mémoire cache interne sur la machine client au lieu d'être directement écrites dans les tables de base de données sous-jacentes de l'ensemble de données. Quand les modifications sont terminées, une application écrit dans la base de données toutes les modifications présentes en mémoire cache, dans une transaction unique.
    Réussir c'est faire le bon choix.

    Voici ma supper fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fonction ChercherSolution(User_id:login in www.developper.com):Vrai;

Discussions similaires

  1. [Lazarus] Mise à jour affichage DbGrid et table Sqlite
    Par ovni76 dans le forum Lazarus
    Réponses: 1
    Dernier message: 31/03/2010, 08h16
  2. mise à jour de champ monétaire dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/08/2005, 11h49
  3. [Acess][ADO] Mise à jour d'un DBGrid
    Par arogues dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/02/2005, 15h14
  4. Mise à jour DbGrid
    Par palassou dans le forum Bases de données
    Réponses: 2
    Dernier message: 18/06/2004, 10h12
  5. [TQuery][DBGRID] pb de mise à jour: table en lecture seule
    Par Chrystèle Carré dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/11/2003, 09h36

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