一直使用er studion 来建数据库的模型图。 用了几年苦于 erstudion 不能生成带说明注释的sql 语句,每次生成实体之后都要自己去加注释。 今天根据外国朋友的资料找到了办法

  需要自己建一段弘代码

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

然后在tools里面 macro 里面新建一个 运行下 。就自动保存到er studion的macro 里面去了

其实不使用这外力的的情况下也是可以生成的 但是麻烦些 在新建字段名的时候选择

definition 标签选项 然后在里面写入注释 生成sql的时候也会生成带说明的sql语句 

记得在生成物理模型的时候要勾选

让er studio 生成带说明的sql

让er studio 生成带说明的sql

 

 

sql 语句的时候EXECUTE sp_addextendedproperty N'MS_Description', '描述内容', N'user', N'dbo', N'table', N'表名', NULL, NULL

相关文章: