以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:自动分解考勤工时到指定位置列 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=52390) |
||||
-- 作者:jiterp -- 发布时间:2014/6/14 21:45:00 -- 求助:自动分解考勤工时到指定位置列
共两个表,第一个表是设定一天的打卡时间段,共分六段,第二个表是刷卡记录表,但从考勤机上取的考勤信息,只有到考勤时间列。
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/15 10:55:00 -- 代码,如下
Select Case e.DataCol.Name |
||||
-- 作者:jiterp -- 发布时间:2014/6/15 11:40:00 -- 老师的代码实现了大部分功能,还有几个细节要改善一下,这也是我没说清楚. [此贴子已经被作者于2014-6-15 11:57:48编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2014/6/15 12:07:00 -- 如下
|
||||
-- 作者:最嗨魔女呜啦啦 -- 发布时间:2019/2/20 15:50:00 -- 你好 老师 看了这个范例 我有些问题 就是我的数据跟他的数据有个区别 就是中间有两个空格 会报错 Select Case e.DataCol.Name Case "考勤时间" If e.DataRow.IsNull("考勤时间") = False Then Dim ary() As String = e.DataRow("考勤时间").split(" ") For Each str As String In ary Dim d As Date = new Date(1900,1,1,str.Split(":")(0),str.Split(":")(1), 0) Dim fdr As DataRow = DataTables("班段设置").Find("起始时间 <= #" & d & "#", "起始时间 desc") If fdr IsNot Nothing Then Dim Idx As String = Tables("班段设置").FindRow(fdr) Dim cname As String = "第" & idx+1 & "段" Dim temp As Date = CDate(e.DataRow(cname)) temp = new Date(1900, 1, 1, temp.Hour, temp.Minute, 0) If e.DataRow.IsNull(cname) OrElse temp > d Then e.DataRow("第" & idx+1 & "段") = d End If Else End If Next End If End Select 这一段该如何修改呀 |
||||
-- 作者:有点蓝 -- 发布时间:2019/2/20 16:06:00 -- Dim ary() As String = e.DataRow("考勤时间").replace(" "," ").split(" ") |
||||
-- 作者:最嗨魔女呜啦啦 -- 发布时间:2019/2/20 16:17:00 -- 蓝老师 测试了下 还是再报那个错误 |
||||
-- 作者:有点蓝 -- 发布时间:2019/2/20 16:37:00 -- 调试技巧:http://www.foxtable.com/webhelp/scr/1485.htm For Each str As String In ary msgbox(str) msgbox(str.Split(":")(0)) msgbox(str.Split(":")(1)) Dim d As Date = new Date(1900,1,1,str.Split(":")(0),str.Split(":")(1), 0) msgbox(d) Dim fdr As DataRow = DataTables("班段设置").Find("起始时间 <= #" & d & "#", "起始时间 desc") If fdr IsNot Nothing Then Dim Idx As String = Tables("班段设置").FindRow(fdr) Dim cname As String = "第" & idx+1 & "段" msgbox(cname ) Dim temp As Date = CDate(e.DataRow(cname)) temp = new Date(1900, 1, 1, temp.Hour, temp.Minute, 0) msgbox(temp ) If e.DataRow.IsNull(cname) OrElse temp > d Then e.DataRow("第" & idx+1 & "段") = d End If Else End If Next |
||||
-- 作者:最嗨魔女呜啦啦 -- 发布时间:2019/2/21 11:39:00 -- 在datacolchanged 事件里怎么调试呀 写了msgbox 没作用诶 求指教 |
||||
-- 作者:有点蓝 -- 发布时间:2019/2/21 11:59:00 -- 不管什么事件,调试方法一样,如果没作用,说明事件没有触发。重置列看看 [此贴子已经被作者于2019/2/21 11:59:05编辑过]
|