PowerDesigner实用方法小结(1)

来源:互联网 发布:风行家园网络传销案 编辑:程序博客网 时间:2024/05/22 13:29

PowerDesigner多用来进行数据库模型设计,具有SQL语句自动生成等功能。当然,也有不少缺点,比如团队分享。

一、设置PowerDesigner模型视图中数据表显示列

1、Tools-Display Preference…

2、窗口左边Category中General Settings下选择Table

3、窗口右边Advanced…

4、窗口左边选择Columns

5、窗口右边List columns中,选择要显示的列

image

二、设置PowerDesigner设计表时,自动将name列值中的一部分复制到code列

1、把name/code自动复制功能打开。默认是打开的。

Tool-Genneral-Options Dialog-Name to Code mirroring

2、Tools->Model Options....->Naming Convention
3、选中Name,并勾选Enable name/code conversions.
4、选择Name To Code

粘贴脚本代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
脚本1:
.set_value(_First, true, new)
.foreach_part(%Name%,"'#'" )
.if (%_First%)
.delete(%CurrentPart%)
.enddelete
.set_value(_First, false, update)
.else
%CurrentPart%
.endif
.next
这个例子是把Name内容的#号后边的内容当作Code.
脚本2:
.set_value(_First, true, new)
.foreach_part(%Name%,"'#'" )
.if (%_First%)
%CurrentPart%
.set_value(_First, false, update)
.endif
.next
这个例子是把Name内容的#号前边的内容当作Code.

三、从数据库导入数据到PowerDesigner中后,将comment列值复制到name列

运行脚本 Tools->Execute Commands->Edit/Run Scripts(Ctrl Shift X)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
'******************************************************************************
'* File: comment2name.vbs
'* Purpose: 在PowerDesigner的PDM图形窗口中显示数据列的中文注释
'* Title: 将字段的comment赋值到字段的name中
'* Category: 打开物理模型,运行本脚本(Ctrl+Shift+X)
'* Copyright:foxzz@163.com,2006/07/25 .
'* Author: foxzz
'* Created:
'* Modified:
'* Version: 1.0
'* Comment: 遍历物理模型中的所有表,将字段的comment赋值到字段的name中。
' 在将name置换为comment过程中,需要考虑的问题
' 1、name必须唯一,而comment有可能不唯一。
' 处理办法是如果字段的comment重复,则字段的name=comment+1、2、3...
' 2、comment值有可能为空,这种情况下对字段的name不处理。
' 针对oracle数据库,将comment on column 字段名称 is '';添加到C:/pdcomment.txt文件中。
' 在补充comment完毕后,便于在数据库中执行
'******************************************************************************
OptionExplicit
ValidationMode = True
InteractiveMode = im_Batch
Dimsystem, file
Setsystem = CreateObject( "Scripting.FileSystemObject" )
DimForReading, ForWriting, ForAppending '打开文件选项
ForReading = 1 ' 只读
ForWriting = 2 ' 可写
ForAppending = 8 ' 可写并追加
'打开文本文件
Setfile = system.OpenTextFile( "C:/pdcomment.txt" , ForWriting, true)
'判断当前model是否物理数据模型
Dimmdl
Setmdl = ActiveModel
If(mdl Is Nothing ) Then
MsgBox"处理对象无模型"
ElseIfNot mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox"当前模型不是物理数据模型"
Else
ProcessFolder mdl,file
EndIf
file.Close
'******************************************************************************
Privatesub ProcessFolder(folder,file)
Dimi,j,k
i=0:j=0:k=0
'列数组,记录字段里不重复的comment
DimColumnComment()
DimColumnCommentNumber()
ReDimPreserve ColumnComment(i)
ReDimPreserve ColumnCommentNumber(i)
Dimtbl '当前表
Dimcol '当前字段
dim curComment '当前字段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 = 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.name = curComment & cstr(ColumnCommentNumber(k))
else
col.name = curComment
'ColumnComment(0)、ColumnCommentNumber(0)永远为空
'将相异的comment记录添加到数组中
i = i + 1
ReDimPreserve ColumnComment(i)
ReDimPreserve 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)为空,可以保留
ReDimPreserve ColumnComment(0)
ReDimPreserve ColumnCommentNumber(0)
i=0:j=0:k=0
next
Dimview '当前视图
for each view in folder.Views
if not view.isShortcut then
'可以在这里显示view的comment
'view.name = view.comment
end if
next
'对子目录进行递归
Dimsubpackage 'folder
ForEach subpackage In folder.Packages
if not subpackage.IsShortcut then
ProcessFolder subpackage , file
end if
Next
end sub

四、将name列值复制到comment列

运行脚本 Tools->Execute Commands->Edit/Run Scripts(Ctrl Shift X)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'把pd中那么name想自动添加到comment里面
'如果comment为空,则填入name;如果不为空,则保留不变,这样可以避免已有的注释丢失.
OptionExplicit
ValidationMode = True
InteractiveMode = im_Batch
Dimmdl ' the current model
' get the current active model
Setmdl = ActiveModel
If(mdl Is Nothing ) Then
MsgBox"There is no current Model "
ElseIfNot mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox"The current model is not an Physical Data model. "
Else
ProcessFolder mdl
EndIf
' This routine copy name into comment for each table, each column and each view
' of the current folder
Privatesub ProcessFolder(folder)
DimTab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
if trim(tab.comment)= "" then '如果有表的注释,则不改变它.如果没有表注释.则把name添加到注释里面.
tab.comment = tab.name
end if
Dimcol ' running column
for each col in tab.columns
if trim(col.comment)= "" then '如果col的comment为空,则填入name,如果已有注释,则不添加;这样可以避免已有注释丢失.
col.comment= col.name
end if
next
end if
next
Dimview 'running view
for each view in folder.Views
if not view.isShortcut and trim(view.comment)= "" then
view.comment = view.name
end if
next
' go into the sub-packages
Dimf ' running folder
ForEach f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub

参考:

1、PowerDesigner中Table视图同时显示Code和Namehttp://blog.csdn.net/downmoon/article/details/8108968

2、PowerDesigner Name/Code自动调整(转)http://hi.baidu.com/jonik/item/7d39588c3dda708e4514cf76

3、在PowerDesigner的PDM图形窗口中显示数据列的中文注释http://blog.csdn.net/zengzhe/article/details/974205

4、powerDesigner 把name项添加到注释(comment),完美方案!http://www.cnblogs.com/dukey/archive/2010/01/20/dukey.html

- by 一个农夫 -

--
文章信息
http://www.cnblogs.com/afarmer/archive/2012/11/05/2755327.html

0 0
原创粉丝点击