PowerDesigner运行自定义VBS脚本,复制Name到Comment
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerDesigner运行自定义VBS脚本,复制Name到Comment相关的知识,希望对你有一定的参考价值。
参考技术A PowerDesigner支持自定义一些命令与操作,
通过编写VBS(Visual Basic Script)脚本,
可以扩展出更多的功能。
下面开发一个自定义的VBS脚本,
实现复制Name到Comment的功能,
即表的名称复制到注释中,
字段的名称复制到注释中,
这样在设计完表之后,
就不用一个一个复制名称到注释中了。
菜单:
Tools -> Execute Commands -> Edit/Run Script
快捷键:
Ctrl+Shift+X
打开运行脚本的界面
然后选择需要执行的VBS脚本,
点击Run即可运行:
可以使用PowerDesigner内置的编辑器,
也可以使用Notepad++编辑器,
新建名称为CDM_Name2Comment.vbs的文件:
脚本运行后,
可以发现表和字段的Comment和Name一样了:
注意要打开一个概念数据模型(CDM),
该脚本会操作当前模型下的所有表和字段。
上面脚本实现复制Name到Comment的功能,
如果要实现复制Comment到Name的功能,
修改脚本以下关键语句:
修改为:
上面脚本只支持操作概念数据模型CDM,
如果要支持操作物理数据模型PDM,
修改脚本以下关键语句:
修改为:
在PowerDesigner安装目录下的VB Scripts目录,
预置了很多VBS脚本,
可以直接拿来使用,
也可以作为开发自定义脚本的参考:
在运行脚本页面,
可以打开两个帮助文档:
上面的 ? 点击后,
打开元数据模型帮助文档:
Sybase PowerDesigner Metamodel Objects help.
下面的 Help 点击后,
打开PowerDesigner自带的帮助文档,
并且跳转到VBS脚本相关章节:
PowerDesigner中常用的脚本
PowerDesigner为表字段添加Comment注释,让name等于Comment
powerdesigner 概念模型(CDM)中Code下划线后首字母大写
(1)打开powerDesigner概念模型文件(cdm)点击工具选择edit/Run Script 进入。
(2)将vbs脚本文件粘贴点击run运行
(3)powerdesigner 概念模型(CDM)中Code下划线后首字母大写 脚本
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl ‘当前model
‘获取当前活动model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdCDM.cls_Model) Then ‘如果是处理pdm,这里换成PdPDM.cls_Model
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl
End If
Private sub ProcessFolder(folder)
Dim item ‘要处理的对象
‘先处理每个实体或类的Name和Code,相当于每张表的表名
for each item in folder.Entities
if not item.isShortcut then
Dim ecode
ecode = item.code
Dim i
i=2
‘Do While i < 3
Do While i < len(ecode)
If mid(ecode,i,1)=ucase(mid(ecode,i,1)) and mid(ecode,i-1,1)=lcase(mid(ecode,i-1,1)) and mid(ecode,i-1,1)<>"_" and mid(ecode,i,1)<>"_" Then ‘连续大写字母不用加_
ecode = left(ecode,i-1) + "_" + mid(ecode,i)
i =i+ 1
End If
i =i+ 1
Loop
‘item.code=ecode
‘item.name=ecode
dim col
‘处理当前实体下的每个属性,相当于每张表的字段
for each col in item.Attributes
Dim acode
acode = col.code
Dim a
Dim b
a = split(acode, "_")
b = ubound(a)
for i = 0 to b
Dim c
if i<>0 then
c=c+ucase(mid(a(i),1,1))+right(a(i),len(a(i))-1)
‘MsgBox right(a(i),len(a(i))-1)
‘MsgBox ucase(mid(a(i),1,1))+right(a(i),len(a(i)-1))
else
c=c+a(i)
‘MsgBox a(i)
end if
next
‘MsgBox c
col.code=c
c=""
‘col.name=c
next
end if
‘再处理每个folder下的关系的名称
dim rel
for each rel in folder.relationships
if not rel.isshortcut then
rel.name =rel.code
end if
next
next
‘递归遍历子文件夹
Dim f ‘子文件夹
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
以上是关于PowerDesigner运行自定义VBS脚本,复制Name到Comment的主要内容,如果未能解决你的问题,请参考以下文章
powerdesigner 概念模型(CDM)中Code下划线后首字母大写
powerdesigner 概念模型(CDM)中Code下划线后首字母大写