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的主要内容,如果未能解决你的问题,请参考以下文章

vbs脚本权限怎样解决

zabbix自定义脚本执行时间过长,怎样设置监控项呢?

powerdesigner 概念模型(CDM)中Code下划线后首字母大写

powerdesigner 概念模型(CDM)中Code下划线后首字母大写

powerdesigner 概念模型(CDM)中Code大写转小写

powerdesigner 概念模型(CDM)中Code大写转小写