powerdesigner奇淫技
生活随笔
收集整理的這篇文章主要介紹了
powerdesigner奇淫技
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在日常開發中數據庫的設計常常需要建立模型,而powerdesigner是個不錯的選擇。但很多時候用powerdesigner生成模型后再去創建表結構,會覺得煩和別扭。那么能不能數據庫表建好后再生成模型呢?然而生成的模型是否符合我們的日常使用習慣呢?下面說說powerdesigner的奇淫技。
1、根據sql生成視圖模型(在不使用ODBC直接連接數據庫的情況下)
將表結構導出sql文件后執行以下操作
按確定后便可生成相應的表視圖模型。但是生成的視圖模型name和code都是英文的,不好理解。因而有了奇淫技2。
2、將comment列值復制到name列
Ctr + O選擇轉換腳本?comment2name.vbs(將以下代碼片段保存成一個vbs)
'****************************************************************************** '* 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_BatchDim 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) ThenMsgBox "處理對象無模型" ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) ThenMsgBox "當前模型不是物理數據模型" ElseProcessFolder 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 = 0curComment = trim(col.comment)if len(curComment)<>0 then'遍歷相異的comment數組for j = 0 to iif ColumnComment(j) = curComment then'如果找到相同的comment,則相關計數器加1ColumnCommentNumber(j) = ColumnCommentNumber(j) + 1k = jend if Next'如果沒有相同的comment,則k=0,此時ColumnCommentNumber(0)也為0'否則ColumnCommentNumber(k)不為0if ColumnCommentNumber(k) <> 0 thencol.name = curComment & cstr(ColumnCommentNumber(k))elsecol.name = curComment'ColumnComment(0)、ColumnCommentNumber(0)永遠為空'將相異的comment記錄添加到數組中i = i + 1ReDim Preserve ColumnComment(i)ReDim Preserve ColumnCommentNumber(i)ColumnComment(i) = curCommentColumnCommentNumber(i) = 0end ifelse'寫入文件中file.WriteLine "comment on column "+ tbl.name+"."+col.code+" is '';" end ifnext end if '由于不同表的name允許相同,因此此時重新初始化。'因為ColumnComment(0)、ColumnCommentNumber(0)為空,可以保留ReDim Preserve ColumnComment(0)ReDim Preserve ColumnCommentNumber(0)i=0:j=0:k=0nextDim view '當前視圖 for each view in folder.Views if not view.isShortcut then '可以在這里顯示view的comment'view.name = view.commentend if next'對子目錄進行遞歸 Dim subpackage 'folder For Each subpackage In folder.Packages if not subpackage.IsShortcut then ProcessFolder subpackage , fileend if Nextend sub
最后點擊run按鈕,你會發現神奇的事情就這么發生了。
3、讓table視圖同時顯示name和code
至此,你便可在查詢工具里建立好表結構。然后再生成表模型了,省省體力吧!
本文轉自秋楓博客園博客,原文鏈接:http://www.cnblogs.com/rwxwsblog/p/5041884.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的powerdesigner奇淫技的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是Session(session)
- 下一篇: [Unity3d]旋转拖动物体