以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 恢复定期提醒 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=171103)
|
-- 作者:cd_tdh
-- 发布时间:2021/8/18 11:56:00
-- 恢复定期提醒
老师,我用计时器做了一个定期提醒功能,比如每月或每周提醒,提醒后如果我点了不在提醒,不在提醒就为true,但是按照提醒周期下个月或是下周又需要提醒,怎么处理呢?
表结构如下:
此主题相关图片如下:qq截图20210818115441.jpg
代码如下:
If Forms("主窗口").Opened = True Then \'事务定期提醒 Dim d As Date = Date.Today Dim day As Integer = d.day Dim week As Integer = d.DayOfWeek Dim cmd As New SQLCommand Dim dt As DataTable cmd.ConnectionName = cmd.CommandText = "S elect * From {事务定期提醒}" dt = cmd.ExecuteReader() For Each dr As DataRow In dt.DataRows If dr("责任人") = _UserXingMing Then If dr("不在提醒") = False Then If dr("提醒周期") = "每月" Then If day - dr("提醒日期") >= 0 Then Forms("事务定期提醒").Show End If ElseIf dr("提醒周期") = "每周" Then If week - dr("提醒日期") >= 0 Then Forms("事务定期提醒").Show End If End If End If End If Next End If
[此贴子已经被作者于2021/8/18 11:55:52编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/8/18 12:29:00
--
增加一个不再提醒日期列,插入勾选时的日期。判断这个不再提醒日期不在当月/当周的就取消勾选,继续提醒
|
-- 作者:cd_tdh
-- 发布时间:2021/8/18 12:49:00
--
怎么判断当周呢?
|
-- 作者:有点蓝
-- 发布时间:2021/8/18 13:32:00
--
http://www.foxtable.com/webhelp/topics/0229.htm
比如:date.today.DayOfWeek=1今天是周一,完后加6天,就是周日,在这时间范围内的就是本周
|
-- 作者:cd_tdh
-- 发布时间:2021/8/18 15:11:00
--
终于写好了,谢谢老师,效果如下:
此主题相关图片如下:qq截图20210818150850.jpg
代码发出来供参考
If Forms("主窗口").Opened = True Then \'事务定期提醒 Dim d As Date = Date.Today Dim m As Integer = d.Month \'算出今天是几月 Dim day As Integer = d.day \'算出今天是几日 Dim w As Integer = d.DayOfWeek \'算出今天是星期几 Dim dt1 As Date = d.AddDays(-w) \'获取本周的第一天 Dim dt2 As Date = d.AddDays(6 - w) \'获取本周的最后一天 Dim cmd As New SQLCommand Dim dt As DataTable cmd.CS elect * From {事务定期提醒}" dt = cmd.ExecuteReader(True) Dim drs As List(Of DataRow) drs = dt.Select("[提醒周期] = \'每月\'") For Each dr As DataRow In drs If dr("不在提醒日期").Month <> m Then \'不在提醒日期不在本月 dr("不在提醒") = False dr("不在提醒日期") = Date.Now dr("处理人员") = "系统自动处理" dr.Save Else If dr("不在提醒") = False Then If dr("责任人") = _UserXingMing Then If day - dr("提醒日期") >= 0 Then Forms("事务定期提醒").Show End If End If End If End If Next Dim drw As List(Of DataRow) drw = dt.Select("[提醒周期] = \'每周\'") For Each dw As DataRow In drw If dw("不在提醒日期") < dt1 Then \'不在提醒日期小于本周第一天 dw("不在提醒") = False dw("不在提醒日期") = Date.Now dw("处理人员") = "系统自动处理" dw.Save Else If dw("不在提醒") = False Then If dw("责任人") = _UserXingMing Then If w - dw("提醒日期") >= 0 Then Forms("事务定期提醒").Show End If End If End If End If Next End If
|
-- 作者:cd_tdh
-- 发布时间:2021/8/19 13:39:00
--
老师,发现一个问题,我提醒是做的一个PopupForm类型窗口,有多条提醒信息时,只显示了最后一条,怎么然他每条都显示一个提醒呢?
|
-- 作者:有点蓝
-- 发布时间:2021/8/19 13:47:00
--
没有办法,窗口只能打开一个。考虑在窗口里显示上一条,下一条提示
|
-- 作者:cd_tdh
-- 发布时间:2021/8/19 16:19:00
--
老师,我提醒窗口代码这样写的,用find找到的第一条
Dim cmd As New SQLCommand Dim dt As DataTable cmd.ConnectionName = cmd.CommandText = "S elect * From {事务定期提醒}" dt = cmd.ExecuteReader()
Dim dr As DataRow = dt.Find("责任人 = \'" & _UserXingMing & "\'") If dr IsNot Nothing Then e.Form.Controls("事务名称").text = dr("事务名称") e.Form.Controls("事务详情").text = dr("事务详情") End If
上一条下一条思路一直没想通过来
|
-- 作者:有点蓝
-- 发布时间:2021/8/19 16:27:00
--
参考:http://www.foxtable.com/webhelp/topics/3055.htm
使用标签记录查询到的行的_identify值,
上一行 Dim id As String = e.Form.Controls("Label2").Text Dim dr As DataRow = dt.Find("_identify < " & id ,“_identify desc”)
下一行 Dim id As String = e.Form.Controls("Label2").Text Dim dr As DataRow = dt.Find("_identify > " & id )
|