'******************************************************************************函數
'* File: pdm_addcolumn_vbs.txtcode
'* Purpose: 批量新增列,經常使用於增長公共字段。遞歸
'* Title: Add Columnci
'* Category: Add Columnit
'* Version: 1.0io
'* Company: ffcs. table
'******************************************************************************變量
Option Explicitdate
Dim mdl ' the current model model
Set mdl = ActiveModel
Dim Tab 'running table
Dim col 'running table col
Dim col_status_cd, col_create_date,col_status_date,col_update_date,col_sharding_id,col_create_staff,col_update_staff,col_tenant_id
' 定義列變量
ProcessFolder mdl '調用ProcessFolder函數
ProcessTables mdl '調用ProcessTables函數
'--------------------------------------------------------------------------------
'功能函數 針對pdm下有多個package的表,增長列操做。
'--------------------------------------------------------------------------------
Private Sub ProcessFolder(folder)
Dim ent '定義實體
Dim pack '定義實體
for each pack in folder.packages
for each Tab in pack.tables
if not Tab.isShortcut then
' 新增列前,刪除已經存在的列,防止出現衝突
for each col in Tab.Columns
'根據列code屬性,刪除列
if instr(col.code,"status_cd")>0 then col.Delete() end if
if instr(col.code,"create_date")>0 then col.Delete() end if
if instr(col.code,"status_date")>0 then col.Delete() end if
if instr(col.code,"update_date")>0 then col.Delete() end if
if instr(col.code,"sharding_id")>0 then col.Delete() end if
if instr(col.code,"create_staff")>0 then col.Delete() end if
if instr(col.code,"update_staff")>0 then col.Delete() end if
if instr(col.code,"tenant_id")>0 then col.Delete() end if
next
'新增列
Set col_status_cd = Tab.Columns.CreateNew
set col_create_date = Tab.Columns.CreateNew
set col_status_date = Tab.Columns.CreateNew
set col_update_date = Tab.Columns.CreateNew
set col_sharding_id = Tab.Columns.CreateNew
set col_create_staff = Tab.Columns.CreateNew
set col_update_staff = Tab.Columns.CreateNew
set col_tenant_id = Tab.Columns.CreateNew
'設置新增列的屬性,如name,code,datatype等
col_status_cd.name = "狀態"
col_status_cd.code = "status_cd"
col_status_cd.DataType = "varchar(6)"
col_status_cd.comment ="狀態"
col_create_date.name = "建立時間"
col_create_date.code = "create_date"
col_create_date.DataType = "datetime"
col_create_date.comment ="描述記錄建立的時間"
col_status_date.name = "狀態時間"
col_status_date.code = "status_date"
col_status_date.DataType = "datetime"
col_status_date.comment ="描述記錄被應用程序更新的時間"
col_update_date.name = "更新時間"
col_update_date.code = "update_date"
col_update_date.DataType = "datetime"
col_update_date.comment ="描述記錄物理更新的時間"
col_sharding_id.name = "分片鍵"
col_sharding_id.code = "sharding_id"
col_sharding_id.DataType = "bigint(12)"
col_sharding_id.comment ="描述記錄的分片鍵"
col_create_staff.name = "建立員工"
col_create_staff.code = "create_staff"
col_create_staff.DataType = "bigint(12)"
col_create_staff.comment ="描述建立記錄的員工標識"
col_update_staff.name = "更新員工"
col_update_staff.code = "update_staff"
col_update_staff.DataType = "bigint(12)"
col_update_staff.comment ="描述更新記錄的員工標識"
col_tenant_id.name = "租戶標識"
col_tenant_id.code = "tenant_id"
col_tenant_id.DataType = "bigint(12)"
col_tenant_id.comment ="描述租戶標識"
end if
next
next
'對子包進行遞歸,若是不使用遞歸只能取到第一個模型圖內的表
dim subfolder
for each subfolder in folder.Packages
ProcessFolder subfolder
next
End Sub
'--------------------------------------------------------------------------------
'功能函數 針對直接掛在pdm下的表,增長列操做。
'--------------------------------------------------------------------------------
Private Sub ProcessTables(folder)
for each Tab in folder.Tables
' 刪除已經存在的列
for each col in Tab.Columns
if instr(col.code,"status_cd")>0 then col.Delete() end if
if instr(col.code,"create_date")>0 then col.Delete() end if
if instr(col.code,"status_date")>0 then col.Delete() end if
if instr(col.code,"update_date")>0 then col.Delete() end if
if instr(col.code,"sharding_id")>0 then col.Delete() end if
if instr(col.code,"create_staff")>0 then col.Delete() end if
if instr(col.code,"update_staff")>0 then col.Delete() end if
if instr(col.code,"tenant_id")>0 then col.Delete() end if
next
'新增列
Set col_status_cd = Tab.Columns.CreateNew
set col_create_date = Tab.Columns.CreateNew
set col_status_date = Tab.Columns.CreateNew
set col_update_date = Tab.Columns.CreateNew
set col_sharding_id = Tab.Columns.CreateNew
set col_create_staff = Tab.Columns.CreateNew
set col_update_staff = Tab.Columns.CreateNew
set col_tenant_id = Tab.Columns.CreateNew
col_status_cd.name = "狀態"
col_status_cd.code = "status_cd"
col_status_cd.DataType = "varchar(6)"
col_status_cd.comment ="狀態"
col_create_date.name = "建立時間"
col_create_date.code = "create_date"
col_create_date.DataType = "datetime"
col_create_date.comment ="描述記錄建立的時間"
col_status_date.name = "狀態時間"
col_status_date.code = "status_date"
col_status_date.DataType = "datetime"
col_status_date.comment ="描述記錄被應用程序更新的時間"
col_update_date.name = "更新時間"
col_update_date.code = "update_date"
col_update_date.DataType = "datetime"
col_update_date.comment ="描述記錄物理更新的時間"
col_sharding_id.name = "分片鍵"
col_sharding_id.code = "sharding_id"
col_sharding_id.DataType = "bigint(12)"
col_sharding_id.comment ="描述記錄的分片鍵"
col_create_staff.name = "建立員工"
col_create_staff.code = "create_staff"
col_create_staff.DataType = "bigint(12)"
col_create_staff.comment ="描述建立記錄的員工標識"
col_update_staff.name = "更新員工"
col_update_staff.code = "update_staff"
col_update_staff.DataType = "bigint(12)"
col_update_staff.comment ="描述更新記錄的員工標識"
col_tenant_id.name = "租戶標識"
col_tenant_id.code = "tenant_id"
col_tenant_id.DataType = "bigint(12)"
col_tenant_id.comment ="描述租戶標識"
next
End Sub