Mình có 1 bảng liệt kê các ngày nghĩ Lễ trong năm là tblHoliday gồm có 3 trường: FromDate, ToDate và Description
Một bảng ghi các ngày mình thi công là tblNKTC gồm có 2 trường: NgayTC và Noidung
Bây giờ mình tạo mộ Query để kiểm tra những ngày thi công nào là thi công vào các ngày Lễ như sau:
Mã:
SELECT tblNKTC.NgayTC, tblNKTC.Noidung, IsHoliday([tblNKTC].NgayTC) AS NgayLe FROM tblNKTC;
Trong đó hàm IsHoliday được viết như sau:
Mã:
Public Function IsHoliday(CheckDate As Date) As Boolean
Dim db As Database
Dim rs As DAO.Recordset
Dim SQL As String, R As Boolean, SQL2 As String
Set db = CurrentDb()
SQL = "SELECT tblHoliday.FromDate, tblHoliday.ToDate FROM tblHoliday WHERE (((tblHoliday.FromDate)<=#" & CheckDate & "#) AND ((tblHoliday.ToDate)>=#" & CheckDate & "#));"
Set rs = db.OpenRecordset(SQL)
If rs.EOF = False Then R = True
rs.Close
db.Close
Set rs = Nothing
Set db = Nothing
IsHoliday = R
End Function
Mình chạy lên thì cho kết quả là sai. Nội dung sai qua tìm hiểu thì thấy rằng
Ngày Quốc Khánh cho dù trong tblHoliday đã nhập đúng 02/Sep/2009 thì trong nhật ký lại đánh dấu cho các ngày 02/Feb/2009. Tức là ở đây đã có sự nhầm lẫn giữa ngày và tháng, mình đã kiểm tra rất rất kỹ nhưng không tài nào khắc phục được.
Do không tìm thấy chức năng upload file lên diễn đàn nên mình để tại Dropbox:
[Đã xóa]
Mong các anh/chị em hiểu giúp mình khắc phục vấn đề này.
Lưu ý: Mình phải kiểm tra các ngày Lễ thông qua hàm IsHoliday() vì mình cần xử lý cho các trường hợp trùng ngày Lễ.