Foxtable(狐表)用户栏目专家坐堂 → 关于自动更新生成表的问题!


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

主题:关于自动更新生成表的问题!

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


加好友 发短信
等级:婴狐 帖子:47 积分:521 威望:0 精华:0 注册:2017/1/2 21:35:00
关于自动更新生成表的问题!  发帖心情 Post By:2021/2/5 11:17:00 [只看该作者]

Select Case e.DataCol.Name
    Case "设备名称","计划开始日期"
        If e.DataRow.IsNull("设备名称") OrElse e.DataRow.IsNull("计划开始日期")
        Else
            Dim d As Date = e.DataRow("计划开始日期")
            Dim dr As DataRow = DataTables("试验室设备运行情况").Find("设备名称='" & e.DataRow("设备名称") & "' and 月份='" & d.month & "'")
            If dr Is Nothing Then
                dr = DataTables("试验室设备运行情况").AddNew()
                dr("设备名称") = e.DataRow("设备名称")
                dr("年份") = d.year
                dr("月份") = d.month
            End If
            If e.DataRow.IsNull("计划完成日期") = False Then
                Dim d1 As Date = e.DataRow("计划完成日期")
                Do While d <= d1
                    dr("设备运行情况_" & d.Day) = "P"
                    d = d.AddDays(1)
                Loop
            Else
                dr("设备运行情况_" & d.Day) = "P"
            End If
        End If
End Select

Select Case e.DataCol.Name
    Case "设备名称","计划完成日期"
        If e.DataRow.IsNull("设备名称") OrElse e.DataRow.IsNull("计划完成日期")
        Else
            Dim d As Date = e.DataRow("计划完成日期")
            Dim dr As DataRow = DataTables("试验室设备运行情况").Find("设备名称='" & e.DataRow("设备名称") & "' and 月份='" & d.month & "'")
            If dr Is Nothing Then
                dr = DataTables("试验室设备运行情况").AddNew()
                dr("年份") = d.year
                dr("设备名称") = e.DataRow("设备名称")  
                dr("月份") = d.month
            End If
            
            If e.DataRow.IsNull("计划开始日期") = False Then
                Dim d1 As Date = e.DataRow("计划开始日期")
                Do While d1 <= d
                    dr("设备运行情况_" & d.Day) = "P"
                    d = d.AddDays(-1)
                Loop
            Else
                dr("设备运行情况_" & d.Day) = "P"
            End If
        End If
End Select

上述代码存在以下问题:
1、首次录入存在以下问题:
图片点击可在新窗口打开查看此主题相关图片如下:2021-02-05_105757.jpg
图片点击可在新窗口打开查看
2、更改日期时,填充符号P只能增加,不能减少;例如:当日期由20变15日,15~20间的填充符不会变,特别是牵涉到月份改变时,已产生的填充符不会消除;

图片点击可在新窗口打开查看此主题相关图片如下:2021-02-05_111002.jpg
图片点击可在新窗口打开查看


以上,望大神帮助,谢谢!



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


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

Select Case e.DataCol.Name
    Case "设备名称","计划开始日期"
        If e.DataRow.IsNull("设备名称") OrElse e.DataRow.IsNull("计划开始日期")
            For Each dc As DataCol In e.DataTable.DataCols
                If dc.Name.StartsWith("设备运行情况_") Then
                    e.DataRow(dc.name)=Nothing
                End If
            Next
        Else
            Dim d As Date = e.DataRow("计划开始日期")
            Dim m As Integer = d.month
            Dim dr As DataRow = DataTables("试验室设备运行情况").Find("设备名称='" & e.DataRow("设备名称") & "' and 月份='" & m & "'")
            If dr Is Nothing Then
                dr = DataTables("试验室设备运行情况").AddNew()
                dr("设备名称") = e.DataRow("设备名称")
                dr("年份") = d.year
                dr("月份") = m
            End If
            If e.DataRow.IsNull("计划完成日期") = False Then
                Dim d1 As Date = e.DataRow("计划完成日期")
                Do While d <= d1
                    If d.Month <> m Then
                        m = d.Month
                        dr = DataTables("试验室设备运行情况").Find("设备名称='" & e.DataRow("设备名称") & "' and 月份='" & m & "'")
                        If dr Is Nothing Then
                            dr = DataTables("试验室设备运行情况").AddNew()
                            dr("设备名称") = e.DataRow("设备名称")
                            dr("年份") = d.year
                            dr("月份") = m
                        End If
                    End If
                    dr("设备运行情况_" & d.Day) = "P"
                    d = d.AddDays(1)
                Loop
            Else
                dr("设备运行情况_" & d.Day) = "P"
            End If
        End If
End Select

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


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

   可能是我代码弄错了的原因,好像放进去,还是有些问题。能不能帮我运行一下数据库看看呢?
主要问题集中在:
1、开始和结束日期发如果跨月,能否自动新增加一行;
2、如果开始和结束日期发生变更,自动录入的 P能否自动增、减;特别是当月份有变化的时候,能否增、减一行。

   麻烦您了,谢谢!


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


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

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


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


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 14:36: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 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) = "P"
                    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) = "P"
                End If
            End If
        Next
End Select

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


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

完美解决,谢谢!

 回到顶部