Comment rendre une colonne d'une DBGrid éditable sans que les modifications ne soient répercutées dans la BDD ? Merci.
Comment rendre une colonne d'une DBGrid éditable sans que les modifications ne soient répercutées dans la BDD ? Merci.
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
A quoi sert alors la propriété ReadOnly de DBGrid ainsi que les options dgAlwaysShowEditor, dgEditing ?
Que veux-tu faire exactement ?Envoyé par einstein7955
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.
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
Readonly Indique si la grille est en lecture seule (comme sont nom l'indique...)Envoyé par einstein7955
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
Peut-on modifier une valeur d'une cellule en utilisant directement la propriété Buffers du DBGrid ?
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é ?
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, ...
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 ^^
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, ...
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
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
Partager