我正在尝试在数据表视图中创建一个表单,其中预先填充了某些字段。
如果用户在记录不完整时单击X关闭表单,我找不到一种方法可以优雅地让他们返回脏记录来纠正它。
BeforeUpdate运行但设置Cancel = True并不会停止表单关闭。
Form_Unload运行并设置Cancel = True阻止关闭,但擦除表单内容(我没有选中,但它似乎应用了撤销)。
如果我可以控制关闭表单的X何时启用,我可以避免这种情况。但我没有,因为我在数据表视图中,我无法提供关闭按钮。
问题在于,虽然我可以使用BeforeUpdate告诉用户存在问题并且我将它们返回到表单来更正它,但如果触发器操作是关闭形式的话我就成了骗子(而不是记录保存/导航)。所以他们收到的下一条消息是oops,我们关闭你而不保存,运气不好(你的错,但现在已经太晚了)!
更不用说尽管取消了更新,但在Form_Unload开始之前,用户会收到“此时无法保存此记录”消息。
有什么建议吗?我错过了什么吗?
答案 0 :(得分:0)
你必须为此举办几场比赛。在代码顶部添加一个变量来跟踪表单错误:
Private Sub Form_Unload(Cancel As Integer)
If Not Me.Dirty Then 'user hasn't done anything.
If MsgBox("form is unchanged. close?", vbYesNoCancel, "really?") = vbYes Then
frmErr = False
End If
End If
If frmErr = True Then
Cancel = True
End If
End Sub
表单加载时,如果出现输入错误,请将错误设置为true
#Mon Dec 11 21:41:46 EST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.3-rc-2-
all.zip
当用户尝试关闭表单时:
android {
compileSdkVersion 23
buildToolsVersion '25.0.1'
defaultConfig {
applicationId "com.albums"
minSdkVersion 16
targetSdkVersion 23
versionCode 1
versionName "1.0"
ndk {
abiFilters "armeabi-v7a", "x86"
}
}
这是一个基本的大纲。您可能需要使用Form_Dirty事件以及更新之前,以使其按您需要的方式工作。