以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  变更最近的周二或周五  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104692)

--  作者:zhangning
--  发布时间:2017/8/3 11:24:00
--  变更最近的周二或周五

图片点击可在新窗口打开查看此主题相关图片如下:1134.png
图片点击可在新窗口打开查看
老师,如图,
“_配膳日”和“_结束日”已通过代码算出来了,
要在此基础上进行变更,
如工程名是“CA3”,则需要将“_结束日”变成离“_配膳日”最近的周二或周五,
如图,配膳日是7月5日,那离这天最近的周二或周五,就是7月7日,

希望是将“_结束日“,变更显示为”7月7日“,
(图示的7月7日纯属偶然)

请问老师,这个代码如何写呢?
谢谢老师!


--  作者:有点甜
--  发布时间:2017/8/3 11:37:00
--  
Dim d As Date = "2017-08-03"
For i As Integer = 0 To 6
    d = d.AddDays(i)
    If d.DayOfWeek = 2 OrElse d.DayOfWeek = 5 Then
        Exit For
    End If
Next
msgbox(d)

--  作者:zhangning
--  发布时间:2017/8/3 13:07:00
--  
老师,我将条件和列名加进去了,请老师斧正,谢谢
If e.DataRow("类别") = "计划"  Then
    If e.DataRow("*序_工程名*") = "CA3"  Then
    Dim d As Date = "2017-08-03"
    For i As Integer = 0 To 6
    d = e.DataRow("*序_配膳日*").AddDays(i)
    If d.DayOfWeek = 2 OrElse d.DayOfWeek = 5 Then
        e.DataRow("*序_结束日*") = d
        Exit For
    End If
Next
end if
end if

--  作者:有点甜
--  发布时间:2017/8/3 15:24:00
--  
Dim cname As String = e.DataCol.name
If cname.contains("序_工程名") OrElse cname.contains("序_配膳日") OrElse cname.contains("序_结束日") Then
    If e.DataRow("类别") = "计划"  Then
        Dim n As Integer = cname.indexof("序_")
        n = cname.substring(1,n-1)
        If e.DataRow("第" & n & "序_工程名") = "CA3"  Then
            Dim d As Date = e.DataRow("第" & n & "序_配膳日")
            For i As Integer = 0 To 6
                d = d.AddDays(i)
                If d.DayOfWeek = 2 OrElse d.DayOfWeek = 5 Then
                    e.DataRow("第" & n & "序_结束日") = d
                    Exit For
                End If
            Next
        End If
    End If
End If

--  作者:zhangning
--  发布时间:2017/8/3 16:00:00
--  
谢谢老师,完美解决了