PowerDesigner在操作上有很多的不便性,但在库的设计及SQL代码生成上还是很强大的。
由于自己写的代码生成器能够根据comment生成相关字段注释,所以,commnet还是非常重要的。以前是通过手动一条条的从Name得到到comment中去,字段比较少倒是没什么感觉,这次项目很多表都是在一百多个字段以上,所以,有点吃力。于是,在网上找了点资料,然后自己稍微加工了下,脚本如下:
- Option Explicit
- ValidationMode = True
- InteractiveMode = 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 code 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
- Dim col 'running column
- for each col in tab.columns
- If (col.comment="") Then '已存在的comment则不更新
- col.comment= col.name
- end if
- next
- end if
- next
- Dim view 'running view
- for each view in folder.Views
- if not view.isShortcut 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
这段代码也是从网上找的。主要是加了个如果comment的为空的情况下则从name复制,否则将不处理。
PowerDesigner里的脚本是VB写的。所以,如果对VB了解的话,还是可以编写很多东西的。
代码的使用,如下图:
在这里需要注意下,运行脚本时要先在PowerDesigner选中需要处理的PDM。