PowerDesigner常用脚本

在工作中使用PowerDesigner进行物理建模的时候(pdm文件),经常需要将Name列写成中文,Code列写成英文字段,最后生成SQL脚本时不会自动生成表和字段的注释。此时 比较简单的处理方式是执行.vbs脚本。下面整理了两个常用的脚本。

T_USER.jpg

脚本使用方法

在PowerDesigner 物理建模界面中,按如下方式:

菜单栏 -> tool -> Execute Commans -> Edit/Run Script... -> Open -> 打开脚本文件 -> Run

ctrl + shift + x -> Open -> 打开脚本文件 -> Run

menu.jpg
run.jpg

注意:点击Run执行之后不会有任何提示,只要没报错,应该就没有问题,可以打开某个表的Preview页签查看效果。

执行前:

T_USER_Preview_no_comment.jpg

执行后:

T_USER_Preview_comment.jpg

补充说明:物理建模指的是在新建模型的时候,选中的是Physical Data

Physical Data.jpg

脚本

1. NameToComment.vbs

文件名:
NameToComment.vbs
建议存放路径:
\Sybase\PowerDesigner 16\VB Scripts\NameToComment.vbs
作用:
Name列中输入的值,转为数据库字段的Comment说明
使用场景:
该脚本在正向生成SQL脚本的时候使用。
正向生成SQL脚本指的是根据pdm文件,生成对应数据库可执行的SQL脚本,常用于设计阶段。
使用说明:
在对应目录下创建NameToComment.vbs文件,将如下脚本复制到文件中即可。

脚本如下:

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. CommentToName.vbs

文件名:
CommentToName.vbs
建议存放路径:
\Sybase\PowerDesigner 16\VB Scripts\CommentToName.vbs
作用:
将表字段Comment说明中的值,转为Name列的输入值。
使用场景:
该脚本在反向生成的时候使用。
反向生成指的是已经有了数据表,根据已有数据表反向生成pdm文件,常用于补充文档时使用
使用说明:
在对应目录下创建CommentToName.vbs文件,将如下脚本复制到文件中即可。

脚本如下:

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 

你可能感兴趣的:(PowerDesigner常用脚本)