首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

pdm中高速创建表的一个简单示例

2012-10-09 
pdm中快速创建表的一个简单示例在一个项目中总会有使用pdm创建表的时候,创建几十张甚至上百张表都要手工一

pdm中快速创建表的一个简单示例

在一个项目中总会有使用pdm创建表的时候,创建几十张甚至上百张表都要手工一个一个创建(按照word文档里描述的表),那是非常繁琐的事。现这里提供一个简单快速创建表的方法,无需手工创建。首先需要构建一个文本文件,文件内容格式可以自己按照要求定义,模板创建好后,可直接将word中的那些表结构拷贝到这个txt中,按模板格式做修改。然后再根据此模板,写出对应vb建表脚本,再将此脚本在pdm中执行即可自动创建所需的表。

如word文档里描述有两张表test1、test2。此两张表都有三个字段且都是varchar2类型,前两个字段都为主键,且三个字段都不为空。在pdm中自动创建此两张表步骤如下:

1、创建模板如下tt.txt:

(格式为每个表描述前都以talbe begin为开头一行,然后下一行为表名、表名代码、表描述,再接着字段描述:字段名、

? 字段代码、类型、是否主键、是否为空、字段描述。信息之间都以Tab分割)

将word里描述的表结构按照复制到txt中,最终形成如下格式:

talbe begin
表1 table1 表说明
字段1 test1 VARCHAR2(32) true true 说明
字段2 test2 VARCHAR2(32) true true 说明
字段3 test3 VARCHAR2(256) false true 说明
talbe begin
表2 test2 表说明
字段1 test1 VARCHAR2(32) true true 说明
字段2 test2 VARCHAR2(32) true true 说明
字段3 test3 VARCHAR2(256) false true 说明

2、按照上述模板写的vb脚本如下:

Dim system, file
Set system = CreateObject("Scripting.FileSystemObject") '创建文件对象


Dim ForReading, ForWriting, ForAppending
dim str
dim tittle
dim first
ForReading?? = 1 ' 设置文件只读
ForWriting?? = 2 ' 设置文件写入
ForAppending = 8 ' 设置文件追加

'-----------------------------------------
' 主要程序
'-----------------------------------------

Set file = system.OpenTextFile("D:\table.txt", ForReading)'打开文本文档
Dim noLine
Dim Tab? '定义一个表,vbscript中变量没有那么严格的类型,但此变量将来将用来表示table
ValidationMode = True
Dim mdl ' 定义当前激活的模型,也就是mdl
Dim Col
dim dm, dmstr
Dim SSS
Dim isNewTable
dim tableCreateFlag
dim tableHeadFlag
dim tableContentFlag
dim exitFlag
Set mdl = ActiveModel '获取当前激活模型
tableCreateFlag = false
tableHeadFlag = false
tableContentFlag = false
Do While file.AtEndOfStream <> True '循环读取文档的每一行
?? SSS = file.ReadLine
?? if SSS ="talbe begin" then
????? tableCreateFlag = true
????? tableHeadFlag = true
?? else if tableCreateFlag=true then
??????????????? if tableHeadFlag=true then
??????????????????? title=split(SSS)
??????????????????? exitFlag = isExitTable(mdl,title(0))
???????????????????? if exitflag=true then exit do
??????????????????? set tab = mdl.Tables.CreateNew '创建表,并设? 置表属性
???????????????????? tab.name=title(0) 'name
???????????????????? tab.code=title(1) 'code
???????????????????? tab.comment=title(2) 'comment
???????????????????? tableHeadFlag = false
???????????????????? tableContentFlag = true
???????????????? else if tableContentFlag=true then
???????????????????????????? set col=tab.Columns.CreateNew '创建一行字段
???????????????????????????? str = split(SSS)
???????????????????????????? col.name = str(0) '依次设置属性,同表的属性,字段熟悉也可以设置更多,根据实际情况
???????????????????????????? col.Code= str(1)
??????????????????????????? col.datatype=str(2)
??????????????????????????? col.Primary=str(3)
??????????????????????????? if col.Primary=false then col.Mandatory=str(4)
??????????????????????????? col.Comment=str(5)
??????????????????????? end if
??????????????? end if
?????????? end if
????? end if
Loop
file.Close

private function isExitTable(model,tableName)
? dim tables
? dim table
? dim flag
? set tables = model.Tables
? flag = false
? for each table in tables
????? if table.name=tableName then
???????? flag = true
???????? msgbox? "该模型中已存在此表"+tableName
???????? exit for
?????? end if
?? next
?? isExitTable = flag
end function

?

3、打开pdm,将此脚本在pdm执行,执行后即可在pdm当前项目下生成这两张表。

热点排行