You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nmWATI/Bin/Doc/iWTAI_DataStructure.vbs

111 lines
3.3 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

'******************************************************************************
'* File: excel2pdm.vbs
'* Purpose: 将在excel中设计的表导入到pdm文件
'* Category:
'* Version: 1.0
'* time : 2014-6-11
'* 因为喜欢在excel中做数据库表设计所以用该程序导入到pdm。
'* 该程序对联合主键联合唯一没有做很好的处理,需要导入后手工修改。
'*该程序参考了网络上其他人的代码但是这里是可以将sheet中所有的表一次导入。
'*
'* 所有的表设计都放在一个excel的一个sheet中每个表中间空一行表体都有表头说明如下
'* 再前面一行是表名和表的说明分别在A和C列。下面格式直接拷贝到excel中就可以看到空格是制表符。
'******************************************************************************
' Excel 格式如下
'icontract_master_t 文件头表
'列名 类型 键 非空 注释
'contract_m_id NUMBER 主键 N 主键
'******************************************************************************
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:\Run\mWTAI\Bin\Doc\iWTAI_DataStructure.xlsx"
x1.Workbooks(1).Worksheets("Table").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
dim abc
on error Resume Next
'--------------------------------
'下面是读取excel添加表实体属性
'--------------------------------
For rwIndex = 2 To 457 '指定要遍历的Excel行标 由于第2行是表头从第1行开始看你这个表设计多少行
With x1.Workbooks(1).Worksheets("Table")'需要循环的sheet名称
If .Cells(rwIndex,1).Value <> "" And .Cells(rwIndex,3).Value <> "" And .Cells(rwIndex,4).Value = "Table" Then
set table = mdl.Tables.CreateNew '创建一个表实体
table.Code = .Cells(rwIndex,3).Value'从excel中取得表名称和编码
table.Name = .Cells(rwIndex,1).Value'
table.Comment = .Cells(rwIndex,1).Value '指定列说明
count = count + 1
'MsgBox .Cells(rwIndex,1).Value + .Cells(rwIndex,3).Value + .Cells(rwIndex,4).Value, vbOK + vbInformation, "表"
Continue
End If
If .Cells(rwIndex,2).Value = "" Or .Cells(rwIndex,3).Value = "" Or (.Cells(rwIndex,1).Value = "序号" And .Cells(rwIndex,2).Value = "列名")Then
continue
Else
set col =table.Columns.CreateNew '创建一列/字段
col.Name = .Cells(rwIndex, 2).Value '指定列name
col.Code = .Cells(rwIndex, 3).Value '指定列code
col.DataType = .Cells(rwIndex, 4).Value '指定列数据类型
If.Cells(rwIndex, 5).Value <> "" Then'指定主键
col.Primary =true
End If
If.Cells(rwIndex, 8).Value = "Y" Then'指定列是否可空 true 为不可空
col.Mandatory =true
End If
col.Comment = .Cells(rwIndex, 2).Value '指定列说明
'col.Length =.Cells(rwIndex, 4).Value '指定字段长度
'col.Precision =.Cells(rwIndex, 5).Value '指定字段长度
End If
End With
Next
MsgBox "生成数据表结构共计 " + CStr(count), vbOK + vbInformation, "表"
Exit Sub
End sub