以文本方式查看主题
- 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编辑过]
|