以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  多表生成目录树  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67438)

--  作者:新航程小何
--  发布时间:2015/4/24 10:19:00
--  多表生成目录树
各位老师,请问我想实现以下功能,怎么办?
1、我想根据截图1的表生成目录,代码如下
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree("物料档案","种类|名称|规格型号|单位")
2、但是由于种类这一列是代码,不是文字,所以生成目录是如截图3
3、种类的代码是来自截图2的表,所以我想让生成的目录的“种类”显示文字,不显示代码

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

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

图片点击可在新窗口打开查看此主题相关图片如下:截图1.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2015/4/24 10:19:55编辑过]

--  作者:Bin
--  发布时间:2015/4/24 10:24:00
--  
方法1.

遍历所有节点,利用FIND找到对应行,更改节点的Text值


方法2

两个表利用查询表生成器,合成为一个表,再生成目录树


搞不定请上文件例子

--  作者:狐狸爸爸
--  发布时间:2015/4/24 10:28:00
--  
你要显示文字,就用文字列生成目录树,不要用编号列,反正最后可以获取任何列的内容:
http://www.foxtable.com/help/topics/2690.htm

一定要用编号生成,然后显示文字的话:

生成目录树的代码
for each nd as winform.treenode in trv.nodex
    nd.text = nd.datarow("文字列")
next

--  作者:新航程小何
--  发布时间:2015/4/24 10:49:00
--  
关键问题在于“文字列”在另一张表上
--  作者:Bin
--  发布时间:2015/4/24 10:50:00
--  
呵呵,不是问题. 2  3楼都看一下
--  作者:狐狸爸爸
--  发布时间:2015/4/24 10:52:00
--  
如果这个表是用查询表或select语句生成的,你可考虑将文字列包括进来,这样就方便很多
--  作者:新航程小何
--  发布时间:2015/4/24 11:12:00
--  
bin老师,我的能力现在不能达到那个层次,其实这个问题, 是我自己搞复杂了,因为的物料编码是根据物料种类编号自动生成的,比如 bzw -001,所以表就变成了截图1的表,生成目录树也就遇到现在的问题了

Select e.DataCol.Name
    Case
"类别"
       
If e.DataRow.IsNull("类别") Then
            e.
DataRow("编号") = Nothing
        Else
            Dim
lb As String = e.DataRow("类别")
            If
e.DataRow("编号").StartsWith(lb) = False \'如果单据编号前缀不符
               
Dim max As String
               
Dim idx As Integer

                max = e.DataTable.Compute("Max(编号)","类别 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
               
If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(
2,3)) + 1 \'获得最大编号的后三位顺序号,并加1
               
Else
                    idx =
1 \'否则顺序号等于1
               
End If
                e.
DataRow("编号") = lb & Format(idx,"000")
            End
If
        End
If
End
Select



--  作者:Bin
--  发布时间:2015/4/24 11:12:00
--  
看2楼.
--  作者:狐狸爸爸
--  发布时间:2015/4/24 11:18:00
--  
先看2楼自己琢磨一下。搞不定就用具体的例子说话,做个简单例子发上来,然后说明问题,我们帮你搞定。
你发这样一段自动编码的代码没有意义。

--  作者:狐狸爸爸
--  发布时间:2015/4/24 11:30:00
--  
代码基本上就是:

自动生成目录树
for each nd as winform.treenode in trv.nodex
    dim dr as datarow = DataTables("xxx").Find("编号 = \'" & nd.text & "\'")
    if dr is nothing then
         nd.text = dr("文字列")
    end if
next
[此贴子已经被作者于2015/4/24 11:30:50编辑过]