Đá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
Question [Help] Link tất các table trong một file.mdb bằng VBA MinhnHang 8 186 2 Giờ trước
Bài mới nhất: MinhnHang
  [Thủ Thuật] Tìm số thứ tự bị thiếu trong dãy toanle 8 204 07-12-16, 02:25 PM
Bài mới nhất: toanle
  Sựa khác nhau giữa Module và Class Module, phạm vi áp dụng của từng loại. MinhnHang 6 304 29-11-16, 09:11 PM
Bài mới nhất: ongke0711
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,692 23-11-16, 11:13 AM
Bài mới nhất: quocdung9999
  [Hỏi] Kết nối nhiều lần hay kết nối 1 lần trong ADO ưu điểm hơn Minh Tiên 1 123 10-11-16, 10:41 AM
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ơ