以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]求助代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=78765)

--  作者:huhu
--  发布时间:2015/12/16 16:34:00
--  [求助]求助代码
Dim drs As List(of DataRow) = DataTables("商务发货明细单").Select("发货单号 = \'" & vars("fhdh") & "\'")
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        If dr("产品态") = "通用态" Then
            Dim drss As List(of DataRow) = DataTables("库位数量统计").Select("产品态 = \'通用态\' And 物料编码 = \'" & dr("物料编码") & "\'")


后面怎么写?
希望实现把满足DataTables("库位数量统计").Select("产品态 = \'通用态\' And 物料编码 = \'" & dr("物料编码") & "\'")的行filter出来。不会在新增表来实现把。

--  作者:huhu
--  发布时间:2015/12/16 17:40:00
--  
DataTables("物理位置分布表").DataRows.Clear
Dim drs As List(of DataRow) = DataTables("商务发货明细单").Select("发货单号 = \'" & vars("fhdh") & "\'")
If drs.Count > 0 Then
    For Each dr As DataRow In drs
        If dr("产品态") = "通用态" Then
            Dim drss As List(of DataRow) = DataTables("库位数量统计").Select("产品态 = \'通用态\' And 物料编码 = \'" & dr("物料编码") & "\'")
            If drss.Count > 0 Then                
                For Each  ddr As DataRow In drss                    
                    Dim lr As DataRow = DataTables("物理位置分布表").AddNew()
                    lr("物料编码") = ddr("物料编码")
                    lr("库位编码") = ddr("库位编码")
                    lr("数量") = ddr("数量")
                    lr("型号") = ddr("产品型号")
                    lr("产品态") = ddr("产品态")                    
                Next
            End If
        ElseIf dr("产品态") = "特殊态" Then
            Dim drss As List(of DataRow) = DataTables("库位数量统计").Select("产品态 = \'特殊态\' and 产品型号 = \'" & dr("型号") & "\' And 物料编码 = \'" & dr("物料编码") & "\'")
            If drss.Count > 0 Then                
                For Each  ddr As DataRow In drss                    
                    Dim lr As DataRow = DataTables("物理位置分布表").AddNew()
                    lr("物料编码") = ddr("物料编码")
                    lr("库位编码") = ddr("库位编码")
                    lr("数量") = ddr("数量")
                    lr("型号") = ddr("产品型号")
                    lr("产品态") = ddr("产品态")                    
                Next
            End If
        End If
    Next
End If

还是通过增加表来实现的,有没有更简单的办法做?代码简洁点的。

--  作者:Hyphen
--  发布时间:2015/12/17 8:48:00
--  

1.参考fill:http://www.foxtable.com/help/topics/1929.htm
类似:
DataTables("物理位置分布表").Fill( "Sel ect b.* fr om {商务发货明细单} a,{库位数量统计}  b wh ere a.物料编码=b.物料编码 an d b.产品态 = \'通用态\' ",true)


类似:
Dim q As new QueryBuilder
q.TableName = "物理位置分布表"
q.SelectString = "Se lect b.* fro m {商务发货明细单} a,{库位数量统计} b wh ere a.物料编码=b.物料编码 an d b.产品态 = \'通用态\' "
q.Build
MainTable = Tables("物理位置分布表")