Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Sử dụng ngày trong truy vấn qua VBA tại sao không đúng?
#1
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ễ.
Chữ ký của luonguct luonguct,gia nhập Thủ Thuật Access từ 03-12 -15.
Reply
Những người đã cảm ơn
#2
Chắc do Date and Time của Windows của bạn để theo định dạng dd/mm/yyyy (Region seting Vietnam hoặc French). Bạn thử chuyển lại sang định dạng English (United State) xem (m/d/yyyy). Hy vọng giải quyết được vấn đề.
Chữ ký của BaThanh96 BaThanh96,gia nhập Thủ Thuật Access từ 05-06 -16.
Reply
Những người đã cảm ơn maidinhdan
#3
(08-06-16, 06:21 PM)BaThanh96 Đã viết: Chắc do Date and Time của Windows của bạn để theo định dạng dd/mm/yyyy (Region seting Vietnam hoặc French). Bạn thử chuyển lại sang định dạng English (United State) xem (m/d/yyyy). Hy vọng giải quyết được vấn đề.

Cám ơn bạn đã gợi ý cách xử lý. Nhưng ở đây toàn bộ ngày mình điều lấy từ trong Table của CSDL và kiểm tra thì đã nhập đúng. Định dạng chỉ là cách thể hiện cái ngày đó như thế nào mà thôi. Không liên quan gì đến ngày đã nghi trong CSDL và mình cũng chỉ xử lý ngày trong CSDL mà thôi.
Chữ ký của luonguct luonguct,gia nhập Thủ Thuật Access từ 03-12 -15.
Reply
Những người đã cảm ơn
#4
Bạn dùng Format ([CheckDate],"mm/dd/yyyy") thử xem. Ngày tháng trong VBA hay gặp lỗi này.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
(09-06-16, 12:12 PM)ongke0711 Đã viết: Bạn dùng Format ([CheckDate],"mm/dd/yyyy") thử xem. Ngày tháng trong VBA hay gặp lỗi này.

Mình đã giải quyết được rồi. Trong VBA của Access ngày nó nhảy tùm lum khi cả tháng và ngày <=12. Khắc phục bằng cách chuyển ngày thành số nguyên sồ truy vấn bình thường. Đơn giản vậy mà đã mò mẫm cả tuần nay luôn đó.
Chữ ký của luonguct luonguct,gia nhập Thủ Thuật Access từ 03-12 -15.
Reply
Những người đã cảm ơn
#6
(09-06-16, 12:18 PM)luonguct Đã viết: Mình đã giải quyết được rồi. Trong VBA của Access ngày nó nhảy tùm lum khi cả tháng và ngày <=12. Khắc phục bằng cách chuyển ngày thành số nguyên sồ truy vấn bình thường. Đơn giản vậy mà đã mò mẫm cả tuần nay luôn đó.

Một lời khuyên cho bạn và các bạn khác có dùng cái gì liên quan đến ngày tháng.

Tốt nhất là sử dụng Canlender để nhập, không nhập bằng tay.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] Demo Hàm report tự canh đều chiều cao ( Không kẻ line)) maidinhdan 55 3,786 27-06-17, 11:56 PM
Bài mới nhất: maidinhdan
  Sử dụng Class Module và Kết nối dữ liệu SQL SERVER trong Access VBA lehongduc 61 20,035 18-06-17, 08:49 AM
Bài mới nhất: lehongduc
  Mở kết nối lại link table không cần activex Control ledangvan 29 1,513 15-05-17, 01:51 PM
Bài mới nhất: ongke0711
  Sử dụng Windows Media Player trên access victorkieu 3 232 02-05-17, 10:45 AM
Bài mới nhất: paulsteigel
  [Help] Tính ngày đầu và kết thúc của một tháng HoangManh 15 810 25-04-17, 10:03 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ