Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hàm] Tính số ngày làm việc trong tuần trong một khoảng thời gian
#1
Chào các bạn,
Trong quá trình làm một số form liên quan đến nhân sự, ngày công nên mình có nhu cầu tính số ngày làm việc trong một khoảng thời gian báo cáo. Có cty thì làm nguyên ngày thứ 7, có cty nghỉ hoặc làm nữa ngày thứ 7 do đó số ngày làm việc cũng khác nhau. Để cho tiện mình cũng đã làm 1 cái hàm TinhNgayLV để xử lý trường hợp này chia sẽ cùng các bạn.

[Hình: Form.png]

- Tạo Option group với 3 options : 1. Nghỉ ngày thứ 7; 2. Làm nữa ngày thứ 7; 3. Làm nguyên ngày thứ 7.
- Textbox txtTuNgay, txtDenNgay, txtTongSoNgayLV.
- Code như sau:
Mã PHP:
Option Compare Database
Option Explicit

Function TinhSoNgayLV(dtTuNgay As DatedtDenNgay As Date) As Double
On Error 
GoTo XuLy_Loi
   Dim dtNgay   
As Date
   Dim iThuTrongTuan 
As Integer

   
'Kiem tra ngay co hop le không?
   If dtTuNgay > dtDenNgay Then
       MsgBox "Ngay khong hop le! Den ngày > Tu ngày", vbCritical, "Thông báo"
       Exit Function
   End If

   TinhSoNgayLV = 0
   
   For dtNgay = dtTuNgay To dtDenNgay
       iThuTrongTuan = Weekday(dtNgay)
       Select Case Me.fmeNgayLV
       Case 1
           If iThuTrongTuan <> vbSunday And iThuTrongTuan <> vbSaturday Then
               TinhSoNgayLV = TinhSoNgayLV + 1
           End If
       Case 2
           If iThuTrongTuan <> vbSunday Then
               If iThuTrongTuan <> vbSaturday Then
                   TinhSoNgayLV = TinhSoNgayLV + 1
               Else
                   TinhSoNgayLV = TinhSoNgayLV + 0.5
               End If
           End If
       Case 3
           If iThuTrongTuan <> vbSunday Then
               TinhSoNgayLV = TinhSoNgayLV + 1
           End If
       End Select
   Next dtNgay

XuLy_Loi_Exit:
   On Error Resume Next
   Exit Function

XuLy_Loi:
   MsgBox "Loi nay da phat sinh:" & vbCrLf & vbCrLf & _
          "So loi: " & Err.Number & vbCrLf & _
          "Loi do: TinhSoNgayLV" & vbCrLf & _
          "Dien giai: " & Err.Description, vbCritical, _
          "Phát sinh loi!"
   Resume XuLy_Loi_Exit
End Function

Private Sub fmeNgayLV_AfterUpdate()
Me.txtTongSoNgayLV = TinhSoNgayLV(Me.txtTuNgay, Me.txtDenNgay)
End Sub

Private Sub txtDenNgay_AfterUpdate()
Me.txtTongSoNgayLV = TinhSoNgayLV(Me.txtTuNgay, Me.txtDenNgay)
End Sub

Private Sub txtTuNgay_AfterUpdate()
Me.txtTongSoNgayLV = TinhSoNgayLV(Me.txtTuNgay, Me.txtDenNgay)
End Sub 
 


Demo
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 tranthanhan1962 , bvchauthanh , huuduy.duy


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 6 141 29-11-16, 05:18 PM
Bài mới nhất: MinhnHang
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,686 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 113 10-11-16, 10:41 AM
Bài mới nhất: maidinhdan
  Summary bằng VBA trong MS Access. MinhnHang 6 313 08-11-16, 08:36 AM
Bài mới nhất: MinhnHang
  [Hỏi] Số Thứ Tự Theo Nhóm Hàng Hóa Trong Access pherotao 2 134 02-11-16, 03:05 PM
Bài mới nhất: pherotao

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ơ