我在追加查询的最后一段时间遇到问题。除了在表达式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*"));
答案 0 :(得分:0)
我认为问题没有明确地用CDate转换用户输入日期。我怀疑它在大多数查询中都没问题,因为[MW DOH]参数直接提供给将其转换为日期的函数。但是,WHERE子句需要显式转换。
以下生成错误“此表达式输入错误,或者它太复杂而无法评估。例如,数值表达式可能包含太多复杂元素。请尝试通过将表达式的某些部分分配给变量来简化表达式。“
SELECT Date()-[userinput] AS something;
以下代码不是
SELECT Date()-CDate([userinput]) AS something;