Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
28 nov. 2006 à 17:00
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
9 déc. 2006 à 14:35
salut tout le monde, j'ai un petit souci sur l'utilisation d'une dbgrid (je pense que le probleme vien d'elle).
voila le topo :
j'ai une form sur laquelle j'ai posé une dbgrid (DBGrid1) et une adoquery (ADOQuery1).
la dbgrid a pour datasource l'adoquery, mais n'affiche qu'un seul champ (grace à dbgrid.columns).
donc, au premier affichage, tout est ok.
ensuite, j'ai une procedure qui, grace a une autre adoquery (MonADOQuery), modifie un des champs qui est contenu dans ADOQuery1.
de plus, j'ai une procedure rafraichir, qui est de la forme:
ADOQuery1.active := false;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(MaRequete);
ADOQuery1.Active := true;
le probleme, c'est que quand je lance la procedure rafraichir apres la requete MonADOQuery, le champ n'est pas modifié ni dans DBGrid1, ni dans ADOQuery1).
donc pour attendre que la modification soit effective avant de lancer la procedure rafraichir, j'ai fait une fonction du genre:
repeat
sleep(50);
until getLeChamp = laNouvelleValeurDuChamp;
c'est a dire que la boucle s'arrete quand getLeChamp retourne la nouvelle valeur que j'ai affecté au champ grac à MonADOQuery.
la fonction getLeChamp est une simple ADOQuery qui fait un select du champ que je vien de modifier.
et pourtant, quand il atteint la procedure rafraichir, la DBGrid1 et l'ADOQuery1 ne sont pas a jour.