`
flashdream8
  • 浏览: 667110 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

powerdesigner 反向 显示问题

 
阅读更多

pd 反向

 

1. )首先新建一个“PhysicalDataModel”类型的文件,然后点击“Database”->"Configure  Connections",弹出窗口“Configure Data Connections”, 并选择"Connection Profiles

2.) 填写相关信息

3.) 点击“Database”->"Update Model from  Database(快捷键为:CTRL_R)",弹出窗口“Database Reverse Engineering Options”

4.)选择需要进行反向工程的数据库或数据库中的某些表,然后点击“OK”即可完成数据库的反向工程操作。(注意:默认是所有数据库全部选中的,所以在进行选择需要进行反向工程的数据库之前,先点击使得数据库全部未选中。)
到目前为止,powerdesigner的反向工程的连接环境全部配置完成,此时只需选中需要进行反向工程的数据库或表,点击“OK”便可导出数据的PhysicalDataModel图。

 

注意:java 64位版本不支持 报 Could not Initialize JavaVM 错误,需要在java32位版本下运行

 

=====================================

pd 反向完成以后 显示问题

 

 

 

 不是很直观:我们需要显示成:



 

 

 

在 反向完成的 工作区域 点击 ctrl+shift+X  或者(Tools-->Execute Commands-->Edit/Run Script)

输入:

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("d:\temp\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
Dim regex '正则表达式
Set regex=New RegExp
'处理模型中的表
for each tbl in folder.tables
    if not tbl.isShortcut then
       if len(trim(tbl.comment))<>0 then
          '可以在这里显示table的comment
          regex.Pattern="\[.*\]"
          If regex.Test(tbl.name) then
          else
            tbl.name = tbl.name+"["+trim(tbl.comment)+"]"
            end if
       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

              regex.Pattern="\[.*\]"
              If regex.Test(col.name) Then
              else
                 col.name =col.name+"["+curComment & cstr(ColumnCommentNumber(k))+"]"
                 End if
              Else
              regex.Pattern="\[.*\]"
              If regex.Test(col.name) Then
              else
                 col.name = col.name+"["+curComment+"]"
             End if
                 '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
        regex.Pattern="\[.*\]"
        If regex.Test(view.name) Then
        Else
       view.name = view.name+"["+view.comment+"]"
       End if
    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

 

点击 run  , 执行完成以后 就ok了

 

http://hi.baidu.com/lushaojin/item/8d5e2ee1529a96266dabb8b4

  • 大小: 11.5 KB
  • 大小: 15.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics