• PowerDesigner中使用vbscript访问对象进行批量操作


    项目中想把PD建模的数据库中的Name字段全部在Comment里也填写一份,又不想一个表一个表的复制粘贴,所以在网上查了点偷懒省事的方法,原来可以利用VBScript脚本控制PD中的对象进行一些批量操作。

    首先是启动你要修改的PD文件,然后双击你要修改的那张图,激活它,注意是图,而不是Tables下的表。然后点击菜单“Tools->Execute Commands -> Edit/Run Script...",或者快捷键(Ctrl+Shift+X)

    然后把脚本粘贴进去,运行就可以了。脚本如下:

              dim   sName  
              for   each   table   in   ActiveModel.tables  
                    for   each   column   in   table.columns  
                            sComm   =   column.GetExtendedAttribute("Comment")       'comment的内容  
                            sName   =   column.GetExtendedAttribute("Name")           'name的内容  
                            'if   sComm   <>   sName   then  
                                column.comment   =   column.comment + column.name  
                            'end   if  
                    next  
              next

    大家可以根据自己的需要随意修改。有特殊需求的可以查它的脚本帮助文档。

    以下是从网上找到的一些参考资料:

    Vbscript脚本辅助Power Designer模型设计

     

    Power Designer是数据建模中一个比较常用的工具,比较擅长大规模的E-R模型的设计。
    对于一些批量操作,可以通过vbscript脚本进行。
    用法:打开物理模型,点击菜单“Tools->Execute Commands -> Edit/Run Script...",或者快捷键(Ctrl+Shift+X)。
    下面脚本是一个将模型中的表名、字段名均改成大写的一个简易脚本。在Power Designer 9.5中通过运行。
    vbscript,其实我不会用,所以我会选择一个比较复杂的例子,这个例子很简单。
    至于vbscript,可以去网上看看那些函数以及结构的用法,用起来也很简单。
    关于Power Designer中用到的一些固定属性或者实体,可以参照Power Designer的帮助,可以查到。

    '*****************************************************************************
    '文件:powerdesigner.ucase.VBs
    '版本:1.0
    '功能:遍历物理模型中的所有表,将表名、表代码、字段名、字段代码全部由小写改成大写;
    ' 并将序列的名和代码由小写改成大写。
    '用法:打开物理模型,运行本脚本(Ctrl+Shift+X)
    '备注:
    '*****************************************************************************
    dim model 'current model
    set model = ActiveModel

    If (model Is Nothing) Then
    MsgBox "There is no current Model"
    ElseIf Not model.IsKindOf(PdPDM.cls_Model) Then
    MsgBox "The current model is not an Physical Data model."
    Else
    ProcessTables model
    ProcessSequences model
    End If

    '*****************************************************************************
    '函数:ProcessSequences
    '功能:递归遍历所有的序列
    '*****************************************************************************
    sub ProcessSequences(folder)
    '处理模型中的序列:小写改大写
    dim sequence
    for each sequence in folder.sequences
    sequence.name = UCase(sequence.name)
    sequence.code = UCase(sequence.code)
    next
    end sub

    '*****************************************************************************
    '函数:ProcessTables
    '功能:递归遍历所有的表
    '*****************************************************************************
    sub ProcessTables(folder)
    '处理模型中的表
    dim table
    for each table in folder.tables
    if not table.IsShortCut then
    ProcessTable table
    end if
    next
    '对子目录进行递归
    dim subFolder
    for each subFolder in folder.Packages
    ProcessTables subFolder
    next
    end sub

    '*****************************************************************************
    '函数:ProcessTable
    '功能:遍历指定table的所有字段,将字段名由小写改成大写,
    ' 字段代码由小写改成大写
    ' 表名由小写改成大写
    '*****************************************************************************
    sub ProcessTable(table)
    dim col
    for each col in table.Columns
    '将字段名由小写改成大写
    col.code = UCase(col.code)
    col.name = UCase(col.name)
    next
    table.name = UCase(table.name)
    table.code = UCase(table.code)
    end sub

    千人.NET交流群:18362376,因为有你,代码变得更简单,加群请输入cnblogs
  • 相关阅读:
    白话插件框架原理
    C# 可扩展编程MEF学习
    C#依赖注入实例
    迷你版AOP框架
    AOP 面向切面编程
    C++ 面向对象
    c++ 的异常处理
    C++ 模板 template
    c 二维数组动态分配和释放
    C++ 指针二维数组, C++二维指针数组笔记
  • 原文地址:https://www.cnblogs.com/kingkoo/p/1308882.html
Copyright © 2020-2023  润新知