【发布时间】:2014-11-22 18:14:56
【问题描述】:
我一直在阅读有关如何以正确的年度顺序获取月份名称的所有可用建议。每条信息似乎都集中在稍微不同的东西上,我还是有点困惑——我应该在我的表单中应用 MonthName vba 函数吗?或者有什么其他的工作......?另一个线程甚至建议创建另一个表,为每个月的名称提供整数值 - 然而,对我来说,这似乎是一个不雅的解决方案(无意冒犯)。
我正在使用 MS Access 2010,我希望我的表单中的月份名称以正确的年度顺序显示(从 1 月到 12 月)。代码应该是什么?最好放在哪里?
表单的记录源是 SQL 查询,即:
SELECT Format([DateOfEnquiry],"mmmm") AS [Month], Count(T_Enquiry.DateOfEnquiry)
AS TotalMonthlyEnquiries
FROM T_Enquiry
GROUP BY Format([DateOfEnquiry],"mmmm"), [Enter full name of month]
HAVING ((([Enter full name of month]) Is Null)) OR (((Format([DateOfEnquiry],"mmmm"))=
Enter full name of month]) AND (([Enter full name of month]) Is Not Null));
但是表单按字母顺序显示月份名称,而不是按正确的年度顺序显示。 T_Enquiry 表中 DateOfEnquiry 字段的数据类型设置为日期/时间。我已经阅读了其他 Stack Overflow 线程,这些线程建议附加到表单“覆盖”查询语句的 VBA 代码。所以,我的问题变成了 - 插入适当的 vba 代码的最佳位置在哪里,以及从 1 月到 12 月对月份名称进行排序/排序的正确代码是什么?
【问题讨论】:
-
如何添加'SORT BY Format([DateOfEnquiry],"m")'? 'Format([DateOfEnquiry],"m")' 将以数字形式返回月份,例如 11 表示 11 月,因此您可以按年对月份进行排序。
-
感谢@Fumu7 的回复,但这不起作用,因为 'Format([DateOfEnquiry], "m")' 不是聚合函数的一部分。我希望月份名称显示在 [Month] 列中,而不是整数 - 因此是 'Format([DateOfEnquiry], "mmmm")' 语句 - 但我希望它们从 1 月到 12 月排序/排序。我认为这可能与 MonthName VBA 函数有关,但我需要一些关于该代码是什么以及放置它的最佳位置的建议。
标签: vba datetime ms-access-2010 datetime-format datetimeformatinfo