Foxtable(狐表)用户栏目专家坐堂 → 多表生成目录树


  共有3602人关注过本帖树形打印复制链接

主题:多表生成目录树

帅哥哟,离线,有人找我吗?
新航程小何
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
多表生成目录树  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/24 10:24:00 [只看该作者]

方法1.

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


方法2

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


搞不定请上文件例子

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By:2015/4/24 10:49:00 [只看该作者]

关键问题在于“文字列”在另一张表上

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/24 10:50:00 [只看该作者]

呵呵,不是问题. 2  3楼都看一下

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/24 10:52:00 [只看该作者]

如果这个表是用查询表或select语句生成的,你可考虑将文字列包括进来,这样就方便很多

 回到顶部
帅哥哟,离线,有人找我吗?
新航程小何
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:629 积分:4786 威望:0 精华:0 注册:2014/9/17 11:34:00
  发帖心情 Post By: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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/24 11:12:00 [只看该作者]

看2楼.

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2015/4/24 11:18:00 [只看该作者]

先看2楼自己琢磨一下。搞不定就用具体的例子说话,做个简单例子发上来,然后说明问题,我们帮你搞定。
你发这样一段自动编码的代码没有意义。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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编辑过]

 回到顶部
总数 14 1 2 下一页