⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 task_a.inc

📁 物业管理和办公自动化系统
💻 INC
📖 第 1 页 / 共 2 页
字号:
	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 + -