PDM/CDM中进行搜索

Option   Explicit

ValidationMode   =   True

InteractiveMode =   im_Batch

Dim   mdl   '当前model

'获取当前活动model

Set   mdl   =   ActiveModel

dim isCdm

isCdm=0

If   (mdl   Is   Nothing)   Then

         MsgBox   "There   is   no   current   Model "

ElseIf   mdl.IsKindOf(PdCDM.cls_Model)  or mdl.IsKindOf(PdPDM.cls_Model)   Then

            If   mdl.IsKindOf(PdCDM.cls_Model) Then

                     isCdm=1

            end if        

            If   mdl.IsKindOf(PdPDM.cls_Model)  Then

                     isCdm=0

            end if

            dim search

            search= inputbox("输入要在PDM/CDM查找的字符,如要进行模糊查找,以%开始")

            search=lcase(search)

            ProcessFolder   mdl,isCdm

                     

Else

         MsgBox "文件类型不支持"

End   If

Private   sub   ProcessFolder(folder,isCdm)

dim tab

dim col

         dim collect        

         if isCdm=0 then

         set collect=folder.tables

         else

         set collect=folder.Entities

         end if

        

         for   each   tab   in  collect

            if   not   tab.isShortcut   then         

                        if  lcase(tab.code)=search or (mid(search,1,1)="%" and instr(lcase(tab.code),mid(search,2)) >0) then

                            output "[表]:  "+ folder.parent.name+"--->"+folder.name+"--->"+tab.name

                        end  if

      

                        dim subcollect

                         if isCdm=1 then      

                              set  subcollect=tab.Attributes                 

                          else      

                              set subcollect=tab.columns

                          end if                  

                          for each col in subcollect

                          if lcase(col.code)=search or (mid(search,1,1)="%" and instr(lcase(col.code),mid(search,2)) >0)  then

                               output "[字段]:  "+folder.parent.name+"--->"+folder.name+"--->"+tab.name+"--->"+col.name

                         end if

                         next

              end if

         next

       

        '递归遍历子文件夹

         Dim   f   '子文件夹

         For   Each   f   In   folder.Packages

               if   not   f.IsShortcut   then

                     ProcessFolder   f, isCdm

               end   if

         Next

   end   sub

  

原文地址:https://www.cnblogs.com/mol1995/p/7202232.html