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 .. 返回上一级 .. 表示上一级 ...
随机推荐
- alibaba 用360的evpp -》个别项目
- 可能是最全面的 Python 字符串拼接总结
来源: 枫恋寒 链接: https://segmentfault.com/a/119000001.png"font-size: 12px;"> 在 Python 中字符串连接 ...
- PHP 获取上传文件的实际类型
方案一: mime_content_type ( string $filename ) : string (PHP 4 >= 4.3.0, PHP 5, PHP 7) mime_content_ ...
- 二、vue基础--计算属性和监听器
1.一些操作需要计算后才能得到的用计算属性,需要放在computed属性中代码如下: <div id='app'> <div> <label>宽:</labe ...
- 算法设计与分析 - 李春葆 - 第二版 - html v2
1 .1 第 1 章─概论 1.1.1 练习题 1 . 下列关于算法的说法中正确的有( ). Ⅰ Ⅱ Ⅲ Ⅳ .求解某一类问题的算法是唯一的 .算法必须在有限步操作之后停止 .算法 ...
- Luogu P4270 [USACO18FEB]Cow Gymnasts (打表找规律)
题意 传送门 题解 首先我们不竖着看奶牛而是横着看.从下往上把奶牛叫做处于第0,1,2...0,1,2...0,1,2...层.那么相当于第000层的不动,第111层的平移一格,第222层的平移222 ...
- The Preliminary Contest for ICPC Asia Xuzhou 2019 【 题目:so easy】{并查集维护一个数的下一个没有被删掉的数} 补题ING
题意:给[1,n],n个数,有两种操作: 1 x,删去x2 x,查询还未被删去的数中大于等于x的最小的数是多少. input: output: 做法:按照并查集的方法压缩路径 代码: #include ...
- js数据类型自动转化规律
1. 原始数据遇运算符 1. +运算符 1) 如果算子两侧都是字符串,返回拼接结果: 2) 如果算子两侧不全是字符串,则根据实际情况: 如果需要字符串,就调用String(); true + &quo ...
- STS工具:mybayis连接oracle数据库
1.pom.xml文件中的依赖 刚添加依赖的时候会报错,原因是jar包下不下来. 2.我的jdk是1.6,所以需要升级jdk版本到1.8 执行mvn -v命令,可以看到maven的版本号 DOS窗口执 ...
- java线程安全与不安全的理解
存在成员变量(全局变量)的类用于多线程时是不安全的,不安全体现在这个成员变量可能发生非原子性的操作,而变量定义在方法内也就是局部变量是线程安全的. 想想在使用struts1时,不推荐创建成员变量,因为 ...