Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共14 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

标题:目录树筛选

1楼
blackzhu 发表于:2011/8/30 11:00:00
我在窗口事件里设置这个代码,自动生成目录树:

Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree("管理表", "管理项目|客户编号|合同编号")

在目录树的单击按钮中放入此代码:


'Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
'Dim s As String = e.Sender.SelectedNode.Text
For Each t As Table In Tables
   If s= t.name Then
       e.Form.StopRedraw
        Dim sp As WinForm.SplitContainer
        sp = e.Form.CreateControl("SplitContainer3", ControlTypeEnum.SplitContainer)
        e.Form.Controls("SplitContainer2").Panel2.AddControl(sp)
        sp.Dock = Windows.Forms.DockStyle.Fill
        sp.BorderStyle=Windows.Forms.BorderStyle.Fixed3D
        sp.Orientation = System.Windows.Forms.Orientation.Horizontal
        e.Form.Controls("SplitContainer3").Panel2.Collapsed = True
        Dim tbl1 As WinForm.Table
        tbl1 = e.Form.CreateTable("Table1", s,False)
        e.Form.Controls("SplitContainer3").Panel1.AddControl(tbl1)
        tbl1.Dock = Windows.Forms.DockStyle.Fill
        Tables(s).Focus
                e.form.ResumeRedraw
    End If
Next
 

我在双击的节点:
Dim s As String = e.Sender.SelectedNode.Text
For Each t As Table In Tables
    If s= t.name Then
       Dim Value()As String
        Value = e.Node.FullPath.Split("\")
        Select Case e.Node.Level
            Case 0
                Tables(s).Filter ="[客户编号] = '" & Value(0) & "'"
            Case 1
                Tables(s).Filter ="[客户编号] = '" & Value(0) & "' And [合同编号] = '" & Value(1) & "'"
        End Select
    End If
Next

   这个筛选不起作用.我要跟着第一个节点筛选客户编号,根据第二个节点筛选合同编号,我把e.Node.FullPath.Split("\")改成 s.Split("\")也没有用.

  应该怎么修改这个筛选代码?
2楼
狐狸爸爸 发表于:2011/8/30 11:13:00
messagebox.show(tables(s).Filter)
3楼
blackzhu 发表于:2011/8/30 15:03:00
For Each dr As DataRow In DataTables("管理表").DataRows
    Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
    For Each nd As WinForm.TreeNode In trv.AllNodes
        If nd.Text.Contains(dr("管理项目")) Then
            trv.SelectedNode = nd
            Dim Value()As String
            Value = e.Node.FullPath.Split("\")
            Select Case e.Node.Level
                Case 1
                    Tables(Nd.Text).Filter ="[客户名称] = '" & Value(1) & "'"
                Case 2
                    Tables(Nd.Text).Filter ="[客户名称] = '" & Value(1) & "' And [合同编号] = '" & Value(2) & "'"
            End Select
        End If
    Next
Next


帮我看一下,我这段代码为什么是所有表都筛选,而不是当前表筛选.
4楼
blackzhu 发表于:2011/8/30 15:50:00
怎么没有回应的?
5楼
狐狸爸爸 发表于:2011/8/30 16:04:00

估计都和我一样,没有看懂你的代码,不过你的代码肯定不是筛选当前表,你的代码筛选了好多好多好多次:

 

 

For Each dr As DataRow In DataTables("管理表").DataRows

    For Each nd As WinForm.TreeNode In trv.AllNodes

       Tables(Nd.Text).Filter = “xxx”

   Next

Next

 

这样的代码,如果有100行,目录树有100个节点,最多就有删选了10000次,至少了筛选了100此,而且表名是nd.text,并不是当前表。

6楼
blackzhu 发表于:2011/8/30 16:34:00
那老大,Dim tr As WinForm.TreeView = e.Form.Controls("TreeView1")
tr.BuildTree("管理表", "管理项目|客户编号|合同编号")

 这个代码生成目录树

客户编号和合同编码全部按照"管理项目"列里面的表名来筛选,应该怎么写代码?
生成后就是
  表名
    客户编号
       合同编号

            表名是第一个节点,客户编号是第二个节点,合同编号是第三个节点
7楼
狐狸爸爸 发表于:2011/8/30 16:36:00

这里有现成的例子:

 

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

 

8楼
blackzhu 发表于:2011/8/30 16:50:00
老大我知道现成的例子,我的目录树是动态的,要根据动态生成的表名来筛选!

 Tables(Nd.Text).Filter ="[客户名称] = '" & Value(1) & "'"   就是表名跟着什么走的问题.
9楼
狐狸爸爸 发表于:2011/8/30 17:10:00

你的表名肯定不是保存在节点名称中吧?

 

我建议你用一个public全局变量来保存表名,你根据哪个表名生成的目录树,就将哪个表名保存在全局变量中。

这样只需:

 

Tables(变量名).Filter = .....

 

 

 

10楼
blackzhu 发表于:2011/8/30 17:26:00
纠结死了,我改思路了.
共14 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.