ACTUALISER UNE TABLE SANS QUE LA DBGRID MODIFIE SON VISUEL ET L' ENREGISTREMENT

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 15 oct. 2010 à 18:03
amir_kebaili Messages postés 1 Date d'inscription lundi 9 décembre 2013 Statut Membre Dernière intervention 9 décembre 2013 - 9 déc. 2013 à 09:59
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52386-actualiser-une-table-sans-que-la-dbgrid-modifie-son-visuel-et-l-enregistrement-actuel

amir_kebaili Messages postés 1 Date d'inscription lundi 9 décembre 2013 Statut Membre Dernière intervention 9 décembre 2013
9 déc. 2013 à 09:59
merci
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
2 nov. 2010 à 15:59
Exactement!
Delphian Messages postés 3 Date d'inscription mardi 2 novembre 2010 Statut Membre Dernière intervention 2 novembre 2010
2 nov. 2010 à 15:55
Autant pour moi... je n'avais effectivement pas bien lu l'énoncé. En gros, tu "recadres" la ligne courante dans le buffer du dataset pour éviter un éventuel changement de position de la ligne dans la grille après rafraichissement. Bien vu...

Merçi.

@+
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
2 nov. 2010 à 14:31
Salut,

je me cite :
"Pour ceux qui utilisent les SGBD client/serveur, l' un des problèmes rencontrés est que lorsque l' on veut actualiser les données d' une table, on doit forcément réexecuter le query (select * from ...) ce qui implique la fermeture de la table.
Cela a pour conséquence que la DBGrid oú l' on visualise les données, n' est plus positionnée sur le bon enregistrement. Quand bien même on utiliserait GetBookmark/GotoBookmark/FreeBookmark, l' enregistrement peut ne plus se trouver sur la même ligne de la DBGrid, ce qui estétiquement n' est pas terrible ..."

La ligne importante est celle-ci:
"Quand bien même on utiliserait GetBookmark/GotoBookmark/FreeBookmark, l' enregistrement peut ne plus se trouver sur la même ligne de la DBGrid, ce qui estétiquement n' est pas terrible ..."

A+
Delphian Messages postés 3 Date d'inscription mardi 2 novembre 2010 Statut Membre Dernière intervention 2 novembre 2010
2 nov. 2010 à 14:24
Ooops... petite correction:

ABookmark := ADataset.GetBookmark;
ADataset.DisableControls;
try
ADataset.Close;
ADataset.Open;
if ADataset.BookmarkValid(ABookmark) then ADataset.GotoBookmark(ABookmark);
finally
ADataset.EnableControls;
end;
Delphian Messages postés 3 Date d'inscription mardi 2 novembre 2010 Statut Membre Dernière intervention 2 novembre 2010
2 nov. 2010 à 14:14
Bonjour...

N'est ce pas la même fonctionnalitée que les méthodes "DisableControls" et "EnableControls" de la classe TDataset?

Exemple:

ABookmark := ADataset.GetBookmark;
ADataset.DisableControls;
try
ADataset.Close;
ADataset.Open;
if BookmarkValid(ABookmark) then ADataset.GotoBookmark(ADataset);
finally
ADataset.EnableControls;
end;
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
20 oct. 2010 à 10:05
Merci VieuxPère ...
A+
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
20 oct. 2010 à 00:00
Bonjour Mauricio,

Enfin un code qui apporte une solution à une contrainte ancienne des compos sgbd sur Delphi.

Jusqu'alors je contournais partiellement le probléme avec un RecNo sans pour autant me retrouver exactement sur la même ligne.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
15 oct. 2010 à 18:03
Pour tester le code, je vous propose de télécharger la démo de mes compos qui est ici:
http://sourceforge.net/projects/tcycomponents/fi les/Demo/demo3.40.zip/download

À vous ensuite d' installer mes compos ou d' appliquer le code sur votre propre DBgrid ...

A+
Rejoignez-nous