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  
View Code

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
View Code

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
View Code

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
View Code

 

posted @ 2020-04-14 11:20  静水2020  阅读(1029)  评论(1)    收藏  举报