กระทู้เก่าบอร์ด อ.Yeadram
2,972 24
URL.หัวข้อ /
URL
ถึง อาจารย์สันติสุขครับ (พอดีผม Reply ในกระทู้เก่า
Public Function pfNextWorkDT(pStartDT As Date, pNumOfDay As Long) As Date
' pStartDT = ???????????
' pNumOfDy = ?????????????
'
' ?????????? ???????????????????????????????????????????????????????????????????? (pStartDT + pNumOfDay)
' ????????????????? ?????????????????????????????????????????????????? ???????????????????????? (pStartDT + pNumOfDay + wLastTotalHol)
' ??????????????????? ???????????????????????????????????? ???????????????????????? ??????????????????????? ?????????????????????????
' ??????????????? ?????????????????????????? ???????????????????????????? ?????????????????????????
Dim wEndDT As Date ' ??????????
Dim wDay As Integer ' ??????????????????????????????????????? ?????????????????
Dim wSat As Integer ' ????????????????????????????????????????????
Dim wSun As Integer ' ??????????????????????????????????????????????
Dim wTradHol As Integer ' ?????????????????????????????????????????????????????
Dim wTotalHol As Integer ' ?????????????????????????????????????????????????????
Dim wLastTotalHol As Integer ' ??????????????? ?????????????????????
wTotalHol = 0
Do
wLastTotalHol = wTotalHol
wDay = pNumOfDay + wLastTotalHol
wEndDT = DateAdd("d", wDay - 1, pStartDT)
wSat = DateDiff("ww", wEndDT - 1, pStartDT, 7)
wSun = DateDiff("ww", wEndDT - 1, pStartDT, 1)
wTradHol = DCount("HDATE", "HolidayDate", "HDATE between #" & Format$(pStartDT, "dd-mmm-yyyy") & "# and #" & Format$(wEndDT, "dd-mmm-yyyy") & "#")
wTotalHol = wSat + wSun + wTradHol
Loop Until wTotalHol = wLastTotalHol
pfNextWorkDT = wEndDT
End Function
' pStartDT = ???????????
' pNumOfDy = ?????????????
'
' ?????????? ???????????????????????????????????????????????????????????????????? (pStartDT + pNumOfDay)
' ????????????????? ?????????????????????????????????????????????????? ???????????????????????? (pStartDT + pNumOfDay + wLastTotalHol)
' ??????????????????? ???????????????????????????????????? ???????????????????????? ??????????????????????? ?????????????????????????
' ??????????????? ?????????????????????????? ???????????????????????????? ?????????????????????????
Dim wEndDT As Date ' ??????????
Dim wDay As Integer ' ??????????????????????????????????????? ?????????????????
Dim wSat As Integer ' ????????????????????????????????????????????
Dim wSun As Integer ' ??????????????????????????????????????????????
Dim wTradHol As Integer ' ?????????????????????????????????????????????????????
Dim wTotalHol As Integer ' ?????????????????????????????????????????????????????
Dim wLastTotalHol As Integer ' ??????????????? ?????????????????????
wTotalHol = 0
Do
wLastTotalHol = wTotalHol
wDay = pNumOfDay + wLastTotalHol
wEndDT = DateAdd("d", wDay - 1, pStartDT)
wSat = DateDiff("ww", wEndDT - 1, pStartDT, 7)
wSun = DateDiff("ww", wEndDT - 1, pStartDT, 1)
wTradHol = DCount("HDATE", "HolidayDate", "HDATE between #" & Format$(pStartDT, "dd-mmm-yyyy") & "# and #" & Format$(wEndDT, "dd-mmm-yyyy") & "#")
wTotalHol = wSat + wSun + wTradHol
Loop Until wTotalHol = wLastTotalHol
pfNextWorkDT = wEndDT
End Function
24 Reply in this Topic. Dispaly 2 pages and you are on page number 2
21 @R21982
น่าจะเป็นตรง Dcount หรือเปล่าครับ เพราะรันคิวรีแล้วมีป๊อบอัพโชว์เกี่ยวกับ 'HDATE = #17-Nov-2014' ประมาณนี้ครับ
22 @R21983
ผมลองลบให้เหลือ ,HDATE=Format$(wEndDT,"dd-mmm-yyyy") มันรันได้แต่ ยังลบกันไปตรงวันหยุดครับ
23 @R21989
แก้บรรทัด Do While เป็น
Do While (wDayOfWeek = vbSaturday) or (wDayOfWeek = vbSunday) or (DCount("HDATE", "HolidayDate", "HDATE = #" & Format$(wEndDT, "dd-mmm-yyyy" & "#")) > 0)
Do While (wDayOfWeek = vbSaturday) or (wDayOfWeek = vbSunday) or (DCount("HDATE", "HolidayDate", "HDATE = #" & Format$(wEndDT, "dd-mmm-yyyy" & "#")) > 0)
24 @R21991
ได้แล้วครับผม ขอบคุณมากครับอาจารย์
Time: 0.3437s