以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关联表增加行问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=117537)

--  作者:13775189031
--  发布时间:2018/4/14 9:55:00
--  关联表增加行问题

Select Case e.DataCol.Name
Case
"订单编号"
If e.DataRow.IsNull("订单编号") = False Then \'如果已经输入订单编号
If e.DataRow.GetChildRows("订单明细").Count = 0 Then \'而且无订单明细
Dim dr As DataRow = DataTables("订单明细").AddNew()
dr(
"订单编号") = e.DataRow("订单编号")
End
If
End If
End
Select



这个参考编码是一行父表生成一行子表,能不能根据筛选来生产子表,比如根据某列(逻辑列)判断,选中的则自动生成子表行,未选中的则不生成!


--  作者:有点蓝
--  发布时间:2018/4/14 10:01:00
--  
Select Case e.DataCol.Name
    Case "订单编号"
        If e.DataRow.IsNull("订单编号") = False Then \'如果已经输入订单编号
            If e.DataRow("某逻辑列") = True Then 
                Dim dr As DataRow = DataTables("订单明细").AddNew()
                dr("订单编号") = e.DataRow("订单编号")
            End If
        End If
End Select

--  作者:13775189031
--  发布时间:2018/4/14 10:12:00
--  
显示:
编译错误:“dr”在封闭块中隐藏变量

错误代码Dim dr As DataRow = DataTables("订单明细").AddNew()

--  作者:有点蓝
--  发布时间:2018/4/14 10:16:00
--  
事件其它地方有定义了dr这个名称了,不能重复,改为dr1等
--  作者:13775189031
--  发布时间:2018/4/14 11:07:00
--  
好了!谢谢!
--  作者:13775189031
--  发布时间:2018/4/14 13:31:00
--  
Dim ary1() As String = {"下料", "机加工", "无损探伤", "镀层", "组合焊接", "热处理", "试装配", "酸洗", "装配", "水压试验", "喷砂油漆", "打包装箱"}
Dim ary2() As String = {"下料", "机加工", "无损探伤", "镀层", "组合焊接", "热处理", "试装配", "酸洗", "装配", "水压试验", "喷砂油漆", "打包装箱"}
If e.DataCol.Name = "工序流程" Then
    Dim str As String = e.DataRow("工序流程")
    \'MessageBox.Show("你选择的是" & str & "项.")
    Dim ary3 = str.split("|")
    \'MessageBox.Show("你选择的是" & ary3(0) & "项.")
    For i As Integer = 0 To ary1.length-1
        Dim idx As Integer = array.indexof(ary3, ary1(i))
        If idx >= 0 Then
            Tables("零部件清单").current(ary2(i)) = True
        Else
            Tables("零部件清单").current(ary2(i)) = False
        End If
    Next
Else \'MessageBox.Show("你选择的是" & "项.")
End If

Select Case e.DataCol.Name
    Case "零部件编号"
        If e.DataRow.IsNull("零部件编号") = False Then \'如果已经输入订单编号
            If e.DataRow("下料") = True Then 
                Dim dr1 As DataRow = DataTables("下料清单").AddNew()
                dr1("零部件编号") = e.DataRow("零部件编号")
            End If
        End If

逻辑列“下料”=true是根据第一段代码生成的
现在“下料清单”自动增加行没反应


--  作者:13775189031
--  发布时间:2018/4/14 14:09:00
--  
发现问题了!必须先点击“下料”,再填写行里的其他信息,才可以在“下料清单”中生成,
如果先填其他信息,再点“下料”就不行了!
怎样才能反过来实现,就是先填信息,再点下料也可以?

--  作者:有点蓝
--  发布时间:2018/4/14 15:00:00
--  
Select Case e.DataCol.Name
    Case "零部件编号","下料"
        If e.DataRow.IsNull("零部件编号") = False Then \'如果已经输入订单编号
            If e.DataRow("下料") = True Then 
                Dim dr1 As DataRow = DataTables("下料清单").AddNew()
                dr1("零部件编号") = e.DataRow("零部件编号")
            End If
        End If

--  作者:13775189031
--  发布时间:2018/5/28 13:16:00
--  
之前的问题,“下料”逻辑列选中后,在下料清单中自动生成一行,但若修改“下料”逻辑列后,及不勾选,下料清单中怎样实现自动删除行?
--  作者:有点甜
--  发布时间:2018/5/28 14:28:00
--  
Select Case e.DataCol.Name
    Case "零部件编号","下料"
        If e.DataRow.IsNull("零部件编号") = False Then \'如果已经输入订单编号
            If e.DataRow("下料") = True Then 
                Dim dr1 As DataRow = DataTables("下料清单").AddNew()
                dr1("零部件编号") = e.DataRow("零部件编号")
            Else
                DataTables("下料清单").DeleteFor("零部件编号=\'" & e.DataRow("零部件编号") & "\'")
            End If
        End If