powerdesigner奇淫技
在日常開(kāi)發(fā)中數(shù)據(jù)庫(kù)的設(shè)計(jì)常常需要建立模型,而powerdesigner是個(gè)不錯(cuò)的選擇。但很多時(shí)候用powerdesigner生成模型后再去創(chuàng)建表結(jié)構(gòu),會(huì)覺(jué)得煩和別扭。那么能不能數(shù)據(jù)庫(kù)表建好后再生成模型呢?然而生成的模型是否符合我們的日常使用習(xí)慣呢?下面說(shuō)說(shuō)powerdesigner的奇淫技。
1、根據(jù)sql生成視圖模型(在不使用ODBC直接連接數(shù)據(jù)庫(kù)的情況下)
將表結(jié)構(gòu)導(dǎo)出sql文件后執(zhí)行以下操作
按確定后便可生成相應(yīng)的表視圖模型。但是生成的視圖模型name和code都是英文的,不好理解。因而有了奇淫技2。
2、將comment列值復(fù)制到name列
Ctr + O選擇轉(zhuǎn)換腳本?comment2name.vbs(將以下代碼片段保存成一個(gè)vbs)
'****************************************************************************** '* File: comment2name.vbs '* Purpose: 在PowerDesigner的PDM圖形窗口中顯示數(shù)據(jù)列的中文注釋 '* Title: 將字段的comment賦值到字段的name中 '* Category: 打開(kāi)物理模型,運(yùn)行本腳本(Ctrl+Shift+X) '* Copyright:foxzz@163.com,2006/07/25 . '* Author: foxzz '* Created: '* Modified: '* Version: 1.0 '* Comment: 遍歷物理模型中的所有表,將字段的comment賦值到字段的name中。 ' 在將name置換為comment過(guò)程中,需要考慮的問(wèn)題 ' 1、name必須唯一,而comment有可能不唯一。 ' 處理辦法是如果字段的comment重復(fù),則字段的name=comment+1、2、3... ' 2、comment值有可能為空,這種情況下對(duì)字段的name不處理。 ' 針對(duì)oracle數(shù)據(jù)庫(kù),將comment on column 字段名稱 is '';添加到C:/pdcomment.txt文件中。 ' 在補(bǔ)充comment完畢后,便于在數(shù)據(jù)庫(kù)中執(zhí)行 '****************************************************************************** Option Explicit ValidationMode = True InteractiveMode = im_BatchDim system, file Set system = CreateObject("Scripting.FileSystemObject") Dim ForReading, ForWriting, ForAppending '打開(kāi)文件選項(xiàng) ForReading = 1 ' 只讀 ForWriting = 2 ' 可寫(xiě) ForAppending = 8 ' 可寫(xiě)并追加 '打開(kāi)文本文件 Set file = system.OpenTextFile("C:/pdcomment.txt", ForWriting, true)'判斷當(dāng)前model是否物理數(shù)據(jù)模型 Dim mdl Set mdl = ActiveModel If (mdl Is Nothing) ThenMsgBox "處理對(duì)象無(wú)模型" ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) ThenMsgBox "當(dāng)前模型不是物理數(shù)據(jù)模型" ElseProcessFolder mdl,file End If file.Close'****************************************************************************** Private sub ProcessFolder(folder,file)Dim i,j,k i=0:j=0:k=0'列數(shù)組,記錄字段里不重復(fù)的comment Dim ColumnComment() Dim ColumnCommentNumber() ReDim Preserve ColumnComment(i) ReDim Preserve ColumnCommentNumber(i)Dim tbl '當(dāng)前表 Dim col '當(dāng)前字段 dim curComment '當(dāng)前字段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數(shù)組for j = 0 to iif ColumnComment(j) = curComment then'如果找到相同的comment,則相關(guān)計(jì)數(shù)器加1ColumnCommentNumber(j) = ColumnCommentNumber(j) + 1k = jend if Next'如果沒(méi)有相同的comment,則k=0,此時(shí)ColumnCommentNumber(0)也為0'否則ColumnCommentNumber(k)不為0if ColumnCommentNumber(k) <> 0 thencol.name = curComment & cstr(ColumnCommentNumber(k))elsecol.name = curComment'ColumnComment(0)、ColumnCommentNumber(0)永遠(yuǎn)為空'將相異的comment記錄添加到數(shù)組中i = i + 1ReDim Preserve ColumnComment(i)ReDim Preserve ColumnCommentNumber(i)ColumnComment(i) = curCommentColumnCommentNumber(i) = 0end ifelse'寫(xiě)入文件中file.WriteLine "comment on column "+ tbl.name+"."+col.code+" is '';" end ifnext end if '由于不同表的name允許相同,因此此時(shí)重新初始化。'因?yàn)镃olumnComment(0)、ColumnCommentNumber(0)為空,可以保留ReDim Preserve ColumnComment(0)ReDim Preserve ColumnCommentNumber(0)i=0:j=0:k=0nextDim view '當(dāng)前視圖 for each view in folder.Views if not view.isShortcut then '可以在這里顯示view的comment'view.name = view.commentend if next'對(duì)子目錄進(jìn)行遞歸 Dim subpackage 'folder For Each subpackage In folder.Packages if not subpackage.IsShortcut then ProcessFolder subpackage , fileend if Nextend sub
最后點(diǎn)擊run按鈕,你會(huì)發(fā)現(xiàn)神奇的事情就這么發(fā)生了。
3、讓table視圖同時(shí)顯示name和code
至此,你便可在查詢工具里建立好表結(jié)構(gòu)。然后再生成表模型了,省省體力吧!
本文轉(zhuǎn)自秋楓博客園博客,原文鏈接:http://www.cnblogs.com/rwxwsblog/p/5041884.html,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的powerdesigner奇淫技的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 什么是Session(session)
- 下一篇: [Unity3d]旋转拖动物体