EZDML常见问题

http://www.ezdml.com

 

——HUZ 201910

——本文最后修订日期:20191109,对应EZDML版本:2.35

 

文档更新记录:

2009.11 表结构设计器EZDML1.5新版本发布,比以前改进了很多,因此重新写了个介绍。

2015.10 已经更新到2.06版本,决定再次整理重写此文档。

2019.10 2.32版了,再把文档改改吧。

 

目录

一、 EZDML是什么东东?... 2

二、 有那么多的现成的工具,为什么还要搞这个EZDML... 3

三、 EZDML有什么特点?... 3

四、 如何快速上手?... 4

五、 EZDML的描述字是什么来的?有什么用?... 4

六、 为什么字段的数据类型那么少?... 8

七、 默认的物理类型(如VARCHAR2)不是我要的怎么办?... 8

八、 除了默认类型,我还需要其它的数据类型怎么办?... 8

九、 外键连接只有一对多吗?有没有一对一的?... 8

十、 在模型图中新建或复制粘贴表后,新表的位置是怎么定的?... 8

十一、 是否支持多字段的组合索引、组合外键、组合主键、触发器等约束?... 8

十二、 同名表有什么讲究?为什么有时会警告相同名称的表对象已经存在?... 9

十三、 如何快速复制表名/字段名?... 12

十四、 如何复制的方式创建新表?... 12

十五、 如何复制字段到另一个表?... 12

十六、 字段属性里的编辑器界面业务逻辑干什么用的?... 12

十七、 为什么你的表和字段属性截图有个自定义标签... 12

十八、 那个大小写转换是干什么用的?... 12

十九、 那下面还有个汉字转拼音是干什么用的?... 14

二十、 如何从注释中提取逻辑名?... 18

二十一、 如何对多个表批量添加或删除字段?... 18

二十二、 如何对多个表或字段批量转换大小写?... 18

二十三、 如何对多个表或字段批量进行某种操作?... 18

二十四、 PASCALJAVASCRIPT脚本有什么用?如何编写脚本?... 18

二十五、 为什么有时输入的中文内容是乱码?... 18

二十六、 文字对象有什么用?... 19

二十七、 重新排列那个是有什么原理?... 19

二十八、 缩略图模式有什么用?... 20

二十九、 模型图中表的背景颜色是怎么设置出来的?... 21

三十、 如何快速查找表或字段?... 23

三十一、 那个CTRL+F查找对象又有什么用?... 23

三十二、 连不上ORACLE怎么办?... 23

三十三、 还是连不上数据库怎么办?或者其它类型的数据库连不上怎么办?... 25

三十四、 生成的SQL我有一点不喜欢,想小改一下,该怎么办?... 25

三十五、 如何将DML文件与旧版本比较?... 25

三十六、 临时文件是干什么用的?... 26

三十七、 EZDMLDMHDMXDMJ三种文件保存格式,用哪一种比较好?... 26

三十八、 如果想重新加载原始的文件,不想用临时文件要怎么操作?... 26

三十九、 EZDML有哪些配置文件?如何设置这些配置?... 26

四十、 程序支持哪些命令行参数?... 26

四十一、 如何复制或导出模型图像?... 27

四十二、 导出WORD文档格式我不喜欢,能改不?... 27

四十三、 导出的EXCEL格式我也想改,要怎么弄?... 28

四十四、 如何配置外部工具?... 28

四十五、 字符编码工具是做啥用的?... 28

四十六、 EZDML能导入其它工具(如PowerDesigner)的文件吗?... 28

四十七、 EZDML收费吗?需要捐助吗?... 29

四十八、 EZDML是用什么开发的?... 29

四十九、 EZDML会开源吗?会有MAC版吗?... 29

五十、 还有其它的问题怎么办?... 29

 

 

 

一、 EZDML是什么东东?

EZDML是一个数据库建表的小软件,可快速的进行数据库表结构设计,建立数据模型。类似大家常用的数据库建模工具如PowerDesignerERWINER-StudioRational-Rose等的超级精简版。

 

二、 有那么多的现成的工具,为什么还要搞这个EZDML

这个。。。也许当时没有现在那么多,没找到喜欢的,也许是嫌PowerDesigner太慢太复杂了,也许是某天无聊想自己写点东西练练手,时间太久,不太记得了,反正年轻时看别人写的程序都有点不顺眼。要搁现在,我可能就不会再做这种重新发明轮子的事了。

如果你正在找类似的工具,不妨试一下EZDML。如果你的项目组已经用开了其它的工具,且用得很好,那可以看看,但没有必要冒险作出转变。

 

三、 EZDML有什么特点?

有两大特点:

1.         简单。程序本身就很简单,它只需要一个exe就可以运行,通过编辑描述字也能很快创建或修改表结构。

2.         脚本。支持JAVASCRIPTPASCAL脚本,你就可以完全控制所有表、字段,想删想改想生成什么都是可以的。

3.         免费——不好意思,这第3点后来想起加的。

 

有人可能要说,你这小Q&A破文档都写了几十页,你还好意思说简单?嗯,确实,你有点问倒我了。我一开始也没想到有这么多问题,不过,其实不看文档也基本能用得起来的。简单只是相对的,如果有别的工具比我这个更简单,我就……我就去抄它的。

 

四、 如何快速上手?

说来话长,参见官网《EZDML快速上手》。

 

五、 EZDML的描述字是什么来的?有什么用?

这个强烈安利大家使用。它就是一段用来描述一个表的总体结构的文本,内容很简单,简单到一看就懂。示例如下:

 

userInfo(用户信息)

-----------------------------------------

id(ID)                       PKInteger   //<<关联:users.id>>

name(姓名)                   String(255)

username(用户名)             String(255) //<<唯一索引,非空>>

encodedPassword(加密密码)    String(255) //<<非空>>

email(E-mail)                String(255) //<<唯一索引,非空>>

createDate(创建日期)         Date        //<<非空>>

modifyDate(最后修改日期)     Date        //<<非空>>

status(状态)                 Enum        //<<非空>>0未知 1启用 2锁定 3删除

department(部门)             String(255) //用户所属部门

lastLoginDate(最后登录日期)  Date

lastLoginIp(最后登录IP)      String(255)

lockDate(锁定日期)           Date

 

把这段文字复制下来,新建一个表,切到描述字,粘贴进去:

切到表设计看看:

模型图结果:

可以看到,表的信息已经基本完备了。

 

当然了,上面那么整齐划一的描述字是正规军,其实我来操作的话就比较随意,我会直接输入以下内容(实际上我多半会去掉英文直接用中文字段名,但这里演示还是留着吧):

userInfo 用户信息

----------

id PK

name 姓名

username 用户名

encodedPassword 加密密码

email 邮箱

createDate 创建日期 D

modifyDate 最后修改日期 D

status 状态 E //0未知 1启用 2锁定 3删除

department 部门

lastLoginDate 最后登录日期 D

lastLoginIp 最后登录IP

lockDate 锁定日期 D

其中PK表示主键,主外键默认为整数类型,跟PKIPKInteger是一个意思。如果主键是字符,可以写成PKSPKString

同理,外键可以用FKFKIFKIntegerFKSFKString表示。

其它字段如果不指定类型,则默认为字符串。大家可能发现了,我创建表经常都不指定字段长度的,因为我懒。

转到表设计看看,效果也是杠杠的:

如果想改变字段的位置、添加删除修改字段,也是Ctrl+XCtrl+V编辑描述字解决:

 

最终结果:

 

通过编辑修改描述字,可以轻松实现字段的增删改移和复制粘贴,对键盘侠们来说是非常方便的。我现在创建表和字段基本上是只用描述字,表格只是用来设置约束之类的属性,其它时候都是查看摆设做样子了。当然,如果你不喜欢用描述字,仍旧用表格也是OK的。

 

六、 为什么字段的数据类型那么少?

本工具以简单设计为主,所以把常用的数据类型归纳为以下几种了:文本、整数、浮点数、时间、真假、枚举、文件、对象。比如字符串VARCHARVARCHAR2NVARCHARCLOB(长度超过数据库限制时会自动转用CLOB),在我看来都是一个类型,只是换了个马甲而已。这样做的好处,主要是跟编写代码比较接近,另一个是跨数据库时比较方便。

另外还有列表、函数、事件几个类型,是为方便设计生成代码而增加的。

如果你的场景经常要区分数据库的各种物理数据类型,那EZDML可能不是最好的选择。

 

七、 默认的物理类型(如VARCHAR2)不是我要的怎么办?

如果只是个别字段,可以直接修改字段属性,设置字段的类型名称。类型名称默认为空,为空时使用默认数据类型名称。如果大多数字段都要改,可以在INI中定义程序默认的物理类型,比如字符串你可以指定默认用NVARCHAR2类型,参见官网《EZDML配置文件说明》中的DefaultFieldTypes相关内容。

 

八、 除了默认类型,我还需要其它的数据类型怎么办?

逻辑类型(如浮点数)基本上都是有的,但物理数据类型(如CURRENCYDECIMAL)可能没有。解决办法有两个:

一是在每一个字段的属性中指定类型名称;另一个办法是自定义类型,参见官网《EZDML配置文件说明》中的CustFieldTypes相关内容。

需要说明的是,自定义类型本质上也是修改字段的类型名称,生成SQL时会再替换为最终的类型。

 

 

九、 外键连接只有一对多吗?有没有一对一的?

默认就是一对多,不支持直接设置成一对一。不过,如果你把从表的关联字段加一个唯一索引(或者设置为主键),则EZDML能自动识别它是一对一,在画图时会画成一对一

 

十、 在模型图中新建或复制粘贴表后,新表的位置是怎么定的?

默认就是最后一次鼠标点击的位置。如果你想新的表出现在指定位置,则新建或粘贴前在那个位置用鼠标点一下,左键右键都行。

如果在左边目录树上新建或粘贴表,则位置由程序自动指定。

 

十一、 是否支持多字段的组合索引、组合外键、组合主键、触发器等约束?

不支持,本工具以简单设计为主,复杂的数据库设计是不支持的(不过,好像组合主键是支持的,我一开始也不知道,看了版本历史才发现)。

作为一个悲催的程序员,混了这么多年也没混上DBA,很惭愧,说明数据库不是我的专长。EZDML表面上是数据库表设计工具,可实际上为数据库服务的并不深入,更多是为了搞代码、脚本、文档之类的不务正业的东东。如果你想用它来维护触发器、存储过程、表空间、同义词、分区之类的,那你很可能要失望了,可能你想要的功能没有,你不想要的、没什么暖用的东西却很多。

 

十二、 同名表有什么讲究?为什么有时会警告相同名称的表对象已经存在?

为方便设计管理,在一个DML模型文件里,同一个名称的所有表(不管是不是在一个模型图里)会认为是同一个,修改完一个的属性后会自动同步到其它同名表(注:手工改的才会,用脚本改的不会同步),改一个就等于改了全部。于是问题就来了。

假设我们已经有了一个叫“TableA”的表,有11个字段;这时我们再新建第二个表,也取名为“TableA”,但只有3个字段。请问:创建完第二个表后,TableA应该有几个字段?

嗯,不好回答吧,说11个或3个都会有人有意见。所以,第二个表保存时程序会警告有同名表存在,你是不是搞错了?

你仍然保存的话,点“是”,新表就会覆盖旧表,最终答案是3个字段,有图有真相:

嗯?左边怎么还是11个?表与表之间的信任呢?表急,刷新一下就真相了:

这时两个表就结盟了。我们随便选一个TableA,加一个字段,删一个字段,改一个字段:

保存,第二个表也会自动同步变化:

很和谐吧。

需要注意的是,EZDML同名表在整个文件里都是结盟的,不在同一个模型里也会同步。

 

不过,又有另一个问题冒出来了,如果这时我把右边那个TableA改名为TableB,会怎么样呢?左边那个会跟着改名吗?

实际上并不会,改完后AABB。但程序会给你一个警告,因为这意味着B背弃了盟约,从联盟中独立出来了:

 

十三、 如何快速复制表名/字段名?

左边目录树:选中任何对象,按CTRL+E复制名称(复制高亮内容,显示什么就复制什么,如果有逻辑名,也会一起复制)。

右边模型图:

l  选中整个表,不选中表名和字段名,这时按CTRL+E会复制出一个select语句

l  选中表名,按CTRL+E复制表名(复制高亮内容,显示什么就复制什么,如果有逻辑名,也会一起复制,切换物理/逻辑视图可以控制复制的内容,下同)

l  选中字段,按CTRL+E复制字段名

 

十四、 如何复制的方式创建新表?

那个,你可以复制粘贴完后改名(会有同名文件链接断开的警告);或者,你先粘贴到记事本里(复制的内容其实是XML文本),改好名再粘贴回去;或者,你先新开一个EZDML粘贴,改名,再复制粘贴回来。

 

十五、 如何复制字段到另一个表?

有几个办法:

l  在左边目录树中选择一个或多个字段,鼠标右键复制粘贴(不同的文件之间也适用)

l  在左边目录树中选择一个或多个字段,鼠标拖动到另一个表里

l  在表一的描述字中复制需要的内容,到表二的描述字里粘贴

 

十六、 字段属性里的“编辑器界面”、“业务逻辑”是干什么用的?

没什么用。本来是隐藏起来了的,想准备给自己设计通用界面和程序用的,但我这么多年也就一直停留在“想”的阶段,没有实践;后来有网友想要,就开放出来了。对我来说,对大部分人来说,它们目前仍然是没暖用的东西。

 

十七、 为什么你的表和字段属性截图有个“自定义”标签?

嗯,有一个用脚本自己生成一个属性页的功能,需要改INI才能开启。这也是一个对我、对大部分人都没什么暖用的功能,但是我觉得它有意思、有挑战性,就加上了。

 

十八、 那个大小写转换是干什么用的?

顾名思义就是大小写的互转了。从数据库导进来的表一般都是全大写或不分大小写的,有时比较难分辨,不利于查看。例如商家表生成到ORACLE数据库后,再从数据库导进来时,会变成全大写:

很不好看,这时可以点左下方的“大小写转换”按钮,弹出菜单如下:

执行“自动大小写”,系统处理的效果如下:

“自动大小写”的意思是自动对表名和字段名进行首字母大小写分词处理。例如MEMBERRANK会处理为MemberRank。处理过程是根据字典文件dict.txtMyDict.txt进行简单的匹配,效果并不能做到100%准确,如果对处理结果不满意,可修改字典文件增加你需要的词语。

 

十九、 那下面还有个汉字转拼音是干什么用的?

比如有这么一个表:

全是中文,生成C++代码是这个样子的:

 

class 会员

{

private:

protected:

    int ID;

    char * 姓名;

    char * 电话;

    Date 出生日期;

    char * 邮箱;

    char * 地址;

 

public:

    会员(void);

    ~会员(void);

 

    int GetID(void);

    void SetID(int);

    char * Get姓名(void);

    void Set姓名(char *);

    char * Get电话(void);

    void Set电话(char *);

    Date Get出生日期(void);

    void Set出生日期(Date);

。。。

};

 

这个就比较令人无语了,大家习惯了代码是要用英文的。不过我英文不好,或者想偷懒,于是我先执行一下“名称转为逻辑名”,将名称复制到逻辑名上:

再执行“汉字转拼音”,将名称转成伪英文:

再来看生成的代码,是不是顺眼多了:

/* 会员 */

class HuiYuan

{

private:

protected:

    int ID;

    char * xingMing;

    char * dianHua;

    Date chuShengRiQi;

    char * youXiang;

    char * diZhi;

public:

    HuiYuan(void);

    ~HuiYuan(void);

 

    //ID

    int GetID(void);

    void SetID(int);

    //姓名

    char * GetXingMing(void);

    void SetXingMing(char *);

    //电话

    char * GetDianHua(void);

    void SetDianHua(char *);

    //出生日期

    Date GetChuShengRiQi(void);

    void SetChuShengRiQi(Date);

。。。

};

另外,脚本中也可以用ChnToPY这个函数直接转汉字为拼音。

 

二十、 如何从注释中提取逻辑名?

有几种办法:

1.         从数据库导入时,勾选“注释转为逻辑名”

2.         双击表,弹出表属性对话框,点左下角的“大小写转换”,选择“注释转为逻辑名”

3.         在左边目录对上,选择一个或多个表(选字段也是可以的),然后在右键菜单中执行“大小写转换|注释转为逻辑名”

4.         最高境界:自己写脚本处理,参见EZDML脚本配置》

 

二十一、 如何对多个表批量添加或删除字段?

有两种方式,推荐第1种:

1.  在左边目录树中选择多个表,右键菜单执行批量添加或删除字段;

2.  使用脚本:在模型图中右键执行脚本,编写脚本完成批量添加或删除字段,参见EZDML脚本配置》

 

二十二、 如何对多个表或字段批量转换大小写?

请参考上一问题的答案。

 

二十三、 如何对多个表或字段批量进行某种操作?

请考虑用一下脚本,用过几次后,你可能就不需要问这类问题了,参见EZDML脚本配置》

 

二十四、 PASCALJAVASCRIPT脚本有什么用?如何编写脚本?

说来话长,简单地说,它们可以让你彻底掌控模型中的一切。参见EZDML脚本配置》

 

二十五、 为什么有时输入的中文内容是乱码?

首先这不是你的问题,是因为EZDML的开发工具为BDS2006,没有采用UTF8UNICODE编码,导致无法自动识别所有字符集,在一些新系统上就出篓子了。

虽然不是你的问题,但也只能靠你解决。因为各种原因EZDML无法升级到最新的开发平台。

解决办法一般有以下一些:

l  如果是英文或其它非中文的系统,请在控制面板中添加中文语言的支持

l  在区域和语言里设置非Unicode程序的语言为中文(WIN7WIN10都有这个设置的)

l  如果有多个输入法,可切换一下输入法试试

l  任务栏输入法图标如果是英文(EN),说明是英文键盘,请切换为中文键盘(输入法),设置中文键盘(输入法)为首选

l  如果是WIN10系统,可试着移除英文键盘或美式键盘,只留下中文键盘(输入法),WIN10的中文输入法是已经包含了英文输入的

l  如果语言列表里有多个,确保中文为首选,或者干脆删除其它语言

l  实在不行就只能放弃,可能这工具不适合你的系统

 

二十六、 文字对象有什么用?

你觉得有什么用就有什么用,也许可以装饰一下吧;对我没什么用。这东西应该是以前遗留下来的,请注意它是以表的形式保存的,只是它的类型TypeName等于“TEXT”。

 

二十七、 重新排列那个是有什么原理?

作用很明显,表很多的话能自动布局是方便很多。

原先布局的原理就是随机选一个表,为它找一个位置,方法是从左到右从上到下,然后再为跟它相连表表找位置。

最近我改了算法,先找到连线最多的表(有多个则按随机顺序取),把它放在中间;然后找跟它相连的连线最多的表(有多个则按随机顺序取),全放在它的附近;然后为这些表叠代地找相连子表放在附近。改进算法后的效果好了很多。

 

二十八、 缩略图模式有什么用?

可能表多的时候方便查看吧。还是那句话,你觉得有什么用就有什么用。截两个图直观对比一下:

 

二十九、 模型图中表的背景颜色是怎么设置出来的?

选择一个或多个表,鼠标右键弹出菜单,执行“设置实体颜色”命令:

建议选择一个相对浅一点的颜色:

效果:

三十、 如何快速查找表或字段?

在左上角查找框中输入表名或字段名,找到对应表后,按住ALT键用鼠标点它,就能快速跳到对应的图形上。

 

三十一、 那个CTRL+F查找对象又有什么用?

没什么用,之前是用它来查找对象,有快速查找功能之后,基本上就废了。

不过这功能写得不错,自我感觉良好,能查找注释,多线程,支持模糊查找,空格分隔关键词,花了我不少时间,总之就是用了高精尖的技术做了一个没用的东西,舍不得删,就留着了。

 

三十二、 连不上ORACLE怎么办?

一般来说,连不上最大的可能就是ORACLE客户端(oci.dll及相关文件)的版本不对。EZDML需要32位的oci.dll及相应的支持文件,而目前大部分oracle安装程序都是64位,因此需要单独下载安装。两个办法:

A.下载32windowsoracle client并安装(必须32位的,数据库自带的oci一般是64位的,所以不能直接用,要另行安装);

B.下载32windowsoracle instantclient,并按说明修改ezdml.INI指定OCIDLL路径。

oracle client版本号要跟数据库服务匹配,比如11GR232位的oracle client是这个:

https://www.oracle.com/database/technologies/112010-win32soft.html

oracle client包含功能较全,所以比较大,一般有几百MB,需要安装、配置,相对麻烦。如果不想那么麻烦,可使用oracle instant client,绿色环保,一般只有几十MB

32位的instant client目前在这个位置可以找到:

https://www.oracle.com/technetwork/cn/topics/winsoft-095945-zhs.html

注意选择正确的版本号。

 

三十三、 还是连不上数据库怎么办?或者其它类型的数据库连不上怎么办?

那个,内事不决问百度,外事不决。。。自己想办法。

我自己平时常用的是ORACLE,其它除了ODBC就是通过EZDML主目录那几个DLL访问的了。肯定都是试过的,但每个人的环境有区别,只能说在我机上测试通过了。

 

三十四、 生成的SQL我有一点不喜欢,想小改一下,该怎么办?

编写PASCAL脚本接管全局事件,在生成表、字段SQL的地方,程序会将当前表、字段、数据库比对的信息、默认生成的SQL传给你,你可以为所欲为,之后再将新的结果返回即可。参见《EZDML脚本配置》

 

三十五、 如何将DML文件与旧版本比较?

有时我们想比较一下新版本与旧版本模型之间的差异。正常情况下,我们是和数据库比较生成差异SQL。但是,EZDML也提供了与另一个DML文件比较的功能,就是在下图这个小箭头的下拉菜单里了:

先选择一个数据库类型,再选择最下面那个EZDMLFILE,选择要对比的文件,生成SQL,即可。

 

三十六、 临时文件是干什么用的?

以前,EZDML保存的是XML格式,关闭时总要问是否要保存,另外打开XML文件速度也很慢(二进制的格式快,但显然不方便维护);后来嫌烦,就直接在关闭时保存一个二进制临时文件到源文件旁边,下次打开时就直接加载这个临时文件,速度杠杠的,世界也清净了。再后来,觉得临时文件放在源文件旁边不太妥,就将它移到系统临时文件目录了,同时增加了定时保存功能,将保存历史记录也保存到了临时文件夹。所以,你可以在临时文件夹中找到历史文件和最近一次退出时的文件。

 

三十七、 EZDMLDMHDMXDMJ三种文件保存格式,用哪一种比较好?

推荐用DMJ格式,它其实是JSON文本,可用记事本打开来修改(注意是GBK编码)。

DMH是二进制格式,速度快但不好维护。

DMXXML格式,以前没有JSON的时候用它。

 

三十八、 如果想重新加载原始的文件,不想用临时文件要怎么操作?

可以按ALT+1重新打开文件(文件菜单里有这个命令),第一次打开文件时是用临时文件的,而已经打开的情况下再次重新打开,程序就会提示是否要跳过临时文件了:

你也可以在INI配置中永久禁用临时文件,参见《EZDML配置文件说明》。

 

三十九、 EZDML有哪些配置文件?如何设置这些配置?

说来话长,参见官网《EZDML配置文件说明》。

 

四十、 程序支持哪些命令行参数?

支持传一到两个文件名作为启动参数:

l  如果传一个参数,则参数可以是一个DML模型文件名(dmxdmhdmj)由程序直接打开,也可以是一个脚本文件名(jspas)来加载并执行

l  如果传两个参数,则参数1应为一个DML模型文件名(dmxdmhdmj),参数二为脚本文件名(jspas),程序将在打开参数一模型文件后再加载执行参数二的脚本

 

四十一、 如何复制或导出模型图像?

选择要复制或导出的对象(不选择则默认全部),右键菜单中选择“复制图像”,可以将图像复制到剪贴板(默认为PNG图格式,如果需要WMF格式,可按住SHIFT键);右键菜单选择“导出”,然后选择保存类型为BMPJPGPNGWMF格式。

注:发现WINDOWS7/10自带画笔直接打开WMF文件是残缺的,不知出了什么问题,以前不是这样的;用我自己写的工具能打开;好消息是目前WORD仍支持粘贴WMF格式。

 

矢量图在放大时是有优势的,我们可以简单作个对比。

下面左边是直接复制图像(PNG格式)后粘贴,右图是粘贴后拉大:

11乍一看没什么,放大一下就露出马脚了。

 

下面左边是按住SHIFT键复制图像(WMF格式)后粘贴,右图是粘贴后拉大:

 

果然吧,没有对比就没有伤害。

 

四十二、 导出WORD文档格式我不喜欢,能改不?

理论上是可以的,WORDHTMLMHT都可以改,实际上行不行还得看情况。WORD文档其实是MHTMIME)格式,是由脚本生成的。

Templates目录下有下export_doc_html.ps_的脚本文件,它可以生成HTMLMHT两种格式,导出WORD是用了其中的MHT格式。你只要看懂了它,基本上就可以随意改了。也不难看懂的,信我没错,除了<% %>里的脚本,剩下的全是HTML。原始代码是我新建一个WORD文档后另存HTML搞出来的。

 

四十三、 导出的EXCEL格式我也想改,要怎么弄?

改不了,这个是硬核编程出来的。要不你考虑下改HTML输出TABLE吧?或者自己写一个自定义工具脚本,流程我都帮你想好了,用脚本把模型输出到JSON文件里(allModels.saveToFile(application.exeName+'.tmp.dmj'),一句代码的事),再调一个你自己写的EXE程序读这个JSON,剩下的事你自己看着办了。

 

四十四、 如何配置外部工具?

往那个自定义工具目录塞文件、塞程序、塞脚本就是了,参见EZDML配置文件说明》。

 

四十五、 字符编码工具是做啥用的?

是我自己常用的一些编码转换工具,包含几种编码的相互转换、JSON的格式化、MD5计算、随机数生成等功能。本来是独立的小程序,因为要用的时候不好找,而EZDML是经常用的,干脆就绑一块了。

 

四十六、 EZDML能导入其它工具(如PowerDesigner)的文件吗?

不能,目前唯一能做的是导入现有数据库表结构。当然,有脚本工具在,理论上你可以写脚本导入任何东西。就像某人曾经说的,给客户一个PL/SQL dev就行了,想干啥都可以自己到数据库里去弄,还要啥自行车呢。

EZDML只是个小工具,完全无法与其它大型工具相提并论。如果你用其它工具用得很好,没必要使用本工具;如果你的项目已经用开了一种工具,奉劝你不要随便冒险作出改变(除非你们项目组所有成员本来早就已经看它不顺眼了);如果你觉得其它工具不太好用,或者还没有固定使用哪种工具,或者有一些功能是你正需要的,可以试试EZDML

还是要补上那句话,使用EZDML出现任何后果本人均不负责。

 

四十七、 EZDML收费吗?需要捐助吗?

EZDML是免费的。使用本软件导致任何后果作者均不负责。

暂时也不需要捐助。之前有网友非要表示捐助了一下,在此表示感谢!

 

四十八、 EZDML是用什么开发的?

最开始是Delphi7,目前是BDS2006,开发语言是Delphi Pascal。没听过也正常,说明你比较年轻。我是个保守的70后程序员,目前仍时不时用一下Delphi7

我一直也想把代码升到最新的开发平台(好久没关注了,现在是XE10吧?),不过,并没有那么大决心和投入。反正BDS2006编译出来的东西也不是不能用,就先耗着吧。

 

四十九、 EZDML会开源吗?会有MAC版吗?

暂时不会开源也不会搞MAC版。

github上有一个ezdml,是以前应网友要求放上去的,除了几个界面,其它都是dcu,没有源码的。放了一次后也没有再去更新了。

EZDML本来也只是自己用,有空就改改,没空就放放,并不追求什么效果。我是个自私的人,对自己没好处的事是不会干的。写这个工具更多是满足自己的一种兴趣和成就感,而不是为谁谁服务的说法,没有那么高尚。这么多年我也没写什么文档,这次写这么多算是恶补一把了。我自己也经常用开源的东西,我很理解大家有希望开源的想法,也不排除以后会有这可能,但目前只能说:抱歉!

移植到MACLinux这个,我无聊时也有想过一哈,从技术角度上是可以实现的,毕竟有XEFireMonkeylazarusFP这些个跨平台的神器,但细节肯定会搞死人。我的主战场是Windows,转投MACLINUX目前看是不太现实的。

 

 

五十、 还有其它的问题怎么办?

About里有联系方式:

你可能猜到了,这是个标准的MessageBox,在这个界面按CTRL+C,再到文本框里CTRL+V,就能把内容拷出来:

---------------------------

表结构设计器 - demo_CHS.dmj

---------------------------

EZDML V2.35 2019-11-09 (Freeware)

http://www.ezdml.com

huzzz@163.com

QQ group: 344282607

http://blog.csdn.net/huzgd

 

Acknowledgements:

BESEN Javascript, Benjamin 'BeRo' Rosseaux

RemObjects Pascal Script, Carlo Kok, www.remobjects.com

...

---------------------------

确定  

---------------------------

本来后面还要多写一些鸣谢内容的,但DELPHI居然提示太长了,看来有空还是要专门写个About

Q群仅用于交流问题,平时没什么问题时是比较安静的,入群没有欢迎仪式,不需要打招呼和自我介绍,想出群也不用客气走就是了,发广告或不合适的主题的话很可能被禁言或踢出。

还有个CSDN博客(http://blog.csdn.net/huzgd),由于之前CSDN非得要关注微信公众号发消息才允许登录(认证了手机都登录不了),我懒得关注他们的微信,所以有段时间没更新那个博客了。本来想抽点时间自己在网站上建个博客的,这两天又试了下,CSDN又可以登录了,那还是用CSDN吧。

邮件不常看,未及时回复时请谅解。

作者只是一个普通俗人,有时忙有时心情不好,有时可能有些问题不喜欢或不愿意或其它原因解决不了的,也请见谅。

 

 

未完待续~后续有其他典型问题的话会陆续更新此文档。

此文档及相关资料的解释权归作者所有,转载请注明来源。