以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于目录树授权  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=68862)

--  作者:huangfanzi
--  发布时间:2015/5/26 14:57:00
--  [求助]关于目录树授权
授权窗口的AfterLoad
Dim trv2 As WinForm.TreeView = e.F orm.Controls("TreeView2")
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "Select Group,name F rom {Users}"
dt = cmd.ExecuteReader()
trv2.BuildTree(dt,"Group|Name")
trv2.ExpandAll()

上面代码是抄来的,本来没有问题,但以上代码是基于教程中的自定义用户即“一、在文件“用户.mdb”新建一个名为“Users”的表,包括Name、Group、Password三列,分别用于保存用户名、用户分组和密码。”
我现在没用这个功能,但用了教程中的“外部数据源与用户管理”,因此在SQL数据库中USER表的字段是 Name,Type,Config,
也就是说Group的信息是存在了Config中,内容举例:Group 生产部 PassWord EmIR5WBjrFGjO7SHZdBWwQ== Type 2 Role 部长
上面的代码如何改能让目录树中正常显示Group,还是说没办法必须用自定义用户的方式,谢谢!


--  作者:大红袍
--  发布时间:2015/5/26 15:00:00
--  

特殊符号,要特殊处理。或则改名

 

md.CommandText = "Select [Group],name F rom {Users}"


--  作者:huangfanzi
--  发布时间:2015/5/26 15:11:00
--  
不是这个问题,是字段名的问题。
--  作者:大红袍
--  发布时间:2015/5/26 15:13:00
--  

 如果要截取,请可以用sql语句处理,下面的函数是用access数据库的,Sqlserver数据,请用对应的函数替换。

 

select Mid(config,7,InStr(Mid(config,7,len(config)-6),\' \')) as [group] f rom {表A}


--  作者:huangfanzi
--  发布时间:2015/5/26 15:34:00
--  
SQL基本不会,所以不知如何改。
--  作者:大红袍
--  发布时间:2015/5/26 15:41:00
--  
 select SUBSTRING(config,7,CHARINDEX(\' \',SUBSTRING(config,7,len(config)-6))) as [group] f rom {表A}
--  作者:huangfanzi
--  发布时间:2015/5/26 15:44:00
--  
大红袍 非常感谢你的解答 现在的问题是你给我的代码加在我上面的代码中哪个位置。

Dim trv2 As WinForm.TreeView = e.F orm.Controls("TreeView2")
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "ShcsErpSql"
cmd.CommandText = "Select Group,name F rom {Users}"
dt = cmd.ExecuteReader()
trv2.BuildTree(dt,"Group|Name")
trv2.ExpandAll()

--  作者:大红袍
--  发布时间:2015/5/26 15:47:00
--  
Dim trv2 As WinForm.TreeView = e.F orm.Controls("TreeView2")
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "ShcsErpSql"
cmd.CommandText = "select SUBSTRING(config,7,CHARINDEX(\' \',SUBSTRING(config,7,len(config)-6))) as [group], name F rom {Users}"
dt = cmd.ExecuteReader()
trv2.BuildTree(dt,"Group|Name")
trv2.ExpandAll()

--  作者:huangfanzi
--  发布时间:2015/5/26 15:51:00
--  
.NET Framework 版本:2.0.50727.6421
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
参数数据类型 ntext 对于 len 函数的参数 1 无效。

在建表时config的类型是ntext 即备注型
[此贴子已经被作者于2015/5/26 15:52:08编辑过]

--  作者:大红袍
--  发布时间:2015/5/26 16:04:00
--  
 那就不要弄成备注型,改成字符型,给足够的长度即可。