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

powerdesigner15展现注释

Tools->Display
Preferences->Content->Table->Advanced…->Columns->select
当选Code后,将它发展到第三位
图片 1
这么可以将code、name、type三项展现在ER图中,然后运行脚本,将注释comment的情节替换来code或name中,即可。
 图片 2推行如下脚本:
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

PowerDesigner的操作平日忘记,所以把常用的效率记录下来备忘。

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   在图中查找选取的对象

 2、配置PowerDesigner数据库连接

图片 3图片 4图片 5图片 6图片 7

下一步,点击“完毕”——“测试数据库”——再次回到OK。

图片 8

1、修改反转过来的字段

PowerDesigner从数据库反转的时候,默许不带注释,必要先举行改动。

图片 9

图片 10

输入如下脚本:

{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

3、新建物理数据模型

图片 11图片 12图片 13图片 14

点击“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。

相关文章