PowerDesigner的操作经常忘记,所以把常用的功能记录下来备忘。
1、修改反转过来的字段
PowerDesigner从数据库反转的时候,默认不带注释,需要先进行修改。
输入如下脚本:
{OWNER, TABLE, S, COLUMN, DTTPCODE, LENGTH, SIZE, PREC, COMPUTE, NOTNULL, IDENTITY, DOMAIN, DEFAULT, COMMENT, ExtIdentityIncrement, ExtIdentitySeed}selectu.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 endfromdbo.sysusers ujoin 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_idleft 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->DisplayPreferences->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 ExplicitValidationMode = TrueInteractiveMode = im_BatchDim system, fileSet 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 mdlSet mdl = ActiveModelIf (mdl Is Nothing) Then MsgBox "处理对象无模型"ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "当前模型不是物理数据模型"Else ProcessFolder mdl,fileEnd Iffile.Close'******************************************************************************Private sub ProcessFolder(folder,file)Dim i,j,ki=0:j=0:k=0'列数组,记录字段里不重复的commentDim 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=0nextDim view '当前视图for each view in folder.Views if not view.isShortcut then '可以在这里显示view的comment 'view.code = view.comment end ifnext'对子目录进行递归Dim subpackage 'folderFor Each subpackage In folder.Packages if not subpackage.IsShortcut then ProcessFolder subpackage , file end ifNextend sub
评论前必须登录!
立即登录