【发布时间】:2014-10-16 14:38:31
【问题描述】:
我有一个附加查询,它将值从一个表 (tbl_LSI) 复制到另一个表 (tbl_LSI_USD):
qry_Append_to_LTI_USD:
INSERT INTO tbl_LTI_USD
SELECT *
FROM tbl_LTI AS lti
WHERE lti.LTI_ID=[Forms]![frm_LTI]![LTI_ID];
我在frm_LTI 形式的AfterUpdate 事件上调用此查询,它从字段LTI_ID 中获取LTI_ID。我使用的 VBA 是:
db.Execute "qry_Append_to_LTI_USD", dbFailOnError
我有这个完全相同的代码适用于不同的表单和表格组合,但由于某种原因,当我尝试执行这个代码时它失败并要求输入参数:
Run-time error '3061'
Too few parameters. Expected 1
表单之间的唯一区别是这个(frm_LTI)是modal & popup = Yes,而工作表单modal & popup = No
VBA 代码可以看到 debug.print 和 [frm_LTI]![LTI_ID] 的值,但它不会传递给查询。 (我有一个截图显示了这个,但没有足够的声望点来上传它)。
这与表单的 modal/popup 属性有什么关系,还是我缺少其他东西?
【问题讨论】:
-
简单的做法是不要使用查询,而是使用 docmd.setwarnings false; Docmd.RunSQL "INSERT INTO tbl_LTI_USD SELECT * FROM tbl_LTI WHERE LTI_ID = " & LTI_ID; docmd.Setwarnings true
-
谢谢,这似乎有效。你知道为什么我尝试使用的方法失败了吗?
-
不,但我推荐这个,因为这意味着逻辑是本地的形式,(因为你没有使用外部对象,即查询)这简化了问题并使它如果问题仍然存在,更容易解决任何困难