【原创】PowerDesigner Name/Code自动调整 的正确版本。

网上关于PD里面Code/Name自动调整的文章中转载的最多是一篇《PowerDesigner Name/Code自动调整》,可文章里面的脚本是有问题的,很多人应该都试过,无法使用。此文章转载的很多,百度直接搜索完整的文章标题有21,200条记录!不知道为啥没人指出其问题,让这个并不是正确的代码在网上流行这么多年。

原文如下:

PowerDesigner Name/Code自动调整
大家都清楚在用PowerDesigner的时候,当你输入Name的时候Code是会自动帮你按照Name的内容填上的.
这个功能虽然好用,但是我需要在Name这一项加上一个中文的注释,这个时候怎么办呢?
下面两个例子,相信对你相当有用.
Examples

· Script 
1
.set_value(_First, 
truenew
.foreach_part(%Name%, 
"'#'"
.if (%_First%) 
.delete(%CurrentPart%) 
.set_value(_First, 
false, update) 
.else 
%CurrentPart% 
.endif 
.next
这个例子是把Name内容的#号后边的内容当作Code.
如:在Name列输入    用户名#user_name  则在Code列自动会变成   user_name

· Script 
2
.set_value(_First, 
truenew
.foreach_part(%Name%, 
"'#'"
.if (%_First%) 
%CurrentPart% 
.set_value(_First, 
false, update) 
.endif 
.next
这个例子是把Name内容的#号前边的内容当作Code.
如:在Name列输入    user_name#用户名  则在Code列自动会变成   user_name

具体操作方法是:
1、打开powerDesigner菜单的Tools->Model Options....->Naming Convention
2、选中Name,并勾选Enable name/code conversions.
3、选择Name To Code,把上面任意一个例子的代码(红色部分)贴到conversion script内容框中即可。

注:用这个script的时候,必须先设置,才会转换的。
如果你已经设计好了,再设置是不会对之前的东西改变的。

这个文章里面的第二段式正确的,第一段语法有问题。
.delete(%CurrentPart%)这句语法不对。少了结束语法。修改成下面的代码就可以了。
.delete(%CurrentPart%)
.enddelete
其实我上面的语法也不是很标准。再严谨一点是:
.delete(%CurrentPart%)
%CurrentPart%
.enddelete

最后整理一下正确的是:

脚本1:

.set_value(_First, true, new)
.foreach_part(%Name%, "'#'")
.if (%_First%)
.delete(%CurrentPart%)

.enddelete
.set_value(_First, false, update)
.else
%CurrentPart%
.endif
.next

这个例子是把Name内容的#号后边的内容当作Code.

 

脚本2:

.set_value(_First, true, new)
.foreach_part(%Name%, "'#'")
.if (%_First%)
%CurrentPart%
.set_value(_First, false, update)
.endif
.next

 这个例子是把Name内容的#号前边的内容当作Code.

 另外在使用这个功能时候最好把name/code自动复制功能打开。Tool——Genneral——Options Dialog——Name to Code mirroring.默认就是打开的。

原文地址:https://www.cnblogs.com/edzjx/p/1831914.html