在查询数据表后,如何获取该表的字段在数据库中的描述?

wf2091139 2005-09-07 09:52:38
比如在数据库中创建一个表(如:text1)时,添加了一个字段比如 ID ,在它的 列属性中 “描述”部分 写上“序号”(还有其他属性比如 “默认值”、“标识”、“公式”等等。)

我如何用 ADO 或 BDE 查询该表 并能得到他各字段的描述?
或者说查询结果集的字段名直接引用它的“描述”?
...全文
126 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wf2091139 2005-09-09
这个想法是可以实现,但不知道有什么更高效率的办法?就我所会的,只能用几个系统表通过来实现
(语句肯定很复杂)。还是暂时放弃这想法。
回复
wf2091139 2005-09-08
实际情况是这样的,数据库中有个表(暂时叫 table),他的字段名全是英文
单是这些字段中有些特殊字段都是有中文说明的。

所以我希望在dbgrid 中显示时,字段名取他的中文说明。
(如果该dbgrid 显示的表或表的字段是固定的话,那倒是可以通过设置dbgrid 的列属性来解决,
但现在的情况是表不固定,且字段也不固定。)

现在想想,感觉有点“入不敷出”。
回复
kwokwinglau 2005-09-08
SELECT d.name, a.name AS Expr1, ISNULL(b.[value], '') AS 字段说明
FROM syscolumns a LEFT OUTER JOIN
sysproperties b ON a.id = b.id AND a.colid = b.smallid INNER JOIN
sysobjects d ON a.id = d.id AND d.xtype = 'u' AND d.name <> 'dtproperties'
order by d.name,a.name
回复
kwokwinglau 2005-09-08
select a.name,isnull(b.[value],'') as 字段说明
from syscolumns a left join sysproperties b on a.id=b.id and a.colid=b.smallid
order by a.name
回复
wf2091139 2005-09-08
UP
回复
kwokwinglau 2005-09-08
所以我希望在dbgrid 中显示时,字段名取他的中文说明。
-----------------------------------------------------
你的想法是可以实现滴。
回复
suigui 2005-09-08
写代码判断转换就是了,如下:不知能否解决你的问题
AnsiString __fastcall TDM::FieldDisplay( TField *Filed )
{
static struct{
char *name;
char *label;
int width;
}TFieldName[] = {
{"cSerial", "编号", 8},
{"cFileName", "文件", 30},
{"nFileSize", "文件大小", 6},
{NULL, ""},
};
int id = 0;
AnsiString filedname = Filed->DisplayName;
while( TFieldName[id].name != NULL )
{
if ( strcmp( filedname.c_str(), TFieldName[id].name ) == 0 )
{
Filed->DisplayWidth = TFieldName[id].width;
return TFieldName[id].label;
}
else
{
id++;
}
}
return TFieldName[id].label;
}
//---------------------------------------------------------------------------
回复
wf2091139 2005-09-07
没人会么?????
回复
signed 2005-09-07
哈,学一下
回复
wf2091139 2005-09-07
郁闷!
回复
发动态
发帖子
数据库及相关技术
创建于2007-08-02

1156

社区成员

C++ Builder 数据库及相关技术
申请成为版主
社区公告
暂无公告