以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分段连续输入一段时间怎么设置代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27117)

--  作者:ramen
--  发布时间:2012/12/22 15:01:00
--  分段连续输入一段时间怎么设置代码
如图01所示,我在开始那里输入2012-12-03,在结束那里输入2012-12-08,点确认,一段时间就出现在婚假明细那里,然后我想继续输入一段时间,从2012-12-12到2012-12-19,点确定,之后一段时间就继续跟着之前的一段时候的后面,输入到婚假明细的那里,效果如图02所示。
不知道怎么设置代码呢?请教一下高手!

图片点击可在新窗口打开查看此主题相关图片如下:01.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:02.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2012-12-22 15:04:26编辑过]

--  作者:lin_hailun
--  发布时间:2012/12/22 15:17:00
--  
 把你datacolchanged事件里的第一段替换成。

Select Case e.DataCol.name
    Case "婚假_开始","婚假_结束"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("婚假_开始") = False And dr.IsNull("婚假_结束") = False
            dr("婚假") += DateDiff("d",dr("婚假_开始"),dr("婚假_结束"))
            Dim s As String
            For i As Integer = 0 To dr("婚假")
                s = s & "," & Format(dr("婚假_开始").AddDays(i),"MM-dd")
            Next
            dr("婚假明细") += s.Trim(",")
        End If
End Select

--  作者:ramen
--  发布时间:2012/12/22 15:27:00
--  
我试了一下,已经可以跟着后面添加了,但是,后加一段时间多出了4天

[此贴子已经被作者于2012-12-22 15:33:20编辑过]

--  作者:ramen
--  发布时间:2012/12/22 15:31:00
--  回复:(lin_hailun)?把你datacolchanged事件里...
我输入了1号到3号,又输入了11号到13号,结果后面多出了14号到17号的,你看一下,怎么回事?
图片点击可在新窗口打开查看此主题相关图片如下:03.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-12-22 15:32:58编辑过]

--  作者:lin_hailun
--  发布时间:2012/12/22 15:43:00
--  
 好的,再改一下

Select Case e.DataCol.name
    Case "婚假_开始","婚假_结束"
        Dim dr As DataRow = e.DataRow
        If dr.IsNull("婚假_开始") = False And dr.IsNull("婚假_结束") = False
            dr("婚假") += DateDiff("d",dr("婚假_开始"),dr("婚假_结束"))
            Dim s As String
            For i As Integer = 0 To DateDiff("d",dr("婚假_开始"),dr("婚假_结束"))
                s = s & "," & Format(dr("婚假_开始").AddDays(i),"MM-dd")
            Next
            dr("婚假明细") += s.Trim(",")
        End If
End Select

--  作者:ramen
--  发布时间:2012/12/22 16:03:00
--  
ok啦,谢谢!真是博大精深啊,这样都可以!