gpt4 book ai didi

ms-access - MS Access 在窗体关闭时停止插入命令

转载 作者:行者123 更新时间:2023-12-02 00:15:50 24 4
gpt4 key购买 nike

我一直在 Access 中从事一个项目,我从事该项目的时间越长,我就越不屑于它。我整天都在使用谷歌搜索并尝试解决方法,但我无法完全找到我想要做的事情。

我有一个链接到表格的表单。我有一个按钮可以将表单记录设置为新记录。如果您开始在任何一个文本框中输入,记录就会开始更新,此时它并不是真正的插入。但是,如果我离开记录,则会调用更新。如果用户不想添加我能找到的新记录,我无法做任何事情来阻止更新的发生。我正在使用

 DoCmd.GoToRecord , , acNewRec

要让表单中的所有文本框都转到一条新记录中。此时,一旦您开始在任何文本框中输入内容,您就无法返回。自动编号会增加,我有 sku 生成器将自动编号连接到前缀以充当序列号。

我需要做的是想办法在用户单击关闭时取消更新。我试图禁用关闭,但您始终可以右键单击该栏并从那里选择关闭。这连同任何提示表单关闭的提交都在进程记录中,随后触发“afterUpdate”事件。我阅读了一些 Microsoft 文档,在工作流程中首先调用了“form_unload”,但插入总是在此之前进行。我也尝试过使用“beforeUpdate”,但是一旦您尝试写入其中一个框就会触发,而不是在“afterUpdate”之前触发

似乎在 beforeUpdate 和 afterUpdate 之间的空间中有一个相当大的洞。我不认为这是我在这里尝试尝试的非常复杂的操作,但也许我已经研究了很长时间,以至于我错过了一个更简单的解决方案。我只需要取消插入操作或提示用户他们正在关闭带有打开记录的表单。如果它们命中,则不会触发任何插入,是的,它会触发。

此外,由于我的时间表,我没有兴趣为 ADO 重写。我只需要快速将一些表格放在一起并完成即可。还有大量字段我不想为 ADO 插入设置。它们都已构建,但我有一个问题让我很伤心,我需要将此解决方案应用于所有表单。

TLDR - 如果用户已输入文本并尝试退出表单,则停止插入数据绑定(bind)表单。

解决方案编辑:将表单更改为模式/弹出窗口并禁用关闭。添加一个按钮来处理关闭。添加 bool 标志

 Private Sub Form_BeforeInsert(Cancel As Integer)
NR = True
End Sub

然后添加关闭按钮的代码。

 Private Sub cmdClose_Click()
Dim msgRes As VbMsgBoxResult

If NR Then
msgRes = MsgBox("Do you want to save the current new record?", vbYesNoCancel, "Closing form...")
If msgRes = vbYes Then
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close
ElseIf msgRes = vbNo Then
Me.Undo
DoCmd.Close
End If
End If
DoCmd.Close



End Sub

最佳答案

您始终可以在 FormClose 上执行 Me.UndoDoCmd.RunCommand acCmdUndo或者,如果您仍然无法使用它(我在 Access 上花了很多时间,我知道它可能很挑剔),您可以执行 DoCmd.RunSql ("Delete * from TableName where Id=NewID ")

你也可以试试这个:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70
DoCmd.Close , , acSaveNo

您可能还想禁用关闭按钮并创建一个按钮来取消记录,这样您就可以将所有代码放在那里。如果您将表单模式设置为对话框,您将无法右键单击关闭它。

关于ms-access - MS Access 在窗体关闭时停止插入命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13224407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com