ADOQuery + DBGrid : rafraichissement

Signaler
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
-
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
-
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

Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Que fais-tu avec MonADOQuery ?

cantador
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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.
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
Vraiment très curieux ton souci..
essaie : DBGrid1.refresh ou ADOQuery.refresh;

cantador