MS Access:如何为基于查询的子窗体控件提供参数

时间:2011-01-13 20:28:30

标签: ms-access access-vba

鉴于以下设置,您如何为查询提供参数?:

  • FormA包含SubformA。
  • SubformA使用QueryA(已保存的查询)作为其SourceObject。
  • QueryA使用PARAMETERS声明
  • FormA包含为QueryA提供参数的控件。

如果FormA的控件与QueryA的参数同名,这通常有效。例外情况是表单加载时,Access会提示用户输入QueryA的参数。我试图通过在设计视图中保留SubformA的SourceObject空白并在FormA的Form_Load事件中定义SourceObject来解决这个问题。我正在设置FormA控件的值,然后设置SubformA的SourceObject。但是,Access仍然会提示输入参数。我的下一个想法是将QueryA作为QueryDef引用并定义QueryDef的参数,但似乎没有办法将QueryDef指定为SubformA的SourceObject。有关如何获得不提示用户输入表单参数的目标的任何想法?

1 个答案:

答案 0 :(得分:1)

您是否已将控件定义为子窗体的Recordsource中的参数?我不确定它是否会工作,因为我认为子表单在主表单之前加载,并且它们在加载后第二次被重新获得。

我建议在子窗体中有一个空记录源,并在应用过滤器时设置Recordsource SQL。我不会定义任何参数,我根本不会在Recordsource SQL中使用表单控件。

如果你对SQL注入感到担心,并认为你必须使用参数,可能你的担忧被夸大了,特别是如果没有一个过滤器控件允许自由文本。