Les données ont été modifiées

Le
accesstivigno
Bonjour à tous,

Une question facile pour les pros mais qui me pose problème. (Access
2000 Windows XP et 2000)

J'ai un formulaire_1 qui ouvre plusieurs enregistrement d'une table.
Cependant tous les champs de la table ne sont pas affiché dans
formulaire_1. Dans formulaire_1 j'ai un bouton qui ouvre un
formulaire_2 dans lequel je peux modifier les champs qui
n'apparaissent pas dans formulaire_1. Ces champs sont en fait des
champs numériques et dans formulaire_1 j'affiche la somme de ces
champs. Donc lorsque je sort de formulaire_2 je veux recalculer la
somme que j'affiche dans formulaire_1.

Voici le code du bouton que j'ai mis dans formulaire_1. Lorsqu'il
essais d'exécuter la ligne de commande "Me.HeureUsine =
GetTotalHeures(PKID)" Je reçois le message "Les données ont été
modifiées"

Private Sub cmdHeureUsine_Click()
On Error GoTo Err_cmdHeureUsine_Click


Me.Refresh

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmHeuresUsine"

stLinkCriteria = "[PKID]=" & Me![PKID]
DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog


Me.HeureUsine = GetTotalHeures(PKID)

Exit_cmdHeureUsine_Click:
Exit Sub

Err_cmdHeureUsine_Click:
MsgBox Err.Description
Resume Exit_cmdHeureUsine_Click

End Sub

Je n'arrive pas à trouver ce qu'il faut ajouter pour que les données
soit rafraîchi avant que je refasse le calcul

Merci d'avance de votre aide!

Tivigno (débutant)
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Bertrand Lesmerises
Le #5420251
Salut!

Une tentative. Ajoute la commande suivante juste avant de commencer le
calcul. me.refresh pour forcé le rafraîchissement des données. Il est
possible aussi d'ajouter la commande docmd.runcommand accmdsaverecord

La meilleur solution, mais plus longue et ardu, c'est d'ouvrir ton deuxième
formulaire sur une source de données de travail (table temporaire), de
passer tes valeurs de tes champs par code et ensuite sur la fermeture de ton
deuxiéme formlaire, tu retransfert tes données dans le premier et tu
rafraichit les données. Bonne chance!

Bertrand


"Tivigno" news:
Bonjour à tous,

Une question facile pour les pros mais qui me pose problème. (Access
2000 Windows XP et 2000)

J'ai un formulaire_1 qui ouvre plusieurs enregistrement d'une table.
Cependant tous les champs de la table ne sont pas affiché dans
formulaire_1. Dans formulaire_1 j'ai un bouton qui ouvre un
formulaire_2 dans lequel je peux modifier les champs qui
n'apparaissent pas dans formulaire_1. Ces champs sont en fait des
champs numériques et dans formulaire_1 j'affiche la somme de ces
champs. Donc lorsque je sort de formulaire_2 je veux recalculer la
somme que j'affiche dans formulaire_1.

Voici le code du bouton que j'ai mis dans formulaire_1. Lorsqu'il
essais d'exécuter la ligne de commande "Me.HeureUsine > GetTotalHeures(PKID)" Je reçois le message "Les données ont été
modifiées"

Private Sub cmdHeureUsine_Click()
On Error GoTo Err_cmdHeureUsine_Click


Me.Refresh

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmHeuresUsine"

stLinkCriteria = "[PKID]=" & Me![PKID]
DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog


Me.HeureUsine = GetTotalHeures(PKID)

Exit_cmdHeureUsine_Click:
Exit Sub

Err_cmdHeureUsine_Click:
MsgBox Err.Description
Resume Exit_cmdHeureUsine_Click

End Sub

Je n'arrive pas à trouver ce qu'il faut ajouter pour que les données
soit rafraîchi avant que je refasse le calcul...

Merci d'avance de votre aide!

Tivigno (débutant)


Frank Vigno
Le #5420151
J'ai essayé d'ajouter me.refresh ou docmd.runcommand accmdsaverecord mais
c'est sans succès. J'ai fait plusieurs test et le dernier que j'ai fait
c'est d'ajouter une msgbox juste avant de faire la commande "Me.HeureUsine =
GetTotalHeures(PKID)" et quand on fait apparaître cette fenêtre le message
n'apparait pas??? Pour ce qui est de la deuxième méthode dont tu me parles.
Je ne suis pas sur du résultat car à la fin il faut pousser les nouvelles
données dans la table et mettre à jour de nouveau. Je crois bien que ça va
donner le même résultat... Pour l'instant je cherche encore mais si je
trouve rien d'autre je vais faire le test avec la deuxième méthode.

Merci beaucoup

P.S. Si tu pense à autre chose fait le moi savoir...

Tivigno


Salut!

Une tentative. Ajoute la commande suivante juste avant de commencer le
calcul. me.refresh pour forcé le rafraîchissement des données. Il est
possible aussi d'ajouter la commande docmd.runcommand accmdsaverecord

La meilleur solution, mais plus longue et ardu, c'est d'ouvrir ton deuxième
formulaire sur une source de données de travail (table temporaire), de
passer tes valeurs de tes champs par code et ensuite sur la fermeture de ton
deuxiéme formlaire, tu retransfert tes données dans le premier et tu
rafraichit les données. Bonne chance!

Bertrand


"Tivigno" news:
Bonjour à tous,

Une question facile pour les pros mais qui me pose problème. (Access
2000 Windows XP et 2000)

J'ai un formulaire_1 qui ouvre plusieurs enregistrement d'une table.
Cependant tous les champs de la table ne sont pas affiché dans
formulaire_1. Dans formulaire_1 j'ai un bouton qui ouvre un
formulaire_2 dans lequel je peux modifier les champs qui
n'apparaissent pas dans formulaire_1. Ces champs sont en fait des
champs numériques et dans formulaire_1 j'affiche la somme de ces
champs. Donc lorsque je sort de formulaire_2 je veux recalculer la
somme que j'affiche dans formulaire_1.

Voici le code du bouton que j'ai mis dans formulaire_1. Lorsqu'il
essais d'exécuter la ligne de commande "Me.HeureUsine > > GetTotalHeures(PKID)" Je reçois le message "Les données ont été
modifiées"

Private Sub cmdHeureUsine_Click()
On Error GoTo Err_cmdHeureUsine_Click


Me.Refresh

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmHeuresUsine"

stLinkCriteria = "[PKID]=" & Me![PKID]
DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog


Me.HeureUsine = GetTotalHeures(PKID)

Exit_cmdHeureUsine_Click:
Exit Sub

Err_cmdHeureUsine_Click:
MsgBox Err.Description
Resume Exit_cmdHeureUsine_Click

End Sub

Je n'arrive pas à trouver ce qu'il faut ajouter pour que les données
soit rafraîchi avant que je refasse le calcul...

Merci d'avance de votre aide!

Tivigno (débutant)







3stone
Le #5419991
Salut,

"Tivigno"
Une question facile pour les pros mais qui me pose problème. (Access
2000 Windows XP et 2000)

J'ai un formulaire_1 qui ouvre plusieurs enregistrement d'une table.
Cependant tous les champs de la table ne sont pas affiché dans
formulaire_1. Dans formulaire_1 j'ai un bouton qui ouvre un
formulaire_2 dans lequel je peux modifier les champs qui
n'apparaissent pas dans formulaire_1. Ces champs sont en fait des
champs numériques et dans formulaire_1 j'affiche la somme de ces
champs. Donc lorsque je sort de formulaire_2 je veux recalculer la
somme que j'affiche dans formulaire_1.



A partir de ton formulaire_2, avant de fermer, tu fait:

Forms!Formulaire_1.Requery

ce qui mettra le form1 à jour...



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Tivigno
Le #5417911
-----Message d'origine-----
Salut,

"Tivigno"
Une question facile pour les pros mais qui me pose
problème. (Access


2000 Windows XP et 2000)

J'ai un formulaire_1 qui ouvre plusieurs enregistrement
d'une table.


Cependant tous les champs de la table ne sont pas
affiché dans


formulaire_1. Dans formulaire_1 j'ai un bouton qui
ouvre un


formulaire_2 dans lequel je peux modifier les champs qui
n'apparaissent pas dans formulaire_1. Ces champs sont
en fait des


champs numériques et dans formulaire_1 j'affiche la
somme de ces


champs. Donc lorsque je sort de formulaire_2 je veux
recalculer la


somme que j'affiche dans formulaire_1.



A partir de ton formulaire_2, avant de fermer, tu
fait:


Forms!Formulaire_1.Requery

ce qui mettra le form1 à jour...



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------



Merci Pierre,

C'est vrai que ça fonctionne. Cependant le problème c'est
que le fait de rafraichir ramène formulaire_1 au premier
enregistrement. Sur formulaire_1 j'ai une barre de
défilement horisontal et une vertical. Ce qui arrive
lorsque je requery c'est que le formulaire reviend sur le
premier enregistrement et à gauche complètement. Moi je
voudrais que formulaire_1 ne change pas de position donc
qu'il reviennent comme avant d'aller changer les infos
dans formulaire_2.

J'ai trouvé un peu de code qui me fait retourné au bon
enregistrement mais il reviend quand même a gauche et
l'enregistrement se place en première ligne ou en dernière
ligne selon l'endroit ou il se trouve.

Franck


Publicité
Poster une réponse
Anonyme