📄 task_a.inc
字号:
sSQL = "insert into t_task(subject, content, create_date, creator, dofrom, doend, executor, urgency, remind_method, remind_time)" & _
" values(" & ToSQL(sSubject, "Text") & _
", " & ToSQL(sContent, "Text") & _
", " & ToSQL(sCreateDate, "Text") & _
", " & ToSQL(sCreator, "Number") & _
", " & ToSQL(sDoFrom, "Text") & _
", " & ToSQL(sDoEnd, "Text") & _
", " & ToSQL(sExecutors, "Text") & _
", " & ToSQL(sUrgency, "Number") & _
", " & ToSQL(sRemindMethod, "Text") & _
", " & ToSQL(sRemindTime, "Text") & _
")"
call ExecuteSQL(dbLocal, sSQL)
''response.write sSQL & "<br>"
'sSQL="select @@identity as 'id'"
'dim crs, rs
'set crs = New CRecoreset
'set rs = crs.Open(dbLocal, sSQL)
'sTaskSerial = crs.GetValue("id")
'crs.Close()
dim sTaskSerial : sTaskSerial = DLookUp(dbLocal, "t_task", "max(task_serial)", "creator=" & ToSQL(sCreator,"Number"))
dim sEmpArray, sEmpSerial, j
sEmpArray = Split(sExecutors, ",")
for j = 0 to UBound(sEmpArray) step 1
sEmpSerial = Trim(sEmpArray(j))
sSQL = "insert into t_personaltask(task_serial, emp_serial)" & _
" values(" & ToSQL(sTaskSerial,"Number") & ", " & ToSQL(sEmpSerial,"Number") & ")"
''response.write sSQL & "<br>" : response.end
call ExecuteSQL(dbLocal, sSQL)
next
call CommonSendMsg(MSG_TASK, "", sSubject, sContent, sCreator, sExecutors)
Response.Redirect "taskdetail.asp?serial=" & sTaskSerial
end sub
'-- 函数名 : FirstRemindTime
'-- 输入参数 : string sRemindMethod 提醒方式
'-- : datetime dtBaseTime 产生下次提醒时间的基准值
'-- 输出结果 : retRemindTime 下次提醒时间
'-- 功能 : 根据提醒方式和基准时间算出下次提醒时间
' 提醒方式sRemindMethod的可能值(要么是空,要么是8位数字)如下表
' +-------------------+---------------------------------------------------------------------------------------------
' | sRemindMethod | 说明
' +-------------------+---------------------------------------------------------------------------------------------
' | "" | 从不提醒
' | "0104****" | 前两位“01”表一次性提醒,中间两位“04”表提前几分钟提醒,最后四位表示多少分钟
' | "0108****" | 前两位“01”表一次性提醒,中间两位“08”表提前几小时提醒,最后四位表示多少小时
' | "0116****" | 前两位“01”表一次性提醒,中间两位“16”表提前几天提醒,最后四位表示多少天
' | "0400****" | 前两位“04”表每天提醒一次,中间两位“00”保留,最后四位表示每天的几点几分提醒
' | "08^^****" | 前两位“08”表每周提醒一次,中间两位“^^”表示每周几(1-7)提醒,最后四位表示每周几的几点几分提醒
' | "16^^****" | 前两位“16”表每月提醒一次,中间两位“^^”表示每月几号(1-28)提醒,最后四位表示每月几号的几点几分提醒
' +-------------------+---------------------------------------------------------------------------------------------
'-----------------------------------------------------------
' 提醒方式 + 任务开始时间 --> 第一次提醒时间
'-----------------------------------------------------------
function FirstRemindTime(sRemindMethod, dtBaseTime)
Dim nMinutes : nMinutes = 0
Dim nHours : nHours = 0
Dim nDays : nDays = 0
' msgbox "参数1:" & sRemindMethod & ",参数2:" & dtBaseTime
dtBaseTime = CDate(dtBaseTime) ' String 类型的变量转换成日期
' 和当前系统时间比较,取较大者作为基准时间
if dtBaseTime < date then
dtBaseTime = date
end if
FirstRemindTime = "" ' 缺省为不需提醒
'---------------------------------------------------------------------------------
' 不需提醒, FirstRemindTime=""
'---------------------------------------------------------------------------------
if sRemindMethod = "" then
' msgbox "Never Remind"
exit function ' 下次提醒时间为""
end if
'---------------------------------------------------------------------------------
' 提前一段分/时/天提醒,只要基准时间 - 相应的分/时/秒
'---------------------------------------------------------------------------------
' 提前N分钟提醒
if Left(sRemindMethod, 4) = "0104" then
nMinutes = Int(Right(sRemindMethod, 4)) ' 提醒方式最后四位转换成分钟
FirstRemindTime = DateAdd("n", - nMinutes, dtBaseTime)
' msgbox "下次提醒时间:" & FirstRemindTime & "(提前" & nMinutes & "分钟提醒)"
exit function
end if
' 提前N小时提醒
if Left(sRemindMethod, 4) = "0108" then
nHours = Int(Right(sRemindMethod, 4)) ' 提醒方式最后四位转换成小时
FirstRemindTime = DateAdd("h", - nHours, dtBaseTime)
' msgbox "下次提醒时间:" & FirstRemindTime & "(提前" & nHours & "小时提醒)"
exit function
end if
' 提前N天提醒
if Left(sRemindMethod, 4) = "0116" then
nDays = Int(Right(sRemindMethod, 4)) ' 提醒方式最后四位转换成天
FirstRemindTime = DateAdd("d", - nDays, dtBaseTime)
' msgbox "下次提醒时间:" & FirstRemindTime & "(提前" & nDays & "天提醒)"
exit function
end if
'---------------------------------------------------------------------------------
' 如果是循环提醒,先算出是什么时候提醒,即小时和分钟
'---------------------------------------------------------------------------------
Dim sHours, sMinutes
nHours = Int(Left(Right(sRemindMethod,4),2)) ' 倒数第三、第四位转换成小时
nMinutes = Int(Right(sRemindMethod, 2)) ' 倒数第一、第二位转换成分钟
sHours = Left(Right(sRemindMethod,4),2)
sMinutes = Right(sRemindMethod, 2)
' 每天提醒
if Left(sRemindMethod, 2) = "04" then
if ((Hour(dtBaseTime) < nHours) or (Hour(dtBaseTime) = nHours and Minute(dtBaseTime) < nMinutes )) then
' 如果dtBaseTime的时间比提醒时间早,则dtBaseTime的日期不变,时分改为提醒的时间
FirstRemindTime = DateValue(dtBaseTime) & " " & sHours & ":" & sMinutes
else
' 如果dtBaseTime的时间比提醒时间晚,则dtBaseTime的日期加1,时分改为提醒的时间
FirstRemindTime = DateValue(DateAdd("d", 1, dtBaseTime)) & " " & sHours & ":" & sMinutes
end if
' msgbox "下次提醒时间:" & FirstRemindTime
exit function
end if
'----------------------------------------------------------------------------------------------------------------------
' 每周N提醒
' 如果基准时间的星期几 ≠ 提醒方式中的星期几,只要往后推几天就得到下次提醒时间的日期,下次提醒时间的时间就是提醒方式中的提醒时间
' 如果基准时间的星期几 = 提醒方式中的星期几,如果基准时间的时分较小,则下次提醒时间=基准时间中的日期+提醒方式中的时间;
' 如果基准时间的时分较大,则下次提醒时间=基准时间中的日期+7+提醒方式中的提醒时间
'----------------------------------------------------------------------------------------------------------------------
Dim nBaseWeekday, nRemindWeekday
nBaseWeekday = weekday(dtBaseTime, vbMonday) ' 基准时间是星期几,其中vbMonday作为firstdayofweek(星期一为一周的开始)
nRemindWeekday = Int(Right(Left(sRemindMethod,4),2)) ' 每周几提醒
if Left(sRemindMethod, 2) = "08" then
if nBaseWeekday <> nRemindWeekday then
FirstRemindTIme = DateValue(DateAdd("d", (nRemindWeekday+7-nBaseWeekday)mod(7), dtBaseTime)) & " " & sHours & ":" & sMinutes
elseif ((Hour(dtBaseTime) < nHours) or (Hour(dtBaseTime) = nhours and Minute(dtBaseTime) < nMinutes)) then
FirstRemindTime = DateValue(dtBaseTime) & " " & sHours & ":" & sMinutes
else
FirstRemindTime = DateValue(DateAdd("d", 7, dtBaseTime)) & " " & sHours & ":" & sMinutes
end if
' msgbox FirstRemindTime
exit function
end if
'----------------------------------------------------------------------------------------------------------------------
' 每月N号提醒
' 如果基准时间的日期 ≠ 提醒方式中的日期,如果基准日期较小,下次提醒时间=基准日期的月+提醒日期的日+提醒方式中的提醒时间
' 如果基准日期较大,下次提醒时间=基准日期的月+1 +提醒日期的日+提醒方式的提醒时间
' 如果基准时间的日期 = 提醒方式中的日期,如果基准时间的时分较小,则下次提醒时间=基准时间中的日期+提醒方式中的时间;
' 如果基准时间的时分较大,则下次提醒时间=基准时间中的日期+一个月+提醒方式中的提醒时间
'----------------------------------------------------------------------------------------------------------------------
Dim nBaseMonthday, nRemindMonthday
nBaseMonthday = day(dtBaseTime) ' 基准时间是几号
nRemindMonthday = Int(Right(Left(sRemindMethod,4),2)) ' 提醒日期是每月几号
if Left(sRemindMethod, 2) = "16" then
if nBaseMonthday < nRemindMonthday then
FirstRemindTime = Year(dtBaseTime) & "-" & Month(dtBaseTime) & "-" & nRemindMonthday & " " & sHours & ":" & sMinutes
elseif nBaseMonday > nRemindMonthday then
FirstRemindTime = DateSerial(Year(dtBaseTime), Month(dtBaseTime) + 1, nRemindMonthday) & " " & sHours & ":" & sMinutes
elseif ((Hour(dtBaseTime) < nHours) or (Hour(dtBaseTime) = nhours and Minute(dtBaseTime) < nMinutes)) then
FirstRemindTime = DateValue(dtBaseTime) & " " & sHours & ":" & sMinutes
else
FirstRemindTime = DateValue(DateAdd("m", 1, dtBaseTime)) & " " & sHours & ":" & sMinutes
end if
' msgbox FirstRemindTime
exit function
end if
end function
%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -