OVH Cloud OVH Cloud

Form_Unload

9 réponses
Avatar
Jo
Bonjour les pros!

Voici mon code :
-------------------------------
Option Compare Database
Option Explicit
Dim FermerOuiNon As Boolean

Private Sub Form_Current()
FermerOuiNon = True
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Date_Disposition) Or Me.Code_Raison > 0 Then
If MsgBox("Vous avez commencé à entrer une disposition, désirez-vous
la compléter?" & vbCrLf & "Oui pour continuer la saisie", vbYesNo) = vbYes
Then
FermerOuiNon = False
Cancel = True
Else
Me.Code_Raison = 0
Me.Date_Disposition = Null
End If
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
If Not FermerOuiNon Then Cancel = True
End Sub
-------------------------------

Mon problème est quand je réponds "Oui" (je veux continuer la saisie) sur la
fermeture du formulaire. La fermeture est bien annulée, mais les infos
saisis disparaissents (comme si je faisais la touche "esc"!!).

Que dois-je faire pour annuler la fermeture ET garder les infos?

9 réponses

Avatar
Gilbert
Bonjour,

Ne serait-ce pas le Cancel=True dans le Form_BeforeUpdate qui t'empêche de
conserver tes données?

Gilbert


"Jo" a écrit dans le message de
news:
Bonjour les pros!

Voici mon code :
-------------------------------
Option Compare Database
Option Explicit
Dim FermerOuiNon As Boolean

Private Sub Form_Current()
FermerOuiNon = True
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Date_Disposition) Or Me.Code_Raison > 0 Then
If MsgBox("Vous avez commencé à entrer une disposition,
désirez-vous

la compléter?" & vbCrLf & "Oui pour continuer la saisie", vbYesNo) = vbYes
Then
FermerOuiNon = False
Cancel = True
Else
Me.Code_Raison = 0
Me.Date_Disposition = Null
End If
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
If Not FermerOuiNon Then Cancel = True
End Sub
-------------------------------

Mon problème est quand je réponds "Oui" (je veux continuer la saisie) sur
la

fermeture du formulaire. La fermeture est bien annulée, mais les infos
saisis disparaissents (comme si je faisais la touche "esc"!!).

Que dois-je faire pour annuler la fermeture ET garder les infos?


Avatar
Jo
Bonjour Gilbert,

si j'enlève le cancel=true dans le beforeUpdate, ça règle effectivement mon
problème à la fermeture du form, mais si je réponds "oui à la question sur un
changement d'enregistrement (suivant/précédent), ça ne marche plus.



Bonjour,

Ne serait-ce pas le Cancel=True dans le Form_BeforeUpdate qui t'empêche de
conserver tes données?

Gilbert


Avatar
ze Titi
Bonjour Jo

Un truc idiot (non testé...),

si tu places un
Docmd.CancelEvent
à la place de ton
Cancel=true
ça donne quoi ?

Bonjour Gilbert,

si j'enlève le cancel=true dans le beforeUpdate, ça règle effectivement mon
problème à la fermeture du form, mais si je réponds "oui à la question sur un
changement d'enregistrement (suivant/précédent), ça ne marche plus.



Bonjour,

Ne serait-ce pas le Cancel=True dans le Form_BeforeUpdate qui t'empêche de
conserver tes données?

Gilbert



--
Voilou !
Bon code
Cordialement,

Ze Titi


Avatar
Jo
Bonjour Ze Titi,

bonne idée! mais ça donne exactement le même résultat! :-(
La solution serait de mettre un bouton fermer, mais les utilisateurs
utilisent souvent ce formulaire en feuille de données...


Bonjour Jo

Un truc idiot (non testé...),

si tu places un
Docmd.CancelEvent
à la place de ton
Cancel=true
ça donne quoi ?


Avatar
ze Titi
Bonjour Jo

Rien ne t'emêche de bloquer le mode feuille de données... ;-)


Bonjour Ze Titi,

bonne idée! mais ça donne exactement le même résultat! :-(
La solution serait de mettre un bouton fermer, mais les utilisateurs
utilisent souvent ce formulaire en feuille de données...


Bonjour Jo

Un truc idiot (non testé...),

si tu places un
Docmd.CancelEvent
à la place de ton
Cancel=true
ça donne quoi ?



--
Voilou !
Bon code
Cordialement,

Ze Titi


Avatar
Jo
Impossible, je vais me faire assassiner!


Bonjour Jo

Rien ne t'emêche de bloquer le mode feuille de données... ;-)


Bonjour Ze Titi,

bonne idée! mais ça donne exactement le même résultat! :-(
La solution serait de mettre un bouton fermer, mais les utilisateurs
utilisent souvent ce formulaire en feuille de données...


Bonjour Jo

Un truc idiot (non testé...),

si tu places un
Docmd.CancelEvent
à la place de ton
Cancel=true
ça donne quoi ?



--
Voilou !
Bon code
Cordialement,

Ze Titi







Avatar
ze Titi
Bonjour Jo

Il y a quand même quelque chose qui m'échappe. Avec un Cancel=True, tu
ne devrais pas perdre tes données...
Essaie de redonner le focus à un de tes contrôles après le Cancel.
Et (en dernier recours, place un docmd.cancelEvent après le cancel=true
mais ça paraît absurde...)
Tiens-nous au courant...

Bonjour Ze Titi,

bonne idée! mais ça donne exactement le même résultat! :-(
La solution serait de mettre un bouton fermer, mais les utilisateurs
utilisent souvent ce formulaire en feuille de données...


Bonjour Jo

Un truc idiot (non testé...),

si tu places un
Docmd.CancelEvent
à la place de ton
Cancel=true
ça donne quoi ?



--
Voilou !
Bon code
Cordialement,

Ze Titi


Avatar
Jo
Bonjour ze Titi

ça ne fonctionne pas plus si je donne le focus à un autre contrôle.
Mais ça avance un peu, j'ai fait afficher les erreurs au cas où, et j'ai
l'erreur 2169 sur le unload du fom.
C'est cette erreur?



Bonjour Jo

Il y a quand même quelque chose qui m'échappe. Avec un Cancel=True, tu
ne devrais pas perdre tes données...
Essaie de redonner le focus à un de tes contrôles après le Cancel.
Et (en dernier recours, place un docmd.cancelEvent après le cancel=true
mais ça paraît absurde...)
Tiens-nous au courant...



Avatar
ze Titi
Bonjour Jo

Il doit y avoir un problème de duplication d'index, d'où l'erreur
d'enregistrement. Vérifie que tu n'essaies pas de créer des doublons.

Bonjour ze Titi

ça ne fonctionne pas plus si je donne le focus à un autre contrôle.
Mais ça avance un peu, j'ai fait afficher les erreurs au cas où, et j'ai
l'erreur 2169 sur le unload du fom.
C'est cette erreur?



Bonjour Jo

Il y a quand même quelque chose qui m'échappe. Avec un Cancel=True, tu
ne devrais pas perdre tes données...
Essaie de redonner le focus à un de tes contrôles après le Cancel.
Et (en dernier recours, place un docmd.cancelEvent après le cancel=true
mais ça paraît absurde...)
Tiens-nous au courant...




--
Voilou !
Bon code
Cordialement,

Ze Titi