超难问题求解。

showfray 2005-03-31 10:51:11
超难问题:
如何用asp列出SQLSERVER表设计时字段对应的描述的值?(字段设计时,下面的状态栏有第一行为描述,如何读取这个描述的值出来?)

是这样应用到这个的:因为字段设计都是用英文设计的,做提出数据时,需要把所有字段名列出来给用户进行多选,但用户看不明白英文,而程序当中有很多表,而且有时候需要变动字段名,如果在列出字段名时使用case语句替成中文名时,会很多工作量,而且日后维护不好办。所以把中文名写在描述里。

或者大家有其它方法也可以。
...全文
219 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
showfray 2005-04-20
  • 打赏
  • 举报
回复
可否用程序读出来呀?

解决后另给200分。不食言
showfray 2005-04-20
  • 打赏
  • 举报
回复
顶呀。
xiaoyuehen 2005-04-16
  • 打赏
  • 举报
回复
这个我不清楚了~~~~~~~
showfray 2005-04-16
  • 打赏
  • 举报
回复
再请问如何获得操作系统表的权限?

请详细指点。
showfray 2005-04-15
  • 打赏
  • 举报
回复
同志们呀,问题还没有解决呀。恳求大家帮我想想办法呀。

为什么一用程序写SQL语句或在SQL SERVER表里查询(非SQL查询分析器)里就不行呀?

showfray 2005-04-15
  • 打赏
  • 举报
回复
再请问如何获得操作系统表的权限?

请详细指点。
xiaoyuehen 2005-04-15
  • 打赏
  • 举报
回复
syscolumns 是系统表,用ASP写的话,你必须要有操作系统表的权限。
showfray 2005-04-11
  • 打赏
  • 举报
回复
对着gongzi表名点击右键,打开所有记录,点击快捷图标SQL,输入SQL命令窗口里填写以上代码是不行的,并且用asp写以上代码输出也是binary。
xiaoyuehen 2005-04-11
  • 打赏
  • 举报
回复
前提是要在查询分析器里才可以。如果在表的SQL窗口里运行,是会显示binary的。如何是好?

不清楚你的意思, 什么是 表的SQL窗口?
showfray 2005-04-11
  • 打赏
  • 举报
回复
SELECT ISNULL(g.[value], '') AS 字段说明
FROM syscolumns a LEFT OUTER JOIN
systypes b ON a.xusertype = b.xusertype INNER JOIN
sysobjects d ON a.id = d.id AND d.xtype = 'U' AND
d.name <> 'dtproperties' LEFT OUTER JOIN
syscomments e ON a.cdefault = e.id LEFT OUTER JOIN
sysproperties g ON a.id = g.id AND a.colid = g.smallid LEFT OUTER JOIN
sysproperties f ON d.id = f.id AND f.smallid = 0
WHERE (d.name = 'gongzi')
ORDER BY a.id, a.colorder

这样就可以列出gongzi表的描述内容,但前提是要在查询分析器里才可以。如果在表的SQL窗口里运行,是会显示binary的。如何是好?

另外,我会尽量结贴。
xiaoyuehen 2005-04-03
  • 打赏
  • 举报
回复
打开查询分析器, 复制下面语句, 执行.
另建议: 尽量结贴, 如果没有你想要的答案, 或丝毫没有, 别灰心, 多顶几下.不结贴只会使你的信誉值越来越少.

PRINT CONVERT(VARCHAR(30), GETDATE(), 21)
-- ======================================================

--列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息

--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中

-- ======================================================

SELECT

(case when a.colorder = 1 then d.name else '' end) 表名
, a.colorder 字段序号
, a.name 字段名
, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识
, (case when
(
SELECT count(*)
FROM sysobjects
WHERE
(
name in

(
SELECT name
FROM sysindexes
WHERE
(id = a.id)
AND (
indid in
(
SELECT indid
FROM sysindexkeys
WHERE
(id = a.id)
AND
(
colid in

(
SELECT colid
FROM syscolumns
WHERE (id = a.id) AND (name = a.name)
)
)
)
)
)
)
AND (xtype = 'PK')
) > 0 then '√' else '' end) 主键

, b.name 类型

, a.length 占用字节数

, COLUMNPROPERTY(a.id, a.name, 'PRECISION') as 长度

, isnull(COLUMNPROPERTY(a.id, a.name,'Scale'), 0) as 小数位数

, (case when a.isnullable = 1 then '√'else '' end) 允许空

, isnull(e.text,'') 默认值

, cast(isnull(g.[value],'1') as varchar(100)) AS 字段说明

FROM syscolumns a

left join systypes b

on a.xtype = b.xusertype

inner join sysobjects d

on a.id = d.id and d.xtype = 'U' and d.name <> 'dtproperties'

left join syscomments e

on a.cdefault=e.id

left join sysproperties g

on a.id = g.id AND a.colid = g.smallid

order by a.id,a.colorder

PRINT CONVERT(VARCHAR(30), GETDATE(), 21)
o1x1h1 2005-04-02
  • 打赏
  • 举报
回复
试试

SELECT
字段说明=isnull(g.[value],'')
FROM syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sysproperties g on a.id=g.id and a.colid=g.smallid
left join sysproperties f on d.id=f.id and f.smallid=0
where d.name='YourTableName'
order by a.id,a.colorder
showfray 2005-04-02
  • 打赏
  • 举报
回复
试过了,就是显示binary,这是为什么呢?尽管同样是在SQLSERVER里运行(一个是普通SQL运行器,一个查询分析器)结果不同。为什么呢?
baikaishui_0825 2005-04-02
  • 打赏
  • 举报
回复
to showfray(Twins)
当然你不能一点不改的拿过去用
试一下 o1x1h1(用户中文昵称) 的代码
daknis 2005-04-02
  • 打赏
  • 举报
回复
太难了,关注一下
showfray 2005-04-01
  • 打赏
  • 举报
回复
顶。
showfray 2005-03-31
  • 打赏
  • 举报
回复
你的意思是说字段说明是存放在系统表sysproperties里面吗?
但它里面是空的。

可否再详细点?copy code to run 提示有错。
baikaishui_0825 2005-03-31
  • 打赏
  • 举报
回复
看看这个,应该对你有用
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) then '√' else '' end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case when a.isnullable=1 then '√'else '' end,
默认值=isnull(e.text,''),
字段说明=isnull(g.[value],'')
FROM syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sysproperties g on a.id=g.id and a.colid=g.smallid
left join sysproperties f on d.id=f.id and f.smallid=0
--where d.name='table_name' --如果要查询特定table,加上这句
order by a.id,a.colorder
showfray 2005-03-31
  • 打赏
  • 举报
回复
在查询器是运行成功,但如果在表打开后点击“sql”图标处运行,显示的结果全是binary。
怪不得在asp处运行不成功。但如何运用在程序上显示呀。这才是最关键呀!
showfray 2005-03-31
  • 打赏
  • 举报
回复
但为何在asp中会提示“Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another”出错?
加载更多回复(6)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧