通过编写PowerDesigner脚本功能批量修改属性

注:本例中的格式,VBS格式固定(不像JAVA样不叫自由),如if……then+回车+语句+回车+end if

 

http://www.cnblogs.com/liubiqu/archive/2008/04/24/1170108.html

 

在设计的时候经常会碰到注释和Name不统一,需要手工复制的问题。其实PD提供了很好的方法可以批量进行调整。

我写了一个递归的修改方法,如下所示:可做为参考。
 1  ' ******************************************************************************
 2  ' * File:     CommentVsName.vbs
 3  ' * Purpose:  把字段及表注释为空的用name来代替
 4  ' * Title:    保证每个字段及表都有注释
 5  ' * Category: 注释
 6  ' * Author:   lbq(buddy) liubiqu@sina.com
 7  ' * Created:  2008年3月24日
 8  ' * Modified: 2008年4月24日
 9  ' * Use:      打开PDM,运行本脚本(Ctrl+Shift+X)
10  ' * Version:  1.0
11  ' * Comment:  遍历PDM中的所有包,把数据表及字段的注释为空的部分用Name来替换
12  ' * Copyright (C) 2008 topsthink Inc.
13  ' ******************************************************************************
14 
15  Option   Explicit
16  ValidationMode  =   True
17  InteractiveMode  =  im_Abort
18 
19 
20  Dim  mdl  '  定义当前的模型
21 
22  ' 通过全局参数获得当前的模型
23  Set  mdl  =  ActiveModel
24  If  (mdl  Is   Nothing Then
25      MsgBox   " 没有选择模型,请选择一个模型并打开. "
26  ElseIf   Not  mdl.IsKindOf(PdPDM.cls_Model)  Then
27      MsgBox   " 当前选择的不是一个物理模型(PDM). "
28  Else
29     ProcessFolder mdl
30  End   If
31 
32 
33  ' --------------------------------------------------------------------------------
34  ' 功能函数
35  ' --------------------------------------------------------------------------------
36  Private   Sub  ProcessFolder(folder)
37      Dim  Tab  ' 定义数据表对象
38      for   each  Tab in folder.tables
39         if   not  tab.isShortcut  then
40            if  tab.comment  =   ""   then  tab.comment  =  tab.name  ' 进行判断并赋值
41            Dim  col  ' 定义列对象
42            for   each  col in tab.columns
43               if  col.comment  =   ""   then  col.comment  =  col.name  ' 进行判断并赋值
44            next
45         end   if
46      next
47     
48      ' 对子包进行递归,如果不使用递归只能取到第一个模型图内的表
49      dim  subfolder
50      for   each  subfolder in folder.Packages
51        ProcessFolder subfolder
52      next
53 
54      ' msgbox "完成把comment为空的内容用name代替"
55  End Sub


[2008年5月1日]如果需要对name 进行赋值的时候可能会出现同名的错误,所以可以利用 VBS中的 On Error Resume Next这个语句进行跳过。如
 1 Private   Sub  ProcessFolder(folder)
 2     Dim  Tab  ' 定义数据表对象
 3     for   each  Tab in folder.tables
 4        if   not  tab.isShortcut  then
 5           if  tab.comment  <>   ""   then  tab.name  =  tab.comment & " ( "   & tab.name & " ) "   ' 进行判断并赋值
 6           Dim  col  ' 定义列对象
 7           for   each  col in tab.columns
 8              if  col.comment  <>   ""   then  
 9                 On   Error   Resume   Next   ' 增加此句
10                col.name  =  col.comment  ' 进行判断并赋值
11              end   if
12           next
13        end   if
14     next

---------------------回复----------------------- 大家可以参考PD里面有一个C:\Program Files\Sybase\PowerDesigner 9\VB Scripts目录下的脚本,这些都是一个实习的实例,不过要了解每个模型的对象及属性还是要去看一下PD的帮助(直接在写脚本的时候点help就可以看到了)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值