是的,您绝对应该将[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"))
)