Ms access 如何更改参数的文本

Ms access 如何更改参数的文本,ms-access,ms-access-2013,Ms Access,Ms Access 2013,我有一个数据库,其中有一个参数框弹出的查询。参数是[Forms]![frmFA_管理]![Text0]。当表单处于打开状态时,该参数可以正常工作,但是当表单未打开时,该参数将无效,因为用户不知道它需要什么。是否可以对其应用封面文本或提示?我无法将文本框名称更改为更有用的名称,因为数据库很旧且文档记录不完整,我不想冒险破坏任何内容。创建查询的副本 在SQL视图中打开副本 替换[Forms]![frmFA_管理]![Text0]带有您选择的参数名称,例如: [输入xx的值]此查询如何打开以及如何使用

我有一个数据库,其中有一个参数框弹出的查询。参数是[Forms]![frmFA_管理]![Text0]。当表单处于打开状态时,该参数可以正常工作,但是当表单未打开时,该参数将无效,因为用户不知道它需要什么。是否可以对其应用封面文本或提示?我无法将文本框名称更改为更有用的名称,因为数据库很旧且文档记录不完整,我不想冒险破坏任何内容。

创建查询的副本

SQL视图中打开副本

替换
[Forms]![frmFA_管理]![Text0]
带有您选择的参数名称,例如:


[输入xx的值]

此查询如何打开以及如何使用?是否有第二个表单打开它,或者您正在手动打开查询?它是另一个对象的源对象还是正在打开的查询

如果它是通过另一个窗体打开的,并且是源对象,则可以检查第一个窗体是否通过第二个窗体的单击或打开事件打开,如果不是,则从输入框中存储一个变量并更改对象的源对象

If CurrentProject.AllForms("myform").IsLoaded = True
    myObject.SourceObject = myQuery
Else
    Dim input as string
    input = inputbox "Please enter a value for my field"
    myObject.SourceObject = "SELECT * FROM myTable WHERE myField = " & input & ";"
Endif

myObject.Requery

我建议您从查询中删除参数。正如您所看到的,一旦您向查询添加了一个参数,那么它就会与一些需要打开的愚蠢表单结合在一起。这意味着您不能对其他报表、表单甚至代码使用查询

归根结底,这样的做法会造成真正的混乱

即使您可以“覆盖”提示,您希望参数的值是多少?(无论如何,你必须提供它,对吗?)

真正的问题是何时何地使用该查询?如果查询用于表单或报表,则删除条件,然后将“where”子句传递给给定报表

因此,要打开报告,您可以执行以下操作:

Docmd.OpenReport "rptManagers",acViewPreview
以上内容将打开报告–无过滤器

如果您需要一些标准,请添加它,例如:

Dim strWhere   as string

strWhere = "Manager = [forms]![frmFA_Management]![Text0]"
Docmd.OpenReport "rptManagers",acViewPreview,,strWhere
或者,只需提示输入值,如:

Dim strWhere as string

strWhere = inputbox("Enter manager ")
if strWhere = "" then exit sub

strWhere = "Manager = '" & strWhere & "'"

Docmd.OpenReport "rptManagers",acViewPreview,,strWhere
使用openform/openReport的“where”子句的真正好处在于,您可以添加额外的参数(可选),而不必修改或担心查询提示

说:

因此,通过从查询中删除参数,您可以大大提高重用率。更好的是,您现在可以动态添加或忽略参数

一旦你添加了一个表单!在查询的内部引用时,由于必须打开一些愚蠢的表单,因此在应用程序中重复使用的能力被大大破坏

通过简单地采用“where”子句,您将节省大量的开发成本,在您不需要过滤器时消除问题,并且更好的是拥有一个可以在“许多”位置重复使用的查询,而不必打开一些愚蠢的表单。放置表格!然而,查询中的引用是增加额外计费时间的一个很好的方式——它确实会造成混乱,并大量增加成本。所以最好是删除表单!查询中的引用,则不会出现意外提示

strWhere = "Manager = 'Joe' and City = 'Edmonton'"
Docmd.OpenReport "rptManagers",acViewPreview,,strWhere