PowerDesigner常用命令
在Tools=>Execute Commands下的Edit/Run Scripts,或者通过Ctrl+Shift+X就可以运行脚本。如图:

1.将所有的表名和列名都修改为大写
'*****************************************************************************
'文件:powerdesigner.ucase.VBs
'版本:1.0
'功能:遍历物理模型中的所有表,将表名、表代码、字段名、字段代码全部由小写改成大写;
' 并将序列的名和代码由小写改成大写。
'用法:打开物理模型,运行本脚本(Ctrl+Shift+X)
'备注:
'*****************************************************************************
dim model 'current model
set model = ActiveModel
If (model Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not model.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
Else
ProcessTables model
ProcessSequences model
End If
'*****************************************************************************
'函数:ProcessSequences
'功能:递归遍历所有的序列
'*****************************************************************************
sub ProcessSequences(folder)
'处理模型中的序列:小写改大写
dim sequence
for each sequence in folder.sequences
sequence.name = UCase(sequence.name)
sequence.code = UCase(sequence.code)
next
end sub
'*****************************************************************************
'函数:ProcessTables
'功能:递归遍历所有的表
'*****************************************************************************
sub ProcessTables(folder)
'处理模型中的表
dim table
for each table in folder.tables
if not table.IsShortCut then
ProcessTable table
end if
next
'对子目录进行递归
dim subFolder
for each subFolder in folder.Packages
ProcessTables subFolder
next
end sub
'*****************************************************************************
'函数:ProcessTable
'功能:遍历指定table的所有字段,将字段名由小写改成大写,
' 字段代码由小写改成大写
' 表名由小写改成大写
'*****************************************************************************
sub ProcessTable(table)
dim col
for each col in table.Columns
'将字段名由小写改成大写
col.code = UCase(col.code)
col.name = UCase(col.name)
next
table.name = UCase(table.name)
table.code = UCase(table.code)
end sub
2.将所有表和字段名称赋值到注释
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch Dim mdl ' the current model ' get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl
End If ' This routine copy name into comment for each table, each column and each view
' of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
tab.comment = tab.name
Dim col ' running column
for each col in tab.columns
col.comment= col.name
next
end if
next Dim view 'running view
for each view in folder.Views
if not view.isShortcut then
view.comment = view.name
end if
next ' go into the sub-packages
Dim f ' running folder
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
3.将所有表和字段名称赋值到注释,如果注释不为空,就让注释=名称+空格+注释
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch Dim mdl ' the current model ' get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl
End If ' This routine copy name into comment for each table, each column and each view
' of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
tab.comment = tab.name
Dim col ' running column
for each col in tab.columns
if (col.comment =null) Then
col.comment= col.name
else
col.comment= col.name + " " + col.comment
end if
next
end if
next Dim view 'running view
for each view in folder.Views
if not view.isShortcut then
view.comment = view.name
end if
next ' go into the sub-packages
Dim f ' running folder
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
4.将所有表导出到Excel
Option Explicit
Dim rowsNum
rowsNum =
'-----------------------------------------------------------------------------
' Main function
'-----------------------------------------------------------------------------
' Get the current active model
Dim Model
Set Model = ActiveModel
If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
MsgBox "The current model is not an PDM model."
Else
' Get the tables collection
'创建EXCEL APP Dim beginrow
Dim EXCEL, BOOK, SHEET
Set EXCEL = CreateObject("Excel.Application")
EXCEL.Visible = True
Set BOOK = EXCEL.Workbooks.Add(-) '新建工作簿 BOOK.Sheets().Name = "数据库表结构"
Set SHEET = EXCEL.workbooks().sheets("数据库表结构") ShowProperties Model, SHEET
EXCEL.visible = true
'设置列宽和自动换行
SHEET.Columns().ColumnWidth =
SHEET.Columns().ColumnWidth =
SHEET.Columns().ColumnWidth = SHEET.Columns().WrapText =true
SHEET.Columns().WrapText =true
SHEET.Columns().WrapText =true End If '-----------------------------------------------------------------------------
' Show properties of tables
'-----------------------------------------------------------------------------
Sub ShowProperties(mdl, sheet)
' Show tables of the current model/package
rowsNum=
beginrow = rowsNum+
' For each table
output "begin"
Dim tab
For Each tab In mdl.tables
ShowTable tab,sheet
Next
if mdl.tables.count > then
sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
end if
output "end"
End Sub '-----------------------------------------------------------------------------
' 数据表查询
'-----------------------------------------------------------------------------
Sub ShowTable(tab, sheet)
If IsObject(tab) Then
Dim rangFlag
sheet.cells(, ) = "序号"
sheet.cells(, ) = "表名"
sheet.cells(, ) = "实体名"
'设置边框
sheet.Range(sheet.cells(, ),sheet.cells(, )).Borders.LineStyle = ""
'设置背景颜色
sheet.Range(sheet.cells(, ),sheet.cells(, )).Interior.ColorIndex = "" rowsNum = rowsNum +
sheet.cells(rowsNum+, ) = rowsNum
sheet.cells(rowsNum+, ) = tab.code
sheet.cells(rowsNum+, ) = tab.name
'设置边框
sheet.Range(sheet.cells(rowsNum+,),sheet.cells(rowsNum+,)).Borders.LineStyle = "" '增加Sheet
BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)
BOOK.Sheets(rowsNum+).Name = tab.code Dim shtn
Set shtn = EXCEL.workbooks().sheets(tab.code)
'设置列宽和换行
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth = shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true '设置列标题
shtn.cells(, ) = "字段中文名"
shtn.cells(, ) = "字段名"
shtn.cells(, ) = "字段类型"
shtn.cells(, ) = tab.code
shtn.cells(, ) = tab.Name
'设置边框
shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = ""
shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = ""
'设置背景颜色
shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = ""
shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = "" Dim col ' running column
Dim colsNum
Dim rNum
colsNum =
rNum =
for each col in tab.columns
rNum = rNum +
colsNum = colsNum + shtn.cells(rNum+, ) = col.name
shtn.cells(rNum+, ) = col.code
shtn.cells(rNum+, ) = col.datatype
next
shtn.Range(shtn.cells(rNum-colsNum+,),shtn.cells(rNum+,)).Borders.LineStyle = ""
rNum = rNum + Output "FullDescription: " + tab.Name End If
End Sub
5.将所有表导出到Excel(包含注释)
Option Explicit
Dim rowsNum
rowsNum =
'-----------------------------------------------------------------------------
' Main function
'-----------------------------------------------------------------------------
' Get the current active model
Dim Model
Set Model = ActiveModel
If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
MsgBox "The current model is not an PDM model."
Else
' Get the tables collection
'创建EXCEL APP Dim beginrow
Dim EXCEL, BOOK, SHEET
Set EXCEL = CreateObject("Excel.Application")
EXCEL.Visible = True
Set BOOK = EXCEL.Workbooks.Add(-) '新建工作簿 BOOK.Sheets().Name = "数据库表结构"
Set SHEET = EXCEL.workbooks().sheets("数据库表结构") ShowProperties Model, SHEET
EXCEL.visible = true
'设置列宽和自动换行
SHEET.Columns().ColumnWidth =
SHEET.Columns().ColumnWidth =
SHEET.Columns().ColumnWidth = SHEET.Columns().WrapText =true
SHEET.Columns().WrapText =true
SHEET.Columns().WrapText =true End If '-----------------------------------------------------------------------------
' Show properties of tables
'-----------------------------------------------------------------------------
Sub ShowProperties(mdl, sheet)
' Show tables of the current model/package
rowsNum=
beginrow = rowsNum+
' For each table
output "begin"
Dim tab
For Each tab In mdl.tables
ShowTable tab,sheet
Next
if mdl.tables.count > then
sheet.Range("A" & beginrow + & ":A" & rowsNum).Rows.Group
end if
output "end"
End Sub '-----------------------------------------------------------------------------
' 数据表查询
'-----------------------------------------------------------------------------
Sub ShowTable(tab, sheet)
If IsObject(tab) Then
Dim rangFlag
sheet.cells(, ) = "序号"
sheet.cells(, ) = "表名"
sheet.cells(, ) = "实体名"
'设置边框
sheet.Range(sheet.cells(, ),sheet.cells(, )).Borders.LineStyle = ""
'设置背景颜色
sheet.Range(sheet.cells(, ),sheet.cells(, )).Interior.ColorIndex = "" rowsNum = rowsNum +
sheet.cells(rowsNum+, ) = rowsNum
sheet.cells(rowsNum+, ) = tab.code
sheet.cells(rowsNum+, ) = tab.name
'设置边框
sheet.Range(sheet.cells(rowsNum+,),sheet.cells(rowsNum+,)).Borders.LineStyle = "" '增加Sheet
BOOK.Sheets.Add , BOOK.Sheets(BOOK.Sheets.count)
BOOK.Sheets(rowsNum+).Name = tab.code Dim shtn
Set shtn = EXCEL.workbooks().sheets(tab.code)
'设置列宽和换行
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth =
shtn.Columns().ColumnWidth = shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true
shtn.Columns().WrapText =true '设置列标题
shtn.cells(, ) = "字段中文名"
shtn.cells(, ) = "字段名"
shtn.cells(, ) = "字段类型"
shtn.cells(, ) = "注释"
shtn.cells(, ) = tab.code+"("+tab.Name+")" '设置边框
shtn.Range(shtn.cells(, ),shtn.cells(, )).Borders.LineStyle = "" '设置背景颜色
shtn.Range(shtn.cells(, ),shtn.cells(, )).Interior.ColorIndex = "" '合并单元格
shtn.Range(shtn.cells(, ), shtn.cells(, )).Merge
'居中对齐
shtn.cells(, ).HorizontalAlignment = - Dim col ' running column
Dim colsNum
Dim rNum
colsNum =
rNum =
for each col in tab.columns
rNum = rNum +
colsNum = colsNum + shtn.cells(rNum+, ) = col.name
shtn.cells(rNum+, ) = col.code
shtn.cells(rNum+, ) = col.datatype
shtn.cells(rNum+, ) = col.comment
next
shtn.Range(shtn.cells(rNum-colsNum+,),shtn.cells(rNum+,)).Borders.LineStyle = ""
rNum = rNum + Output "FullDescription: " + tab.Name End If
End Sub
PowerDesigner常用命令的更多相关文章
- Linux 常用命令(持续补充)
常用命令: command &:将进程放在后台执行 ctrl + z:暂停当前进程 并放入后台 jobs:查看当前后台任务 bg( %id):将任务转为后台执行 fg( %id):将任务调回前 ...
- LVM基本介绍与常用命令
一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适 ...
- Linux学习笔记(一):常用命令
经过统计Linux中能够识别的命令超过3000种,当然常用的命令就远远没有这么多了,按照我的习惯,我把已经学过的Linux常用命令做了以下几个方面的分割: 1.文件处理命令 2.文件搜索命令 3.帮助 ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【原】npm 常用命令详解
今年上半年在学习gulp的使用,对npm的掌握是必不可少的,经常到npm官网查询文档让我感到不爽,还不如整理了一些常用的命令到自己博客上,于是根据自己的理解简单翻译过来,终于有点输出,想学习npm这块 ...
- npm常用命令
npm常用命令 环境:win7 npm 是什么 NPM(node package manager),通常称为node包管理器.顾名思义,它的主要功能就是管理node包,包括:安装.卸载.更新.查看.搜 ...
- Git 常用命令
一.初始環境配置 git config --global user.name "John Doe"git config --global user.email johndoe@ex ...
- linux iptables常用命令之配置生产环境iptables及优化
在了解iptables的详细原理之前,我们先来看下如何使用iptables,以终为始,有可能会让你对iptables了解更深 所以接下来我们以配置一个生产环境下的iptables为例来讲讲它的常用命令 ...
- Linux常用命令(一)
Linux常用命令 1. pwd查看当前路径(Print Working Directory) [root@CentOS ~]# pwd/root 2. cd .. 返回上一级 .. 表示上一级 ...
随机推荐
- css点击li里面的标签 点击当前标签字体加粗 之前的恢复原始状态
<div class="functionalNavigation"> <ul class="ulp"> <icon class=& ...
- Python程序打包工具PyInstaller
Python程序执行 py文件:直接提供源码,需要使用者自行安装Python并且安装依赖的各种库 pyc文件:pyc文件是Python解释器可以识别的二进制码,是跨平台的,需要使用者安装相应版本的Py ...
- aiops常用算法
1.数据聚合/关联技术 概念聚类算法AOI分类算法K近邻/贝叶斯分类器/logistic回归(LR)/支持向量机(SVM)/随机森林(RF) 2.数据异常点检测技术独立森林算法 3.故障诊断和分析策略 ...
- nginx配置跨域之后前后端调用,二次请求
公司项目从前后端不分离转到前后端分离 首先遇到的问题就是前后端分离的时候跨域的问题 但是当跨域成功配置并且能访问成功的时候发现 每次客户端的请求都会发送两次 第一次是OPTIONS的请求,然后才是正常 ...
- sql prompt工具
SQL Prompt是一款拥有SQL智能提示功能和格式化Sql代码插件.可用于的SQL Server和VS. SQL Prompt能根据数据库的对象名称,语法和用户编写的代码片段自动进行检索,智能的为 ...
- BZOJ 4864: [BeiJing 2017 Wc]神秘物质 (块状链表/平衡树 )
这就是一道数据结构裸题啊,最大极差就是区间最大值减最小值,最小极差就是相邻两个数差的最小值.然后平衡树splay/treap或者块状链表维护就行了. 第一次自己写块状链表,蛮好写,就是长..然后就BZ ...
- HDU 6154 - CaoHaha's staff | 2017 中国大学生程序设计竞赛 - 网络选拔赛
/* HDU 6154 - CaoHaha's staff [ 构造,贪心 ] | 2017 中国大学生程序设计竞赛 - 网络选拔赛 题意: 整点图,每条线只能连每个方格的边或者对角线 问面积大于n的 ...
- Oracle - 特殊字符问题
Oracle更新表字段或者查询表字段时内容中含有特殊字符&的解决方法 现象 解决方式 1. 字符串拼接 UPDATE T_MENU_INFO SET menu_code='/ABeptjk/g ...
- [Number]js中数字存储(0.1 + 0.2 !== 0.3)
和其他编程语言(如 C 和 Java)不同,JavaScript 不区分整数值和浮点数值, 所有数字在 JavaScript 中均用浮点数值表示,遵循IEEE754标准,在进行数字运算的时候要特别注意 ...
- 参数类型 (@Service层) interface 常用参数类型举例
public AdvMessage getMessage(String message, String type); public List<Map<String,Object>&g ...