PowerDesigner 把Comment复制到name中和把name复制到Comment

来源:互联网 发布:中国学术期刊网数据库 编辑:程序博客网 时间:2024/06/07 02:34

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

在PowerDesigner中使用方法为:

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

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

 

[vb] view plain copy
 print?
  1. '代码一:将Name中的字符COPY至Comment中  
  2.   
  3.   
  4. Option   Explicit   
  5. ValidationMode   =   True   
  6. InteractiveMode   =   im_Batch  
  7.   
  8. Dim   mdl   '   the   current   model  
  9.   
  10. '   get   the   current   active   model   
  11. Set   mdl   =   ActiveModel   
  12. If   (mdl   Is   Nothing)   Then   
  13.       MsgBox   "There   is   no   current   Model "   
  14. ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then   
  15.       MsgBox   "The   current   model   is   not   an   Physical   Data   model. "   
  16. Else   
  17.       ProcessFolder   mdl   
  18. End   If  
  19.   
  20. '   This   routine   copy   name   into   comment   for   each   table,   each   column   and   each   view   
  21. '   of   the   current   folder   
  22. Private   sub   ProcessFolder(folder)   
  23.       Dim   Tab   'running     table   
  24.       for   each   Tab   in   folder.tables   
  25.             if   not   tab.isShortcut   then   
  26.                   tab.comment   =   tab.name   
  27.                   Dim   col   '   running   column   
  28.                   for   each   col   in   tab.columns   
  29.                         col.comment=   col.name   
  30.                   next   
  31.             end   if   
  32.       next  
  33.   
  34.       Dim   view   'running   view   
  35.       for   each   view   in   folder.Views   
  36.             if   not   view.isShortcut   then   
  37.                   view.comment   =   view.name   
  38.             end   if   
  39.       next  
  40.   
  41.       '   go   into   the   sub-packages   
  42.       Dim   f   '   running   folder   
  43.       For   Each   f   In   folder.Packages   
  44.             if   not   f.IsShortcut   then   
  45.                   ProcessFolder   f   
  46.             end   if   
  47.       Next   
  48. end   sub  


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

[vb] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. '代码二:将Comment中的字符COPY至Name中   
  2.   
  3. Option   Explicit   
  4. ValidationMode   =   True   
  5. InteractiveMode   =   im_Batch  
  6.   
  7. Dim   mdl   '   the   current   model  
  8.   
  9. '   get   the   current   active   model   
  10. Set   mdl   =   ActiveModel   
  11. If   (mdl   Is   Nothing)   Then   
  12.       MsgBox   "There   is   no   current   Model "   
  13. ElseIf   Not   mdl.IsKindOf(PdPDM.cls_Model)   Then   
  14.       MsgBox   "The   current   model   is   not   an   Physical   Data   model. "   
  15. Else   
  16.       ProcessFolder   mdl   
  17. End   If  
  18.   
  19. Private   sub   ProcessFolder(folder)   
  20. On Error Resume Next  
  21.       Dim   Tab   'running     table   
  22.       for   each   Tab   in   folder.tables   
  23.             if   not   tab.isShortcut   then   
  24.                   tab.name   =   tab.comment  
  25.                   Dim   col   '   running   column   
  26.                   for   each   col   in   tab.columns   
  27.                   if col.comment="" then  
  28.                   else  
  29.                         col.name=   col.comment   
  30.                   end if  
  31.                   next   
  32.             end   if   
  33.       next  
  34.   
  35.       Dim   view   'running   view   
  36.       for   each   view   in   folder.Views   
  37.             if   not   view.isShortcut   then   
  38.                   view.name   =   view.comment   
  39.             end   if   
  40.       next  
  41.   
  42.       '   go   into   the   sub-packages   
  43.       Dim   f   '   running   folder   
  44.       For   Each   f   In   folder.Packages   
  45.             if   not   f.IsShortcut   then   
  46.                   ProcessFolder   f   
  47.             end   if   
  48.       Next   
  49. end   sub  
0 0
原创粉丝点击