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 8230
공지 ER/Studio Team Server(ER/Studio 용 웹포탈) 설치 및 사용자 가이드 손보라 2014.07.15 39436
공지 Repository 설치 및 사용 가이드 손보라 2014.05.27 50157
공지 ER/Studio Data Architect 설치 및 사용자가이드 관리자2 2012.01.27 52568
75 [매크로활용] 산출물 자동화(테이블 정의서) 문효섭 2012.04.10 16395
74 [매크로활용] 용어사전 활용 문효섭 2012.04.10 11869
73 [매크로활용] 공용테이블을 제외하고 DDL문 생성 문효섭 2012.04.10 9862
72 [매크로활용] PK 일괄 명명 file 문효섭 2012.04.10 9006
71 [매크로활용] FK 일괄 명명 file 문효섭 2012.04.10 10694
70 [매크로활용] Index 일괄명명 file 문효섭 2012.04.10 10358
69 [매크로활용] 메타데이터를 엑셀로 file 문효섭 2012.04.10 11417
68 [매크로활용] 엔티티, 속성, 관계, 뷰 정의 일괄 임포트 file 문효섭 2012.04.10 11678
67 [매크로활용] 테이블 소유자 일괄 수정 file 문효섭 2012.04.10 10874
66 [매크로활용] 운영DB의 Comment를 한글명(논리명)으로 일괄 변환 [1] file 문효섭 2012.04.10 12366
65 [매크로활용] 한글명(논리명)을 Comment(Definition)에 반영하기 문효섭 2012.04.10 11028
64 [매크로활용] 클릭 한번으로 시스템 컬럼 일괄반영 문효섭 2012.04.10 10136
» [매크로활용] 매크로 스크립트 Sample 문효섭 2012.04.10 9928
62 [API활용] 자동 조작 API 사용하기 [1] file 문효섭 2012.04.10 7431
61 유용한 단축키 문효섭 2012.04.23 5019
60 각 관계에 따른 FK의 속성 [2] file spectra 2012.06.25 7745
59 이기종 파일 변환하기 file spectra 2012.06.25 4811
58 역공학을 위한 ODBC 연결 file spectra 2012.06.25 8752
57 20121204_Len Silverston 세미나 자료: UDM을 활용한 애자일 데이터 모델링 file 관리자 2012.12.03 4133
56 Embarcadero ER/Studio v9.0 vs. CA ERwin R8 file 문효섭 2013.03.23 6845