2013-05-04 104 views
0

我想遍歷我的Payment表中的行。用戶選擇了哪個月份和哪個年份想要預訂,並且如果此房屋是爲今年和本月預訂的,我希望檢查每個原材料。我想比較是否如何迭代Access 2010中的表格

HouseID == chosenHouseID && BookingMonth == chosenBookingMonth &&  
BookingYear==chosenBookingYear. 

如果這是真的,它應該彈出消息框與信息房子已被預訂本月。此外,如果用戶選擇超過一個月,即numMonths將爲3,它應該增加月份的值(這是一個文本),它應該去下一個值(如果沒有下一個值,那麼它應該做mod 12),並做再次檢查。也許有必要將BookingMonth的數據類型切換爲數字?

但是我希望我清楚自己想做什麼。我有Java,C,Python和Visual Basic的經驗,但是我在Access中沒有做太多的工作,所以很困惑。我找不到任何有用的信息如何執行此操作。請在我的問題上提供建議。

謝謝

回答

0

是的,您絕對應該將[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")) 
    )