我确信这有一个简单的解决方案,但似乎无法解决。
所以我有一个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
......但似乎都没有达到预期的效果。我该怎么做?
提前致谢。
答案 0 :(得分:2)
查看从查询中删除WHERE子句是否更容易:
SELECT * FROM Table1;
然后在Openform中使用可选的WhereCondition参数来指示您想要的id值:
DoCmd.OpenForm "MyForm", WhereCondition:="id = 1"