窗体按钮间歇性 returns 运行时错误 2101
Form button intermittently returns runtime error 2101
我有一个简单的表单,用户可以在其中从组合框中的列表中选择一个值,然后单击一个按钮以打开另一个按选择过滤的表单。在开发和测试中它工作正常,但在 Prod 用户偶尔会收到运行时错误 2101:“您输入的设置对此 属性 无效”。如果用户重新启动他们的机器,错误不会持续存在,至少会持续一段时间。
当用户单击 'Ok' 按钮时会发生这种情况,该按钮会关闭选择窗体并打开主界面窗体。按钮的代码只是:
Private Sub btnOK_Click()
DoCmd.OpenForm "CC_Tracker_from_form", acNormal, , , acFormEdit
DoCmd.CLOSE acForm, "frmCoord_Selector"
End Sub
当用户关闭错误弹出窗口时,选择表单在主界面顶部仍然可见,如果失败在 DoCmd.CLOSE
行,这有点有意义,因为 Access 已经打开了主窗体.
为什么错误 2101 只会在某些时候触发,当用户执行完全相同的操作(甚至是组合框中的相同选择)时?
我认为这个错误与主窗体的基础记录源没有任何关系,但为了以防万一,这里有代码:
SELECT
[Bunch of columns],
IIf(dbo_CC_Tracker.RISK_LVL='Low',Null,dbo_CC_Tracker.CHRA+365) AS CHRA_Next,
IIf(dbo_CC_Tracker.RISK_LVL='High',dbo_CC_Tracker.[ICP/Review]+29,
IIf(dbo_CC_Tracker.RISK_LVL='Medium',dbo_CC_Tracker.[ICP/Review]+89,Null)) AS ICP_Next,
IIf((dbo_CC_Tracker.RISK_LVL='Low' Or dbo_CC_Tracker.RISK_LVL='Medium'),Null,dbo_CC_Tracker.F2F+179) AS F2F_Next,
IIf(dbo_CC_Tracker.RISK_LVL='Low',Null,dbo_CC_Tracker.ICTCont+89) AS ICT_Next,
dbo_CC_Tracker.HTR_Letter +30 AS Final_Follow,
dbo_CC_Tracker.ASSIGNED +59 AS Deadline_1,
dbo_CC_Tracker.ASSIGNED +89 AS Deadline_2
FROM dbo_CC_Tracker
WHERE
(((dbo_CC_Tracker.ASSIGNED_CARE_COORDINATOR)=Forms!frmCoord_Selector!cmbCoords)
And dbo_CC_Tracker.[CLOSE] is null)
Or Forms!frmCoord_Selector!cmbCoords Is Null;
可能由于某种原因,您尝试关闭的表单无法保存任何更新。
我会确保如果表单有任何数据更改,它会被保存,所以也许添加
If Me.Dirty Then Me.Dirty = False
在关闭现有表单之前强制保存。
基于第一个表单可能在将下拉选择传递给第二个表单之前关闭的想法,我已经从关闭表单 DoCmd.CLOSE acForm, "frmCoord_Selector"
更改为隐藏表单 Me.Visible = False
尽管第一个表单不再显示,这应该使选择保持活动状态。
我有一个简单的表单,用户可以在其中从组合框中的列表中选择一个值,然后单击一个按钮以打开另一个按选择过滤的表单。在开发和测试中它工作正常,但在 Prod 用户偶尔会收到运行时错误 2101:“您输入的设置对此 属性 无效”。如果用户重新启动他们的机器,错误不会持续存在,至少会持续一段时间。
当用户单击 'Ok' 按钮时会发生这种情况,该按钮会关闭选择窗体并打开主界面窗体。按钮的代码只是:
Private Sub btnOK_Click()
DoCmd.OpenForm "CC_Tracker_from_form", acNormal, , , acFormEdit
DoCmd.CLOSE acForm, "frmCoord_Selector"
End Sub
当用户关闭错误弹出窗口时,选择表单在主界面顶部仍然可见,如果失败在 DoCmd.CLOSE
行,这有点有意义,因为 Access 已经打开了主窗体.
为什么错误 2101 只会在某些时候触发,当用户执行完全相同的操作(甚至是组合框中的相同选择)时?
我认为这个错误与主窗体的基础记录源没有任何关系,但为了以防万一,这里有代码:
SELECT
[Bunch of columns],
IIf(dbo_CC_Tracker.RISK_LVL='Low',Null,dbo_CC_Tracker.CHRA+365) AS CHRA_Next,
IIf(dbo_CC_Tracker.RISK_LVL='High',dbo_CC_Tracker.[ICP/Review]+29,
IIf(dbo_CC_Tracker.RISK_LVL='Medium',dbo_CC_Tracker.[ICP/Review]+89,Null)) AS ICP_Next,
IIf((dbo_CC_Tracker.RISK_LVL='Low' Or dbo_CC_Tracker.RISK_LVL='Medium'),Null,dbo_CC_Tracker.F2F+179) AS F2F_Next,
IIf(dbo_CC_Tracker.RISK_LVL='Low',Null,dbo_CC_Tracker.ICTCont+89) AS ICT_Next,
dbo_CC_Tracker.HTR_Letter +30 AS Final_Follow,
dbo_CC_Tracker.ASSIGNED +59 AS Deadline_1,
dbo_CC_Tracker.ASSIGNED +89 AS Deadline_2
FROM dbo_CC_Tracker
WHERE
(((dbo_CC_Tracker.ASSIGNED_CARE_COORDINATOR)=Forms!frmCoord_Selector!cmbCoords)
And dbo_CC_Tracker.[CLOSE] is null)
Or Forms!frmCoord_Selector!cmbCoords Is Null;
可能由于某种原因,您尝试关闭的表单无法保存任何更新。
我会确保如果表单有任何数据更改,它会被保存,所以也许添加
If Me.Dirty Then Me.Dirty = False
在关闭现有表单之前强制保存。
基于第一个表单可能在将下拉选择传递给第二个表单之前关闭的想法,我已经从关闭表单 DoCmd.CLOSE acForm, "frmCoord_Selector"
更改为隐藏表单 Me.Visible = False
尽管第一个表单不再显示,这应该使选择保持活动状态。