Select 查询未显示所有结果
Select Query Doesn't Show All Results
我在 Access 的子窗体 (ProgramSubform) 上有一个组合框,它应该列出来自 table (Program )。大多数项目都有一个以上的报告年份,但组合框总是只显示 2014 年。
例如,项目 5278 的下拉列表应为:
2012
2013
2014
相反,它只是
2014
这是我正在使用的 select 查询。之前还可以,不知道什么时候就不行了;未对 table 或子表单进行任何更改。
SELECT Program.ReportYear
FROM Program
WHERE (((Program.ProjNo)='ProgramSubform.ProjNo'));
知道为什么它可能停止工作,或者如何解决它吗?
注意括号,在 WHERE 子句的 Program.ProjNo 之前有三个,但您只需要两个括号(在本例中),您应该使用:
SELECT Program.ReportYear
FROM Program
WHERE ((Program.ProjNo='ProgramSubform.ProjNo'));
无论如何你会喜欢:
SELECT Program.ReportYear
FROM Program
WHERE Program.ProjNo='ProgramSubform.ProjNo';
此 WHERE
子句要求 Access 将查询返回的行限制为 ProjNo 值与文本字符串 [=53= 匹配的行]
WHERE (((Program.ProjNo)='ProgramSubform.ProjNo'))
但是ProgramSubform.ProjNo其实是一个子窗体上的数据控件。所以不要在其名称周围加上引号。
您可以通过 Forms
集合中的父窗体使用对控件的引用:
WHERE Program.ProjNo= Forms![Parent Form]!ProgramSubform!ProjNo
如果您在表单中使用 VBA 代码构建 SELECT
语句,您可以包含控件的值而不是其名称:
"WHERE Program.ProjNo=" & Me!ProgramSubform!ProjNo.Value
"WHERE Program.ProjNo='" & Me!ProgramSubform!ProjNo.Value & "'"
对数字字段使用第一个版本,对文本字段使用第二个版本。
备注:
我假定 ProgramSubform 是子窗体 control 的名称。它也可以是该子窗体控件中包含的窗体的名称。但是这些名称可以不同。所以确保你使用了子表单 control name.
此查询用作子窗体上组合框的行源。您想在 ProjNo.Value
更改时更新组合中显示的值。您可以通过从 ProjNo
.
的更新后事件调用组合的 Requery
方法来完成此操作
我在 Access 的子窗体 (ProgramSubform) 上有一个组合框,它应该列出来自 table (Program )。大多数项目都有一个以上的报告年份,但组合框总是只显示 2014 年。
例如,项目 5278 的下拉列表应为:
2012
2013
2014
相反,它只是
2014
这是我正在使用的 select 查询。之前还可以,不知道什么时候就不行了;未对 table 或子表单进行任何更改。
SELECT Program.ReportYear
FROM Program
WHERE (((Program.ProjNo)='ProgramSubform.ProjNo'));
知道为什么它可能停止工作,或者如何解决它吗?
注意括号,在 WHERE 子句的 Program.ProjNo 之前有三个,但您只需要两个括号(在本例中),您应该使用:
SELECT Program.ReportYear
FROM Program
WHERE ((Program.ProjNo='ProgramSubform.ProjNo'));
无论如何你会喜欢:
SELECT Program.ReportYear
FROM Program
WHERE Program.ProjNo='ProgramSubform.ProjNo';
此 WHERE
子句要求 Access 将查询返回的行限制为 ProjNo 值与文本字符串 [=53= 匹配的行]
WHERE (((Program.ProjNo)='ProgramSubform.ProjNo'))
但是ProgramSubform.ProjNo其实是一个子窗体上的数据控件。所以不要在其名称周围加上引号。
您可以通过 Forms
集合中的父窗体使用对控件的引用:
WHERE Program.ProjNo= Forms![Parent Form]!ProgramSubform!ProjNo
如果您在表单中使用 VBA 代码构建 SELECT
语句,您可以包含控件的值而不是其名称:
"WHERE Program.ProjNo=" & Me!ProgramSubform!ProjNo.Value
"WHERE Program.ProjNo='" & Me!ProgramSubform!ProjNo.Value & "'"
对数字字段使用第一个版本,对文本字段使用第二个版本。
备注:
我假定 ProgramSubform 是子窗体 control 的名称。它也可以是该子窗体控件中包含的窗体的名称。但是这些名称可以不同。所以确保你使用了子表单 control name.
此查询用作子窗体上组合框的行源。您想在
ProjNo.Value
更改时更新组合中显示的值。您可以通过从ProjNo
. 的更新后事件调用组合的
Requery
方法来完成此操作