ER/Studio이 매크로 VB스크립트로 되어 있으며, 간단하게 편집 또는 작성 할 수 있습니다.

아래는 Copy&Paste 할 수 있도록 간단한 소스 코드 예제를 두었습니다.


  다운로드 : Sample_AddEntityAttr.bas  , Sample_RemoveEntity.BAS  , Sample_ChangeAttrProperty.bas  , Sample_FileOpen.BAS , Sample_DoMerge.BAS

※ 매크로 소스는 별도 문의 (ask@embarcadero.kr)

 

ER/Studio 자동 조작 API 도움말 문서 ER/Studio가 설치된 폴더에 있는 도움말 파일 중 AIRef.chm 입니다.
보다 상세한 내용과 예제가 있습니다.

' 컬럼을 추가하기 (해당 컬럼이 있을 경우에는 생략)
' 테이블이 없을 경우 해당 테이블을 추가하고, 컬럼 추가
Dim MyDiagram As Diagram
Dim MyModel As Model
Dim MySubModel As SubModel
Dim MyEntity As Entity
Dim MyAttribute As AttributeObj
Dim TableName As String

Sub Main
Set MyDiagram = DiagramManager.ActiveDiagram
Set MyModel = MyDiagram.ActiveModel
'DiagramManager.EnableScreenUpdate(False)

TableName = "TEST_Table"
Set MyEntity = MyModel.Entities.Item(TableName)
'해당 테이블이 없으면 생성
If MyEntity Is Nothing Then
Set MyEntity = MyModel.Entities.Add(10,10)
MyEntity.EntityName = TableName
MyEntity.TableName = TableName
End If
'컬럼 추가 (해당 컬럼이 있는 경우 에는 생략된다)
Set MyAttribute = MyEntity.Attributes.Add("col1", True)
MyAttribute.Datatype = "CHAR"
MyAttribute.DataLength=5
MyAttribute.NullOption = "NOT NULL"

Set MyAttribute = MyEntity.Attributes.Add("col2", True)
MyAttribute.Datatype = "CHAR"
MyAttribute.DataLength=20
MyAttribute.NullOption = "NOT NULL"

End Sub

' 엔티티(테이블) 찾아서 제거하기
Dim MyDiagram As Diagram
Dim MyModel As Model
Dim MySubModel As SubModel
Dim MyEntity As Entity

Sub Main
Set MyDiagram = DiagramManager.ActiveDiagram
Set MyModel = MyDiagram.ActiveModel

'DiagramManager.EnableScreenUpdate(False)
For Each MyEntity In MyModel.Entities
If MyEntity.EntityName = "TEST_Table" Then
MyModel.Entities.Remove(MyEntity.ID)
End If
Next
End Sub

'컬럼(어트리뷰트) 속성 변경
Dim MyDiagram As Diagram
Dim MyModel As Model
Dim MyEntity As Entity
Dim MyAttribute As AttributeObj
Dim strFile As String

Sub Main
Debug.Clear
Set MyDiagram = DiagramManager.ActiveDiagram
Set MyModel = MyDiagram.ActiveModel

' 모든 엔티티의 속성을 변경할 때는 아래 코드 사용
'For Each MyEntity In MyModel.Entities
' For Each MyAttribute In MyEntity.Attributes
' '도메인 바인딩을 푼다 (도메인에 바인딩되어 있으면 datatype 변경이 안된다)
' If MyAttribute.DomainId <> 0 Then MyAttribute.DomainId = 0
' MyAttribute.Datatype = "decimal"
' MyAttribute.DataLength = 20
' Next
'Next

'특정 테이블의 컬럼(어트리뷰트)를 변경하려면
TableName = "TEST_Table"
Set MyEntity = MyModel.Entities.Item(TableName)
If MyEntity Is Nothing Then '해당 테이블이 없으면 생성
Set MyEntity = MyModel.Entities.Add(10,10)
MyEntity.EntityName = TableName
MyEntity.TableName = TableName
End If
Set MyAttribute = MyEntity.Attributes.Add("col1", True) '컬럼이 없을 경우 하나 추가
For Each MyAttribute In MyEntity.Attributes
'도메인 바인딩을 푼다 (도메인에 바인딩되어 있으면 datatype 변경이 안된다)
'도메인 바인딩을 풀지 않고 수정하려면 가장 하단의 내용 참조
'If MyAttribute.DomainId <> 0 Then MyAttribute.DomainId = 0
MyAttribute.PrimaryKey =True
MyAttribute.Datatype ="DECIMAL"
MyAttribute.DataLength =10
MyAttribute.DataScale = 3
MyAttribute.NullOption ="NOT NULL"
MyAttribute.Definition = "매크로 컬럼 속성 수정 테스트"
MyAttribute.Notes = "노트"
Next
End Sub

'컬럼(어트리뷰트)이 도메인에 물려 있음에도 불구하고
'아래의 속성을 변경하려면, 원하는 값에 대한 Override를 true로 준다
'예시: MyAttribute.EnableOverride(5, True)
'The value of OverrideFlag can be one of the following:
'1 - Bound default
'2 - Default text
'3 - Bound rule
'4 - Check constraint
'5 - Definition
'6 - Note
'7 - Domain datatype (override domain's version)
'8 - Foreign key datatype (override parent key's version)

' dm1. 파일 읽어 오기
Sub Main

Dim MyDiagram As Diagram
Dim strFile As String

strFile = "C:\ProgramData\Embarcadero\ERStudioDA_XE\Sample

Models\Demo.dm1"
Set MyDiagram = DiagramManager.OpenFile(strFile)

End Sub

'비교/동기화 일괄 병합하기
'ER/Studio에서 Compare/Merge 마법사에서 비교 설정을 한후 .cmo 파일로 저장해두면, 재사용성이 좋으며, API 호출이 가능하다
Dim MyDiagram As Diagram
Dim MyMergeModel As MergeModel

Sub Main

Set MyDiagram = DiagramManager.ActiveDiagram
Set MyMergeModel = MyDiagram.MergeModelObject

'동기화
MyMergeModel.DoMerge ("C:\MERGE_TEST.cmo", 1) '저장해둔 .cmo 파일의 비교 기준으로 동기화, 0:무시, 1:원본>타겟, 2:타겟>원본
MyMergeModel.MergeReport ("C:\MERGE_TEST.cmo", "C:\MERGE_TEST_REPORT.html", 1,1)
End Sub

'제목: 이름-특정글자수 이상 표시

Sub Main
Dim mdl As Model
Dim diag As Diagram
Dim ent As Entity
Dim length As Integer

length = 20
Set diag = DiagramManager.ActiveDiagram
Set mdl = diag.ActiveModel
For Each ent In mdl.Entities
If Len(ent.TableName) > length Then
Debug.Print ent.TableName
End If
Next ent
End Sub

번호 제목 글쓴이 날짜 조회 수
공지 [기술 보고서 다운로드] IDC Technology Spotlight: 모델 기반 데이터 설계를 통한 비즈니스 민첩성 확보 방안 관리자 2015.08.24 8533
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39730
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50500
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52906
142 [기술백서] ER/Studio를 활용한 데이터 표준화 시스템 구축방안 관리자 2014.11.12 1156
141 DB Power Studio #4-2. DBArtisan 둘러보기(데이터베이스 보안 관리) 손보라 2014.08.20 1175
140 DB Power Studio #4-5. DBArtisan 둘러보기(데이터 관리) 손보라 2014.08.21 1179
139 DB Power Studio #4-6. DBArtisan 둘러보기(데이터베이스 성능 관리) 손보라 2014.08.22 1185
138 DB Power Studio #4-3. DBArtisan 둘러보기(데이터베이스 공간 관리) 손보라 2014.08.21 1203
137 DB Power Studio #4-7. DBArtisan 둘러보기(메뉴 기능) 손보라 2014.08.22 1212
136 DB Power Studio #4-4. DBArtisan 둘러보기(SQL 관리) 손보라 2014.08.21 1276
135 ER/Studio 기본 가이드 #6. ER/Studio Data Architect로 메타데이터 import & export하기 손보라 2014.08.07 1277
134 ER/Studio 기본 가이드 #5. ER/Studio Data Architect의 데이터 딕셔너리 사용하기 손보라 2014.08.06 1296
133 DB Power Studio #4-1. DBArtisan 둘러보기(오브젝트 및 스키마 관리) 손보라 2014.08.20 1319
132 ER/Studio 기본 가이드 #4. ER/Studio Data Architect로 모델 간 비교 및 차이점 반영하기 손보라 2014.08.05 1323
131 DB Power Studio #1. DB Optimizer 둘러보기 손보라 2014.08.09 1334
130 DB Power Studio #3-2. Rapid SQL 둘러보기(비주얼 쿼리 빌더) 손보라 2014.08.19 1343
129 [기술백서] 데이터아키텍트가 비즈니스 업무 부서와 협업하기 위해 알아야 할 다섯가지 관리자 2014.09.26 1343
128 [기술백서] ERwin이 아닌 ER/Studio를 선택하는 10가지 이유 관리자 2014.11.12 1347
127 ER/Studio 기본 가이드 #2. ER/Studio Data Architect로 논리/물리 모델링 시작하기 손보라 2014.08.01 1350
126 ER/Studio 기본 가이드 #3. ER/Studio Data Architect로 기존 데이터베이스 문서화하기 손보라 2014.08.04 1354
125 ER/Studio 기본 가이드 #1. ER/Studio Data Architect로 데이터모델링 시작하기 손보라 2014.08.01 1361
124 DB Power Studio #3-1. Rapid SQL 둘러보기(SQL 작성) 손보라 2014.08.18 1388
123 [온라인 세미나 발표자료] 스마트한 DBMS관리: DB PowerStudio 따라잡기, LIVE! 관리자 2014.09.25 1405