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
标签:Dim,Code,概念模型,mid,ecode,首字母,code,item,MsgBox 来源: https://www.cnblogs.com/yixingzhou/p/12981314.html