表字段的中文属性

        我们在使用数据库时,往往忘记或者不知道某些字段所代表的意思,这时候我们会在字段说明中标注。

        那么当我们需要使用字段的中文说明时,应该怎么做呢?下面的Sql语句将可以解决这个问题:

 

 

SELECT
        d.name as 表名,
        a.colorder 字段序号,
        a.name 字段名,     
        b.name 类型,
        a.length 占用字节数,
        g.[value] 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 sys.extended_properties g
on a.id=g.major_id AND a.colid = g.minor_id
order by a.id,a.colorder
 
        应用:偶尔,一个窗体上需要对很多表进行查询,如果我们每一个需要查询和关联的表,都单独放一个Grid,那将是一个比较可怕的操作,如果只放一个Grid,那么列头的显示,又是一个问题,更何况,有时候,我们可能根本不知道对哪些表进行查询。这时候,只要为每一个字段标注中文属性,就可以如下操作:

 

          ASql := 'select * from V_GetFieldsCnName where 表名=' + QuotedStr('表名');

         
          If GetDataset(ASql, ADQ_Temp) > 0 Then    //打开数据集,返回查询出的数据条数
            Begin
              ADQ_Temp.First;
              While Not ADQ_Temp.Eof Do
                Begin                     

                      cxGrid2DBTableView1.CreateColumn;
                      cxGrid2DBTableView1.Columns[Aint].DataBinding.FieldName := ADQ_Temp.FieldByName('字段名').AsString;
                      cxGrid2DBTableView1.Columns[Aint].Width := 100;    

                      If Trim(ADQ_Temp.FieldByName('字段说明').AsString) <> '' Then
                        cxGrid2DBTableView1.Columns[Aint].Caption := Trim(ADQ_Temp.FieldByName('字段说明').AsString)

                      else     //如果控制显示,那么把if语句放到程序块外,当字段说明为空时,则不创建 Column               

                        cxGrid2DBTableView1.Columns[Aint].Caption := Trim(ADQ_Temp.FieldByName('字段名').AsString); 
                      Aint := Aint + 1;
                      ADQ_Temp.Next;
                End;

            End;
 

        V_GetFieldsCnName 是一个视图,生成语句是:

 

CREATE VIEW [dbo].[V_GetFieldsCnName]
AS
SELECT     TOP (100) PERCENT d.name AS 表名, a.colorder AS 字段序号, a.name AS 字段名, b.name AS 类型, a.length AS 占用字节数, g.value AS 字段说明
FROM         sys.syscolumns AS a LEFT OUTER JOIN
                      sys.systypes AS b ON a.xtype = b.xusertype INNER JOIN
                      sys.sysobjects AS d ON a.id = d.id AND d.xtype = 'U' AND d.name <> 'dtproperties' LEFT OUTER JOIN
                      sys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOIN
                      sys.extended_properties AS g ON a.id = g.major_id AND a.colid = g.minor_id
ORDER BY a.id, 字段序号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值