查询刷新时的参数值请求

时间:2012-12-10 19:29:09

标签: sql ms-access

我有一个正在运行的SQL并从MS-Access返回我需要的信息,但它一直要求我输入“年度应计”和“已使用”的参数值。

    SELECT SchedulingLog.UserID, SchedulingLog.Category AS Type, 
           Sum(SchedulingLog.Value) AS Used, SchedulingLog.Category, 
           qry_YearsOfService.[Annual Vac Days], [Annual Vac Days]+[Used] AS [Days Left]
    FROM   SchedulingLog INNER JOIN qry_YearsOfService ON 
           SchedulingLog.UserID = qry_YearsOfService.UserID
    GROUP BY SchedulingLog.UserID, SchedulingLog.Category, SchedulingLog.Category, 
             qry_YearsOfService.[Annual Vac Days], [Annual Vac Days]+[Used]
    HAVING (((SchedulingLog.Category) Like "Vac*"));

我不想要输入参数的选项,它应该只计算。我错过了什么?

以下是服务年限查询的SQL

    SELECT Roster.UserID, Roster.[WM DOH], Round((Date()-[WM DOH])/365,2) AS YearsOfService, 
Max (tblAccrual.WeeksAccrual) AS [Annual Accrual], Roster.Schedule, 
[Annual Accrual]*[Schedule] AS [Annual Vac Days]
    FROM Roster, tblAccrual
    WHERE ((([tblAccrual]![Years])<Round((Date()-[WM DOH])/365,2)))
    GROUP BY Roster.UserID, Roster.[WM DOH], 
Round((Date()-[WM DOH])/365,2), Roster.Schedule, [Annual Accrual]*[Schedule];

3 个答案:

答案 0 :(得分:4)

我认为它要求[Annual Accrual],因为您在第一个查询的[Annual Accrual]*[Schedule]子句中有group by。试着把它拿出来。

出于同样的原因请求[Used],因为您在第二个查询的[Annual Vac Days]+[Used]子句中引用了group by

答案 1 :(得分:3)

我认为你可能有两个不同的问题。

该SQL中没有名为“年度应计”的字段。也许它包含在qry_YearsOfService中,但拼写不正确(?)。如果找不到问题,请向我们展示qry_YearsOfService的SQL。

您的GROUP BY子句引用[Used],这是在字段表达式列表中定义的别名。我怀疑db引擎将它解释为GROUP BY中的参数,因为它允许您稍后在查询中使用字段别名是非常有限的。我想你需要改变它。如果您需要帮助排序,请向我们展示SchedulingLogqry_YearsOfService的简短样本。

除了这些问题之外,您的字段列表还包括SchedulingLog.Category两次,第一次别名为Type,第二次为非混淆。我不明白这一点。包括两次相同的字段可能不会产生问题,但Type可能因为它是保留字。如果将其保留为别名,请将其括在方括号中,以确保安全。

答案 2 :(得分:1)

您在此查询中的任何位置都没有使用“年度应计”,因此必须从qry_YearsOfService或更进一步嵌套的查询中调用它。

对于“已使用”,请在Group By中更改对Sum(SchedulingLog.Value)的引用。