以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助获取后台数据表列名  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=99369)

--  作者:wei0769
--  发布时间:2017/4/18 10:47:00
--  求助获取后台数据表列名

用动态加载数据表,设置加载表的可见列及可编辑列。在设置时没有加载数据表,怎样可以取得该表的列名?

 

 


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

--  作者:有点蓝
--  发布时间:2017/4/18 11:03:00
--  
必须加载才能获取,参考下面代码加载表结构

Dim cmd As new SQLCommand
Dim
 dt As DataTable 
cmd
.CommandText = "select * From {A} where 1=2"
dt = cmd.ExecuteReader(
)


--  作者:wei0769
--  发布时间:2017/4/18 11:25:00
--  
如果有100个表,不是要写100次?
--  作者:有点蓝
--  发布时间:2017/4/18 12:03:00
--  
基本就是这样
--  作者:有点蓝
--  发布时间:2017/4/18 12:04:00
--  
如果是Sqlserver就比较好办,可以一次性取出来

------------sqlserver
SELECT 
表名= convert(varchar(50), d.name ),
字段名= convert(varchar(100), a.name),
类型= CONVERT(varchar(50),b.name) + \'(\' + CONVERT(varchar(10),a.length/2) + \')\',
字段说明=convert(varchar(50), isnull(g.[value],\'\')),
必填 = case a.isnullable when 1 then \'否\' else \'是\' end
FROM dbo.syscolumns a
left join dbo.systypes b on a.xusertype=b.xusertype
inner join dbo.sysobjects d on a.id=d.id and d.xtype=\'U\' and d.name<>\'dtproperties\'
left join dbo.syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
--where d.name =\'WeChatSeeingRules\'
where a.name not in( \'_Identify\',\'_Locked\')
order by d.name

--  作者:wei0769
--  发布时间:2017/4/18 12:44:00
--  

谢谢,我现在改了下方法,只有管理员才需要加载所有的空表,用户不需要增加


--  作者:有点蓝
--  发布时间:2017/4/18 14:03:00
--  
本应如此。只需处理用户有权限使用的表即可
--  作者:wgqcool
--  发布时间:2021/3/30 2:01:00
--  回复:(有点蓝)如果是Sqlserver就比较好办,可以一次...
这段代码看了好久看不明白,蓝老师能不能帮忙转成狐表的写法。谢谢~
--  作者:有点蓝
--  发布时间:2021/3/30 8:28:00
--  
以下是引用wgqcool在2021/3/30 2:01:00的发言:
这段代码看了好久看不明白,蓝老师能不能帮忙转成狐表的写法。谢谢~

执行sql参考:http://www.foxtable.com/webhelp/topics/0696.htm