利用宏让ERStudio生成代码文件

article/2025/5/14 13:35:54

  Embarcadero ERStudio 是一个数据模型工具,用起来很方便。在ERStudio里建完数据模型后,可以利用宏来帮助生成对应的实体类文件以及对应的简单的数据访问类文件。为了实现这一目的,需要自己写脚本,支持的语言为 VB(以前从没写过VB程序,还好可以利用 Microsoft Visual Studio 文档),ERStudio 也提供了一系列的帮助文档,也有相关DEMO,最主要的是要获得相关Model的属性信息。这些可以在 ERStudio 文档里查看帮助。
  在 ERStudio 自带的编辑工具来写VB脚本还不错,Tools -- 〉Basic Macro Editor 打开编辑器。然后就可以开始写脚本了,编辑器提供了一个简单的 窗体编辑工具 Edit UserDialog ,可以画出用户交互界面,选择后的控件如果不知道怎么用的话,将光标停在CODE上按F1会打开帮助文档,里面符有简单的Demo
  编辑器也提供Debug功能,不过感觉调试起来很痛苦,没有VS里调试爽,不过用处还是蛮大的,脚本写好后默认保存的路径在安装文件所属路径的 Macros 文件夹里,通过 Macro Shortcuts -- Add/Remove Macro Shortcuts 来管理宏文件。打开 Add/Remove Macro 对话框后可以在 Available Macros 下边看到可用的宏文件,在Selected Macros下面可以看到已经选择使用的宏文件。
  点击这里可以下载示例脚本 .
  下面的代码获取Model和其下的SubModel:

Dim  entNames  As  Variant
Dim  entCount  As  Variant
Dim  varModel  As  Model
Dim  varSubModel  As  SubModel
' Get Model Object
Set  varModel  = DiagramManager.ActiveDiagram.ActiveModel
' Get SubModel Object
Set  varSubModel  =  varModel.ActiveSubModel
' Fill The EntityName To entName and Get the Entity Count
varSubModel.EntityNames(entNames,entCount)
获取SubModel的TableName:
varEntity.TableName
获取SubModel的指定索引的字段
' Get Entity Attribute
Function  GetAttribute(attrs  As  Attributes, Index  As   Integer )
    
Dim  attr  As  AttributeObj
    
For   Each  attr In attrs
        
If  attr.SequenceNumber = Index  Then
            
Set  GetAttribute = attr
            
Exit   Function
        
End   If
    
Next
    
Set  GetAttribute = Nothing
End Function
判断某一字段是不是主键:
Set  attr  =  GetAttribute(varEntity.Attributes, i)
If   Not  attr  Is   Nothing   Then
    
If  attr.PrimaryKey  Then
        
' do something    
     End   If
End   If
还有一个很重要的一点就是要把数据库类型转化为.Net对应的类型:
' Get .NET Data Type
Function  DbTypeToNetType(attr  As   Object )
    
Dim  netType  As   String
    
Select   Case  attr.Datatype
        
Case   " CHAR "
            netType 
=   " string "
        
Case   " VARCHAR2 "
            netType 
=   " string "
        
Case   " NVARCHAR "
            netType 
=   " string "
        
Case   " NVARCHAR2 "
            netType 
=   " string "
        
Case   " VARCHAR "
            netType 
=   " string "
        
Case   " NTEXT "
            netType 
=   " string "
        
Case   " NTEXT/LONG NVARCHAR "
            netType 
=   " string "
        
Case   " DATETIME "
            netType 
=   " DateTime "
        
Case   " DATE "
            netType 
=   " DateTime "
        
Case   " DECIMAL "
            netType 
=   " decimal "
        
Case   " FLOAT "
            netType 
=   " float "
        
Case   " NUMERIC "
            
If  attr.DataScale  =   0   Then
                netType 
=  IIf(attr.DataLength  >   9 , " decimal " , " int " )
            
Else
                netType 
=  IIf(attr.DataScale  <   29 , " decimal " , " double " )
            
End   If
        
Case   " INTEGER "
            netType 
=   " int "
        
Case   " BIT "
            netType 
=   " bool "
        
Case   " SMALLINT "
            netType 
=   " int "
        
Case   Else
            netType 
=   " string "
    
End   Select
    DbTypeToNetType 
=  netType
End Function
将字符串中的下划线去掉,将下划线后的第一个字母变为大写返回,如:_ab_cde_ 返回为 AbCde:
' Remove UnderLine From String And Change The First Character To Capital
Function  RemoveUnderLine(varRetStr  As   String , varString  As   String ,length  As   Integer  )
    
If  length  >   0   Then
        
Dim  char  As   String
        char 
=   Left $(varString, 1 )
        
If  char  <>   " _ "   Then
            varRetStr 
=  IIf( Len (varRetStr)  =   0 , UCase (char),varRetStr  &  char)
            varString 
=      Right $(varString,length - 1 )
        
Else
            varString 
=      Right $(varString,length - 1 )
            
If   Len (varString)  >   0   Then
                varString 
=      UCase ( Left $(varString, 1 ))  &   Right $(varString, Len (varString) - 1 )
            
End   If
        
End   If
        varRetStr 
=  RemoveUnderLine (varRetStr,varString, Len (varString))
    
End   If
    RemoveUnderLine 
=  varRetStr
End Function
这样会帮我们省去大量的工作,可订制性也比较好,当然不要把这个和别的代码生成工具比较....
提高工作效率才是硬道理~~~~~~

转载于:https://www.cnblogs.com/doll-net/archive/2007/12/29/Embarcadero_ERStudio_Macros.html


http://chatgpt.dhexx.cn/article/4tEuImnm.shtml

相关文章

Erstudio8.0怎么用?Erstudio8.0汉化版详细使用教程

Erstudio8.0使用教程 打开ERstudio,点击新建出现如图对话框&#xff1a; 选择第一个&#xff0c;表示创建一个新的关系型 数据库模型 这里提一点数据库模型分为relational(关系)和dimensional(多维) 两种在这里主要以关系型数据库为主来介绍模型的创建过程。 第二和第三项均是重…

ERStudio如何显示entity的tableName(表名的英文)和defaultColumnName(英文字段名)

转换为物理模型就可以了 物理模型中会优先显示tableName和defaultColumnName 这个mysql选择自己使用的数据库即可&#xff0c; ** 温馨提示&#xff1a;只想单纯看一下英文名而且不会转物理模型的话可以参考我的这个步骤&#xff0c;专业转化物理模型的话&#xff0c;建议另…

【SpringBoot】4. ERStudio初使用

1. 逻辑结构 &#xff08;1&#xff09;创建文件 &#xff08;2&#xff09;建立实体对象entity &#xff08;3&#xff09;编辑实体对象 &#xff08;4&#xff09;添加属性 &#xff08;5&#xff09;图表显示选项 &#xff08;6&#xff09;实体之间建立联系 &#xff08;7…

如何使用ERStudio 生成comment

在ER使用中&#xff0c;在生成sql过程中&#xff0c;如何批量生成字段描述&#xff0c;如何批量添加Owner&#xff0c;请看下文&#xff1a; 1、ER生成字段描述 2、ER生成描述添加Owner 使用的ER版本是8.0&#xff0c;英文版本&#xff0c;在操作过程中&#xff0c;有些配置细节…

使用ERStudio6创建数据表ER图并导出数据表的SQL(DDL)语句

1.创建数据表实体 打开ERStudio软件&#xff0c;其界面如下&#xff1a; 点击File菜单的NEW或则使用快捷键“CtrlN”着按钮 来新建一个ER图文件&#xff0c;按下OK按钮即可打开一个空白的ER图文件 其后缀是.DM1类型的。新建一个ER文件后&#xff0c;ERStudio的工具栏内的许多按…

ER/Studio知识汇总

一、关系 网上找了一下&#xff0c;大部分说得不太清楚&#xff0c;我在这里举上个例子。注意&#xff0c;这里的关系是逻辑上的&#xff0c;并非表结构也要如此。 1. 标识关系identifying relationship 意思&#xff1a;子实体的主键包含父实体的外键&#xff08;可能成为复合…

【NodeJS】20 koa 企业级Cms内容管理系统-XMind功能分析、ERStudio设计数据库ER图

一、 什么是 CMS CMS 是"Content Management System“的缩写&#xff0c;意为"内容管理系统”。 内容管理系统是企业信息化建设和电子政务的新宠&#xff0c;也是一个相对较新的市场。对于内容管理&#xff0c;业界还没有一个统一的定义&#xff0c;不同的机构有不同…

ER-studio显示选项设置

新建erstudio文件&#xff0c;默认不显示entity的datatype&#xff0c;用起来不方便。 设置如下&#xff1a; 当前页面->右键选择 Diagram And object Display Options->Entity->Datatype(勾选即可)。效果如上图

(10)ERStudio

1.外键 https://jingyan.baidu.com/article/f79b7cb37e9d219144023ea6.html 第一个图标&#xff1a;Identifying Relationship。 一对多的关联&#xff0c;主表的主键既是子表的外键也是子表的主键 第二个图标&#xff1a;Non-Identifying, Mandatory Relationship。 一对多的关…

ERStudio逆向工程生成ER模型

首先&#xff0c;打开ERStudio&#xff0c;如下图所示&#xff1a; 然后&#xff0c;点击菜单栏上的“File”——“New”&#xff0c;如下图所示&#xff1a; 弹出如下的对话框&#xff0c;选择第二个单选按钮 接着&#xff0c;点击“Login”按钮&#xff0c;弹出如下的对话框&…

使用ERStudio创建数据表与ER图

下面以一个教育网站的用户数据表来举例说明ERStudio的一些基本操作方法&#xff1a; 1.创建数据表实体 打开ERStudio软件&#xff0c;其界面如下&#xff1a; 点击File菜单的NEW或则使用快捷键“CtrlN”着按钮来新建一个ER图文件&#xff0c;按下OK按钮即可打开一个空白的ER图文…

使用ERStudio创建数据表ER图并导出数据表的SQL(DDL)语句

1.创建数据表实体 打开ERStudio软件,其界面如下: 点击File菜单的NEW或则使用快捷键“Ctrl+N”着按钮来新建一个ER图文件,按下OK按钮即可打开一个空白的ER图文件 其后缀是.DM1类型的。新建一个ER文件后,ERStudio的工具栏内的许多按钮从灰色编程了彩色可用。 下面开始创建一个…

esStudio 逆向工程 导出 ER图

第一步&#xff1a;mysql 配置odbc驱动 &#xff1a;驱动安装 第二步配置 ERStudio 首先&#xff0c;打开ERStudio&#xff0c;如下图所示&#xff1a; 然后&#xff0c;点击菜单栏上的“File”——“New”&#xff0c;如下图所示&#xff1a; 弹出如下的对话框&#xff0c;…

erstudio怎么导入mysql数据库?_使用ERStudio生成数据库设计文档。

使用ERStudio生成数据库设计文档 1、用逻辑模型(Logical Model)生成物理模型(Physical Model)。 2、选择Tools->Generate Reports...。 3、在弹出的对话框中选择RTF格式、生成文件的位置和名称&#xff0c;如下图。 3、单击“Next”按钮&#xff0c;在新窗口的左边树Tables项…

erstudio连接mysql_ERStudio的使用

打开ERstudio,点击新建出现如图对话框&#xff1a; 选择第一个&#xff0c;表示创建一个新的关系型 数据库模型 这里提一点数据库模型分为relational(关系)和dimensional(多维) 两种在这里主要以关系型数据库为主来介绍模型的创建过程。 第二和第三项均是重新设计已存在的数据库…

ERStudio使用细则

ER-Studio是一种有助于设计数据库中各种数据结构和逻辑关系的可视化工具&#xff0c;并可用于特定平台的物理数据库的设计和构造&#xff0c;可生成sql和DM1两种文件 工具栏的认知 共有5种逻辑关系&#xff0c;从左到右依次是&#xff1a; Identifying Relationship&#xff…

ERStudio操作指南

ERStudio操作指南 一、创建逻辑模型二、生成SQL脚本 本文使用的ER/Studio版本&#xff1a;ER/Studio Version 8.0.2 一、创建逻辑模型 1、打开ER/Studio后&#xff0c;选择&#xff1a;File>New&#xff0c;打开如下界面&#xff0c;选择Draw a new data model。 如上图&…

DataBseDesign工作笔记003---ERStudio使用笔记_基本使用方法详解

JAVA技术交流QQ群&#xff1a;170933152 场景 这里我采用一个“最经典”的学生选课场景来使用ERStuidio 场景分析 学生与课程是多对多的关系&#xff0c;而在数据库设计中大部分都是将多对多转化成一对多&#xff0c;即需要”第三方”表(选课表)来连接这个关系 学生表一…

ER/Studio生成数据库设计文档

ER/Studio生成数据库设计文档 用ER/Studio生成数据库设计文档之前&#xff0c;至少应该完成数据库的逻辑模型&#xff08;Logical Model&#xff09;&#xff0c;如果有需要&#xff0c;再进一步可以生成物理模型&#xff08;Physical Model&#xff09;。之后&#xff0c;就可…

5分钟入门ER/Studio

文章目录 前言一、创建逻辑模型二、生成SQL脚本三、常用其他操作1、Domains的使用2、生成数据库设计文档3、使用宏把Attribute name复制到Definition 总结 前言 以前一直使用PowerDesigner做数据库模型设计&#xff0c;由于工作需要&#xff0c;要求使用易博龙ER/Studio做数据…