Foxtable(狐表)用户栏目专家坐堂 → 代码中数据变化导致触发范围超出问题!


  共有2709人关注过本帖树形打印复制链接

主题:代码中数据变化导致触发范围超出问题!

帅哥哟,离线,有人找我吗?
aoyanghongwei
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:521 威望:0 精华:0 注册:2017/1/2 21:35:00
代码中数据变化导致触发范围超出问题!  发帖心情 Post By:2021/2/9 9:53:00 [只看该作者]


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


     做了一个功能,如上图所示,即下表中的字符会随上表中的“当前状态”变化而变化,变化功能现在有了,但问题是:
在“设备名称”相同的情况下,更改一个,则下表中整个月份天数中都被触发变化,超出了变化行中的“开始日期”和“结束日期”的范围;即,不应该变化的也变了;

具体代码如下:
Dim zt As String
Select Case e.DataRow("当前状态")
    Case "已完成"
        zt="F"
    Case "进行中"
        zt= "P"
    Case "延期"
        zt="D"
End Select
Select Case e.DataCol.Name
    Case "计划开始日期","计划完成日期","当前状态"
        Dim filter As String = "设备名称='" & e.DataRow("设备名称") & "'"
        DataTables("试验室设备运行情况").DeleteFor(filter)
        Dim dr2 As DataRow
        For Each dr As DataRow In e.DataTable.Select(filter)
            If dr.IsNull("计划开始日期")= False AndAlso dr.IsNull("计划完成日期") = False
                Dim d As Date = dr("计划开始日期")
                Dim m As Integer = d.month
                dr2 = DataTables("试验室设备运行情况").Find(filter & " and 月份='" & m & "' and 年份=" & d.Year)
                If dr2 Is Nothing Then
                    dr2 = DataTables("试验室设备运行情况").AddNew()
                    dr2("设备名称") = e.DataRow("设备名称")
                    dr2("年份") = d.year
                    dr2("月份") = m
                End If
                Dim d1 As Date = dr("计划完成日期")
                Do While d <= d1
                    If d.Month <> m Then
                        m = d.Month
                        dr2 = DataTables("试验室设备运行情况").Find(filter & " and 月份='" & m & "' and 年份=" & d.Year)
                        If dr2 Is Nothing Then
                            dr2 = DataTables("试验室设备运行情况").AddNew()
                            dr2("设备名称") = e.DataRow("设备名称")
                            dr2("年份") = d.year
                            dr2("月份") = m
                        End If
                    End If
                    dr2("设备运行情况_" & d.Day) = zt
                    d = d.AddDays(1)
                Loop
            Else
                Dim d As Date
                If dr.IsNull("计划开始日期")
                    d = dr("计划完成日期")
                Else
                    d = dr("计划开始日期")
                End If
                If d <> Nothing
                    Dim m As Integer = d.month
                    dr2 = DataTables("试验室设备运行情况").Find(filter & " and 月份='" & m & "' and 年份=" & d.Year)
                    If dr2 Is Nothing Then
                        dr2 = DataTables("试验室设备运行情况").AddNew()
                        dr2("设备名称") = e.DataRow("设备名称")
                        dr2("年份") = d.year
                        dr2("月份") = m
                    End If
                    dr2("设备运行情况_" & d.Day) = zt
                End If
            End If
        Next
End Select


Select Case e.DataCol.name
    Case "计划完成日期","是否完成","当前状态"
        If e.DataRow("是否完成") = False AndAlso e.DataRow("计划完成日期") < Date.Today Then
            e.DataRow("当前状态") = "延期"
        ElseIf e.DataRow("是否完成") = False AndAlso e.DataRow("计划完成日期") > Date.Today AndAlso e.DataRow("计划开始日期") < Date.Today Then
            e.DataRow("当前状态") = "进行中"
        ElseIf e.DataRow("是否完成") = True Then
            e.DataRow("当前状态") = "已完成"
        Else
            e.DataRow("当前状态") = "准备中"
        End If
End Select

   烦请大神帮忙看一下,毛病在哪里,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/9 9:59:00 [只看该作者]


Select Case e.DataCol.Name
    Case "计划开始日期","计划完成日期","当前状态"
        Dim filter As String = "设备名称='" & e.DataRow("设备名称") & "'"
        DataTables("试验室设备运行情况").DeleteFor(filter)
        Dim dr2 As DataRow
        For Each dr As DataRow In e.DataTable.Select(filter)
            If dr.IsNull("计划开始日期")= False AndAlso dr.IsNull("计划完成日期") = False
Dim zt As String
Select Case dr ("当前状态")
    Case "已完成"
        zt="F"
    Case "进行中"
        zt= "P"
    Case "延期"
        zt="D"
End Select
                Dim d As Date = dr("计划开始日期")
                Dim m As Integer = d.month

 回到顶部
帅哥哟,离线,有人找我吗?
aoyanghongwei
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:47 积分:521 威望:0 精华:0 注册:2017/1/2 21:35:00
  发帖心情 Post By:2021/2/9 11:18:00 [只看该作者]

  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:111.foxdb
      

    好像还是不行,如果上表一行的状态发生改变,下表会整体变化。我把文件上传了,能帮我试一下看吗?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:105965 积分:538900 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/9 11:32:00 [只看该作者]

Select Case dr ("当前状态")
    Case "已完成"
        zt="F"

 回到顶部