【发布时间】:2014-11-19 15:49:00
【问题描述】:
晚上好! 我在几台 Windows 7 机器上收到完全更新的 MS Access 2010 中的以下错误。此代码在点击按钮时以连续形式运行。该错误会间歇性地弹出,尤其是在表单在不到 5 分钟左右的时间内关闭时。
错误 2448:“您不能为该对象赋值。”
引发此错误的代码是:
If me.temQC = 'RCS' then
me.temQCchecked = TRUE
End if
docmd.close acForm, "FRM_TEM1", acSaveYes
temQC 是 varchar(20) 数据类型,temQCchecked 是位类型,默认为 0。 ** 将切换的 temQCchecked 类型从 bool 编辑为 bit 以正确反映实际 SQL Server 类型 **
表单的记录源是:
SELECT TBL_Samples.*, TBL_Observations.* FROM TBL_Samples INNER JOIN
TBL_Observations ON TBL_Samples.SampleID = TBL_Observations.SampleID ORDER BY
TBL_Observations.GridID, TBL_Observations.GridLetter;
一个典型的集合大小约为 50 条记录,所以没什么大不了的。我将查询设置为 Dynaset(Inconsistent Updates)。
我对为什么会发生这种情况感到非常困惑。 temQCchecked 不以任何方式编入索引。我将非常感谢有人可以提供的任何帮助。感谢您的宝贵时间!
***新信息:
代码在一个按钮的 On_Click() 事件上运行,该按钮基本上关闭了表单。我可以使用查询以及其他按钮来更新值。我应该补充一点,后端是 SQL Server 2012 Express,在 TBL_Observations 上没有额外的索引。其他类似表上的布尔值似乎可以在非常相似的代码中正常工作。我还相信我已经消除了锁定错误,因为它发生在只有一个用户打开时,并且我的表维护发生在凌晨 3:00。谢谢!
【问题讨论】:
-
该代码在哪里?如果在 LOAD 与 Current 与某些按钮单击中,它会有所不同。如果您手动运行该查询,您可以将值更改为 True 吗?
-
请注意 SQL Server 没有boolean type。您需要使用 smallint 并分配值 1 和 0。
标签: sql ms-access vba ms-access-2010 recordset