当使用使用表单中的值的union时会产生错误吗?

时间:2014-01-04 07:02:22

标签: ms-access union

当我尝试从表单中获取参数并将其传递给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语句中使用。但我不知道为什么会出现这个问题。

2 个答案:

答案 0 :(得分:1)

Between “确定表达式的值是否落在指定的值范围内,就像这样......

expr [Not] Between value1 And value2

但您的查询只给它一个值... Between [Forms]![DateIN]![StartDate]

因此,您需要添加And加上另一个日期值...

Between [Forms]![DateIN]![StartDate] And some_other_date

同样Datereserved 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功能强大,但我不想使用它,因为很难修改不知道如何编程的用户的更改。试图让这个数据库应用程序尽可能简单,让愚蠢的用户完全操作。

非常感谢任何评论。