這裏是我得到的第一部分。可能有更好的方法來實現這一點。我所做的是獲得當前月份並從中扣除一份。然後我把日期和當年連接到月份。然後我檢查了當天的名字,看看是否是星期六。如果是的話,那我就用那個日期。否則,我會在第二天用相同的支票,等等。如果你想使用它,如果你在一月份,你將需要添加額外的邏輯。你也可以用你正在使用的參數替代NOW()。
=IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/1/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/1/" & YEAR(NOW()))),
(IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/2/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/2/" & YEAR(NOW()))),
(IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/3/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/3/" & YEAR(NOW()))),
(IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/4/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/4/" & YEAR(NOW()))),
(IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/5/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/5/" & YEAR(NOW()))),
(IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/6/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/6/" & YEAR(NOW()))),
(IIF(WeekdayName(DatePart("w", (CDate((Month(NOW()) - 1) & "/7/" & YEAR(NOW()))))) = "Saturday", (CDate((Month(NOW()) - 1) & "/7/" & YEAR(NOW()))),
"1/1/2010")))))))))))))
在另一方面,會有一個很簡單的方法,如果你有在SQL Server中的日曆表得到這個(尤其是當你需要在星期五)。你可以做一個簡單的選擇語句如下:
SELECT
MIN(date)
FROM
calendar c
WHERE
MONTH(DATEADD("m", -1, GETDATE())) = MONTH(date)
AND YEAR(DATEADD("m", -1, GETDATE())) = YEAR(date)
AND datename(dw, date) = 'Saturday'
我不知道Visual Studio報表設計器,但它聽起來像End參數也可以定義爲:「本月的星期六**加上**六天」。這也是:「在下個月的第六天或之前的最後一個星期五」。不知道這是否有幫助? –