日期字段查询错误 "This expression is typed incorrectly, or it is too complex to be evaluated."

Error "This expression is typed incorrectly, or it is too complex to be evaluated." in query with Date Fields

我正在尝试 运行 一个查询,给定一个产品,他的估计持续时间和收到产品的日期 returns 到期日期和到期日期之前的天数。我已经有另一个查询完全相同但使用另一个 table 并且它工作正常,但由于某种原因,我无法使其工作并继续收到错误“此表达式输入错误,或者它太复杂了,无法评估。”。我在这里阅读了很多答案并尝试了各种不同的方法(检查我是否有空值,是否正确输入了所有日期,使用 DateValue,...)但是 none 似乎有效。

有人可以帮我吗?

我使用的代码是:

SELECT DISTINCT QueryMensalMov.PersonID, QueryMensalMov.[Nº pessoal] AS [Name], QueryMensalMov.Product, QueryMensalMov.Quantity, [ProductList].DurationDays, QueryMensalMov.Date, DateAdd("d",Nz([ProductList].[DurationDays],0),DateValue([Date])) AS ExpirationDate, DateDiff("d",Date(),DateAdd("d",Nz([ProductList].[DurationDays],0),Date)) AS Days
FROM [ProductList] INNER JOIN QueryMensalMov ON [ProductList].ProductID = QueryMensalMov.ProductID
WHERE ((([ProductList].DurationDays)>0) AND ((DateAdd("d",Nz([ProductList].[DurationDays],0),Date)) Between Date() And (Date()+90)));

table 是: QueryMensalMov

PersonID Nº pessoal ProductID Date
1 Filipa A 20-05-2020
2 Mark B 15-07-2021

产品列表:

ProductID DurationDays
A 30
B 90

非常感谢您的帮助!

尝试使用[Date]:

SELECT DISTINCT 
    QueryMensalMov.PersonID, 
    QueryMensalMov.[Nº pessoal] AS [Name], 
    QueryMensalMov.Product, 
    QueryMensalMov.Quantity, 
    [ProductList].DurationDays, 
    QueryMensalMov.Date, 
    DateAdd("d", Nz([ProductList].[DurationDays],0),DateValue([Date])) AS ExpirationDate, 
    DateDiff("d", Date(), DateAdd("d", Nz([ProductList].[DurationDays],0), [Date])) AS Days
FROM 
    [ProductList] 
INNER JOIN 
    QueryMensalMov 
    ON [ProductList].ProductID = QueryMensalMov.ProductID
WHERE 
    ([ProductList].DurationDays > 0) 
    AND 
    (DateAdd("d", Nz([ProductList].[DurationDays],0),[Date]) Between Date() And (Date()+90));

好的,已经修正了,老实说这是一个愚蠢的错误。

tableQueryMensalMov实际上是一个基于另一个table的Query。问题是日期字段是 Date/Time 扩展格式,而不仅仅是 Date/Time。这是导致问题的原因,显然,他无法使用那种日期执行 DateAdd。

不知道这对某人是否有用,因为这是一个愚蠢的错误,但它就在这里。经常检查你的 tables!

的格式