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 8328
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39527
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50261
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52671
122 [기술백서] 보다 빠른 SQL튜닝과 분석을 위한 새로운 툴 관리자 2014.11.12 1414
121 ER/Studio 기본 가이드 #8. 데이터베이스로부터 데이터모델 리버스엔지니어링하기(Reverse Engineer) 손보라 2014.08.08 1428
120 [기술백서] 업무 수행 능력이 뛰어난 DBA 관리자 2014.11.12 1492
119 DBArtisan과 RapidSQL XE6에서 PostgreSQL 지원!! file 손보라 2014.09.18 1558
118 ER/Studio XE6에 새로운 기능! file 손보라 2014.09.18 1563
117 ER/Studio 기본 가이드 #7. 모델의 변경사항을 데이터베이스에 반영하기(Forward Engineer) 손보라 2014.08.08 1617
116 [기술백서] DB툴 선택시 고려사항 top10 관리자 2014.11.12 1636
115 [기술백서] 성능 좋은 SQL 작성법 관리자 2014.11.12 1654
114 DB Power Studio #2. DB Change Manager 둘러보기 [1] 손보라 2014.08.12 1658
113 [기술백서] ER/Studio 9.5 vs. ERwin r9 관리자 2014.09.26 1679
112 [기술백서] 하루에 1시간을 벌 수 있는 10가지 방법 관리자 2014.11.12 1824
111 [기술백서] 데이터 설계 분석: 상향식(bottom-up) 설계 분석과 표준화 관리자 2014.09.26 1895
110 ER/Studio DA에서 ODBC를 이용한 포워드 엔지니어링 file 손보라 2014.06.25 2053
109 20140214 "데이터거버넌스: 비즈니스 정보와 IT 데이터의 연결" 발표자료 관리자 2014.03.12 2244
108 [기술백서] XML, NoSQL, 빅데이터, 클라우드로 옮겨가는 시장 상황 속, 데이터모델링 여전히 중요한가 관리자 2014.09.26 2393
107 ERwin으로 작성된 모델을 ER/Studio로 마이그래이션하기 file 손보라 2015.01.12 2531
106 Oracle ACE Director가 말하는 Rapid SQL의 Auto Replace 기능 file 손보라 2014.10.09 2671
105 Universal Mapping 2. 실제로 동일한 엔티티가 여러 다른 파일에 다른 엔티티명으로 존재하는 경우 엔티티 맵핑 손보라 2014.01.25 2702
104 Universal Mapping 1. 실제로 동일한 엔티티가 서로 다른 파일에 다른 엔티티명으로 존재하는 경우 엔티티 맵핑 손보라 2014.01.25 2750
103 Oracle ACE Director가 말하는 Rapid SQL의 쿼리빌더 팁 file 손보라 2014.10.09 2779