以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67791)

--  作者:95383
--  发布时间:2015/5/3 1:02:00
--  [求助]IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败
说明:
我有两个表:
“单位表” 字段:[单位编号]、[单位名称] 、[级码],(父表,以前两个字段与下面子表关联)
“员工表”字段:[单位编号]、[工作单位]
单位编号的格式:111222333444555,其中111为一级单位,222为二级单位,依此类推。

意图:
单位表通过GenerateTree建立目录树,实现了以下目录显示,但111与222级在子表中无记录,我需要在点击222时,将子表[单位编号]前6个字符为“111222”的均显示。
111
    +222
          +333

在treeview事件中的nodemouseclick加入如下代码:

Dim tj As String
Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的行
tj=DR("单位编号").substring(1,(e.Node.Level+1)*3)
Dim Filter As String = "[单位编号].substring(1," & (e.Node.Level+1)*3 & ")=\'" & tj & "\'"
DataTables("员工表").LoadFilter = Filter
DataTables("员工表").Load()

运行后点击"222"等任何节点,均出现如下错误提示:
 IErrorInfo.GetDescription 因 E_FAIL(0x80004005) 而失败

--  作者:95383
--  发布时间:2015/5/3 10:20:00
--  

解决了。似乎是substring函数的问题。

修改如下:

Dim tj As String
Dim dr As DataRow = e.Node.DataRow \'获取生成此节点的行
tj=DR("单位编号").substring(0,(e.Node.Level+1)*3)
Dim Filter As String = "[单位编号] like \'" & tj & "%\'"
DataTables("员工表").LoadFilter = Filter
DataTables("员工表").Load()