PowerDesigner中name、comment的同步及code大小写转换
使用PowerDesigner设计表结构时候,为避免重复将name字段手工复制到commnet,可以先不复制name字段到comment,等设计完成后。使用脚本批量将name字段复制到comment中,再进行调整comment中内容。
PDM设计完成后,操作:tools > execute commands > edit/run scripts 按需求粘贴一下内容运行即可,就实现了批量的name到comment的同步操作。可以将脚本保存为VBS,选择脚本调用执行。

相关脚本如下:
1.name字段同步到comment
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
2.comment字段同步到name
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 Private sub ProcessFolder(folder) On Error Resume Next Dim Tab 'running table for each Tab in folder.tables if not tab.isShortcut then tab.name = tab.comment Dim col ' running column for each col in tab.columns if col.comment="" then else 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.name = view.comment 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.code字段 转大写
1 Option Explicit 2 ValidationMode = True 3 InteractiveMode = im_Batch 4 5 Dim mdl ' the current model 6 7 ' get the current active model 8 Set mdl = ActiveModel 9 If (mdl Is Nothing) Then 10 MsgBox "There is no current Model" 11 ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then 12 MsgBox "The current model is not an Physical Data model." 13 Else 14 ProcessFolder mdl 15 End If 16 17 ' This routine copy name into code for each table, each column and each view 18 ' of the current folder 19 Private sub ProcessFolder(folder) 20 Dim Tab 'running table 21 for each Tab in folder.tables 22 ' if not tab.isShortcut then 23 ' tab.code = tab.name 24 Dim col ' running column 25 for each col in tab.columns 26 col.code= UCase(col.code) 27 next 28 'end if 29 next 30 31 ' Dim view 'running view 32 ' for each view in folder.Views 33 ' if not view.isShortcut then 34 ' view.code = view.name 35 ' end if 36 ' next 37 38 ' go into the sub-packages 39 Dim f ' running folder 40 For Each f In folder.Packages 41 if not f.IsShortcut then 42 ProcessFolder f 43 end if 44 Next 45 end sub
4.code字段转小写
1 Option Explicit 2 ValidationMode = True 3 InteractiveMode = im_Batch 4 5 Dim mdl ' the current model 6 7 ' get the current active model 8 Set mdl = ActiveModel 9 If (mdl Is Nothing) Then 10 MsgBox "There is no current Model" 11 ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then 12 MsgBox "The current model is not an Physical Data model." 13 Else 14 ProcessFolder mdl 15 End If 16 17 ' This routine copy name into code for each table, each column and each view 18 ' of the current folder 19 Private sub ProcessFolder(folder) 20 Dim Tab 'running table 21 for each Tab in folder.tables 22 ' if not tab.isShortcut then 23 ' tab.code = tab.name 24 Dim col ' running column 25 for each col in tab.columns 26 col.code= LCase(col.code) '转小写 27 next 28 'end if 29 next 30 31 ' Dim view 'running view 32 ' for each view in folder.Views 33 ' if not view.isShortcut then 34 ' view.code = view.name 35 ' end if 36 ' next 37 38 ' go into the sub-packages 39 Dim f ' running folder 40 For Each f In folder.Packages 41 if not f.IsShortcut then 42 ProcessFolder f 43 end if 44 Next 45 end sub

浙公网安备 33010602011771号