以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]帮忙看看这个思路能不能实现?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=75412)

--  作者:liuxianjie1980
--  发布时间:2015/10/8 10:05:00
--  [求助]帮忙看看这个思路能不能实现?


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

 

如图。

双击左边的treeview的该节点,找到含有本品的字段的合同明细,然后再上表中根据找到得合同明细的合同编号,筛选出这个合同。

 

试了很多次,好像不行啊

[此贴子已经被作者于2015/10/8 10:07:27编辑过]

--  作者:liuxianjie1980
--  发布时间:2015/10/8 10:07:00
--  
说明一下:左边的treeview是根据合同明细表生成的。
--  作者:liuxianjie1980
--  发布时间:2015/10/8 10:13:00
--  

自己写的代码如下:

 

Dim Filter As String
Dim nd As WinForm.TreeNode = e.Node
Select Case e.Node.Level
    Case 0
        If nd.Text="显示全部"
            Tables("采购合同表").ApplyFilter = False
        Else
            Return
        End If
    Case 1
        If nd.ParentNode.Text="按产品名称" Then
            Filter = "产品名称 = \'" & nd.Text & "\'"
            Dim drs As List(Of DataRow)= DataTables("采购明细表").Select(Filter)
            For Each dr As DataRow In drs
                If dr("合同编号") IsNot Nothing Then
                    Dim filter1 As String ="合同编号=\'" & dr("合同编号") & "\'"
                    Tables("采购合同表").Filter = filter1
                    DataTables("采购合同表").AppendLoad(filter1, False)
                End If
            Next
        Else
            Return
        End If
    Case 2
        If nd.ParentNode.ParentNode.Text="按产品名称" Then
            Filter = "产品名称 = \'" & nd.ParentNode.Text & "\' And 产品规格 = \'" & nd.Text & "\'"
            Dim drs As List(Of DataRow)= DataTables("采购明细表").Select(Filter)
            For Each dr As DataRow In drs
                If dr("合同编号") IsNot Nothing Then
                    Dim filter2 As String ="合同编号=\'" & dr("合同编号") & "\'"
                    Tables("采购合同表").Filter = filter2
                    DataTables("采购合同表").AppendLoad(filter2, False)
                End If
            Next
        End If
End Select

 

红色部分想表达的就是:根据已经找到得合同明细的合同编号,挑选出符合合同编号的合同。

 

一是:这个代码根本实现不了;

二是:这个代码执行起来有错误,分别提示:列“_Identify”被约束为是唯一的。值“1”已存在。

                                                      列“_Identify”被约束为是唯一的。值“2”已存在。

                                                      列“_Identify”被约束为是唯一的。值“3”已存在。


--  作者:大红袍
--  发布时间:2015/10/8 10:16:00
--  

 

[此贴子已经被作者于2015/10/8 10:15:55编辑过]

--  作者:大红袍
--  发布时间:2015/10/8 10:16:00
--  

呃,功能肯定可以做。

 

上表的筛选类似 Tables("订单").Filter = "订单编号 in (\'" & DataTables("订单明细").GetComboListString("订单编号", "产品名称 = \'123\'").replace("|", "\',\'") & "\')"


--  作者:liuxianjie1980
--  发布时间:2015/10/8 10:17:00
--  
红袍兄:你的回复看不懂啊,图片点击可在新窗口打开查看
--  作者:大红袍
--  发布时间:2015/10/8 10:18:00
--  

AppendLoad这样用啊

 

http://www.foxtable.com/help/topics/2914.htm

 


--  作者:liuxianjie1980
--  发布时间:2015/10/8 10:20:00
--  
我写的这段代码思路有没有问题?
--  作者:大红袍
--  发布时间:2015/10/8 10:34:00
--  

直接写

 

Tables("采购合同表").Filter = "合同编号 in (\'" & DataTables("采购明细表").GetComboListString("合同编号", "产品名称 = \'" & nd.Text & "\'").replace("|", "\',\'") & "\')"


--  作者:liuxianjie1980
--  发布时间:2015/10/8 10:39:00
--  

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