2015-08-25 28 views
1

爲了讓我的生活更輕鬆地處理我的數據,我設置了3列相同日期的內容。第一個以mm/dd/yyyy格式顯示,第二個以yyyy-mm格式顯示,第三個以yyyy-q格式顯示。 由於我的報道,我故意這樣做了。有時我需要按月,季度,年度等創建。通常,我會使用表單來邀請用戶選擇開始日期和結束日期,並通過點擊按鈕運行報表。此報告在日期部分指定的位置提取查詢,以便在起始日期和結束日期之間提取所有信息。這次我想做同樣的過程,但不是開始和結束日期 - 我希望用戶選擇他想要的哪個季度,以便查詢將提取有關本季度的所有信息。我要在標準中指定什麼來歸檔?按季訪問獲取日期

回答

1

過濾器上

DatePart("q", [YourDateField]) 

Format([YourDateField], "yyyyq") 

要獲得一個季度的第一個和最後日期,因爲年份和季度,您可以使用這些表情:

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

如果你有季度的日期,你可以通過這些函數獲取季度的第一個和最後一個日期該日期的r:

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 
+0

感謝古斯塔夫爲您的答案。您看到我已經在查詢中以這種方式設置了我的列。我正在撰寫一份新報告。此摘要報告由用戶選擇四分之一的表單生成。用戶將選擇的季度 - 這是我希望總結報告捕獲的時間間隔。因此,我問了我寫了什麼公式來捕獲與在組合框中選擇的季度相關的所有日期。 (對不起,如果我以前沒有提到)等待你的迴應古斯塔夫 - 再次感謝您的及時答覆。 – Robert

+0

好的,我已經擴展了這個答案。 – Gustav

+0

謝謝古斯塔夫。它運作良好。你能幫我解答一個新問題,謝謝。 http://stackoverflow.com/questions/32275275/delete-last-row-and-append-new-information-based-on-criteria-in-access – Robert