追加查询麻烦

时间:2013-12-09 19:25:37

标签: sql ms-access

我在追加查询的最后一段时间遇到问题。除了在表达式Event Date is <=Date()之前没有触发,我生成的记录就像我想要的那样。当我将<=Date()放在查询构建器的条件字段中时,它给了我一个无法比拟的错误。我尝试使用DateSerial和其他一些变体。我确信它与表达式有关,而不是一个艰难的约会。任何援助将不胜感激。

INSERT INTO SchedulingLog ( 
  UserID
  , LogDate
  , EventDate
  , Category
  , CatDetail
  , [Value] 
)
SELECT Roster.UserID
 , Date() AS LogDate
 , DateSerial(Year(Date()),Month([WM DOH]),Day([WM DOH])) AS EventDate
 , SchedulingLog.Category
 , SchedulingLog.CatDetail
 , Max(tblAccrual!WeeksAccrual*Roster!Schedule) AS [Value]
FROM tblAccrual
 , [Schedule Type]
 , Category 
    INNER JOIN CatDetail 
      ON Category.CategoryID = CatDetail.CategoryID
 , SchedulingLog 
    INNER JOIN Roster 
      ON SchedulingLog.UserID = Roster.UserID
WHERE (((tblAccrual.Years)<=Round((Date()-[wm doh])/365,2)))
GROUP BY Roster.UserID
  , Date()
  , DateSerial(Year(Date()),Month([WM DOH]),Day([WM DOH]))
  , SchedulingLog.Category
  , SchedulingLog.CatDetail
HAVING (((SchedulingLog.Category) Like "Vac*") 
           AND ((SchedulingLog.CatDetail) Like "Ann*"));

1 个答案:

答案 0 :(得分:0)

我认为问题没有明确地用CDate转换用户输入日期。我怀疑它在大多数查询中都没问题,因为[MW DOH]参数直接提供给将其转换为日期的函数。但是,WHERE子句需要显式转换。

以下生成错误“此表达式输入错误,或者它太复杂而无法评估。例如,数值表达式可能包含太多复杂元素。请尝试通过将表达式的某些部分分配给变量来简化表达式。“

SELECT Date()-[userinput] AS something;

以下代码不是

SELECT Date()-CDate([userinput]) AS something;