1、Name和Comment互换方法
在使用PowerDesigner对数据库进行概念模型和物理模型设计时,一般在NAME或Comment中写中文,在Code中写英文。Name用来显 示,Code在代码中使用,但Comment中的文字会保存到数据库Table或Column的Comment中,当Name已经存在的时候,再写一次 Comment很麻烦,可以使用以下代码来解决这个问题。
在PowerDesigner中使用方法为,点击菜单:
PowerDesigner-> Tools -> Execute Commands -> Edit/Run Scripts
将代码Copy进去执行就可以了,是对整个CDM或PDM进行操作
(1)将Name中的字符COPY至Comment中
Visual Basic 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 |
另外在使用REVERSE ENGINEER从数据库反向生成PDM的时候,PDM中的表的NAME和CODE事实上都是CODE,为了把NAME替换为数据库中Table或Column的中文Comment,可以使用以下脚本:
(2)将Comment中的字符COPY至Name中
Visual Basic 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 |
2、PowerDesigner中同时显示Code和Name
PowerDesigner中Table视图同时显示Code和Name,像下图这样的效果:
![](https://i-blog.csdnimg.cn/blog_migrate/7300b3853182761c0a1f3686a0c55b66.png)
实现方法,选中一张表,点击菜单:Tools-> Display Preference
![](https://i-blog.csdnimg.cn/blog_migrate/bcceaa675a5545184d175d2b7188aa00.png)
![](https://i-blog.csdnimg.cn/blog_migrate/54d16cc004be2c23e0f47636bf64e44e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/82f14195b0bd46518721eb6c1145547c.png)