首页未分类 › powerdesigner在实体图中显示列注释

powerdesigner在实体图中显示列注释

在powerdesigner中选择

Tools->Display Preferences->Content->Table->Advanced…->Columns->select

选中Code后,将它上移到第一位

这样可以将code、name、type三项显示在ER图中,然后运行脚本,将注释comment的内容替换到code或name中,即可。

 

PowerDesigner拥有强大的建模功能,同时,它也对脚本语言提供了支持。菜单Tools -> Execute Commands -> Edit/Run Script打开的窗口中,可以执行用户编写的VBS脚本,某些情况下,这可以节省大量的重复性工作,达到提高效率的目的。

vbs文件内容:

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.code = tbl.code+”(“+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.code = curComment & cstr(ColumnCommentNumber(k))
             else
                col.code = 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.code+”.”+col.code+” is ”;”         
          end if
      next
   end if
   ‘由于不同表的code允许相同,因此此时重新初始化。
   ‘因为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.code = 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

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="&rvpu;&rvpu;" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>