• 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
    

      

  • 相关阅读:
    1366. Rank Teams by Votes
    1361. Validate Binary Tree Nodes
    1359. Count All Valid Pickup and Delivery Options
    1358. Number of Substrings Containing All Three Characters
    JQuery跳出each循环的方法(包含数组遍历)【转】
    JS数组转字符串(3种方法)【转】
    js的15种循环遍历,你掌握了几种【转】
    js/jQuery获取data-*属性值【转】
    Thinkphp volist 多重循环原样输出数组key值的使用总结【转】
    php 循环【转】
  • 原文地址:https://www.cnblogs.com/smallidea/p/4613785.html
Copyright © 2020-2023  润新知