OVH Cloud OVH Cloud

"Impossible d'enregistrer...

13 réponses
Avatar
Jo
Bonjour!
J'ai grandement besoin d'aide svp.

Je fais une validation before update, voici mon code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
MsgBox "Destinataire pour résolution obligatoire!"
Cancel = True
End If
End Sub

La validation se fait bien, sauf quand je viens pour fermer mon formulaire,
alors j'ai le message "Impossible d'enregistrer cet enregistrement pour
l'instant"
Je ne veux pas qu'apparaisse ce message, mais je ne sais pas comment faire.

Merci à l'avance

10 réponses

1 2
Avatar
Raymond [mvp]
Bonsoir.

C'est normal, la saisie est en cours et non terminée. ce n'est pas le
message qu'il faut supprimer mais sa cause. Il faut placer un Me.Undo pour
supprimer les saisies en cours mais il est difficile de te donner
l'événement exact sans connaître l'application.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Bonjour!
J'ai grandement besoin d'aide svp.

Je fais une validation before update, voici mon code:

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
MsgBox "Destinataire pour résolution obligatoire!"
Cancel = True
End If
End Sub

La validation se fait bien, sauf quand je viens pour fermer mon
formulaire,
alors j'ai le message "Impossible d'enregistrer cet enregistrement pour
l'instant"
Je ne veux pas qu'apparaisse ce message, mais je ne sais pas comment
faire.

Merci à l'avance


Avatar
Jo
Bonsoir Raymond,

mais je ne veux pas annuler la saisie. Je souhaite empêcher la fermeture
du formulaire pour forcer l'utilisateur à compléter la saisie. Ça fonctionne
bien lorsqu'on passe d'un enregistrement à l'autre, mais pas sur fermeture du
formulaire. Faut-il que je mettre quelque chose dans le unload? J'ai
cherché une solution toute la journée.



Bonsoir.

C'est normal, la saisie est en cours et non terminée. ce n'est pas le
message qu'il faut supprimer mais sa cause. Il faut placer un Me.Undo pour
supprimer les saisies en cours mais il est difficile de te donner
l'événement exact sans connaître l'application.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum





Avatar
Raymond [mvp]
Bonjour.

Dans ce cas tu procèdes de la même façon que tu as fait pour le
BeforeUpdate:
Cancel = True
dans le Form_Unload qui annulera la fermeture.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Bonsoir Raymond,

mais je ne veux pas annuler la saisie. Je souhaite empêcher la fermeture
du formulaire pour forcer l'utilisateur à compléter la saisie. Ça
fonctionne
bien lorsqu'on passe d'un enregistrement à l'autre, mais pas sur fermeture
du
formulaire. Faut-il que je mettre quelque chose dans le unload? J'ai
cherché une solution toute la journée.




Avatar
Jo
Merci de ta réponse Raymond,
J'ai remis exactement la même validation sur Form_unload. J'ai toujours le
fameux message "Impossible d'enregistrer cet enregistrement pour l'instant"
J'ai aussi essayé de faire :

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.FlagPasOK = False
If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
MsgBox "Destinataire pour résolution obligatoire!"
Me.FlagPasOK = True
Cancel = True
End If
End Sub


Private Sub Form_Unload(Cancel As Integer)
Cancel = Me.FlagPasOK
End Sub

mais j'ai encore une fois le message.
J'ai access 2002.



Bonjour.

Dans ce cas tu procèdes de la même façon que tu as fait pour le
BeforeUpdate:
Cancel = True
dans le Form_Unload qui annulera la fermeture.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Bonsoir Raymond,

mais je ne veux pas annuler la saisie. Je souhaite empêcher la fermeture
du formulaire pour forcer l'utilisateur à compléter la saisie. Ça
fonctionne
bien lorsqu'on passe d'un enregistrement à l'autre, mais pas sur fermeture
du
formulaire. Faut-il que je mettre quelque chose dans le unload? J'ai
cherché une solution toute la journée.










Avatar
Raymond [mvp]
le problème c'est que dans ton beforeupdate ça ne doit pas passer dans le if
et tu te retrouves avec un enregistrement à modifier mais access ne peut pas
le modifier. tu es coincé entre le beforeupdate et le afterupdate. il faut
compléter ta fonction beforeupdate pour prévoir tous les cas.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Merci de ta réponse Raymond,
J'ai remis exactement la même validation sur Form_unload. J'ai toujours
le
fameux message "Impossible d'enregistrer cet enregistrement pour
l'instant"
J'ai aussi essayé de faire :

Private Sub Form_BeforeUpdate(Cancel As Integer)
Me.FlagPasOK = False
If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
MsgBox "Destinataire pour résolution obligatoire!"
Me.FlagPasOK = True
Cancel = True
End If
End Sub


Private Sub Form_Unload(Cancel As Integer)
Cancel = Me.FlagPasOK
End Sub

mais j'ai encore une fois le message.
J'ai access 2002.


Avatar
Jo
Je viens d'ajouter un On Error ... dans le Form_BeforeUpdate, et ça tombe
dedans.
Qu'est-ce que je peux mettre sur le On error ?


Bonjour.

Dans ce cas tu procèdes de la même façon que tu as fait pour le
BeforeUpdate:
Cancel = True
dans le Form_Unload qui annulera la fermeture.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Bonsoir Raymond,

mais je ne veux pas annuler la saisie. Je souhaite empêcher la fermeture
du formulaire pour forcer l'utilisateur à compléter la saisie. Ça
fonctionne
bien lorsqu'on passe d'un enregistrement à l'autre, mais pas sur fermeture
du
formulaire. Faut-il que je mettre quelque chose dans le unload? J'ai
cherché une solution toute la journée.










Avatar
Raymond [mvp]
ça n'a pas beaucoup d'importance car tu connais le contenu du message
d'erreur. ce qu'il faut c'est supprimer la cause de l'erreur. à part le fait
que access ne peut pas enregistrer l'enregistrement car il manque des
éléments, il faut savoir ce que tu veux faire de l'enregistrement en cours.
moi, je mettrais un Me.undo et un message d'alerte indiquant la situation,
ce qui revient au même.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Je viens d'ajouter un On Error ... dans le Form_BeforeUpdate, et ça tombe
dedans.
Qu'est-ce que je peux mettre sur le On error ?



Avatar
Jo
S'cuse-moi, je dois être vraiment bouché, mais pourquoi ça fonctionne bien
quand je veux changer d'enregisitrement (j'ai le message "Destinataire pour
résolution obligatoire" et le formulaire reste sur l'enregistrement non
valide) mais que ça plante quand je veux fermer le formulaire?




ça n'a pas beaucoup d'importance car tu connais le contenu du message
d'erreur. ce qu'il faut c'est supprimer la cause de l'erreur. à part le fait
que access ne peut pas enregistrer l'enregistrement car il manque des
éléments, il faut savoir ce que tu veux faire de l'enregistrement en cours.
moi, je mettrais un Me.undo et un message d'alerte indiquant la situation,
ce qui revient au même.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Je viens d'ajouter un On Error ... dans le Form_BeforeUpdate, et ça tombe
dedans.
Qu'est-ce que je peux mettre sur le On error ?









Avatar
Jo
Bon j'ai essayé avec un me.undo, mais ça n'a pas réglé mon problèm, j'ai
toujour le fameux message...

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
MsgBox "Destinataire pour résolution obligatoire!"
Me.Undo
Cancel = True
End If
End Sub


ça n'a pas beaucoup d'importance car tu connais le contenu du message
d'erreur. ce qu'il faut c'est supprimer la cause de l'erreur. à part le fait
que access ne peut pas enregistrer l'enregistrement car il manque des
éléments, il faut savoir ce que tu veux faire de l'enregistrement en cours.
moi, je mettrais un Me.undo et un message d'alerte indiquant la situation,
ce qui revient au même.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum




Avatar
Raymond [mvp]
donc le message système s'affiche avant l'événement beforeupdate et on ne
pourra pas l'intercepter.
essaie de le faire sans le test
Private Sub Form_BeforeUpdate(Cancel As Integer)
' If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
' MsgBox "Destinataire pour résolution obligatoire!"
Me.Undo
Cancel = True
' End If
End Sub

tu devrais voir ce qui se passe car en demandant la fermeture, ça va effacer
les saisies éventuelles et revenir dessus.
pourrais-tu m'envoyer le formulaire et la table et les éléments
indispensables, par mail, en zip si possible et tu enlèves XYZ. dans mon
adresse.
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jo" a écrit dans le message de news:

Bon j'ai essayé avec un me.undo, mais ça n'a pas réglé mon problèm, j'ai
toujour le fameux message...

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.DteConf) And IsNull(Me.CodeDestRes) Then
MsgBox "Destinataire pour résolution obligatoire!"
Me.Undo
Cancel = True
End If
End Sub



1 2