使用参数化RecordSource访问2007表单

时间:2010-07-08 03:17:28

标签: ms-access ms-access-2007 access-vba

我确信这有一个简单的解决方案,但似乎无法解决。

所以我有一个RecordSource为SELECT * FROM Table1 WHERE id=[@id]的表单。 (是的,我知道SELECT *是邪恶的;它只是一个例子)。 显然,此表单的默认行为是在打开时,输入对话框将提示“[@id]”值。但是我想要做的是从VBA调用这个表单而不是弹出输入对话框,继续告诉表单[@id]是什么,所以对话框永远不会弹出,表单就像打开一样[@id]由查询中的值替换。到目前为止,我已尝试过以下内容......

Form_MyForm.RecordSource = String.Replace(Form_Form1.RecordSource, "[@id]", 1)
DoCmd.OpenForm "MyForm"

...和...

Form_MyForm.txtId.Value = 1
DoCmd.OpenForm "MyForm"

...和...

DoCmd.OpenForm "MyForm", acNormal, , "[@id]=" & 1

......但似乎都没有达到预期的效果。我该怎么做?

提前致谢。

1 个答案:

答案 0 :(得分:2)

查看从查询中删除WHERE子句是否更容易:

SELECT * FROM Table1;

然后在Openform中使用可选的WhereCondition参数来指示您想要的id值:

DoCmd.OpenForm "MyForm", WhereCondition:="id = 1"