Foxtable(狐表)用户栏目专家坐堂 → 自动生成行


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

主题:自动生成行

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/18 10:33:00 [显示全部帖子]

代码没有问题。不过查询条件是"零部件编号",为什么Case "焊缝编号"判断这个列,整个代码貌似和这个列没有关系,是不是应该改为:

Select Case e.DataCol.name
    Case "零部件编号"
        If e.DataRow.IsNull("零部件编号") Then
            DataTables("组装件详单及尺寸要求").DeleteFor("零部件编号='" & e.OldValue & "'")
        Else
            Dim ndr1 As DataRow = DataTables("组装件详单及尺寸要求").Find("零部件编号 = '" & e.DataRow("零部件编号") & "'")
            If ndr1 Is Nothing Then
                For i As Integer = 1 To e.DataRow("数量")
                    Dim ndr As DataRow = DataTables("组装件详单及尺寸要求").AddNew
                    ndr("零部件编号") = e.DataRow("零部件编号")
                    ndr("数量") = "1"
                Next
            End If
        End If
End Select

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/18 11:04:00 [显示全部帖子]

和这个没有关系。2楼用法测试有什么问题?具体上传实例看看

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/18 15:46:00 [显示全部帖子]

意思是数量等于3时,“组装件详单及尺寸要求”添加3行,如果数量改为4,“组装件详单及尺寸要求”在增加一行?如果数量改为2,“组装件详单及尺寸要求”要减去一行?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/18 16:43:00 [显示全部帖子]

零部件清单,datacolchanged。1楼的代码不用改

Select Case e.DataCol.name
    Case "数量"
        If e.DataRow.IsNull("数量") Then
            DataTables("组装件详单及尺寸要求").DeleteFor("零部件编号='" & e.DataRow("零部件编号") & "'")
        Else
            Dim dr As DataRow = DataTables("焊接部件清单").Find("零部件编号 = '" & e.DataRow("零部件编号") & "' and 焊缝编号 is not null")
            If dr IsNot Nothing Then
                Dim drs As List(Of DataRow) = DataTables("组装件详单及尺寸要求").Select("零部件编号 = '" & e.DataRow("零部件编号") & "'")
                If drs.Count > e.DataRow("数量") Then
                    Dim cnt = drs.Count - e.DataRow("数量")
                    For i As Integer = 1 To cnt
                        drs(drs.Count - i).delete
                    Next
                ElseIf drs.Count < e.DataRow("数量")
                    Dim cnt = e.DataRow("数量") - drs.Count
                    For i As Integer = 1 To cnt
                        Dim ndr As DataRow = DataTables("组装件详单及尺寸要求").AddNew
                        ndr("零部件编号") = e.DataRow("零部件编号")
                        ndr("生产令号") = e.DataRow("生产令号")
                        ndr("项目名称") = e.DataRow("项目名称")
                        ndr("零件名称") = e.DataRow("零件名称")
                        ndr("零件图号") = e.DataRow("零件图号")
                        ndr("数量") = "1"
                    Next
                End If
            End If
        End If
End Select
[此贴子已经被作者于2018/8/18 16:44:30编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110647 积分:563143 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/20 16:16:00 [显示全部帖子]

父表:datacolchanged

Select Case e.DataCol.name
    Case "焊缝编号"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("关联表子表名称")
        For Each dr As DataRow In drs
            dr("焊缝编号") = e.NewValue
        Next
End Select

 回到顶部