分享转载:https://blog.csdn.net/u010216641/article/details/48712503?utm_source=blogxgwz1
PowerDesigner表结构和字段大小写转换
操作步骤:
1)进入PowerDesigner,打开一个PDM,在菜单栏找到:Tools – Excute Commands – Edit/Run Script,然后打开name2comment.vbs脚本;
2)或者直接按Ctrl+Shift+X调出脚本执行窗口,输入name2content.vbs脚本
执行代码如下(name2comment.vbs):
1)name中文复制到comment中文
Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' 当前模型 ' 获取当前模型 Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "没有打开一个模型" ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "当前模型不是一个PDM" Else '调用处理程序 ProcessFolder mdl End If '调用的处理程序 Private sub ProcessFolder(folder) Dim Tab '要处理的表 for each Tab in folder.Tables ' if not Tab.isShortcut then ' Tab.code = tab.name '表名处理,前边添加前缀,字母小写 Tab.name= UCase(Tab.name) Tab.code= UCase(Tab.code) tab.comment = tab.name Dim col ' 要处理的列 for each col in Tab.columns '列名称和code全部小写,大写诗UCase col.code= UCase(col.code) col.name= UCase(col.name)
'列name复制到comment的' col.comment = col.name next 'end if next ' 处理视图 ' Dim view 'running view ' for each view in folder.Views ' if not view.isShortcut then ' view.code = view.name ' end if ' next ' 递归进入 sub-packages Dim f ' sub folder For Each f In folder.Packages if not f.IsShortcut then ProcessFolder f end if Next end sub
2)comment转name中文
Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' 当前模型 ' 获取当前模型 Set mdl = ActiveModel If (mdl Is Nothing) Then MsgBox "没有打开一个模型" ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then MsgBox "当前模型不是一个PDM" Else '调用处理程序 ProcessFolder mdl End If '调用的处理程序 Private sub ProcessFolder(folder) Dim Tab '要处理的表 for each Tab in folder.Tables ' if not Tab.isShortcut then ' Tab.code = tab.name '表名处理,前边添加前缀,字母小写 Tab.name= UCase(Tab.name) Tab.code= UCase(Tab.code) tab.comment = tab.name Dim col ' 要处理的列 for each col in Tab.columns '列名称和code全部小写,大写诗UCase col.code= UCase(col.code) col.name= UCase(col.name)
'列名comment复制到name上' col.name = col.commentnext 'end if next ' 处理视图 ' Dim view 'running view ' for each view in folder.Views ' if not view.isShortcut then ' view.code = view.name ' end if ' next ' 递归进入 sub-packages Dim f ' sub folder For Each f In folder.Packages if not f.IsShortcut then ProcessFolder f end if Next end sub