本文转自:http://www.cnblogs.com/afarmer/archive/2012/11/05/2755327.html
PowerDesigner多用来进行数据库模型设计,具有SQL语句自动生成等功能。当然,也有不少缺点,比如团队分享。
一、设置PowerDesigner模型视图中数据表显示列
1、Tools-Display Preference…
2、窗口左边Category中General Settings下选择Table
3、窗口右边Advanced…
4、窗口左边选择Columns
5、窗口右边List columns中,选择要显示的列

二、设置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完毕后,便于在数据库中执行 '******************************************************************************Option Explicit ValidationMode = 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 = ActiveModel If (mdl Is Nothing) Then MsgBox "处理对象无模型"ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "当前模型不是物理数据模型"Else ProcessFolder mdl,file End 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.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 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=0nextDim view '当前视图for each view in folder.Views if not view.isShortcut then '可以在这里显示view的comment 'view.name = view.comment end if next'对子目录进行递归Dim subpackage 'folderFor Each subpackage In folder.Packages if not subpackage.IsShortcut then ProcessFolder subpackage , file end if Nextend 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;如果不为空,则保留不变,这样可以避免已有的注释丢失.Option Explicit ValidationMode = TrueInteractiveMode = im_Batch Dim mdl ' the current model ' get the current active model Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "There is no current Model "ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "The current model is not an Physical Data model. "Else ProcessFolder mdl End If' This routine copy name into comment for each table, each column and each view ' of the current folder Private sub ProcessFolder(folder) Dim Tab '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 Dim col ' 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 Dim view '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 Dim f ' running folder For Each 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