在Delphi中根据SQL Server表名和表描述生成SQL语句
直接上代码吧:
2 var
3 aDataSet:TDataSet;
4 s:String;
5 aField:TField;
6 aFieldList,aFieldDescriptionList:TList<string>;
7 function GetFieldDescription(sTable,sField:string):String;
8 var
9 sSQL:String;
10 begin
11 sSQL:='select sys.extended_properties.value from sys.extended_properties '
12 +' left join syscolumns on (syscolumns.colid=sys.extended_properties.minor_id'
13 +' and syscolumns.id=sys.extended_properties.major_id)'
14 +' where syscolumns.name='''+sField+''' and syscolumns.id=object_id('''+sTable+''')';
17 //如果没有描述直接取字段名称
18 if Result='' then
19 Result:=sField;
20 end;
21 begin
22 try
23 vSQL:='select * from '+sTableName+' where 1=2';
24 aDataSet:=aAccessDB.GetNewDataSet(vSQL);
25 aFieldList:=TList<string>.Create;
26 aFieldDescriptionList:=TList<string>.Create;
27 for aField in aDataSet.Fields do
28 begin
29 aFieldList.Add(aField.FieldName);
30 aFieldDescriptionList.Add(GetFieldDescription(sTableName,aField.FieldName));
31 end;
32 Result:='select ';
33 for s in aFieldList do
34 Result:=Result+s+' as '+aFieldDescriptionList[aFieldList.IndexOf(s)]+',';
35 Result:=Copy(Result,1,Length(Result)-1)+' from '+sTableName;
36 finally
37 aDataSet.Free;
38 aFieldList.Free;
39 aFieldDescriptionList.Free;
40 end;
41 end;
上面代码在Delphi 2010、SQL Server 2008下调试通过,在SQL Server 2000下注意要使用:
Select o.name AS tableName, c.name AS columnName, p.[value] AS Description
FROM sysproperties p INNER JOIN
sysobjects o ON o.id = p.id INNER JOIN
syscolumns c ON p.id = c.id AND p.smallid = c.colid
Where (p.name = 'MS_Description') AND (c.name = 'tablename') AND (o.name = 'fieldname')
orDER BY o.name
即2000和2005之后系统表名称改变了
转载于:https://www.cnblogs.com/GarfieldTom/archive/2012/08/01/2617924.html
在Delphi中根据SQL Server表名和表描述生成SQL语句相关推荐
- 数据库SQL Server 如何将数据库表名等前缀转换成dbo
数据库SQL Server 如何将数据库表名前缀,框架名前缀,视图前缀,存储过程前缀转换成dbo exec sp_msforeachtable 'sp_changeobjectowner ''?'', ...
- sql server如何直接在表中修改数据
之前做项目一直用的是mysql和oracle,最近做的项目中客户使用的是sql server,之前不了解sql server,今天成功安装并且导入了数据库脚本.在做具体操作的时候,有些数据只需很小的修 ...
- c#中导入excel至sql server时出现“外部表不是预期格式”
导入excel至sql server时出现"外部表不是预期格式"的排查: 首先要注意有两个字符串,一个用于初始化SqlConnection,一个用于初始化OleDbConnecti ...
- sql server登录名、服务器角色、数据库用户、数据库角色、架构区别联系
原创链接:https://www.cnblogs.com/lxf1117/p/6762315.html sql server登录名.服务器角色.数据库用户.数据库角色.架构区别联系 1.一个数据库用户 ...
- 查看SQL Server被锁的表以及如何解锁
锁定数据库的一个表的区别 SELECT * FROM table WITH (HOLDLOCK) 其他事务可以读取表,但不能更新删除 SELECT * FROM table WITH (TABLOCK ...
- SQL Server登录名,用户和安全标识符(SID)
抽象 (Abstract) Logins and Users are basic security concepts in SQL Server. They are often, and incorr ...
- 用友U8的SQL SERVER 数据库结构说明表
用友U8的SQL SERVER 数据库结构说明表 在帐套中的两个表,一个表是RPT_GRPDEF,存放帐套中重要的表名及相关说明:另一个是RPT_ITMDEF,存放的是主要表中的相关字段说 ...
- SQL Server 2005 术语词汇表
术语 定义 ActiveX 数据对象 (ActiveX Data Objects) 一种易于使用的应用程序编程接口 (API),用于封装 OLE DB 以在诸如 Visual Basic.Visual ...
- SQL Server 数据库之单表查询
单表查询 1. 概述 2. 单表查询命令 2. 无条件查询与条件查询 2.1 无条件查询 2.2 条件查询 3. 聚集函数 4. 分组查询 5. 排序查询 1. 概述 单表查询是只对一个数据表进行查询 ...
最新文章
- webpack优化相关操作
- Python-类的学习
- Sea Battle
- 阿里云可以外链mysql_案例详细说明阿里云下设置MySQL远程连接步骤
- 使用ABAP SAT工具分析SAP OData service实现明细
- random_state的值如何选_同样是防晒衣,单价几十和几百块有什么不同?选防晒衣认准这4点...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp预处理超集
- 第一次马拉松_成为数据科学家是一场马拉松而不是短跑
- ListView排序并隔色显示
- Qt工作笔记-使用hiredis连接及查询Redis
- Android 应用开发(40)---TextView(文本框)详解
- clion远程调试linux内核,Clion + 树莓派/Ubuntu 远程调试
- Django 模板标签 换行导致异常的处理 linebreaksbr
- laravel知识点: 了解应用环境
- RedHat 救援模式下排错
- Atitit 代理与分销系统(1) 子代理 充值总额功能设计概览 sum() groubpy subagt
- 用python处理蛋白质互作信息
- 关于boost和loki的智能指针
- 如何在比赛和项目中培养一个好的探索性分析(EDA)思维 —— 翻译自kaggle一位有趣的分享者
- Part3-4-1 搭建自己的SSR
热门文章
- 编程软件python t-Python 3.7 64位下载
- python贴吧发帖脚本-分享用Python写的99收抢单小脚本,仅供学习
- python语言必背代码-好用到哭!请记住这20段Python代码
- python中文件读写位置的作用-Python中文件的读写
- python爬虫数据分析可以做什么-python爬虫爬取的数据可以做什么
- python管理系统-员工管理系统源程序(python实现)
- python一般用什么编译器-Python常用的编辑器有哪些?老男孩Python
- 零基础python入门书籍-浅谈零基础自学python入门书
- python导入excel数据-Python数据处理之导入导出excel数据
- python与excel的关系-使用python对excle和json互相转换的示例