[转]PowerDesigner Excel 导入表结构 表及字段信息批量修改 批量删除 批量添加

摘要:
接下来,我们使用VBScript脚本实现Excel导入表字段、批量修改表前缀、批量添加表字段和批量添加表域。


原文链接:https://blog.csdn.net/sinu88/article/details/85077008

这几天 使用了 PowerDesigner 来 整理表结构,分享下。

下面,我们 通过 VBScript脚本 实现了 excel导入表字段、批量修改表前缀、批量添加表字段、批量添加表字段。

执行脚本:
ctrl + shift + x 打开运行VBS 代码窗口,粘贴脚本后,运行


1.excel 导入 PowerDesigner


'开始
Option Explicit

Dim mdl ' the current model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no Active Model"
End If

Dim HaveExcel
Dim RQ
RQ = vbYes 'MsgBox("Is Excel Installed on your machine ?", vbYesNo + vbInformation, "Confirmation")
If RQ = vbYes Then
HaveExcel = True
' Open & Create Excel Document
Dim x1 '
Set x1 = CreateObject("Excel.Application")
x1.Workbooks.Open "E: emp123.xls" '指定 excel文档路径
x1.Workbooks(1).Worksheets("Sheet1").Activate '指定要打开的sheet名称
Else
HaveExcel = False
End If

a x1, mdl

sub a(x1, mdl)
dim rwIndex
dim tableName
dim colname
dim table
dim col
dim count

on error Resume Next

set table = mdl.Tables.CreateNew '创建一个 表实体
table.Name = "Sheet1" '指定 表名,如果在 Excel文档里有,也可以 .Cells(rwIndex, 3).Value 这样指定
table.Code = "Sheet1" '指定 表名
count = count + 1

For rwIndex = 2 To 1000 '指定要遍历的 Excel行标 由于第1行是 表头, 从第2行开始
With x1.Workbooks(1).Worksheets("Sheet1")
If .Cells(rwIndex, 1).Value = "" Then
Exit For
End If

set col = table.Columns.CreateNew '创建一列/字段
'MsgBox .Cells(rwIndex, 1).Value, vbOK + vbInformation, "列"
If .Cells(rwIndex, 1).Value = "" Then
col.Name = .Cells(rwIndex, 1).Value '指定列名
Else
col.Name = .Cells(rwIndex, 1).Value
End If
'MsgBox col.Name, vbOK + vbInformation, "列"
col.Comment = .Cells(rwIndex, 1).Value '指定列说明
col.Code = .Cells(rwIndex, 2).Value '指定列名
col.DataType = .Cells(rwIndex, 3).Value '指定列数据类型
If .Cells(rwIndex, 4).Value = "否" Then
col.Mandatory = true '指定列是否可空 true 为不可空
End If
If rwIndex = 2 Then
col.Primary = true '指定主键
End If
End With
Next
MsgBox "生成数据 表结构共计 " + CStr(count), vbOK + vbInformation, " 表"

Exit Sub
End sub

2.PowerDesigner 批量修改表前缀

Option Explicit
ValidationMode = True
InteractiveMode = im_Batch

Dim mdl 'the current model

'get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
Else
ProcessFolder mdl
End If

'This routine copy name into code for each table, each column
'of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
Dim NameStr , CodeStr
for each Tab in folder.tables
'修改 Tab.name 与 Tab,code
Tab.name = Replace( Tab.name , "OLD_" , "NEW_")
Tab.code = Replace( Tab.code , "OLD_" , "NEW_")
next
end sub

3.PowerDesigner 批量删除表字段

Option Explicit
ValidationMode = True
InteractiveMode = im_Batch

Dim mdl 'the current model

'get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model"
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model."
Else
ProcessFolder mdl
End If

'This routine copy name into code for each table, each column
'of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
Dim col 'running column
for each col in tab.columns

'删除公共字段字段 by Sinu

if instr(col.code,"CJR")<>0 then
col.Delete
end if

if instr(col.code,"CJSJ")<>0 then
col.Delete
end if

if instr(col.code,"XGR")<>0 then
col.Delete
end if

if instr(col.code,"XGSJ")<>0 then
col.Delete
end if

next
end if
next
MsgBox "success"

end sub

4.PowerDesigner 批量添加表字段


Option Explicit

Dim mdl ' the current model
Set mdl = ActiveModel
Dim Tab 'running table
Dim col_1
Dim col_2
Dim col_3
Dim col_4

' 定义属性变量
for each Tab in ActiveModel.Tables

Set col_1 = Tab.Columns.CreateNew
Set col_2 = Tab.Columns.CreateNew
Set col_3 = Tab.Columns.CreateNew
Set col_4 = Tab.Columns.CreateNew

'添加公共字段 by Sinu

col_1.name = "创建人"
col_1.code = "CJR"
col_1.DataType = "varchar(50)"
col_1.comment= "创建人"

col_2.name = "创建时间"
col_2.code = "CJSJ"
col_2.DataType = "datetime"
col_2.comment= "创建时间"

col_3.name = "修改人"
col_3.code = "XGR"
col_3.DataType = "varchar(50)"
col_3.comment= "修改人"

col_4.name = "修改时间"
col_4.code = "XGSJ"
col_4.DataType = "datetime"
col_4.comment= "修改时间"

next
MsgBox "success"

————————————————
版权声明:本文为CSDN博主「SinuLin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sinu88/article/details/85077008

免责声明:文章转载自《[转]PowerDesigner Excel 导入表结构 表及字段信息批量修改 批量删除 批量添加》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一步步实现微信自动抢红包react--pdf-lib给PDF添加水印兼容IE11下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

powerdesigner设置主键为自增字段,设置非主键为唯一键并作为表的外键

转自:https://www.cnblogs.com/CoffeeHome/archive/2014/06/04/3767501.html 这里powerdesigner连接的数据库是以mysql为例子,连接其他数据库时操作也基本类似 1、设置主键为自增字段 双击要设置的表,选择“Columns”标签,双击主键字段,在弹出的新窗口的General标签最下方...

PowerDesigner将PDM导出生成WORD文档

PowerDesigner将PDM导出生成WORD文档 环境 PowerDesigner15 1.点击Report Temlates 制作模板 2.如果没有模板,单击New图标创建。有直接双击进入。 3.在弹出的类型(Type)对话框中想选择PBM(Physical data Model),如果有中文汉化包则选择simolified Chinese(中...

powerdesigner Oracle.sql转mysql.sql

将要导入的库的所有表的表结构(不要表数据,只要表结构)导出成一个.sql文件。 在PowerDesinger里找到 File -->> Reverse Engineer --->> Database ;  在 弹出的“New Physcal Data Model”窗口界面,选择“share the DBMS def...

Powerdesigner逆向工程从sql server数据库生成pdm (转载)

第一步:打开"控制面板"中的"管理工具" 第二步:点击"管理工具"然后双击"数据源(odbc)"   第三步:打开之后,点击"添加" 第四步:选择"sqlserver" 点击"完成" 第五步:跟据自身的情况填写 说明: 名称和描述可以自己命名,服务器就是你的数据库地址(下图) 第六步:填写好登录名和密码 第七步:完成所有配置后,打开PowerD...

PowerDesigner中CDM和PDM如何定义外键关系

有A、B两张表(实体),各自有id作为主键,两表是一一对应关系。但略有不同: A表一条记录可以对应0或1条B表记录,B表一条记录必须对应唯一条A表记录。 这样的关系如何在CDM或PDM中定义? 在最后的表结构中,B表中需要自动生成A表id列作为外键。 在PDM中,这种关系叫“引用”,实现比较简单 1、如果B表中没有外键列,则直接使用工具reference,...

PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键

PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner 快捷工具栏 palette 不见了,怎么重新打开,找回来呢 上网搜索了一下”powerdesigner 图形工具栏”,找到了找回PowerDesigner工具...