PowerDesigner里面将表中name列值复制到comment列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jadyer/article/details/46350299

完整版见https://jadyer.github.io/2015/06/03/powerdesigner-copy-name-to-comment/


/**
 * PowerDesigner里面将表中name列值复制到comment列
 * @see --------------------------------------------------------------------------------------------------------------------
 * @see pd中的pdm默认生成sql时,字段是没有注释的..想要注释的话,有2个方法
 * @see 1.也是推荐的
 * @see   pdm中双击打开一个Table,到Columns选项卡中,按快捷键Ctrl+U,找到Comment并勾选即可
 * @see   而且该操作设置一次就行了,以后在新的Table中也会自动出现Comment
 * @see   设置完毕后,在添加表字段时一并写上注释,这样生成的sql中字段就会有注释了
 * @see 2.执行vbs脚本
 * @see   相较第一种方法,该方法缺点是每次生成sql前,都要执行一遍这个脚本
 * @see   执行方式为Tools-->Execute Commands-->Edit/Run Scripts,或者直接快捷键Ctrl+Shift+X
 * @see   将下面的脚本拷进去执行一遍,也可以保存为name2comment.vbs(下一次再执行的话,就可以Ctrl+O再选择name2comment.vbs即可)
 * @see --------------------------------------------------------------------------------------------------------------------
 * @create 2015-6-3 下午7:53:38
 * @author 玄玉<http://blog.csdn.net/jadyer>
 */
' 如果comment为空,则填入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 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

猜你喜欢

转载自blog.csdn.net/jadyer/article/details/46350299