是的,您絕對應該將[BookingMonth]存儲爲數字。自「八月」<「一月」和「12」<「2」以來,保持「月」欄作爲文本將長期受到干擾。你必須至少做一定數量的雜耍以將文本值轉換爲數字值,所以讓自己變得容易,並將它們保持爲數字。 (請注意,您可以隨時格式他們爲文本,如果你想在報告中使用它們。)
至於你的搜索要求,如果用戶提供了[chosenBookingYear],[chosenBookingMonth]和[numberOfMonthsToBook]然後您可以使用VBA DateAdd
功能推導[endOfBookingYear]和[endOfBookingMonth]安全,佔 「明年」 的價值觀......
endOfBookingYear = Year(DateAdd("m", numberOfMonthsToBook - 1, DateSerial(chosenBookingYear, chosenBookingMonth, 1)))
......還有......
endOfBookingMonth = Month(DateAdd("m", numberOfMonthsToBook - 1, DateSerial(chosenBookingYear, chosenBookingMonth, 1)))
菲娜LLY,無需通過個人行循環您可以連接[BookingYear]和[BookingMonth]共同打造類似「2013/05」使用執行查找...
BookingYear & "/" & Format(BookingMonth, "00")
...,那麼你可以創建SELECT查詢是這樣的:
SELECT * FROM Payment
WHERE HouseID = chosenHouseID AND
(
(BookingYear & "/" & Format(BookingMonth, "00"))
BETWEEN (chosenBookingYear & "/" & Format(chosenBookingMonth, "00"))
AND (endOfBookingYear & "/" & Format(endOfBookingMonth, "00"))
)