当我尝试从表单中获取参数并将其传递给union select语句时,我有这个union语句,它说的参数太多了。这是使用MS ACCESS
。
SELECT Statement FROM table 1 where Date = Between [Forms]![DateIN]![StartDate]
UNION
SELECT Statement FROM table 2 where Date = Between [Forms]![DateIN]![StartDate]
这是我第一次使用Windows数据库应用程序来执行数据库应用程序。我是Linux类型的人,并且总是使用MySQL
作为我的项目,但是这个必须使用MS Access。
是否有其他方法可以将参数传递给UNION语句,因为这种在表单中定义值的方法可以在单个SELECT语句中使用。但我不知道为什么会出现这个问题。
答案 0 :(得分:1)
Between “确定表达式的值是否落在指定的值范围内,就像这样......
expr [Not] Between value1 And value2
但您的查询只给它一个值... Between [Forms]![DateIN]![StartDate]
因此,您需要添加And
加上另一个日期值...
Between [Forms]![DateIN]![StartDate] And some_other_date
同样Date
是reserved word。如果您将其用作字段名称,请将其括在括号中以避免混淆数据库引擎:[Date]
如果可行,请重命名该字段以避免将来出现类似问题。
正如戈德指出的那样,你还必须包含一个包含空格的表名。这同样适用于字段名称。
答案 1 :(得分:0)
使用此方法调用要在UNION语句上使用的表单中的值或日期时仍然遇到问题。这是我尝试使用的实际查询。
我不想重新创建方向盘,但我想如果Date()
可以与between Date() and Date()-6
一起使用来表示7天的范围,那么我可能需要改正一个模块来自for的值然后以Sdate()
和Edate()
之类的方式返回值,然后这可以与Between Sdate() and Edate()
一起使用。
我还没有尝试过,但这可能是我的最后一个选项,我甚至不知道它是否会起作用,但值得一试。但在我这样做之前,我想尝试一下Access可以帮助我让生活更轻松的所有资源,例如它帮助DB程序员的OO Stuff。
SELECT
"Expenditure" as [TransactionType], *
FROM
Expenditures
WHERE
(((Expenditures.DateofExpe) Between [Forms]!Form1![Text0] and [Forms]![Form1]![Text11]))
UNION
SELECT
"Income" as [TransactionType], *
FROM
Income
WHERE
(((Income.DateofIncom) Between [Forms]!Form1![Text0] and [Forms]![Form1]![Text11] ));
Access VBA功能强大,但我不想使用它,因为很难修改不知道如何编程的用户的更改。试图让这个数据库应用程序尽可能简单,让愚蠢的用户完全操作。
非常感谢任何评论。