Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hàm] Demo_[Hàm] Tính thâm niên như BHXH (maidinhdan)
#11
007 không sai đâu maidinhdan. Tại trong cái query mình sửa tham số ngày hiện tại để test mà chưa trả lại cho đúng thôi.
Đang để là: ThamNien: ThamNien([ngaythamgia],#01/03/2015#). Làm hú hồn tưởng sai cả dặm luôn.
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 maidinhdan
#12
(24-07-15, 12:15 PM)ongke0711 Đã viết: 007 không sai đâu maidinhdan. Tại trong cái query mình sửa tham số ngày hiện tại để test mà chưa trả lại cho đúng thôi.
Đang để là: ThamNien: ThamNien([ngaythamgia],#01/03/2015#). Làm hú hồn tưởng sai cả dặm luôn.

Xác nhận là đúng. Vậy mà post Demo không ghi chú làm mình đi qua coi Modules hàm, mà không phát hiện

Hàm ra đã ok.

Cảm ơn anh ongke0711!, em sẽ sửa bài trên của em lại, cho bài nó gọn.
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
#13
(24-07-15, 02:08 AM)ongke0711 Đã viết: Không biết bác maidinhdan có viết nhầm tên hàm không? Mình dùng DateDiff + DateSerial. Code này mình lục lại mấy file trước đây. Do trí nhớ kém nên ghi chú hơi bị nhiều ở các dòng code, nhìn hơi rối chút  007

Mã PHP:
Function ThamNien(NgayBatDau As DateNgayKetThuc As Date)
   
    
    
' Hàm cho ket qua: X nam, Y tháng, Z ngày
    ' "Tròn tháng"
là sô ngày cua NKT >= sô ngày cua NBD hoac NBD va NKT la ngay cuoi cua thang tuong ung.
    ' Khac phuc hàm cho ket qua sai doi voi truong hop tháng có 28,29,31 ngày.
    
   Dim Nam As Long, Thang As Long, Ngay As Long
   Dim NgayXL As Date, NgayCuoiThang1 As Date, NgayCuoiThang2 As Date
    
    ' 
Cat bo phan thoi gian (timetheo sau NgayBatDauNgayKetThuc
   NgayBatDau 
Int(NgayBatDau)
   NgayKetThuc Int(NgayKetThuc)
    
    
' Kiem tra xem ngày có hop le không?
   If NgayBatDau > NgayKetThuc Then
       ThamNien = ""
       Exit Function
   End If
    
   '
#Tìm thông sô NAM truoc, den THANG, den NGAY
   
    
' Kiem tra xem có cùng Nam giua 2 ngày can tìm thâm niên
   If Year(NgayKetThuc) > Year(NgayBatDau) Then
        
        ' 
Neu khác Nam -> Kiem tra xem Tháng có giong nhau không? -> Neu cùng Tháng
        
' -> Ktra Ngày de xem dã tròn Nam hay chua du Nam. VD: 2014/7/23 và 2015/7/20 => chua du Nam
        
       If Month(NgayKetThuc) = Month(NgayBatDau) Then
           If Day(NgayKetThuc) >= Day(NgayBatDau) Then
               Nam = DateDiff("yyyy", NgayBatDau, NgayKetThuc)
           Else
               Nam = DateDiff("yyyy", NgayBatDau, NgayKetThuc) - 1   '
Loai bo truong hop chua tròn NAMhàm DateDiff 'yyyy" vãn cho gtri = 1
           End If
            
       ' 
Truong hop nay chac chan da qua tròn NAM
       ElseIf Month
(NgayKetThuc) > Month(NgayBatDauThen
           Nam 
DateDiff("yyyy"NgayBatDauNgayKetThuc)
            
       
' Truong hop nay chua tròn NAM
       Else
           Nam = DateDiff("yyyy", NgayBatDau, NgayKetThuc) - 1
       End If
        
   ' 
Truong hop nay NAM giong nhau -> chac chan chua tròn NAM
   Else
       Nam 
0
   End 
If
    
   
' Tính xem bao nhiêu THÁNG. Chi lay phan Tháng chua tròn NAM (mod 12).
   Thang = (DateDiff("m", DateSerial(Year(NgayBatDau), Month(NgayBatDau), 1), _
   DateSerial(Year(NgayKetThuc), Month(NgayKetThuc), 1)) + IIf(Day(NgayKetThuc) >= _
   Day(NgayBatDau), 0, -1)) Mod 12
    
   ' 
Tính xem bao nhiêu Ngày da quaTruong hop NKT >= NBD.
   If Day(NgayKetThuc) >= Day(NgayBatDauThen
       Ngay 
Day(NgayKetThuc) - Day(NgayBatDau)
        
   
' Truong hop NKT<NBD -> phai kiem tra ngày cuôi cua Tháng
   ' 
NgayCuoiThang1Ngày cuôi tháng truoc NgayKetThuc
   
' NgayCuoiThang2: Ngày cuôi cua tháng NgayKetThuc
   ' 
NgayXLQui ve Tháng truoc cua NKT voi Ngày cua NBD
   Else
       NgayCuoiThang1 
DateSerial(Year(NgayKetThuc), Month(NgayKetThuc), 0)
       NgayCuoiThang2 DateSerial(Year(NgayKetThuc), Month(NgayKetThuc) + 10)
       NgayXL DateSerial(Year(NgayKetThuc), Month(NgayKetThuc) - 1Day(NgayBatDau))
       
       If NgayCuoiThang2 
NgayKetThuc Then   'NKT la ngày cuoi thang
           If Thang = 11 Then
               Thang = 0
               Nam = Nam + 1
           Else
               Thang = Thang + 1
           End If
       Else
           Ngay = DateDiff("d", IIf(NgayXL > NgayCuoiThang1, NgayCuoiThang1, NgayXL), NgayKetThuc)
       End If
   End If
    
   If Nam >= 1 Then
       ThamNien = Nam & " nam, " & Thang & " tháng, " & Ngay & " ngày"
   Else
       If Thang >= 1 Then
           ThamNien = Thang & " tháng, " & Ngay & " ngày"
       Else
           ThamNien = Ngay & " ngày"
       End If
   End If
    
End Function 

Mượn tạm file .mdb của bạn bvchauthanh làm demo

Xin hỏi vậy mình tí. có thêm cột: thời gian, thời còn lại.
VD: thời gian: 10 năm 6 tháng 10 ngày; thâm niên: 5 năm 4 tháng 3 ngày
thời gian còn lại= thời gian - thâm niên.
Vậy mình làm cách nào xin giúp lun nha bạn
Chữ ký của tieuho828 tieuho828,gia nhập Thủ Thuật Access từ 08-05 -16.
Reply
Những người đã cảm ơn
#14
Bạn ongke0711 cũng tính sai rồi.
31/1/2015 đến 8/5/25016 là 1 nam, 3 tháng, 7 ngày
nhưng bạn tính ra [b]1 nam, 3 tháng, 8 ngày[/b]
Chữ ký của tieuho828 tieuho828,gia nhập Thủ Thuật Access từ 08-05 -16.
Reply
Những người đã cảm ơn
#15
(08-05-16, 02:02 PM)tieuho828 Đã viết: Bạn ongke0711 cũng tính sai rồi.
31/1/2015 đến 8/5/25016 là 1 nam, 3 tháng, 7 ngày
nhưng bạn tính ra [b]1 nam, 3 tháng, 8 ngày[/b]

Trả lời: Tuy mình không phải là chủ nhân của Code trên nhưng.
 Bạn dùng cách tính nào mà ra
: 1 nam, 3 tháng, 7 ngày

Tôi không cần tính cũng nhìn là là .................8 ngày rồi.

Bây giờ bỏ qua cái Năm + tháng đi: Cứ cho hiện tại là ngày 30/4/2016 tức là ngày cuối cùng của tháng 4. Bạn đếm xem đến ngày 8/5/2016 là bao nhiêu ngày?.

Có lẽ bạn nhầm lẫn là ngày 30/4/2016 có 31 ngày chăng, để rồi bạn lấy cái số 1 của 31 làm thành 1 tây của ngày 1/5/2016.

Hàm của bài này đã Test của nhiều thành viên và đã chuẩn xác rồi.

Nếu bạn còn chưa tính được, hãy đem lịch ra đếm bằng tay thử xem.

Ghi chú: Demo hàm chính xác nằm ở bài đầu tiên ( Tác giả: Ongke) và bài thứ 8 ( Tác giả bvchauthanh)



Thân mến!
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 ongke0711
#16
(08-05-16, 03:58 PM)maidinhdan Đã viết:
(08-05-16, 02:02 PM)tieuho828 Đã viết: Bạn ongke0711 cũng tính sai rồi.
31/1/2015 đến 8/5/25016 là 1 nam, 3 tháng, 7 ngày
nhưng bạn tính ra [b]1 nam, 3 tháng, 8 ngày[/b]

Trả lời: Tuy mình không phải là chủ nhân của Code trên nhưng.
 Bạn dùng cách tính nào mà ra
: 1 nam, 3 tháng, 7 ngày

Tôi không cần tính cũng nhìn là là .................8 ngày rồi.

Bây giờ bỏ qua cái Năm + tháng đi: Cứ cho hiện tại là ngày 30/4/2016 tức là ngày cuối cùng của tháng 4. Bạn đếm xem đến ngày 8/5/2016 là bao nhiêu ngày?.

Có lẽ bạn nhầm lẫn là ngày 30/4/2016 có 31 ngày chăng, để rồi bạn lấy cái số 1 của 31 làm thành 1 tây của ngày 1/5/2016.

Hàm của bài này đã Test của nhiều thành viên và đã chuẩn xác rồi.

Nếu bạn còn chưa tính được, hãy đem lịch ra đếm bằng tay thử xem.

Ghi chú: Demo hàm chính xác nằm ở bài đầu tiên ( Tác giả: Ongke) và bài thứ 8 ( Tác giả bvchauthanh)



Thân mến!
Tại mình có bài tập yêu cầu phải tính như vậy nè.
31/1/2015 đến 8/5/25016 tính như sau:

8/5/2016- 31/1/2015 lấy ngày - ngày (nếu không đủ thì mượn 1 tháng (30 là ngày) tức là 38-31
tháng - tháng
năm - năm
 Kết quả ra là: 1năm 3tháng 7 ngày
Hãy giúp mình với
Chữ ký của tieuho828 tieuho828,gia nhập Thủ Thuật Access từ 08-05 -16.
Reply
Những người đã cảm ơn
#17
Vấn đề của bài toán này là mượn 1 tháng báo nhiêu ngày? 28, 29, 30, 31? Sao bạn không lấy đúng số ngày của Ngày bắt đầu là 31 ngày để trừ.
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
#18
Tại vì người ta yêu cầu vậy bạn ah. Cách tính là như thế đó giúp mình được không? Tháng mượn 30 ngày bạn ah. Tháng nào cũng vậy.
(08-05-16, 07:29 PM)ongke0711 Đã viết: Vấn đề của bài toán này là mượn 1 tháng báo nhiêu ngày? 28, 29, 30, 31? Sao bạn không lấy đúng số ngày của Ngày bắt đầu là 31 ngày để trừ.
Chữ ký của tieuho828 tieuho828,gia nhập Thủ Thuật Access từ 08-05 -16.
Reply
Những người đã cảm ơn
#19
(08-05-16, 08:08 PM)tieuho828 Đã viết: Tại vì người ta yêu cầu vậy bạn ah. Cách tính là như thế đó giúp mình được không? Tháng mượn 30 ngày bạn ah. Tháng nào cũng vậy.


Xem lại bài thứ #3 của chủ đề này. Giống như ý bạn muốn đó.
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
  Hướng Dẫn Tổng hợp các hàm Toán học nâng cao: thống kê, xác xuất, tuyến tính..(Ví dụ) maidinhdan 0 179 16-04-16, 01:15 PM
Bài mới nhất: maidinhdan
  Dùng VBA để tính tồn kho Xuân Thanh 4 1,972 23-07-15, 04:15 PM
Bài mới nhất: bvchauthanh
  [Hàm] Một số hàm liên quan đến ngày tháng và tính toán Xuân Thanh 2 939 20-03-15, 11:36 AM
Bài mới nhất: Xuân Thanh
  [Hàm] Hàm HenNgay để tính ngày kẻ từ ngày bắt đầu đến ngày có số ngày hẹn cho trước Xuân Thanh 8 1,827 15-05-14, 09:46 AM
Bài mới nhất: cawboy
  [Hàm] Hàm Work_Days để tính thời gian làm việc giữa BegDate và EndDate Xuân Thanh 1 2,339 20-03-13, 11:37 AM
Bài mới nhất: hoaiitktv

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ơ