在访问

时间:2015-08-25 15:22:27

标签: ms-access

为了让我的生活更容易处理我的数据,我设置了3列相同的日期内容。第一个显示格式为mm / dd / yyyy,第二个格式为yyyy-mm,第三个格式为yyyy-q。 由于我的报道,我故意这样做了。有时我需要创建每月,每季度,每年等。通常我使用表单,我邀请用户选择开始和结束日期,然后单击按钮运行报告。此报告提取我在日期部分指定的查询,以在开始日期和结束日期之间提取所有信息。这次我想做同样的程序,而不是开始和结束日期 - 我希望用户选择他想要的季度,以便查询将提取有关本季度的所有信息。我可以在标准中指定什么来存档它?

1 个答案:

答案 0 :(得分:1)

过滤

DatePart("q", [YourDateField])

Format([YourDateField], "yyyyq")

要获得一季度的第一个和最后一个日期,给定年份和季度,您可以使用以下表达式:

DateQuarterFirst = DateSerial(Y, 1 + 3 * (Q - 1), 1)
DateQuarterLast = DateSerial(Y, 1 + 3 * Q, 0)

如果您有该季度的日期,您可以使用这些功能获取该日期的第一个和最后一个日期:

Public Function DateThisQuarterFirst( _
    Optional ByVal datDateThisQuarter As Date) As Date

    Const cintQuarterMonthCount   As Integer = 3

    Dim intThisMonth              As Integer

    If datDateThisQuarter = 0 Then
        datDateThisQuarter = Date
    End If
    intThisMonth = (DatePart("q", datDateThisQuarter) - 1) * cintQuarterMonthCount

    DateThisQuarterFirst = DateSerial(Year(datDateThisQuarter), intThisMonth + 1, 1)

End Function


Public Function DateThisQuarterLast( _
    Optional ByVal datDateThisQuarter As Date) As Date

    Const cintQuarterMonthCount   As Integer = 3

    Dim intThisMonth              As Integer

    If datDateThisQuarter = 0 Then
        datDateThisQuarter = Date
    End If
    intThisMonth = DatePart("q", datDateThisQuarter) * cintQuarterMonthCount

    DateThisQuarterLast = DateSerial(Year(datDateThisQuarter), intThisMonth + 1, 0)

End Function