关闭表单的访问问题与不完整记录

时间:2017-12-12 03:58:23

标签: forms ms-access error-handling

我正在尝试在数据表视图中创建一个表单,其中预先填充了某些字段。

如果用户在记录不完整时单击X关闭表单,我找不到一种方法可以优雅地让他们返回脏记录来纠正它。

BeforeUpdate运行但设置Cancel = True并不会停止表单关闭。

Form_Unload运行并设置Cancel = True阻止关闭,但擦除表单内容(我没有选中,但它似乎应用了撤销)。

如果我可以控制关​​闭表单的X何时启用,我可以避免这种情况。但我没有,因为我在数据表视图中,我无法提供关闭按钮。

问题在于,虽然我可以使用BeforeUpdate告诉用户存在问题并且我将它们返回到表单来更正它,但如果触发器操作是关闭形式的话我就成了骗子(而不是记录保存/导航)。所以他们收到的下一条消息是oops,我们关闭你而不保存,运气不好(你的错,但现在已经太晚了)!

更不用说尽管取消了更新,但在Form_Unload开始之前,用户会收到“此时无法保存此记录”消息。

有什么建议吗?我错过了什么吗?

1 个答案:

答案 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事件以及更新之前,以使其按您需要的方式工作。