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

Delphi Discussion :

Rendre une colonne d'une DBGrid éditable


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut Rendre une colonne d'une DBGrid éditable
    Comment rendre une colonne d'une DBGrid éditable sans que les modifications ne soient répercutées dans la BDD ? Merci.

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Une DBGrid ne contient pas de données, elle ne fait qu'afficher ce qu'il y a dans le Dataset, donc ce que tu demandes est impossible.

    Par contre, tu peux utiliser TStringGrid (ou autre...), puis la remplir manuellement avec les données de ton DataSet.

    ainsi, toute modification dans ton TStringGrid sera totalement indépendante de ta bd

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut DBGrid
    A quoi sert alors la propriété ReadOnly de DBGrid ainsi que les options dgAlwaysShowEditor, dgEditing ?

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 685
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 685
    Points : 7 151
    Points
    7 151
    Par défaut
    Citation Envoyé par einstein7955
    Comment rendre une colonne d'une DBGrid éditable sans que les modifications ne soient répercutées dans la BDD ? Merci.
    Que veux-tu faire exactement ?

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Je souhaite que l'utilisateur puisse tout simplement modifier du texte dans les cellules (j'enregistre ces nouvelles valeurs dans un tableau avec l'évènement DBGrid.DataSource.OnDataChange) tout en empêchant le DBGrid de modifier automatiquement la BDD.

  6. #6
    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 : 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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Et bien dans ce cas l'utilisation d'un DBGrid n'est pas vraiment adaptée à ce que tu veux faire.

    Je suis de l'avis de TicTacToe l'utilisation d'un StringGrid me paraît plus adéquate.

    @+ Claudius

  7. #7
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Citation Envoyé par einstein7955
    A quoi sert alors la propriété ReadOnly de DBGrid ainsi que les options dgAlwaysShowEditor, dgEditing ?
    Readonly Indique si la grille est en lecture seule (comme sont nom l'indique...)

    dgAlwaysShowEditor, sert à indiquer si on doit voir la palette de navigation (je crois j'en suis pas sur).

    Dans tous les cas
    est ton ami

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Peut-on modifier une valeur d'une cellule en utilisant directement la propriété Buffers du DBGrid ?

  9. #9
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Si tu nous dis pas ton objectif, je crains que tu n'auras pas de bonnes réponses
    Sur la solution de la TStringGrid, quel est le problème ?
    Pourquoi souhaites tu absolument utiliser un DBGrid, au lieu d'une copie dans un TStringGrid au vue de ce que tu as demandé ?

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Avec un DBGrid on profite de beaucoup plus de fonctionnalités comme le déplacement des colonnes en les retrouvant avec leurs noms, rendre visible on non ces colonnes, la mise des largeurs des colonnes automatiques, ...

  11. #11
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Points : 8 513
    Points
    8 513
    Par défaut
    Au pire il peut passer par un :
    DataSetProvider : qui est lié au composant TxxxTable ou TxxxQuery
    ClientDataSet : qui est lié au composant DataSetProvider et il ne fait pas d'applyUpdates pour pas que ça enregistre les modifications.

    A étudier la question quand même ^^

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 13
    Points : 8
    Points
    8
    Par défaut
    Avec un DBGrid on profite de beaucoup plus de fonctionnalités comme le déplacement des colonnes en les retrouvant avec leurs noms, rendre visible on non ces colonnes, la mise des largeurs des colonnes automatiques, ...

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Tss
    Inscrit en
    Juin 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Tss

    Informations forums :
    Inscription : Juin 2017
    Messages : 1
    Points : 0
    Points
    0
    Par défaut
    tu peut modifier ou ne pas modifier les champs de DBgrid comme ceci:
    activer la modification: dbgrid1.options:=dbgrid1.options+[dgediting];
    desactiver:dbgrid1.options:=dbgrid1.options-[dgediting];
    PS=la modification prend effet dans la table si elle seras en mode edit table1.edit
    bon chance

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Fellouri Voir le message
    tu peut modifier ou ne pas modifier les champs de DBgrid comme ceci:
    activer la modification: dbgrid1.options:=dbgrid1.options+[dgediting];
    desactiver:dbgrid1.options:=dbgrid1.options-[dgediting];
    PS=la modification prend effet dans la table si elle seras en mode edit table1.edit
    bon chance
    Je pense qu'il a trouvé la solution depuis presque 10 ans..

  15. #15
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 369
    Points : 41 921
    Points
    41 921
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    de plus dans la question de départ il était stipulé que "les modifications ne soient répercutées dans la BDD" donc pas de Table.Edit.
    la solution était toute simple : mettre la table en cacheupdate et annuler tout changement à la fermeture du programme par exemple.

    On excusera Fellouri, nouveau membre c'est d'ailleurs son premier message, juste un petit rappel au sujet des vieux sujets pas bon à "déterrer".

    Quant à Einstein7955 qui aurait peut-être du mettre un il a disparu des radars donc il n'en profitera pas

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 13h58
  2. Réponses: 7
    Dernier message: 25/03/2011, 11h52
  3. Réponses: 4
    Dernier message: 31/10/2007, 21h27
  4. supprimer une ligne et une colonne d'une matrice
    Par nessing dans le forum C++Builder
    Réponses: 8
    Dernier message: 14/08/2007, 16h42
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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