PDM后续处理-驼峰规则、清除约束、外键改名
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl '当前model
'获取当前活动model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then '如果是处理pdm,这里换成PdPDM.cls_Model
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl
End If
Private sub ProcessFolder(folder)
dim tab
'11111111111111111111111111111111111111111111111111111111111111111
for each tab in folder.tables
if not tab.isShortcut then
'处理每个实体或类的Name和Code
'先处理表名
Dim code
code = tab.code
code=ManageNameFormat(code) '函数的参数必须带(),而sub的参数不用括号
tab.code=code
tab.name=code
'再处理每个字段的名称
dim col
for each col in tab.columns
Dim acode
acode = col.code
acode=ManageNameFormat(acode)
col.code=acode
col.name=acode
col.ServerCheckExpression="" '清除每个字段正则表达式约束
col.ListOfValues ="" '清除枚举项约束
col.lowvalue="" '清除最大值约束
col.highvalue="" '最小值约束
next
end if
next
'222222222222222222222222222222222222222222222222222222222222222222222222222
'更改特定外键名称
dim ref
for each ref in folder.references
if not ref.isShortcut then
'根据子表和主表名称更改外键字段名称,将该外键字段名称直接改为该关系名,以子表-主表方式判断
'根据单表也可以设置
if lcase(ref.parenttable.name)=lcase("ExVersion") or lcase(ref.parenttable.name)=lcase("Ex_Version") or _
(lcase(ref.childtable.name)=lcase("GM_Arc") and lcase(ref.parenttable.name)=lcase("Point" )) or _
(lcase(ref.childtable.name)=lcase("GM_Geodesic") and lcase(ref.parenttable.name)=lcase("Point") ) then
for each col in ref.childtable.columns '不用遍历寻找对应table对象,直接用ref.childtable就能操作,比以前更智能
if lcase(col.name)= lcase(ref.ForeignKeyColumnList) then
output ref.childtable.name+"."+ref.ForeignKeyColumnList+ "<--------------->"+ ref.childtable.name+"."+ref.name
col.name=ref.name
col.code=col.name
end if
next
end if
end if
next
'////////////////////////////////////////////////////////////////////////////////////
'递归遍历子文件夹
Dim f '子文件夹
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
'函数将输入的低驼峰字符串整理成_符分割的字符串
Function ManageNameFormat(code)
Dim i
i=2
Do While i < len(code)
If mid(code,i,1)=ucase(mid(code,i,1)) and mid(code,i-1,1)=lcase(mid(code,i-1,1)) and mid(code,i-1,1)<>"_" and mid(code,i,1)<>"_" and mid(code,i-1,1)<>"2" and mid(code,i,1)<>"2" Then '连续大写字母不用加_
code = left(code,i-1) + "_" + mid(code,i)
i =i+ 1
End If
i =i+ 1
Loop
ManageNameFormat=code
End Function
PDM后续处理-驼峰规则、清除约束、外键改名的更多相关文章
- PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键
PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...
- MySQL 数据类型和约束(外键是重点🙄)
数据类型 1. 数字(默认都是由符号,宽度表示的是显示宽度,与存储无关).tinyint 括号里指定宽度 七位2进制数最大数就是2**7 -1=127 最小是-128 验证: create tabel ...
- MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束
/* MySQL进阶13 常见六大约束: 1.not null 非空 2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primary key : 主键,用 ...
- cdm 生成pdm时, 外键的命名规则
在CDM 生成PDM时,生成的外键默认的规则是:父表名称的前三个字母+"_"+主键 为子类的外键,可是在一些情况,很不习惯用 父表的前三个字母命名,需要用自己的规则来生成外键,此时 ...
- 关于数据库主从表、主键PRIMARY KEY 外键约束 FOREIGN KEY 约束----NOT NULL,DEFAULT,CHECK
如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据.可在一个外键列中插入有效的值,但在另一个外键列中插入空值.然后,可添加一个数据表检查约束,在可为空的外键中检 ...
- 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)
在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...
- MySQL中的主键约束和外键约束
1.主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如 ...
- [每日一题] OCP1z0-047 :2013-08-18 禁用启用约束――主键与外键 ..................................61
正确答案:C 根据题意,测试结果如下: 1.创建表emp,并且设emp_no字段为主键,设mgr_no字段为外键. gyj@MYDB> create table emp 2 (emp_no nu ...
- 详解MariaDB数据库的外键约束
1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...
随机推荐
- python-字符串应用
例1:用python程序将DNA的一条链翻译出来s1=’ATTACGGC‘ rule={'A':'T','T':'A','C':'G','G':'C'} s1='ATTACGGC' s2=[rule[ ...
- HDFS数据流-剖析文件读取及写入
HDFS数据流-剖析文件读取及写入 文件读取 1. 客户端通过调用FileSystem对象的open方法来打开希望读取的文件,对于HDFS来说,这个对象是分布式文件系统的一个实例.2. Distrib ...
- Proxy动态代理
Proxy动态代理 package com.test.dynamicproxy; public interface Subject { public void request(); } package ...
- rpm卸载软件error preun
这两天,使用ipvsadm -ln总是显示空. 后来,使用strace ipvsadm -ln定位 看来,是ipvsadm模块有问题,卸载了再重新安装吧,结果出现这种问题. 从来没遇到这种问题: er ...
- redis 按空间范围查询点位
GEORADIUS GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [ASC| ...
- VS2013打包安装(InstallShield Limited Edition for Visual Studio 2013 )
(1)百度文库安装步骤: http://wenku.baidu.com/link?url=B7NIE3gmoVx7UYUKigVGMjmINFIThpkH0DLXcYGx_9B1YzrX1QfHO2N ...
- Apache CommonLogging + Log4J
package cn.byref.demo.logging; import org.apache.commons.logging.Log; import org.apache.commons.logg ...
- POJ--1094--Sorting It All Out||NYOJ--349--Sorting It All Out(拓扑排序)
NYOJ的数据水一点,POJ过了是真的过了 /* 拓扑排序模板题: 每次输入都要判断有环与有序的情况,如果存在环路或者已经有序可以输出则跳过下面的输入 判断有序,通过是否在一个以上的入度为0的点,存在 ...
- unity3d IO操作
前几天有个朋友问我为什么在IOS平台中可以正常的读写文件可是在Android平台中就无法正常的读写.当时因为在上班所以我没时间来帮他解决,晚上回家后我就拿起安卓手机真机调试很快就定位 ...
- IEflash遇到flash遮挡
遇到IE中(包括IE6+)弹窗广告要flash遮挡的问题,后来想到了常用的iframe方法(参见<解决IE6 select z-index无效,遮挡div的bug>),最终成功了flash ...