ADOQuery + DBGrid : rafraichissement

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 28 nov. 2006 à 17:00
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 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.

merci de votre aide ...

PS : ma base est en access

3 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 déc. 2006 à 16:30
Que fais-tu avec MonADOQuery ?

cantador
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
8 déc. 2006 à 20:28
update MaTable set id_UneAutreTable = laNouvelleValeurDuChamp where id_CetteTable=idMaTable;

en fait, je met a jour la cle distante. La function GetLeChamp est donc :
select id_UneAutreTable from MaTable where id_CetteTable=idMaTable;

donc en gros, je fais un select sur MaTable jusqu'a ce que j'obtienne le bon id_UneAutreTable que je viens de modifier.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
9 déc. 2006 à 14:35
Vraiment très curieux ton souci..
essaie : DBGrid1.refresh ou ADOQuery.refresh;

cantador
0
Rejoignez-nous