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


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

主题:自动生成行

美女呀,在线,快来找我吧!
13775189031
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:830 积分:5763 威望:0 精华:0 注册:2017/12/19 14:46:00
自动生成行  发帖心情 Post By:2018/8/18 10:21:00 [只看该作者]

表A

Select Case e.DataCol.name
    Case "焊缝编号"
        If e.DataRow.IsNull("焊缝编号") Then
            DataTables("组装件详单及尺寸要求").DeleteFor("零部件编号='" & e.DataRow("零部件编号") & "'")
        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

 

若表A 中数量改变,表“组装件详单及尺寸要求”中自动生成的行数也要随之改变,该怎么改?


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


加好友 发短信
等级:超级版主 帖子:110646 积分:563138 威望: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

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:830 积分:5763 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/8/18 10:43:00 [只看该作者]

是不是因为表A 中“数量”是表达式列,所以不行,要怎么改?


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


加好友 发短信
等级:超级版主 帖子:110646 积分:563138 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/18 11:04:00 [只看该作者]

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

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:830 积分:5763 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/8/18 15:23:00 [只看该作者]

在“焊接部件清单”中只要列“焊缝编号”不为空,则在表“组装件详单及尺寸要求”中自动增加行

当“数量”列有变化时,“组装件详单及尺寸要求”中的行数不能随之改变

 

 

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


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


加好友 发短信
等级:超级版主 帖子:110646 积分:563138 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/8/18 15:46:00 [只看该作者]

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

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:830 积分:5763 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/8/18 16:23:00 [只看该作者]

是的


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


加好友 发短信
等级:超级版主 帖子:110646 积分:563138 威望: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编辑过]

 回到顶部
美女呀,在线,快来找我吧!
13775189031
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:830 积分:5763 威望:0 精华:0 注册:2017/12/19 14:46:00
  发帖心情 Post By:2018/8/20 15:48:00 [只看该作者]

Select Case e.DataCol.name
    Case "焊接方法"
        If e.DataRow.IsNull("焊接方法") Then
            DataTables("焊接明细表").DeleteFor("零部件编号 = '" & e.DataRow("零部件编号") & "'")
        Else
            Dim ndr2 As DataRow = DataTables("焊接明细表").Find("零部件编号 = '" & e.DataRow("零部件编号") & "' And 焊缝编号 = '" & e.DataRow("焊缝编号") & "' And 工艺卡号 = '" & e.DataRow("工艺卡号") & "'And 焊接方法 = '" & e.DataRow("焊接方法") & "'")
            If ndr2 Is Nothing Then
                For i As Integer = 1 To e.DataRow("数量")
                    Dim ndr As DataRow = DataTables("焊接明细表").AddNew
                    ndr("零部件编号") = e.DataRow("零部件编号")
                    ndr("焊缝编号") = e.DataRow("焊缝编号")
                    ndr("工艺卡号") = e.DataRow("工艺卡号")
                    ndr("焊接方法") = e.DataRow("焊接方法")
                    ndr("数量") = "1"
                Next
            End If
        End If
End Select

 

这一类代码中参数如“焊缝编号”或“工艺卡号”等,若主表中参数修改,如何能让关联表中生成行中的参数也自动修改?



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


加好友 发短信
等级:超级版主 帖子:110646 积分:563138 威望: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

 回到顶部