似乎我总是试图做不可能的事情。好吧,我有一个[月/日]表格设置,格式如下:
Noombers | Lemmas
-----------------
0101 | Jan 1
0102 | Jan 2
... | ...
1230 | Dec 30
1231 | Dec 31
我有一个[出版物场地]表格,其中包含使用此[月/日]表格的字段[Reads From]和[Reads To],当我输入信息时,我只输入“Sep 1”并且点击标签,用“0901”填充字段(在后台)。这是一个文本字段,因为我想按字母数字排序,我也想进行字母数字比较。我想我可以在我创建的查询标准中做这样的事情,以显示当前正在阅读的出版物场所列表:
Field: Reads From | Reads To
Table: Publication Venues | Publication Venues
Sort:
Show:
Criteria: >Format(Date(),"mmdd") | <Format(Date(),"mmdd")
但是,虽然我没有看到任何错误,但我也没有看到应该出现的记录。事实上,我没有看到任何记录。
那么,在这一点上我可以安全地假设我不能在查询的条件中使用Format()吗?如果是这样,那么我设置此过滤器的另一种方法是什么?最好使用我已经得到它的表,因为我已经输入了数百条记录。如果我可以使用Format(),那么你认为我做错了什么?
这是SQL:
SELECT
[Publication Venues].*
FROM
[Publication Venues]
WHERE
((([Publication Venues].[Still Active?])=Yes)
AND
(([Publication Venues].[Reads From])<Format(Date(),"mmdd"))
AND
(([Publication Venues].[Reads To])>Format(Date(),"mmdd")));
答案 0 :(得分:1)
您没有看到错误,因为您正在做的事情不会导致任何错误。但是,它没有按预期工作。
如果您将日期描述为4个数字Access并不会非常知道如何解释它。例如,1231转换为日期,即1903年5月15日。
要使用您正在使用的格式,您需要>Format(Date()-40043,"mmdd")
和<Format(Date()-40043,"mmdd")
来弥补差异。
您更有可能希望将4位数转换为类似的日期:
Cdate(Left$([Reads From],2) & "/" & Right$([Reads From],2) & "/" & Year(Date()))>Date()
长话短说,如果您想将日期用作日期,则应将日期存储为日期。否则你必须跳过一些箍,以便你的前端知道你正在处理日期。
答案 1 :(得分:1)
事实证明这是解决方案,至少对于我的大脑工作方式而言:
SELECT [Publication Venues].*
FROM [Publication Venues]
WHERE
((([Publication Venues].[Still Active?])=Yes)
AND
(((([Publication Venues].[Reads From]) < ([Publication Venues].[Reads To]))
AND
(Format(Date(), "mmdd") BETWEEN ([Publication Venues].[Reads From]) AND ([Publication Venues].[Reads To])))
OR
((([Publication Venues].[Reads From]) > ([Publication Venues].[Reads To]))
AND
(Format(Date(), "mmdd") NOT BETWEEN ([Publication Venues].[Reads From]) AND ([Publication Venues].[Reads To]))))
);
感谢您的帮助,人们。您的反馈确实让我的思维工作朝着引导我解决方案的方向发展。