Hiển thị kết quả tìm kiếm từ 1 đến 6 trên tổng số: 6
  1. #1

    Tính số ngày làm việc trong Access

    Các bác giúp em các tính số ngày làm việc trong Access với ạ.
    Ví dụ:
    Em có 3 trường ( ứng với 3 textbox)
    Field1: Songaycongno
    Field2: Ngaygiaohang
    Field3: Hanthanhtoan

    Em đã tính được
    hanthanhtoantamthoi=songaycongno+ngaygiaohang

    Nhưng làm cách nào để tính được:
    hanthanhtoan=số ngày làm việc của khoảng thời gian ngaygiaohang+hanthanhtoantamthoi

    Trong excel thì nó như cái bài này các bác ạ
    http://www.giaiphapexcel.com/forum/s...ad.php?t=15042

  2. #2
    Tham gia ngày
    11 2008
    Bài gởi
    12
    Cảm ơn
    2
    Được cảm ơn 4 lần trong 4 bài viết
    HanThanhToanTamThoi=dateadd("d",SoNgayCongNo,NgayG iaoHang)
    HanThanhToan=SoNgayLamViec(NgayGiaoHang,HanThanhTo anTamThoi)

    Bạn tạo 1 modul và copy hàm SoNgayLamViec này vào:

    Code:
     
    Function SoNgayLamViec(TuNgay As Date, DenNgay As Date) As Long
        Dim mTuNgay As Date, mDenNgay As Date
        mTuNgay = IIf(TuNgay < DenNgay, TuNgay, DenNgay)
        mDenNgay = IIf(TuNgay > DenNgay, TuNgay, DenNgay)
        'Tim den ngay nghi dau tien trong khoang tu ngay den ngay
        Do While mTuNgay <= mDenNgay
            If Weekday(mTuNgay) = vbSaturday Or Weekday(mTuNgay) = vbSunday Then Exit Do
            mTuNgay = DateAdd("d", 1, mTuNgay)
        Loop
        If mDenNgay - mTuNgay >= 7 Then
            SoNgayLamViec = ((mDenNgay - mTuNgay) \ 7) * 2
            mTuNgay = DateAdd("d", ((mDenNgay - mTuNgay) \ 7) * 7, mTuNgay)
        End If
        While mTuNgay <= mDenNgay
            If Weekday(mTuNgay) = vbSaturday Or Weekday(mTuNgay) = vbSunday Then SoNgayLamViec = SoNgayLamViec + 1
            mTuNgay = DateAdd("d", 1, mTuNgay)
        Wend
    End Function
    Tuy nhiên hàm này chỉ trừ ra được các ngày thứ 7 và CN trong khoảng thời gian tungay denngay, Không trừ được các ngày lễ như 30/4, 01/5, 02/9,... Bạn nào có cách làm hay hơn mong được chia sẽ!

  3. Thành viên sau cảm ơn dongnamnb về bài viết này:


  4. #3
    Cảm ơn bác đã reply
    Nhưng khi em thực hiện đúng như bác hưỡng dẫn thì nó vẫn hoạt động được chính xác
    Ví dụ:
    Ngày giao hàng của em là ngày 12/11/2009
    Hạn công nợ của em là 07 ngày
    => Hanthanhtoantamthoi=19/11/2009
    => Khi đó sử dụng hàm songaylamviec nó sẽ cho ra kết quả ở
    hanthanhtoan=2
    Trong khi thực tế nó sẽ là: 6 ngày làm việc ( 12,13,14,15,16,19)
    Khi sử dụng hàm songaycongviec ở trên thì nó ra kết quả sai ạ.

  5. #4
    Tham gia ngày
    11 2008
    Bài gởi
    12
    Cảm ơn
    2
    Được cảm ơn 4 lần trong 4 bài viết
    Sorry bạn nhé, mình nhầm một chút. Thay vì đưa ra số ngày làm việc thì mình lại đưa ra số ngày nghỉ. Bạn copy lại hàm sau nhé:

    Code:
    Function SoNgayLamViec(TuNgay As Date, DenNgay As Date) As Long
        Dim mTuNgay As Date, mDenNgay As Date, SoNgayNghi As Long
        mTuNgay = IIf(TuNgay < DenNgay, TuNgay, DenNgay)
        mDenNgay = IIf(TuNgay > DenNgay, TuNgay, DenNgay)
        'Tim den ngay nghi dau tien trong khoang tu ngay den ngay
        Do While mTuNgay <= mDenNgay
            If Weekday(mTuNgay) = vbSaturday Or Weekday(mTuNgay) = vbSunday Then Exit Do
            mTuNgay = DateAdd("d", 1, mTuNgay)
        Loop
        If mDenNgay - mTuNgay >= 7 Then
            SoNgayNghi = ((mDenNgay - mTuNgay) \ 7) * 2
            mTuNgay = DateAdd("d", ((mDenNgay - mTuNgay) \ 7) * 7, mTuNgay)
        End If
        While mTuNgay <= mDenNgay
            If Weekday(mTuNgay) = vbSaturday Or Weekday(mTuNgay) = vbSunday Then SoNgayNghi = SoNgayNghi + 1
            mTuNgay = DateAdd("d", 1, mTuNgay)
        Wend
        If DenNgay - TuNgay - SoNgayNghi + 1 > 0 Then SoNgayLamViec = DenNgay - TuNgay - SoNgayNghi + 1
    End Function
    thay đổi nội dung bởi: dongnamnb, 07-11-09 lúc 02:52 PM

  6. #5
    Tham gia ngày
    04 2008
    Bài gởi
    2
    Cảm ơn
    0
    Được cảm ơn 0 lần trong 0 bài viết
    hàm này sao em làm nó vẫn cho ra = 1

  7. #6
    Tham gia ngày
    04 2010
    Bài gởi
    565
    Cảm ơn
    1,979
    Được cảm ơn 903 lần trong 502 bài viết
    Trích Nguyên văn bởi tanhdakto View Post
    hàm này sao em làm nó vẫn cho ra = 1
    tim so ngay trong do tru so ngay chu nhat va thu 7 chi can dung ham nay la ok roi ko can lam ham chi cho met
    WORKDAY ( ngay bat dau, ngay ket thuc, ngay nghi)

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Đề tài tương tự

  1. Hàm đọc số thành chữ trong Access
    Viết bởi nguyentrungse7en trong chuyên mục Ứng dụng Quản trị cơ sở dữ liệu
    Trả lời: 10
    Bài mới gởi: 27-07-13, 02:24 PM
  2. Export tung sheets trong 1 file Excel vào thành từng bảng trong ACCESS
    Viết bởi hoquang1987 trong chuyên mục Ứng dụng Quản trị cơ sở dữ liệu
    Trả lời: 4
    Bài mới gởi: 30-11-09, 04:36 PM
  3. import excel vào access không cần đúng với format access
    Viết bởi nothingnes trong chuyên mục Ứng dụng Quản trị cơ sở dữ liệu
    Trả lời: 4
    Bài mới gởi: 11-06-09, 03:31 PM
  4. Đoạn code "Insert từ Excel sang Access" trong Access bị sai chỗ nào?
    Viết bởi anhphuong trong chuyên mục Ứng dụng Quản trị cơ sở dữ liệu
    Trả lời: 4
    Bài mới gởi: 24-05-09, 04:02 PM
  5. Cho hỏi về VBA trong Access
    Viết bởi hongthailha trong chuyên mục Hỏi đáp về VBA - Macro
    Trả lời: 0
    Bài mới gởi: 21-03-08, 02:47 PM

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]