如何迭代Access 2010中的表格
我想遍历我的Payment表中的行。用户选择了哪个月份和哪个年份想要预订,并且如果此房屋是为今年和本月预订的,我希望检查每个原材料。我想比较是否如何迭代Access 2010中的表格
HouseID == chosenHouseID && BookingMonth == chosenBookingMonth &&
BookingYear==chosenBookingYear.
如果这是真的,它应该弹出消息框与信息房子已被预订本月。此外,如果用户选择超过一个月,即numMonths将为3,它应该增加月份的值(这是一个文本),它应该去下一个值(如果没有下一个值,那么它应该做mod 12),并做再次检查。也许有必要将BookingMonth的数据类型切换为数字?
但是我希望我清楚自己想做什么。我有Java,C,Python和Visual Basic的经验,但是我在Access中没有做太多的工作,所以很困惑。我找不到任何有用的信息如何执行此操作。请在我的问题上提供建议。
谢谢
是的,您绝对应该将[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"))
)