【问题标题】:Access 2007 forms with parameterized RecordSource使用参数化的 RecordSource 访问 2007 表单
【发布时间】:2010-07-08 12:35:36
【问题描述】:

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

所以我有一个记录源为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

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

提前谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    SELECT * FROM Table1;
    

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

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

    【讨论】:

    • 我知道这很容易!谢谢!
    • 这似乎不适用于报告。我还需要为他们做些什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多