OVH Cloud OVH Cloud

Requery d'un sous-formulaire

7 réponses
Avatar
Michel Boivin
Bonjour à tous,

J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
l'inscription d'une transaction dans le formulaire principal.
Le sous-formulaire est basé sur une requête et affiche les transactions
inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
cette nouvelle transaction.

Or le sous-formulaire affiche la dernière transaction entrée de façon
aléatoire (où selon un comportement que je ne peux identifier). C'est comme
si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
puis après l'inscription de la deuxième, le deux dernières s'affichent.

Voici une partie du code impliqué:

TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
TbTransaction("Commentaire") = CtrlCommentaire
TbTransaction("DateCréation") = Now()

TbTransaction.Update
TbTransaction.Close
Base02.Close



DoCmd.SetWarnings False
DoCmd.OpenQuery "R_CalculRequisVrai"
DoCmd.SetWarnings True
varCalculRequis = True
'' *******************************
If ModeOuvForm = "Nouvelle" Then

BtnAutreTrans.Visible = True
BtnAutreTrans.SetFocus
BtnOK.Visible = False

Forms![F_Transaction]![FS_Solde].Requery

Toute aide serait grandement appréciée, je suis arrêté par ce problème
depuis une semaine!

Michel, Cap-Rouge, Québec, CANADA

7 réponses

Avatar
Bonjour

une piste (sans grande conviction) :

Un me.recalc au niveau du formulaire peut peut-être résoudre le problème ?

Sinon, vérifier que l'enregistrement est bien "validé" avant d'ajouter les valeurs :

pour ce faire, incorporer quelque part dans le code pour identifier le problème :

msgbox CCur(CtrlAutreFrais.Value)
msgbox CtrlCommentaire.Value

puis renouveler avec
msgbox CCur(CtrlAutreFrais.Text)
msgbox CtrlCommentaire.Text

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------



"Michel Boivin" <Michel a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
| l'inscription d'une transaction dans le formulaire principal.
| Le sous-formulaire est basé sur une requête et affiche les transactions
| inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
| nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
| cette nouvelle transaction.
|
| Or le sous-formulaire affiche la dernière transaction entrée de façon
| aléatoire (où selon un comportement que je ne peux identifier). C'est comme
| si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
| sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
| successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
| puis après l'inscription de la deuxième, le deux dernières s'affichent.
|
| Voici une partie du code impliqué:
|
| TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
| TbTransaction("Commentaire") = CtrlCommentaire
| TbTransaction("DateCréation") = Now()
|
| TbTransaction.Update
| TbTransaction.Close
| Base02.Close
|
|
|
| DoCmd.SetWarnings False
| DoCmd.OpenQuery "R_CalculRequisVrai"
| DoCmd.SetWarnings True
| varCalculRequis = True
| '' *******************************
| If ModeOuvForm = "Nouvelle" Then
|
| BtnAutreTrans.Visible = True
| BtnAutreTrans.SetFocus
| BtnOK.Visible = False
|
| Forms![F_Transaction]![FS_Solde].Requery
|
| Toute aide serait grandement appréciée, je suis arrêté par ce problème
| depuis une semaine!
|
| Michel, Cap-Rouge, Québec, CANADA
Avatar
Michel Boivin
Merci Arnaud, j'essaie ça et reviens


Bonjour

une piste (sans grande conviction) :

Un me.recalc au niveau du formulaire peut peut-être résoudre le problème ?

Sinon, vérifier que l'enregistrement est bien "validé" avant d'ajouter les valeurs :

pour ce faire, incorporer quelque part dans le code pour identifier le problème :

msgbox CCur(CtrlAutreFrais.Value)
msgbox CtrlCommentaire.Value

puis renouveler avec
msgbox CCur(CtrlAutreFrais.Text)
msgbox CtrlCommentaire.Text

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------



"Michel Boivin" <Michel a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
| l'inscription d'une transaction dans le formulaire principal.
| Le sous-formulaire est basé sur une requête et affiche les transactions
| inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
| nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
| cette nouvelle transaction.
|
| Or le sous-formulaire affiche la dernière transaction entrée de façon
| aléatoire (où selon un comportement que je ne peux identifier). C'est comme
| si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
| sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
| successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
| puis après l'inscription de la deuxième, le deux dernières s'affichent.
|
| Voici une partie du code impliqué:
|
| TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
| TbTransaction("Commentaire") = CtrlCommentaire
| TbTransaction("DateCréation") = Now()
|
| TbTransaction.Update
| TbTransaction.Close
| Base02.Close
|
|
|
| DoCmd.SetWarnings False
| DoCmd.OpenQuery "R_CalculRequisVrai"
| DoCmd.SetWarnings True
| varCalculRequis = True
| '' *******************************
| If ModeOuvForm = "Nouvelle" Then
|
| BtnAutreTrans.Visible = True
| BtnAutreTrans.SetFocus
| BtnOK.Visible = False
|
| Forms![F_Transaction]![FS_Solde].Requery
|
| Toute aide serait grandement appréciée, je suis arrêté par ce problème
| depuis une semaine!
|
| Michel, Cap-Rouge, Québec, CANADA





Avatar
Michel Boivin
Arnaud,

J'ai essayé le Me.Recalc sur le formulaire, avant le requery du
sous-formulaire mais sans succès. Par contre, je suis certain que toutes les
transactions sont bien enregistrées dans la table appropriée.

Se pourrait-il que ce problème soit relié au fait que je travaille avec des
tables attachées contenues dans une base spécifique pour les données,
différente de celle où se trouvent les formulaires, requêtes et tout code ?

Merci beaucoup pour ton aide.

Michel

"Anor" wrote:

Bonjour

une piste (sans grande conviction) :

Un me.recalc au niveau du formulaire peut peut-être résoudre le problème ?

Sinon, vérifier que l'enregistrement est bien "validé" avant d'ajouter les valeurs :

pour ce faire, incorporer quelque part dans le code pour identifier le problème :

msgbox CCur(CtrlAutreFrais.Value)
msgbox CtrlCommentaire.Value

puis renouveler avec
msgbox CCur(CtrlAutreFrais.Text)
msgbox CtrlCommentaire.Text

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------



"Michel Boivin" <Michel a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
| l'inscription d'une transaction dans le formulaire principal.
| Le sous-formulaire est basé sur une requête et affiche les transactions
| inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
| nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
| cette nouvelle transaction.
|
| Or le sous-formulaire affiche la dernière transaction entrée de façon
| aléatoire (où selon un comportement que je ne peux identifier). C'est comme
| si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
| sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
| successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
| puis après l'inscription de la deuxième, le deux dernières s'affichent.
|
| Voici une partie du code impliqué:
|
| TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
| TbTransaction("Commentaire") = CtrlCommentaire
| TbTransaction("DateCréation") = Now()
|
| TbTransaction.Update
| TbTransaction.Close
| Base02.Close
|
|
|
| DoCmd.SetWarnings False
| DoCmd.OpenQuery "R_CalculRequisVrai"
| DoCmd.SetWarnings True
| varCalculRequis = True
| '' *******************************
| If ModeOuvForm = "Nouvelle" Then
|
| BtnAutreTrans.Visible = True
| BtnAutreTrans.SetFocus
| BtnOK.Visible = False
|
| Forms![F_Transaction]![FS_Solde].Requery
|
| Toute aide serait grandement appréciée, je suis arrêté par ce problème
| depuis une semaine!
|
| Michel, Cap-Rouge, Québec, CANADA





Avatar
(¯`·.,,.- [ Dave ] -.,,.·´¯)
Bonjour Michel,
Déjà faut savoir que depuis la verion 2000 de Access, celui-ci considère de
plus en plus un sous formulaire comme un contrôle du formulaire principal
(comme un champ ou un bouton) donc son rafraichissement par la méthode que tu
utilises ne marchera que de cette façon :

DoCmd.Requery ""
ou encore là :
DoCmd.Requery "[FS_Solde]"

voilà @+

"Michel Boivin" wrote:

Arnaud,

J'ai essayé le Me.Recalc sur le formulaire, avant le requery du
sous-formulaire mais sans succès. Par contre, je suis certain que toutes les
transactions sont bien enregistrées dans la table appropriée.

Se pourrait-il que ce problème soit relié au fait que je travaille avec des
tables attachées contenues dans une base spécifique pour les données,
différente de celle où se trouvent les formulaires, requêtes et tout code ?

Merci beaucoup pour ton aide.

Michel

"Anor" wrote:

Bonjour

une piste (sans grande conviction) :

Un me.recalc au niveau du formulaire peut peut-être résoudre le problème ?

Sinon, vérifier que l'enregistrement est bien "validé" avant d'ajouter les valeurs :

pour ce faire, incorporer quelque part dans le code pour identifier le problème :

msgbox CCur(CtrlAutreFrais.Value)
msgbox CtrlCommentaire.Value

puis renouveler avec
msgbox CCur(CtrlAutreFrais.Text)
msgbox CtrlCommentaire.Text

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------



"Michel Boivin" <Michel a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
| l'inscription d'une transaction dans le formulaire principal.
| Le sous-formulaire est basé sur une requête et affiche les transactions
| inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
| nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
| cette nouvelle transaction.
|
| Or le sous-formulaire affiche la dernière transaction entrée de façon
| aléatoire (où selon un comportement que je ne peux identifier). C'est comme
| si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
| sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
| successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
| puis après l'inscription de la deuxième, le deux dernières s'affichent.
|
| Voici une partie du code impliqué:
|
| TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
| TbTransaction("Commentaire") = CtrlCommentaire
| TbTransaction("DateCréation") = Now()
|
| TbTransaction.Update
| TbTransaction.Close
| Base02.Close
|
|
|
| DoCmd.SetWarnings False
| DoCmd.OpenQuery "R_CalculRequisVrai"
| DoCmd.SetWarnings True
| varCalculRequis = True
| '' *******************************
| If ModeOuvForm = "Nouvelle" Then
|
| BtnAutreTrans.Visible = True
| BtnAutreTrans.SetFocus
| BtnOK.Visible = False
|
| Forms![F_Transaction]![FS_Solde].Requery
|
| Toute aide serait grandement appréciée, je suis arrêté par ce problème
| depuis une semaine!
|
| Michel, Cap-Rouge, Québec, CANADA







Avatar
Michel Boivin
Merci Dave.

J'ai confiance dans cette solution que je vais essayer plus tard en journée
et je reviens afficher le résultat

@+

Michel


Bonjour Michel,
Déjà faut savoir que depuis la verion 2000 de Access, celui-ci considère de
plus en plus un sous formulaire comme un contrôle du formulaire principal
(comme un champ ou un bouton) donc son rafraichissement par la méthode que tu
utilises ne marchera que de cette façon :

DoCmd.Requery ""
ou encore là :
DoCmd.Requery "[FS_Solde]"

voilà @+

"Michel Boivin" wrote:

Arnaud,

J'ai essayé le Me.Recalc sur le formulaire, avant le requery du
sous-formulaire mais sans succès. Par contre, je suis certain que toutes les
transactions sont bien enregistrées dans la table appropriée.

Se pourrait-il que ce problème soit relié au fait que je travaille avec des
tables attachées contenues dans une base spécifique pour les données,
différente de celle où se trouvent les formulaires, requêtes et tout code ?

Merci beaucoup pour ton aide.

Michel

"Anor" wrote:

Bonjour

une piste (sans grande conviction) :

Un me.recalc au niveau du formulaire peut peut-être résoudre le problème ?

Sinon, vérifier que l'enregistrement est bien "validé" avant d'ajouter les valeurs :

pour ce faire, incorporer quelque part dans le code pour identifier le problème :

msgbox CCur(CtrlAutreFrais.Value)
msgbox CtrlCommentaire.Value

puis renouveler avec
msgbox CCur(CtrlAutreFrais.Text)
msgbox CtrlCommentaire.Text

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------



"Michel Boivin" <Michel a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
| l'inscription d'une transaction dans le formulaire principal.
| Le sous-formulaire est basé sur une requête et affiche les transactions
| inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
| nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
| cette nouvelle transaction.
|
| Or le sous-formulaire affiche la dernière transaction entrée de façon
| aléatoire (où selon un comportement que je ne peux identifier). C'est comme
| si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
| sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
| successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
| puis après l'inscription de la deuxième, le deux dernières s'affichent.
|
| Voici une partie du code impliqué:
|
| TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
| TbTransaction("Commentaire") = CtrlCommentaire
| TbTransaction("DateCréation") = Now()
|
| TbTransaction.Update
| TbTransaction.Close
| Base02.Close
|
|
|
| DoCmd.SetWarnings False
| DoCmd.OpenQuery "R_CalculRequisVrai"
| DoCmd.SetWarnings True
| varCalculRequis = True
| '' *******************************
| If ModeOuvForm = "Nouvelle" Then
|
| BtnAutreTrans.Visible = True
| BtnAutreTrans.SetFocus
| BtnOK.Visible = False
|
| Forms![F_Transaction]![FS_Solde].Requery
|
| Toute aide serait grandement appréciée, je suis arrêté par ce problème
| depuis une semaine!
|
| Michel, Cap-Rouge, Québec, CANADA









Avatar
Mihcel Boivin
Bonjour Dave,

J'ai essayé ta suggestion, malheureusement, pas de succès!

Je continue à chercher...

Il se peut que le problème soit quelque part entre la mise à jour de la
table et/ou dans la requête sur laquelle est fondé le sous-formulaire. En
effet, j'ai inséré la commande Docmd.openquery sur la requête impliquée,
avant la commande requery du sous-formulaire et je constate qu'à l'occasion,
la requête ne tient pas compte de la dernière trannsaction inscrite (cette
dernière est absente de la requête, malgré le fait que la table est bien à
jour et inclut cette dernière transaction).

Merci de ton aide et bonne journée


Bonjour Michel,
Déjà faut savoir que depuis la verion 2000 de Access, celui-ci considère de
plus en plus un sous formulaire comme un contrôle du formulaire principal
(comme un champ ou un bouton) donc son rafraichissement par la méthode que tu
utilises ne marchera que de cette façon :

DoCmd.Requery ""
ou encore là :
DoCmd.Requery "[FS_Solde]"

voilà @+

"Michel Boivin" wrote:

Arnaud,

J'ai essayé le Me.Recalc sur le formulaire, avant le requery du
sous-formulaire mais sans succès. Par contre, je suis certain que toutes les
transactions sont bien enregistrées dans la table appropriée.

Se pourrait-il que ce problème soit relié au fait que je travaille avec des
tables attachées contenues dans une base spécifique pour les données,
différente de celle où se trouvent les formulaires, requêtes et tout code ?

Merci beaucoup pour ton aide.

Michel

"Anor" wrote:

Bonjour

une piste (sans grande conviction) :

Un me.recalc au niveau du formulaire peut peut-être résoudre le problème ?

Sinon, vérifier que l'enregistrement est bien "validé" avant d'ajouter les valeurs :

pour ce faire, incorporer quelque part dans le code pour identifier le problème :

msgbox CCur(CtrlAutreFrais.Value)
msgbox CtrlCommentaire.Value

puis renouveler avec
msgbox CCur(CtrlAutreFrais.Text)
msgbox CtrlCommentaire.Text

à+
--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------



"Michel Boivin" <Michel a écrit dans le message de news:

| Bonjour à tous,
|
| J'ai un problème avec la mise à jour d'un sous-formulaire à la suite de
| l'inscription d'une transaction dans le formulaire principal.
| Le sous-formulaire est basé sur une requête et affiche les transactions
| inscrites au système. Lorsque l'utilisateur a terminé l'inscription d'une
| nouvelle transaction, je fais un requery du sous-formulaire afin d'afficher
| cette nouvelle transaction.
|
| Or le sous-formulaire affiche la dernière transaction entrée de façon
| aléatoire (où selon un comportement que je ne peux identifier). C'est comme
| si il y avait un délai (ou mémoire tampon) dans la mise à jour de la table
| sous-jacente. Si je fais l'inscription de 2 nouvelles transactions
| successives, la première inscrite ne s'affiche pas dans le sous-formulaire et
| puis après l'inscription de la deuxième, le deux dernières s'affichent.
|
| Voici une partie du code impliqué:
|
| TbTransaction("AutreFrais") = CCur(CtrlAutreFrais)
| TbTransaction("Commentaire") = CtrlCommentaire
| TbTransaction("DateCréation") = Now()
|
| TbTransaction.Update
| TbTransaction.Close
| Base02.Close
|
|
|
| DoCmd.SetWarnings False
| DoCmd.OpenQuery "R_CalculRequisVrai"
| DoCmd.SetWarnings True
| varCalculRequis = True
| '' *******************************
| If ModeOuvForm = "Nouvelle" Then
|
| BtnAutreTrans.Visible = True
| BtnAutreTrans.SetFocus
| BtnOK.Visible = False
|
| Forms![F_Transaction]![FS_Solde].Requery
|
| Toute aide serait grandement appréciée, je suis arrêté par ce problème
| depuis une semaine!
|
| Michel, Cap-Rouge, Québec, CANADA









Avatar
Bonjour Michel

"Mihcel Boivin"
|
| je constate qu'à l'occasion,
| la requête ne tient pas compte de la dernière trannsaction inscrite (cette
| dernière est absente de la requête, malgré le fait que la table est bien à
| jour et inclut cette dernière transaction).
|


cela confirme que :
1 - ce n'est pas le fait d'avoir des tables attachées qui dérange
2 - c'est probablement la valeur du ou des critères que tu utilises dans la requête (condition
where de la requete source)
qui n'est pas à jour au moment où tu affiches ton formulaire+sous formulaire

je ne vois que ça

a+

--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
-----------------------------------