以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]sqltabler的关联子表增加行问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176705)

--  作者:Cloud
--  发布时间:2022/4/23 17:16:00
--  [求助]sqltabler的关联子表增加行问题

大师:我这个是sqltable的关联表,用组色ID做关联,上表有三行数据,当鼠标点击第一行在下面增加行的时候不会有问题,但当鼠标点击第二行在下面增加行的时候,下面增加行的组色ID应该是上表第二行的组色ID,但增加出来的行却是上表第一行的组色ID,下面附图及关联代码:
图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看
Dim d As Row = Tables("销售订单_颜色尺码").Current
If d IsNot Nothing Then
    Tables("销售订单_面辅信息").Filter = "订单款号 = \'" & d("订单款号") & "\'and 组色ID = \'" & d("组色ID") & "\'"
End If
If e.Table.Current IsNot Nothing Then
    Dim Filter As String = "订单款号 = \'" & e.Table.Current("订单款号") & "\'"
    If  DataTables("销售订单_面辅信息").Find(Filter) Is Nothing Then \'如果对应的订单明细没有加载过
        DataTables("销售订单_面辅信息").AppendLoad(Filter) \'则追载此订单的订单明细
    End If
End If

请大师指点

                        谢谢


--  作者:有点蓝
--  发布时间:2022/4/23 17:23:00
--  
怎么做的关联?上表是窗口的sqltable?
--  作者:Cloud
--  发布时间:2022/4/23 17:30:00
--  

窗口中的上下表都是SQLtablege


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

--  作者:有点蓝
--  发布时间:2022/4/23 17:38:00
--  
怎么做的关联?

--  作者:Cloud
--  发布时间:2022/4/24 12:48:00
--  
Dim d As Row = Tables("销售订单_颜色尺码").Current
If d IsNot Nothing Then
    Tables("销售订单_面辅信息").Filter = "订单款号 = \'" & d("订单款号") & "\'and 组色ID = \'" & d("组色ID") & "\'"
End If
If e.Table.Current IsNot Nothing Then
    Dim Filter As String = "订单款号 = \'" & e.Table.Current("订单款号") & "\'"
    If  DataTables("销售订单_面辅信息").Find(Filter) Is Nothing Then \'如果对应的订单明细没有加载过
        DataTables("销售订单_面辅信息").AppendLoad(Filter) \'则追载此订单的订单明细
    End If
End If

--  作者:有点蓝
--  发布时间:2022/4/24 13:32:00
--  
怎么增加行的?怎么给组色ID赋值的?
--  作者:Cloud
--  发布时间:2022/4/24 15:37:00
--  

用系统增加行代码增加行:

Tables("销售订单_面辅信息").AddNew()

用下面的代码在子表事件的DataColChanged给组色ID赋值:

If e.DataCol.Name = "订单款号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("组色ID") = Nothing
    Else
        Dim drx As DataRow
        drx = DataTables("销售订单_颜色尺码").Find("[订单款号] = \'" & e.NewValue & "\'")
        If drx IsNot Nothing
            e.DataRow("组色ID") = drx("组色ID")
        End If
    End If
End If


--  作者:有点蓝
--  发布时间:2022/4/24 15:45:00
--  
"销售订单_颜色尺码"一个[订单款号] 会对应多个"组色ID"的吧,上面代码只是把找到的第一个赋值给"销售订单_面辅信息"

如果取父表选中行的"组色ID",datacolchanged事件没有任何用处,只有副作用

直接在新增按钮处理即可
dim r as row = Tables("销售订单_面辅信息").AddNew()
r("组色ID") = Tables("销售订单_颜色尺码").current("组色ID")

--  作者:Cloud
--  发布时间:2022/4/24 16:00:00
--  
谢谢