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后续处理-驼峰规则、清除约束、外键改名的更多相关文章

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

    PowerDesigner 12小技巧-pd小技巧-pd工具栏不见了-pd修改外键命名规则-pd添加外键 1. 附加:工具栏不见了 调色板(Palette)快捷工具栏不见了PowerDesigner ...

  2. MySQL 数据类型和约束(外键是重点🙄)

    数据类型 1. 数字(默认都是由符号,宽度表示的是显示宽度,与存储无关).tinyint 括号里指定宽度 七位2进制数最大数就是2**7 -1=127 最小是-128 验证: create tabel ...

  3. MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束

    /* MySQL进阶13 常见六大约束: 1.not null 非空 2.default :默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primary key : 主键,用 ...

  4. cdm 生成pdm时, 外键的命名规则

    在CDM 生成PDM时,生成的外键默认的规则是:父表名称的前三个字母+"_"+主键 为子类的外键,可是在一些情况,很不习惯用 父表的前三个字母命名,需要用自己的规则来生成外键,此时 ...

  5. 关于数据库主从表、主键PRIMARY KEY 外键约束 FOREIGN KEY 约束----NOT NULL,DEFAULT,CHECK

    如果由两个列共同组成主键,而且一个子表将主键作为可为空值的外键来继承,就可能得到错误的数据.可在一个外键列中插入有效的值,但在另一个外键列中插入空值.然后,可添加一个数据表检查约束,在可为空的外键中检 ...

  6. 使用SQL脚本创建数据库,操作主键、外键与各种约束(MS SQL Server)

    在实际开发中,可能很少人会手写sql脚本来操作数据库的种种.特别是微软的MS SQL Server数据库,它的SQL Server Management Studio对数据库的图形化操作极致简便,从而 ...

  7. MySQL中的主键约束和外键约束

    1.主键约束 表通常具有包含唯一标识表中每一行的值的一列或一组列. 这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性. 由于主键约束可保证数据的唯一性,因此经常对标识列定义这种约束. 如 ...

  8. [每日一题] OCP1z0-047 :2013-08-18 禁用启用约束――主键与外键 ..................................61

    正确答案:C 根据题意,测试结果如下: 1.创建表emp,并且设emp_no字段为主键,设mgr_no字段为外键. gyj@MYDB> create table emp 2 (emp_no nu ...

  9. 详解MariaDB数据库的外键约束

    1.什么是外键约束 外键约束(foreign key)就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完整,关连性更强. 关于数据表的完整性和关连性,可以举个例子 ...

随机推荐

  1. Tensorflow 从零开始

    1.安装pip pip是一个用于管理和安装Python包的工具,类似于LINUX 的yum命令一样! 命令(Ubuntu系统):sudo apt-get install python-pip 验证安装 ...

  2. 中文乱码问题(页面乱码,eclipse乱码,请求响应乱码)

    1.首先在开发工具eclipse中设置工作空间和文件编码格式,详情参见   http://www.cnblogs.com/lixiang1993/p/7345161.html 2.在eclipse的安 ...

  3. json01-json简介和语法

    JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 XML,但比 XML 更小.更快,更易解析,是轻量级的 ...

  4. Spring获取bean的一种方式

    随便一百度,网上一大把,并且还不止一种.所以这里就只记录目前用的一种好了. 实现ApplicationContextAware接口 即可: import org.springframework.bea ...

  5. 美化tp5.1跳转提示

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  6. spring: 使用Spring提供的JDBC模板(使用profiles选择数据源/使用基于JDBC驱动的数据源)

    Spring提供的JDBC框架负责管理资源和异常处理,从而可以简化开发者的JDBC代码.开发者只需要编写写入和读取数据库相关的代码即可. 正如在之前的小节中论述过的,Spring将数据库访问过程中的模 ...

  7. IIS7配置PHP简要说明

    1. IIS7 安装的时候 要注意三个地方打得勾 万维网服务->应用程序开发功能->CGI ->ISAPI扩展 ->ISAPI筛选器 注:   CGI  会在IIS7+PHP_ ...

  8. Postman工具——Pre-Request Script、Tests

    这篇是介绍 Postman 的最后一篇,也就是最后两个用法:Pre-Request Script 和 Tests ,它支持以嵌入脚本的方式动态准备测试数据,并根据业务需求设计测试用例. 一.Pre-R ...

  9. jar包作用

    hibernate中jar包的作用 (1)hibernate3.jar:Hibernate的核心库,没有什么可说的,必须使用的jar包 (2)cglib-asm.jar:CGLIB库,Hibernat ...

  10. 使用Intellij Idea打开项目不能显示树形目录

    按下列步骤操作:1. 关闭IDEA, 2.然后删除项目文件夹下的.idea文件夹3.重新用IDEA工具打开项目 Open...