-
Thông báo hạn hết hạn báo cáo
minhhvm94@gmail.com > 10-08-20, 11:48 AM
Chào các anh chị. Em đang nghiên cứu viết một bảng thông báo hạn báo cáo. Các anh chị cho em hỏi làm sao để thông báo hạn báo cáo cho c tùy theo ý mình được không? và các đợt gia hạn báo cáo thì tiếp tục tính thời gian gia hạn.
Giả sử: Một báo cáo ngày ban hành 10.8.2020 hạn báo cáo là 15.8.2020 nó sẽ hiện thông báo lên cho mình trước vài ngày được chứ?
em xin cảm ơn -
RE: Thông báo hạn hết hạn báo cáo
Xuân Thanh > 10-08-20, 12:59 PM
Lấy ngày hạn báo cáo - ngày hiện hành nếu < 3 thì tạo MsgBox "Gần đến hạn báo cáo", nếu =0 thì tạo MsgBox "Đã đến ngày báo cáo", nếu < 0 thì tạo MsgBox "Đã quá hạn báo cáo" -
RE: Thông báo hạn hết hạn báo cáo
minhhvm94@gmail.com > 10-08-20, 03:21 PM
-
RE: Thông báo hạn hết hạn báo cáo
tranthanhan1962 > 10-08-20, 07:42 PM
(10-08-20, 03:21 PM)minhhvm94@gmail.com Đã viết:
(10-08-20, 12:59 PM)Xuân Thanh Đã viết: Lấy ngày hạn báo cáo - ngày hiện hành nếu < 3 thì tạo MsgBox "Gần đến hạn báo cáo", nếu =0 thì tạo MsgBox "Đã đến ngày báo cáo", nếu > 0 thì tạo MsgBox "Đã quá hạn báo cáo"
Bác có thể nói rõ hơn em hiểu không?
Còn phải xem nó nằm trong form hay ở đâu. Nói tom lại phải có bẩy event để cho nó xuất hiện.
Cụ thể Ví dụ ngày hết hạn báo cáo là 01/10/2020 Thì ngày hiện hành là Date() có nghĩa là if date() =Ngày hết hạn -3 [=27/10/2020] then {làm cái gì đó tùy bạn}.
Thường tôi sẽ sử dụng Date() = Bethween ngày hết hạn And ngày hết hạn -3. Cách bác Xuân Thanh cũng OK ngày hạn báo cáo - ngày hiện hành nếu < 3 tương đương Date() = Bethween ngày hết hạn And ngày hết hạn -3 -
RE: Thông báo hạn hết hạn báo cáo
minhhvm94@gmail.com > 11-08-20, 09:46 AM
(10-08-20, 07:42 PM)tranthanhan1962 Đã viết:
cái này em muốn tạo một query để thông báo anh ah(10-08-20, 03:21 PM)minhhvm94@gmail.com Đã viết:
(10-08-20, 12:59 PM)Xuân Thanh Đã viết: Lấy ngày hạn báo cáo - ngày hiện hành nếu < 3 thì tạo MsgBox "Gần đến hạn báo cáo", nếu =0 thì tạo MsgBox "Đã đến ngày báo cáo", nếu > 0 thì tạo MsgBox "Đã quá hạn báo cáo"
Bác có thể nói rõ hơn em hiểu không?
Còn phải xem nó nằm trong form hay ở đâu. Nói tom lại phải có bẩy event để cho nó xuất hiện.
Cụ thể Ví dụ ngày hết hạn báo cáo là 01/10/2020 Thì ngày hiện hành là Date() có nghĩa là if date() =Ngày hết hạn -3 [=27/10/2020] then {làm cái gì đó tùy bạn}.
Thường tôi sẽ sử dụng Date() = Bethween ngày hết hạn And ngày hết hạn -3. Cách bác Xuân Thanh cũng OK ngày hạn báo cáo - ngày hiện hành nếu < 3 tương đương Date() = Bethween ngày hết hạn And ngày hết hạn -3 -
RE: Thông báo hạn hết hạn báo cáo
ongke0711 > 11-08-20, 11:24 AM
(11-08-20, 09:46 AM)minhhvm94@gmail.com Đã viết: cái này em muốn tạo một query để thông báo anh ah
Access nó xử lý theo qui trình, mỗi qui trình thao tác khác nhau thì cách xử lý cũng khác nhau, chỉ giống nhau chỗ cái code tính ngày để ra thông báo thôi, do đó mấy ông anh chỉ hướng dẫn cho bạn code chính thôi vì bạn không mô tả rõ qui trình thao tác của bạn.
Theo như qui trình mà tôi hay xử lý là:
1. Mỗi khi mở ứng dụng lên sẽ tự động kiểm tra thông tin gần đến hạn một nghiệp vụ nào đó (hợp đồng lao động, báo cáo...).
2. Khi ứng dụng khởi động, sẽ có một cái Form Chính (frmMain) nào đó tự khởi động cùng. Có thể là Form Dashboard, Form menu v.v..
3. Vì cái qui trình 1 + 2 nên tôi sẽ dùng sự kiện frmMain_Load() để chạy code kiểm tra có báo cáo nào sắp đến hạn để pop up cái thông báo, nếu không có thì im lặng mà thực hiện các công việc tiếp theo thôi.
Lại ví dụ tiếp là các báo cáo của bạn lưu vào một Table là "tblBaoCao" có các Field (cột): [MaBaoCao], [NgayBanHanh],[HanBaoCao],...
Khi đó code cho sự kiện frmMain_Load () như sau:
Mã PHP:Private Sub frmMain_Load()
Dim rs As DAO.Recordset
Dim s As String
s = "SELECT * FROM tblBaoCao WHERE DateDiff("d", Date(),[HanBaoCao]) <= 3"
Set rs = CurrentDb.OpenRecordset (s, dbOpenSnapShot)
If rs.EOF And rs.BOF Then Exit Sub
Msgbox "Có " & rs.RecordCount & " báo cáo sắp tới han."
rs.Close
Set rs = Nothing
End Sub -
RE: Thông báo hạn hết hạn báo cáo
minhhvm94@gmail.com > 11-08-20, 02:37 PM
(11-08-20, 11:24 AM)ongke0711 Đã viết:
(11-08-20, 09:46 AM)minhhvm94@gmail.com Đã viết: cái này em muốn tạo một query để thông báo anh ah
Access nó xử lý theo qui trình, mỗi qui trình thao tác khác nhau thì cách xử lý cũng khác nhau, chỉ giống nhau chỗ cái code tính ngày để ra thông báo thôi, do đó mấy ông anh chỉ hướng dẫn cho bạn code chính thôi vì bạn không mô tả rõ qui trình thao tác của bạn.
Theo như qui trình mà tôi hay xử lý là:
1. Mỗi khi mở ứng dụng lên sẽ tự động kiểm tra thông tin gần đến hạn một nghiệp vụ nào đó (hợp đồng lao động, báo cáo...).
2. Khi ứng dụng khởi động, sẽ có một cái Form Chính (frmMain) nào đó tự khởi động cùng. Có thể là Form Dashboard, Form menu v.v..
3. Vì cái qui trình 1 + 2 nên tôi sẽ dùng sự kiện frmMain_Load() để chạy code kiểm tra có báo cáo nào sắp đến hạn để pop up cái thông báo, nếu không có thì im lặng mà thực hiện các công việc tiếp theo thôi.
Lại ví dụ tiếp là các báo cáo của bạn lưu vào một Table là "tblBaoCao" có các Field (cột): [MaBaoCao], [NgayBanHanh],[HanBaoCao],...
Khi đó code cho sự kiện frmMain_Load () như sau:
Mã PHP:Private Sub frmMain_Load()
Dim rs As DAO.Recordset
Dim s As String
s = "SELECT DateDiff("d", Date(),[HanBaoCao]) As SoNgayToiHan FROM tblBaoCao"
Set rs = CurrentDb.OpenRecordset (s, dbOpenSnapShot)
If rs.EOF And rs.BOF Then Exit Sub
Select Case rs!SoNgayToiHan
Case > 0
Msgbox "Còn " & rs!SoNgayToiHan & " ngày tới hạn báo cáo."
Case = 0
Msgbox "Hôm nay tới hạn báo cáo."
Case < 0
Msgbox "Đã quá hạn báo cáo " & rs!SoNgayToiHan & " ngày."
End If
rs.Close
Set rs = Nothing
End Sub
Cảm ơn bác. Em muốn dùng query thì để nó riêng biệt được không bác? -
RE: Thông báo hạn hết hạn báo cáo
ongke0711 > 11-08-20, 03:05 PM
(11-08-20, 02:37 PM)minhhvm94@gmail.com Đã viết:
Mã PHP:"SELECT DateDiff("d", Date(),[HanBaoCao]) As SoNgayToiHan FROM tblBaoCao"
Cảm ơn bác. Em muốn dùng query thì để nó riêng biệt được không bác?
Ý "riêng biệt" là sao bạn? Muốn hiện thông báo chỉ có cách dùng code VBA.
Còn việc hiện danh sách thì dùng Query ngon lành thôi.
Copy câu lệnh này dán vào Query Design SQL View:
SELECT *, DateDiff("d", Date(),[HanBaoCao]) As SoNgayToiHan FROM tblBaoCao WHERE [SoNgayToiHan] <=3;
Dùng điều kiện: WHERE [SoNgayToiHan] <=3 để lọc những dòng có ngày tới hạn trong vòng 3 ngày tính từ ngày mở ứng dụng. Bạn tuỳ chỉnh số ngày này.
(Ps: phần code bài trước tôi làm sai phần câu lệnh SQL, đã sửa lại) -
RE: Thông báo hạn hết hạn báo cáo
tranthanhan1962 > 11-08-20, 03:18 PM
Làm query như vầy (Căn cứ công thức của Xuân Thanh)
Field ThongBao: Date()=Ngày hiện tại của hệ thống =11/08/2020
ThongBao: ThongBao: IIf([NgayDenHan]-Date()=0;"Đã đến ngày báo cáo";IIf([NgayDenHan]-Date()<3;"Gần đến hạn báo cáo";IIf([NgayDenHan]-Date()<0;"Đã quá hạn báo cáo";""))) -
RE: Thông báo hạn hết hạn báo cáo
DooHoaangPhuuc > 11-08-20, 11:56 PM
Ngoài ra có thể pop-up Form.Thông báo như post #9 của Bác TranThanhAn1962 bằng cách lọc dữ liệu Criteria "Is not Null" cho Field [ThongBao] trên query kết hợp đếm số lượng record >0 trên Form này .