Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 间歇性运行时错误3021-无当前记录-MS访问_Vba_Ms Access - Fatal编程技术网

Vba 间歇性运行时错误3021-无当前记录-MS访问

Vba 间歇性运行时错误3021-无当前记录-MS访问,vba,ms-access,Vba,Ms Access,TL;在其他MS应用程序中,DR-SUB处理access数据输入表单中的数据有时会为某些用户抛出3021错误,但再次执行完全相同的步骤不会导致错误 这个错误快把我逼疯了。我一直在搜索这里的问题,在我能找到的每一个其他论坛,要么他们不适用于我的情况,要么他们没有给我足够的信息,以了解发生了什么,所以我知道下一步要采取的步骤 我有一个拆分的数据库,可以存储在Sharepoint列表中。FE只是每个用户本地机器上的应用程序。有相当多的表单、报告和查询,但总体思路是,这是用来记录两个不同部门之间的问题,

TL;在其他MS应用程序中,DR-SUB处理access数据输入表单中的数据有时会为某些用户抛出3021错误,但再次执行完全相同的步骤不会导致错误

这个错误快把我逼疯了。我一直在搜索这里的问题,在我能找到的每一个其他论坛,要么他们不适用于我的情况,要么他们没有给我足够的信息,以了解发生了什么,所以我知道下一步要采取的步骤

我有一个拆分的数据库,可以存储在Sharepoint列表中。FE只是每个用户本地机器上的应用程序。有相当多的表单、报告和查询,但总体思路是,这是用来记录两个不同部门之间的问题,并以不同的格式记录大量其他信息。使用的主要表格有三种:问题输入表格,然后每个部门使用两种表格来更新其一方的信息

在主问题输入表单上有几个命令按钮,关闭按钮被禁用。有两个按钮是“保存和新建”、“保存和退出”、“删除和退出”。这些工作正如预期的那样,没有任何问题。其他按钮都可以打开Outlook任务或打开Excel文件,并用表单中的数据填充这些项目。命令按钮的所有子按钮如下所示:

If Me.Dirty Then Me.Dirty = False
Set OApp = CreateObject("Outlook.Application")
Set OTask = "OApp.CreateItem(3)

'Start taking pieces of the form and assigning it to the task
上面的评论是所有这些潜艇行为不端的地方。但问题和我发疯的原因是,这并不是一直都在发生。每次发生这种情况(到目前为止,400个条目中大约有10次)我的一个用户会来找我,我看了看,整个表单都被清除了,就像他们没有键入任何内容一样,所以我理解3021错误,但是记录被保存了,所以它至少必须到达我代码中的“我不干净”部分。我只是不明白为什么当我开始尝试访问之外的事情时,它会清除表单并引发错误

由于这是间歇性的,我甚至不知道我的下一步是如何尝试找到这个随机错误,它选择发生或不发生的基础上,风吹的方式

编辑1:因此我深入研究并找出了这是何时发生的,以及在代码中发生的位置。因此,这仅在用户下载最新版本后第一次打开表单进行数据输入时发生。如果他们全部关闭并重新打开,就不会再有问题了。它看起来如此断断续续的原因是一些用户会在周一下载它。有些人会在周四下载。有些人会在下周下载。他们只是在下次使用数据库时下载它。3021“无当前记录”实际上发生在Me.Dirty=False行上。如果是我,脏线实际上是在清除表格。由于记录被保存,我认为它已经过了那个点,但事实并非如此。奇怪的是,如果我使用断点单步执行代码,当我到达该行而不是3021时,会出现3167“Record is deleted”错误。最奇怪的是,如果用户在新的下载后关闭并重新打开,它就会停止

总结:

If Me.Dirty Then '<--This clears the form
Me.Dirty = False '<--This results in error 3021 because the form is now empty

If Me.Dirty Then'这么多文本,但您没有包含实际的错误消息:(抱歉,我认为这个数字已经足够了,但仍然应该明确指出它。错误3021-没有当前记录请编辑您的问题并将其添加到那里。--但是我们对提供的信息无能为力。我只能建议您在代码中添加大量日志消息,以了解错误发生之前的情况。证明记录已保存。在创建新表单时将全局变量设置为空格,在保存时将其设置为“S”。我认为可能有一种方法可以在不保存的情况下将表单从键入变为脏。