访问运行时错误 2475 *偶尔*发生



我有一个错误日志,每当错误捕获器中的用户发生运行时错误时,该日志就会记录在访问表中,并且至少每小时至少对 10 个随机用户发生特定错误。

此错误似乎完全随机发生,在具有"设置活动表单"代码的随机模块上,随机用户以随机间隔发生。据我所知,用户之间没有模式。

2475 - "您输入的表达式要求表单作为活动窗口"。

这似乎发生在包含任何表单设置的任何模块中。我使用以下行:

Dim af as Object
Set af = Screen.ActiveForm

我尝试过使用替代方案,例如将其声明为 Form,并且还尝试了以下方法:

Dim sstatus as String
Dim ps as String
If DLookup("[TM_UserType]", "[SD_Teams]", "[TM_username]= '" & usernm & "'") = "adj" Then
sstatus = "adj"
Else
sstatus = "tm"
End If
ps = "frmProdSubmit_" & sstatus

然后以这种方式引用表单:

Forms(ps).cmbTeam.Value = ""

但这仍然会导致相同的问题,即使删除了ActiveForm部分。

最后要提到的(因为我相信它们可能是因素(是前端是通过快捷方式访问的,这最大限度地减少了访问窗口。不确定这是否可能是罪魁祸首,或者用户单击另一个应用程序是否可以删除焦点。

数据库的后端每天也可供多达 700 个用户访问。

就目前而言,错误陷阱会弹出消息,但前端继续正常工作。这只是一个烦人的问题,但现在我慢慢没有想法了,任何帮助将不胜感激!

当非表单对象是活动屏幕对象(如表数据表(时,将引发错误 2475。我在使用表单的多个实例的应用程序中遇到了此错误,并且需要跟踪多表单模块是否处于活动状态或其他应用程序模块函数之一,在这种情况下,多个表单(弹出窗口(的所有实例都需要将 .visible 设置为 false。我在Form_Deactivate事件中使用 Screen.ActiveForm.Name 调用。

您可以在过程的错误处理程序中捕获错误,并在知道屏幕的活动对象不是表单的情况下执行操作。

Example:
Private Sub Form_Deactivate()
On Error GoTo errHandler

If Screen.ActiveForm.Name <> "AnApplicationForm" Then 'throws 2475 if not a form object
sstatus = "status message"
End If
ExitSub:
Exit Sub
errHandler:
If Err.Number = 2475 Then Resume Next 'screen active object is not a form i.e. datasheet
MsgBox "Error in " & Me.Name & ".Form_Deactivate: " & Err.Number & " - " & Err.Description
Resume ExitSub
End Sub 'Form_Deactivate

最新更新