powerdesign 下ER模型中展現數據註釋中文列

      工做三年了,若是說對於數據庫不敏感,我以爲的不管是做爲一個前端開發人員仍是後端開發人員來講,跟別人說你是個軟件開發人員,我以爲都有點慚愧。可能以前一直在關注數據庫sql的編寫等等,可是如今我以爲有必要昇華一下了,下面我就我遇到的問題,向你們提供一個解決方案,可能不是最好的,可是當實現了這個效果後,我真的眼前一亮,在此分享給你們......javascript

軟件環境:powerdesign16.5 + win64(64位系統下,因爲jdk的版本,powerdesign軟件運行不正常,這個我安裝jdk1.6_x86 後解決此問題,你們可百度具體步驟)前端

        問題:當在使用powerdesign時,ER模型中展現code和dataType,即便選擇了Comment或者Name,從數據庫中反向生成的model中依然在ER視圖中看不到中文註釋,具體如圖:java

用powerdesign反向生成的model中展現以下:mysql

題:該圖中沒有展現數據庫中列的註釋,經過如下步驟可解決此問題:sql

一、在powerdesign中菜單 Tools——>Display Preference...——>Table——>Advanced...數據庫

二、點擊肯定,模型顯示如圖:後端

三、接下來,咱們執行腳本,在桌面創建文件powerdesign-name-comment.vbs ,文件名稱可隨便寫,可是必須是vbs文件,名稱最好用英文,該文件內容爲:數組

'******************************************************************************
'* File:     comment2code.vbs
'* Purpose: 在PowerDesigner的PDM圖形窗口中顯示數據列的中文註釋
'* Title:    將字段的comment賦值到字段的code中
'* Category: 打開物理模型,運行本腳本(Ctrl+Shift+X)
'* Copyright:foxzz@163.com,2006/07/25 .
'* Author:   foxzz
'* Created:
'* Modified:
'* Version: 1.0
'* Comment: 遍歷物理模型中的全部表,將字段的comment賦值到字段的code中。
'            在將code置換爲comment過程當中,須要考慮的問題
'            一、code必須惟一,而comment有可能不惟一。
'               處理辦法是若是字段的comment重複,則字段的code=comment+一、二、3...
'            二、comment值有可能爲空,這種狀況下對字段的code不處理。
'               針對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.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.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.code+"."+col.name+" 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 suboracle

'******************************************************************************.net

 

四、在powerdesign中菜單Tools——>Excute Commands——>Edit/Run Script...  選擇上一步建立的文件,點擊執行,效果以下:

五、至此,完畢!

 立刻過年了,這幾天忙得要死,這一個問題,我搞了一天多,網上查到的都是展現列,選出來,可是都是英文,終於搞定這個,今天也是抽空寫成博客,但願你們採納,若有問

題,可直接發我郵箱zh_haining@163.com ,但願與你們交流分享。

相關文章
相關標籤/搜索