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
122 데이터아키텍트가 비즈니스 업무부서와 협업하기 위해 알아야 할 5가지 file 문효섭 2012.03.27 6435
121 DB Optimizer 에디션 선택 가이드(에디션 별 차이) file 문효섭 2012.03.28 6203
120 [매크로활용] 도메인 일괄 생성 file 문효섭 2012.04.10 9974
119 [매크로활용] 도메인 일괄 바인딩 file 문효섭 2012.04.10 13036
118 [매크로활용] 도메인 바인딩 편의 제공 file 문효섭 2012.04.10 9156
117 [매크로활용] 산출물 자동화(테이블 정의서) 문효섭 2012.04.10 16559
116 [매크로활용] 용어사전 활용 문효섭 2012.04.10 11936
115 [매크로활용] 공용테이블을 제외하고 DDL문 생성 문효섭 2012.04.10 9899
114 [매크로활용] PK 일괄 명명 file 문효섭 2012.04.10 9034
113 [매크로활용] FK 일괄 명명 file 문효섭 2012.04.10 10746
112 [매크로활용] Index 일괄명명 file 문효섭 2012.04.10 10389
111 [매크로활용] 메타데이터를 엑셀로 file 문효섭 2012.04.10 11502
110 [매크로활용] 엔티티, 속성, 관계, 뷰 정의 일괄 임포트 file 문효섭 2012.04.10 11732
109 [매크로활용] 테이블 소유자 일괄 수정 file 문효섭 2012.04.10 10906
108 [매크로활용] 운영DB의 Comment를 한글명(논리명)으로 일괄 변환 [1] file 문효섭 2012.04.10 12522
107 [매크로활용] 한글명(논리명)을 Comment(Definition)에 반영하기 문효섭 2012.04.10 11078
106 [매크로활용] 클릭 한번으로 시스템 컬럼 일괄반영 문효섭 2012.04.10 10191
» [매크로활용] 매크로 스크립트 Sample 문효섭 2012.04.10 9974
104 [API활용] 자동 조작 API 사용하기 [1] file 문효섭 2012.04.10 7449
103 유용한 단축키 문효섭 2012.04.23 5034