在ER/Studio中使用宏把Attribute name复制到Definition
最近在处理ER/Studio生成SQL脚本时发现,如果在Definition处没有定义,那么在生成SQL脚本后就没有表和字段的注释。
因此就写了一个宏来实现这个功能,代码如下:
把以下代码保存为XXX.bas文件放到ER/Studio安装目录下的Macros的文件夹下,ER/Studio就可以自动加载到Macros选项卡中,如:C:\Program Files\Embarcadero\ERStudio6.5\Macros
Dim EntCount As Integer Dim ColCount As Integer Dim MyDiagram As Diagram Dim MyModel As Model Dim MyEntity As Entity Dim MyAttribute As AttributeObjDim TableArray() As String Dim ColArray() As String Function getColumns(TableName As String ) Dim Indx As Integer Dim count As Integer count = 1 Indx = 0 Set MyEntity = MyModel.Entities.Item(TableName) ColCount = MyEntity.Attributes.Count ReDim ColArray(0 To ColCount) As String For count=1 To ColCount For Each MyAttribute In MyEntity.Attributes If MyAttribute.SequenceNumber = count Then If MyModel.Logical = True Then If MyAttribute.HasLogicalRoleName = True Then ColArray(Indx) = MyAttribute.LogicalRoleName Else ColArray(Indx) = MyAttribute.AttributeName End If Else If MyAttribute.HasRoleName = True Then ColArray(Indx) = MyAttribute.RoleName Else ColArray(Indx) = MyAttribute.ColumnName End If End If MyAttribute.Definition = ColArray(Indx) Indx= Indx +1 End If Next MyAttribute Next count End Function Sub Main Debug.Clear Set MyDiagram = DiagramManager.ActiveDiagram Set MyModel = MyDiagram.ActiveModel Dim Indx As Integer Indx = 0 EntCount = MyModel.Entities.Count - 1 ReDim TableArray(0 To EntCount) As String For Each MyEntity In MyModel.Entities If MyModel.Logical = True Then TableArray(Indx) = MyEntity.EntityName Else TableArray(Indx) = MyEntity.TableName End If MyEntity.Definition = TableArray(Indx) getColumns(TableArray(Indx)) Indx = Indx +1 Next MyEntity End Sub |