PowerDesigner中遍历物理模型中的所有表,检查表代码、字段代码
2015-07-01 17:19
260 查看
'***************************************************************************** '文件:CheckCode4SqlServer.vbs '版本:1.0 '功能:遍历物理模型中的所有表,检查表代码、字段代码 ' 是否包含空格、是否包含中文、是否为系统关键字、是否长度超过116 '用法:打开物理模型,运行本脚本(Ctrl+Shift+X) '备注: '***************************************************************************** dim model 'current model set model = ActiveModel If (model Is Nothing) Then MsgBox "没有选择模型,请选择一个模型并打开." ElseIf Not model.IsKindOf(PdPDM.cls_Model) Then MsgBox "当前选择的不是一个物理模型(PDM)." Else ProcessTables model End If '***************************************************************************** '过程:ProcessTables '功能:递归遍历所有的表 '***************************************************************************** sub ProcessTables(folder) '处理模型中的表 dim table for each table in folder.tables if not table.IsShortCut then on error resume next '检查表名中是否有特殊字符、是否为关键字 Check table.code, "" Dim col for each col in table.Columns '检查字段名中是否有特殊字符、是否为关键字 Check col.code, table.code next end if next '对子目录进行递归 dim subFolder for each subFolder in folder.Packages ProcessTables subFolder next end sub '***************************************************************************** '过程:Check '功能:检查表名 或 字段名 '***************************************************************************** sub Check(str, tableCode) dim outStr if len(tableCode) > 0 then outStr = "字段名 " & tableCode & "." else outStr = "表名 " end if '检查表明是否含有特殊字符 if InStr(str, " ") then outStr = outStr & str & " 包含空格" Output outStr end if '是否包含中文 if HasChinese(str) then outStr = outStr & str & " 包含中文" Output outStr end if '检测系统关键字 dim arr arr = array("ADD","EXTERNAL","PROCEDURE","ALL","FETCH","PUBLIC","ALTER","FILE","RAISERROR","AND","FILLFACTOR","READ","ANY","FOR","READTEXT","AS","FOREIGN","RECONFIGURE","ASC","FREETEXT","REFERENCES","AUTHORIZATION","FREETEXTTABLE","REPLICATION","BACKUP","RESTORE","BEGIN","FULL","RESTRICT","BETWEEN","FUNCTION","RETURN","BREAK","GOTO","REVERT","BROWSE","GRANT","REVOKE","BULK","GROUP","RIGHT","BY","HAVING","ROLLBACK","CASCADE","HOLDLOCK","ROWCOUNT","CASE","IDENTITY","ROWGUIDCOL","CHECK","IDENTITY_INSERT","RULE","CHECKPOINT","IDENTITYCOL","SAVE","CLOSE","IF","SCHEMA","CLUSTERED","IN","SECURITYAUDIT","COALESCE","INDEX","SELECT","COLLATE","INNER","SEMANTICKEYPHRASETABLE","COLUMN","INSERT","SEMANTICSIMILARITYDETAILSTABLE","COMMIT","INTERSECT","SEMANTICSIMILARITYTABLE","COMPUTE","INTO","SESSION_USER","CONSTRAINT","IS","SET","CONTAINS","JOIN","SETUSER","CONTAINSTABLE","KEY","SHUTDOWN","CONTINUE","KILL","SOME","CONVERT","LEFT","STATISTICS","CREATE","LIKE","SYSTEM_USER","CROSS","LINENO","TABLE","CURRENT","LOAD","TABLESAMPLE","CURRENT_DATE","MERGE","TEXTSIZE","CURRENT_TIME","NATIONAL","THEN","CURRENT_TIMESTAMP","NOCHECK","CURRENT_USER","NONCLUSTERED","TOP","CURSOR","NOT","TRAN","DATABASE","NULL","TRANSACTION","DBCC","NULLIF","TRIGGER","DEALLOCATE","OF","TRUNCATE","DECLARE","OFF","TRY_CONVERT","DEFAULT","OFFSETS","TSEQUAL","DELETE","ON","UNION","DENY","OPEN","UNIQUE","DESC","OPENDATASOURCE","UNPIVOT","DISK","OPENQUERY","UPDATE","DISTINCT","OPENROWSET","UPDATETEXT","DISTRIBUTED","OPENXML","USE","DOUBLE","OPTION","USER","DROP","OR","VALUES","DUMP","ORDER","VARYING","ELSE","OUTER","VIEW","END","OVER","WAITFOR","ERRLVL","PERCENT","WHEN","ESCAPE","PIVOT","WHERE","EXCEPT","PLAN","WHILE","EXEC","PRECISION","WITH","EXECUTE","PRIMARY","WITHIN GROUP","EXISTS","PRINT","WRITETEXT","EXIT","PROC") for each keyword in arr if UCase(str) = keyword then outStr = outStr & str & " 为系统关键字" Output outStr end if next '字符串长度是否超出限制 if Len(str) >= 116 then outStr = outStr & str & " 命名的长度不应超过116" Output outStr end if end sub '***************************************************************************** '函数:HasChinese '功能:是否包含中文 '***************************************************************************** function HasChinese(str) HasChinese = false dim i for i=1 to Len(str) if Asc(Mid(str,i,1)) < 0 then HasChinese = true exit for end if next end function
相关文章推荐
- c/c++模板的定义和实现分开的问题(一)
- c++ primer读书笔记-第六章 语句
- php时间转字符串
- Delphi XE调用第三方库Jni详细过程
- JAVA中的各种路径问题
- php JpGraph 安装配置 基础学习
- MySql的基本操作流程-SAE的MySQL-PHP
- Java基础:容器
- MQTT的学习研究(八)基于HTTP DELETE MQTT 订阅消息服务端使用
- Java新技术---线程学习之Callable与Future的应用
- matlab 中的 S-Function的用法(C语言)
- MQTT的学习研究(七)基于HTTP POST MQTT 发布消息服务端使用
- 从github上导入dubbo项目
- 登录织梦后台成功后又返回登录页面
- struts.xml的加载路径及配置问题
- java监听器示例
- Struts2+Spring+Hibernate搭建全解!
- java.util.concurrent并发包诸类概览
- java读取配置文件
- C#中构造函数的作用