首页 > 代码库 > PowerDesigner 逆向中 Name和Comment互换

PowerDesigner 逆向中 Name和Comment互换

在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文。Name用来显 示,Code在代码中使用,但Comment中的文字会保存到数据库Table或Column的Comment中,当Name已经存在的时候,再写一次 Comment很麻烦,可以使用以下代码来解决这个问题:

  • 代码一:将Name中的字符COPY至Comment中
    [vb] view plain copy
     
    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   comment   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.comment   =   tab.name   
    24.                   Dim   col   ‘   running   column   
    25.                   for   each   col   in   tab.columns   
    26.                         col.comment=   col.name   
    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.comment   =   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  

         另外在使用REVERSE ENGINEER从数据库反向生成PDM的时候,PDM中的表的NAME和CODE事实上都是CODE,为了把NAME替换为数据库中Table或Column的中文Comment,可以使用以下脚本:

  • 代码二:将Comment中的字符COPY至Name中
    [vb] view plain copy
     
    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. Private   sub   ProcessFolder(folder)   
    18. On Error Resume Next  
    19.       Dim   Tab   ‘running     table   
    20.       for   each   Tab   in   folder.tables   
    21.             if   not   tab.isShortcut   then   
    22.                   tab.name   =   tab.comment  
    23.                   Dim   col   ‘   running   column   
    24.                   for   each   col   in   tab.columns   
    25.                   if col.comment="" then  
    26.                   else  
    27.                         col.name=   col.comment   
    28.                   end if  
    29.                   next   
    30.             end   if   
    31.       next  
    32.   
    33.       Dim   view   ‘running   view   
    34.       for   each   view   in   folder.Views   
    35.             if   not   view.isShortcut   then   
    36.                   view.name   =   view.comment   
    37.             end   if   
    38.       next  
    39.   
    40.       ‘   go   into   the   sub-packages   
    41.       Dim   f   ‘   running   folder   
    42.       For   Each   f   In   folder.Packages   
    43.             if   not   f.IsShortcut   then   
    44.                   ProcessFolder   f   
    45.             end   if   
    46.       Next   
    47. end   sub   

以上两段代码都是VB脚本,在PowerDesigner中使用方法为:

    PowerDesigner->Tools->Execute Commands->Edit/Run Scripts

将代码Copy进去执行就可以了,是对整个CDM或PDM进行操作

PowerDesigner 逆向中 Name和Comment互换