Name是名稱(字段描述),Code是字段名稱,Comment是注釋名稱,ER圖中顯示的是Name。一般設計時,Name跟comment都設計成描述,
而設計時候常把comment寫成中文,name保留跟code一致,保存完畢后,可以把comment替換到name上。當然也可以用name替換comment。具體方法如下:
12版:
1、在ER圖模式下,去增加commit屬性的顯示
2、Tools下增加一個vbs的腳本,可以將name內容替換為注釋內容
15版:
英文版:Tools->Display Preferences->Content->Table->Advanced...->Columns->select
中文版:工具->顯示參數選擇->Content->Table->Advanced...->Columns->select
選中Code后,將它上移到第一位
這樣可以將code、name、type三項顯示在ER圖中,然后運行腳本,將注釋comment的內容替換到code或name
Tools->Display Preferences->Content->Table->Advanced...->Columns->select
工具>顯示首選項 >內容>表>高級…>列- >選擇
ctrl +shift +x 打開腳本
'******************************************************************************
'* File: comment2name.vbs
'* Purpose: 在PowerDesigner的PDM圖形窗口中顯示數據列的中文注釋
'* Title: 將字段的comment賦值到字段的name中
'* Category: 打開物理模型,運行本腳本(Ctrl+Shift+X)
'* Copyright:foxzz@163.com,2006/07/25 .
'* Author: foxzz
'* Created:
'* Modified:
'* Version: 1.0
'* Comment: 遍歷物理模型中的所有表,將字段的comment賦值到字段的name中。
' 在將name置換為comment過程中,需要考慮的問題
' 1、name必須唯一,而comment有可能不唯一。
' 處理辦法是如果字段的comment重復,則字段的name=comment+1、2、3...
' 2、comment值有可能為空,這種情況下對字段的name不處理。
' 針對Oracle數據庫,將comment on column 字段名稱 is '';添加到C:/pdcomment.txt文件中。
' 在補充comment完畢后,便於在數據庫中執行
'******************************************************************************
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim system, file
Set system = CreateObject("Scripting.FileSystemObject")
Dim ForReading, ForWriting, ForAppending '打開文件選項
ForReading = 1 ' 只讀
ForWriting = 2 ' 可寫
ForAppending = 8 ' 可寫並追加
'打開文本文件
Set file = system.OpenTextFile("C:/pdcomment.txt", ForWriting, true)
'判斷當前model是否物理數據模型
Dim mdl
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "處理對象無模型"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "當前模型不是物理數據模型"
Else
ProcessFolder mdl,file
End If
file.Close
'******************************************************************************
Private sub ProcessFolder(folder,file)
Dim i,j,k
i=0:j=0:k=0
'列數組,記錄字段里不重復的comment
Dim ColumnComment()
Dim ColumnCommentNumber()
ReDim Preserve ColumnComment(i)
ReDim Preserve ColumnCommentNumber(i)
Dim tbl '當前表
Dim col '當前字段
dim curComment '當前字段comment
'處理模型中的表
for each tbl in folder.tables
if not tbl.isShortcut then
if len(trim(tbl.comment))<>0 then
'可以在這里顯示table的comment
'tbl.name = tbl.name+"("+trim(tbl.comment)+")"
end if
'處理表中的列
for each col in tbl.columns
k = 0
curComment = trim(col.comment)
if len(curComment)<>0 then
'遍歷相異的comment數組
for j = 0 to i
if ColumnComment(j) = curComment then
'如果找到相同的comment,則相關計數器加1
ColumnCommentNumber(j) = ColumnCommentNumber(j) + 1
k = j
end if
Next
'如果沒有相同的comment,則k=0,此時ColumnCommentNumber(0)也為0
'否則ColumnCommentNumber(k)不為0
if ColumnCommentNumber(k) <> 0 then
col.name = curComment & cstr(ColumnCommentNumber(k))
else
col.name = curComment
'ColumnComment(0)、ColumnCommentNumber(0)永遠為空
'將相異的comment記錄添加到數組中
i = i + 1
ReDim Preserve ColumnComment(i)
ReDim Preserve ColumnCommentNumber(i)
ColumnComment(i) = curComment
ColumnCommentNumber(i) = 0
end if
else
'寫入文件中
file.WriteLine "comment on column "+ tbl.name+"."+col.code+" is '';"
end if
next
end if
'由於不同表的name允許相同,因此此時重新初始化。
'因為ColumnComment(0)、ColumnCommentNumber(0)為空,可以保留
ReDim Preserve ColumnComment(0)
ReDim Preserve ColumnCommentNumber(0)
i=0:j=0:k=0
next
Dim view '當前視圖
for each view in folder.Views
if not view.isShortcut then
'可以在這里顯示view的comment
'view.name = view.comment
end if
next
'對子目錄進行遞歸
Dim subpackage 'folder
For Each subpackage In folder.Packages
if not subpackage.IsShortcut then
ProcessFolder subpackage , file
end if
Next
end sub