• 编写Powerdesigner脚本,快速生成数据库表


     

    PowerDesigner支持VBScript脚本,帮助生成数据库模型中的对象。具体功能入口在菜单Tools-->Execute Commands-->Edit/Run Script,下面是我写的一个快速生成数据库表的脚本,在我的项目实践中,因为有太多的表要从需求调研报告中提取出来,在PD中一个字段一个字段的输入实在太费劲了,就想了这个办法偷赖。代码如下:

    Option Explicit

    '-----------------------------------------------------------------------------
    ' Initialization
    '-----------------------------------------------------------------------------
    Dim system, file
    Set system = CreateObject("Scripting.FileSystemObject")

    ' Open mode constants...
    Dim ForReading, ForWriting, ForAppending
    ForReading   = 1 ' Open a file for reading only. You can't write to this file.
    ForWriting   = 2 ' Open a file for writing.
    ForAppending = 8 ' Open a file and write to the end of the file.

    '-----------------------------------------------------------------------------
    ' Main function
    '-----------------------------------------------------------------------------

    Set file = system.OpenTextFile("D:\table.txt", ForReading)
    Dim noLine
    Dim Tab  'table
    ValidationMode = True
    Dim mdl ' the current model
    Dim Col
    dim dm, dmstr
    Dim SSS
    Dim isNewTable
    ' get the current active model
    Set mdl = ActiveModel

       For each dm in mdl.domains
          If Not dm.isShortcut Then
             If dm.code = "dm_pk" Then
                Exit For
             End If
          End If
       Next  
       For each dmstr in mdl.domains
          If Not dmstr.isShortcut Then
             If dmstr.code = "dm_string" Then
                Exit For
             End If
          End If
       Next  


    set Tab = mdl.Tables.CreateNew
    set Col=tab.Columns.CreateNew
    Col.name = "ID"
    Col.Code = "ID"
    col.domain=dm
    Col.Primary = True
    isNewTable = True
    Do While file.AtEndOfStream <> True
       SSS = file.ReadLine
       if isNewTable = True then
         if SSS <> "" then
           isNewTable = False
           tab.name = SSS
         end if
       elseif SSS = "" then
         set Tab = mdl.Tables.CreateNew
         set Col=tab.Columns.CreateNew
         Col.name = "ID"
         Col.Code = "ID"
         col.domain=dm
         Col.Primary = True
         isNewTable = True
       else 
         set Col=tab.Columns.CreateNew
         Col.name = SSS
         col.domain=dmstr
       end if 
    Loop
    file.Close

    这样我只要将所需的实段名和表名放在文本文件中,不同的表以空行分开,就可以自动增加表了。

    不过生成的字段名都是Column1...ColumnN,然后再一个一个改吧。

    antony
    :antony1029@163.com
    :http://antony1029.cnblogs.com
  • 相关阅读:
    CodeForces 796D bfs
    2017 UESTC Training for Graph Theory
    CodeForces 776D 2-SAT
    CodeForces 776E 数学规律,欧拉
    希尔排序
    怎么把大数据的二维数组转化为一维数组????
    关于while((c=getchar()))的一些应用与思考
    uva 1586 Molar mass(Uva-1586)
    uva 1585 Score(Uva-1585)
    uva1584 Circular Sequence(Uva-1584)
  • 原文地址:https://www.cnblogs.com/antony1029/p/331303.html
Copyright © 2020-2023  润新知