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 8324
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39525
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50255
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52668
33 MSSQL Server에 리파지토리 설치 시 "##tmp[테이블명] table could not initialize bulk insert" 문제 관리자 2015.09.04 5089
32 [매크로활용] [MySQL] 컬럼의 Definition을 DB Comment에 추가하기 file 손보라 2015.08.06 5450
31 ER/Studio! MongoDB 지원 손보라 2015.03.19 4800
30 CONNECT API로 당신의 데이터에 손쉽게 접근하기. [1] file 관리자2 2014.05.08 4038
29 Data Architect 9.6/XE4 새로운 기능! file 손보라 2013.12.31 5196
28 ER/Studio 업그래이드 가이드 [1] file 문효섭 2013.12.18 5159
27 [매크로활용] 유효성 검사(물리모델) file 손보라 2013.11.29 8276
26 더 스마트한 데이터 거버넌스! CONNECT 데모 영상 관리자 2013.10.21 5853
25 데이터거버넌스 어떻게 시작할 것인가 #9. 포탈(Portal)을 통해 모델 배포하기 관리자 2013.10.21 5539
24 데이터거버넌스 어떻게 시작할 것인가 #8. ETL 작업 역공학(Reverse Engineering) 관리자 2013.10.15 5798
23 데이터거버넌스 어떻게 시작할 것인가 #3. 데이터 딕셔너리 생성 관리자 2013.08.27 6059
22 데이터거버넌스 어떻게 시작할 것인가 #2. ER/Studio BA: 개념 및 프로세스 맵 구성 관리자 2013.08.26 5689
21 데이터거버넌스 어떻게 시작할 것인가 #1. 엔터프라이즈 정보 맵 관리자 2013.08.12 5796
20 [매크로활용] 리파지토리의 데이터모델을 한꺼번에 내려받기 문효섭 2013.07.18 7393
19 You Can Jump Start Data Gorvernance in 30 Minutes 문효섭 2013.06.13 6792
18 Embarcadero ER/Studio v9.5 vs. CA ERwin R9 file 문효섭 2013.03.23 6844
17 Embarcadero ER/Studio v9.0 vs. CA ERwin R8 file 문효섭 2013.03.23 6850
» [매크로활용] 매크로 스크립트 Sample 문효섭 2012.04.10 9944
15 [매크로활용] 클릭 한번으로 시스템 컬럼 일괄반영 문효섭 2012.04.10 10146
14 [매크로활용] 한글명(논리명)을 Comment(Definition)에 반영하기 문효섭 2012.04.10 11043