PowerDesigner中遍历物理模型中的所有表,检查表代码、字段代码
'****************************************************************************** '* File: comment2name.vbs '* Author: Jason Chen '* Created: 2014 '* Modified: 2017/6 '* Version: 2.0 '* Comment: 把表中的描述信息复制为Name,增强可读性 '* Used: 打开物理模型,运行本脚本(Ctrl+Shift+X) '* Comment: '****************************************************************************** Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl 'the current model '获取当前活动的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 Private sub ProcessFolder(folder) On Error Resume Next '遍历表 Dim Tab for each Tab in folder.tables if not tab.isShortcut then tab.name = tab.code & " " & getName(tab.comment) Dim col ' running column for each col in tab.columns if col.comment="" then else col.name = getName(col.comment) end if next end if next '遍历视图 Dim view for each view in folder.Views if not view.isShortcut then view.name = getName(view.comment) end if next '遍历包 Dim f 'running folder For Each f In folder.Packages if not f.IsShortcut then ProcessFolder f end if Next end sub '获取名称 Function getName(colComment) dim index dim indexArray(10) '排除掉"X"后的文本 indexArray(0) = InStr(colComment, ":") indexArray(1) = InStr(colComment, vbcrlf) indexArray(2) = InStr(colComment, ":") indexArray(3) = InStr(colComment, "(") indexArray(4) = InStr(colComment, "【") indexArray(5) = InStr(colComment, "[") indexArray(6) = InStr(colComment, "(") indexArray(7) = InStr(colComment, ",") indexArray(8) = InStr(colComment, " ") indexArray(9) = InStr(colComment, ":") index = getArrMinValueIndex(indexArray) if index > 0 then Output index getName = Mid(colComment, 1, index-1) else getName = colComment end if end Function '查找最近一个匹配字符的位置 Function getArrMinValueIndex(ByVal arr) Dim ix, itemMin itemMin = 0 For ix = 1 To UBound(arr) If arr(ix) > 0 and (itemMin = 0 or itemMin > arr(ix)) Then itemMin = arr(ix) End If Next getArrMinValueIndex = itemMin End Function
欢迎在评论区留下你宝贵的意见,不论好坏都是我前进的动力(cnblogs 排名提升)!
如果喜欢,记得点赞、推荐、关注、收藏、转发 ... ;)