PowerDesigner从Sqlserver中反转为带注释的字典及快捷键操作

PowerDesigner的操作时忘记,所以将常用的力量记录下来备忘。

1、修改反转过来的字段

PowerDesigner从数据库反转的下,默认不带注释,需要先进行修改。

输入如下脚本:

{OWNER, TABLE, S, COLUMN, DTTPCODE, LENGTH, SIZE, PREC, COMPUTE, NOTNULL, IDENTITY, DOMAIN, DEFAULT, COMMENT, ExtIdentityIncrement, ExtIdentitySeed}

select
u.name,
o.name,
c.colid,
c.name,
case when (s.usertype < 100) then s.name else x.name end,
c.prec,
c.length,
c.scale,
z.text ,
case (c.status & 8) when 8 then 'NULL' else 'NOTNULL' end,
case (c.status & 128) when 128 then 'identity' else '' end,
case when (s.usertype < 100) then '' else s.name end,
v.text,
CONVERT(varchar, ISNULL(p.[value], '')) AS text,
case (c.status & 128) when 128 then ident_incr(u.name + '.' + o.name) else null end,
case (c.status & 128) when 128 then ident_seed(u.name + '.' + o.name) else null end
from
dbo.sysusers u
join dbo.sysobjects o on (o.uid = u.uid and o.type in ('U', 'S', 'V'))
join dbo.syscolumns c on (c.id = o.id)
left outer join sys.extended_properties p on c.id = p.major_id and c.colid = p.minor_id
left outer join dbo.systypes s on (c.usertype = s.usertype and s.xtype = c.xtype and c.usertype >= 0)
left outer join dbo.systypes x on (s.usertype > 100 and s.xtype = x.xtype and x.usertype not in (0, 18, 80) and x.usertype < 100)
left outer join dbo.syscomments z on (z.id = o.id and z.number = c.colid)
left outer join dbo.sysobjects d on (d.id = c.cdefault and d.category <> 0)
left outer join dbo.syscomments v on (v.id = d.id)
where 1 = 1
[ and u.name = %.q:OWNER%]
[ and o.name=%.q:TABLE%]
order by 1, 2, 3

 2、配置PowerDesigner数据库连接

产同样步,点击“完成”——“测试数据库”——返回OK。

3、新建物理数据模型

点击“OK”后,将见面初步展开反转PD字典工作。

PowerDesigner设计时表显示注释选项: 选定编辑的发明,右键-
>Properties- >Columns- >Customize Columns and
Filter(或直接用快捷键Ctrl+U)- >Comment(前面打勾)- >OK

一经出现错误“[Microsoft][ODBC SQL Server Driver][SQL
Server]无法预定义语句。 SQLSTATE = 37000”

解决办法:选择菜单栏中的Database -> Change Current DBMS
,给DBMS选择SQL Server2005。

PowerDesigner常用快捷键

**一般快捷键

** F4   打开检查模型窗口,检查模型
F5   如果图窗口外之觊觎改变过大小,恢复也老大小就健康尺寸
F6   放大图窗口外之图
F7   缩小图窗口外之觊觎
F8   在图窗口外中查看所有贪图内容
F9   预览图窗口
F10   在祈求窗口中因同帧视图的惊人显示图Shift+单击对象   连续选择对象

alt+0   显示或藏浏览器窗口
alt+1   显示或躲藏输出窗口
alt+2   显示或隐匿结果列表窗口
ctrl+双击或ctrl+”+”     打开包图
ctrl+tab   在祈求窗口中切换大小,在文件中插制表符或  
在属性表窗口中切换标签页
ctrl+page up/page down 于性能表标签页中切换标签页
ctrl+移动窗口   禁止Docking特性
ctrl+b   在浏览器窗口被觅对象
ctrl+d   打开选图窗口,选择图
ctrl+e   打开报表列表窗口
ctrl+f   打开查找对象窗口,查找对象
ctrl+j   以靶符号中调整文本
ctrl+F4   关闭时图窗口
ctrl+alt+F4   关闭模型
ctrl+F6   在差不多个特性表窗口间切换
ctrl+shift+F6   在差不多独特性表窗口间反往切换
ctrl+u   回到父图
shift+F2   打开Workspace
shift+F3   保存Workspace
shift+F4   关闭Workspace

对象操作快捷键表

Del   删除对象(需确认)
shift+Del   删除对象(无需确认)
alt+Enter   打开所挑选对象的属性表
ctrl+k   粘贴为快捷方式
ctrl+h   选择总是:水平连接
ctrl+l   选择总是:垂直连接
ctrl+改变大小   保持对象的核心转移目标大小
ctrl+shift+改变大小
保持对象的骨干转移目标大小,并维持同原先对象的长宽比例

工具面板快捷键表

双击光标工具(Point)
摘图备受的拥有符号或ctrl+a  
双击删除工具(Delete) 删除所有都选择的记号(需确认)
双击移动工具(Grabber) 显示全局视图双击对象工具  
择与品种的有所符号shift+双击对象工具
保持前一个拣,添加选择和种类的兼具符号

拖放快捷键表

shift+移动项   移动符号
ctrl+移动项   复制符号
ctrl+shift+移动项 创建快捷方式列表窗口快捷键表
F2   选择编辑的公文
ctrl+shift+Space 选择时实行
ctrl+a   选择具有执行
ctrl+shift+a   取消所有选择
ctrl+n或ctrl+i   插入行
ctrl+d   删除行

浏览器窗口快捷键表

*(小键盘)   展开活动浏览器被的装有节点
+(小键盘)   展开活动浏览器中之子节点
-(小键盘)   合拢活动浏览器中之具有节点
F2   重命名
ctrl+shift+f   以图备受搜寻选择的对象

powerdesigner15显示注释

Tools->Display
Preferences->Content->Table->Advanced…->Columns->select
当选Code后,将它上转换到第一位

如此这般可以code、name、type三件显示在ER图中,然后运行脚本,将注释comment的始末替换到code或name中,即可。
 推行如下脚本:
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过程中,需要考虑的问题
'            1、code必须唯一,而comment有可能不唯一。
'               处理办法是如果字段的comment重复,则字段的code=comment+1、2、3...
'            2、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.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

扩展:PowerDesigner导出表到word

相关文章