DA# Macro_v2.13_20221217 배포

Reverse 관련 두 가지 오류를 수정한 DA# Macro_v2.13_20221217 를 배포한다. 수정한 오류는 다음과 같다.

  • [Fix] Reverse: template에 지정한 Attribute 특성 값 밀림 수정(표준화, 정보보호여부, 정보보호등급, 암호화여부, 스크램블)
  • [Fix] Reverse: 정보보호등급 값 설정되지 않는 버그 수정

참고로, DA# Macro 소개글(DA# Macro(1): DA#, DA# API, DA# Macro (매크로) 개요 – 생산성 Skill (prodskill.com))은 v2.12를 기준으로 설명했었다.

1. 버그 현상

1.1. Reverse: template에 지정한 Attribute 특성 값 밀림

template 파일의 “Column” 시트에 지정한 값이 하나씩 뒤로 밀려서 설정되는 버그이다. 예를 들어, template 파일에 다음과 같이 입력한 경우에 이 버그가 재현된다.

template에 지정한 값 밀림
template에 지정한 값 밀림

각 Attribute 특성에 입력할 수 있는 값은 다음과 같다.

  • 표준화: 정해진 값 중 하나만 입력 가능
  • 정보보호여부: Y/N 중 하나만 입력 가능
  • 정보보호등급: 문자열
  • 암호화여부: Y/N 중 하나만 입력 가능
  • 스크램블: 문자열

입력할 수 있는 값이 각각 다르기 때문에, 하나씩 밀리면 정상적으로 설정되지 않는다.

1.2. Reverse: 정보보호등급 값 설정되지 않음

위 이미지에서 “정보보호등급” 값을 입력했음에도 데이터 모델에 값이 설정되지 않는 버그이다. “정보보호등급” 값을 Y/N 중 하나만 입력 가능하도록 다루고 있어서 문자열 값을 무시하고 입력되지 않는다.

2. 수정 내용

2.1. [Fix] Reverse: template에 지정한 Attribute 특성 값 밀림 수정

modDAConstType 모듈의 변경 전 코드(일부 발췌)는 다음과 같다.

'----------------------------------------------------------------------------------------------------
'Reverse Attribute property Index
Public Const DA_REVATTR_Sequence_IDX As Long = 0
Public Const DA_REVATTR_ModelName_IDX As Long = 1
Public Const DA_REVATTR_EntityName_IDX As Long = 2
Public Const DA_REVATTR_Name_IDX As Long = 3
...
Public Const DA_REVATTR_Inclusive_IDX As Long = 27
Public Const DA_REVATTR_StandardType_IDX As Long = 28
Public Const DA_REVATTR_PrivacyAct_IDX As Long = 29
Public Const DA_REVATTR_PrivacyGrade_IDX As Long = 30
Public Const DA_REVATTR_Encryption_IDX As Long = 31
Public Const DA_REVATTR_EncryptionMethod_IDX As Long = 32

DA_REVATTR_Inclusive_IDX 를 주석처리하고 그 이후 상수값을 하나씩 줄였다. 이 상수값은 Reverse template 파일 “Column” sheet의 컬럼 순번을 나타낸다.

'----------------------------------------------------------------------------------------------------
'Reverse Attribute property Index
Public Const DA_REVATTR_Sequence_IDX As Long = 0
Public Const DA_REVATTR_ModelName_IDX As Long = 1
Public Const DA_REVATTR_EntityName_IDX As Long = 2
Public Const DA_REVATTR_Name_IDX As Long = 3
...
'Public Const DA_REVATTR_Inclusive_IDX As Long = 27 '2022-12-17 주석 처리(Reverse에는 사용하지 않도록 처리함)
Public Const DA_REVATTR_StandardType_IDX As Long = 27
Public Const DA_REVATTR_PrivacyAct_IDX As Long = 28
Public Const DA_REVATTR_PrivacyGrade_IDX As Long = 29
Public Const DA_REVATTR_Encryption_IDX As Long = 30
Public Const DA_REVATTR_EncryptionMethod_IDX As Long = 31

2.2. [Fix] Reverse: 정보보호등급 값 설정되지 않는 버그 수정

CDAAttribute 클래스의 SetValue 프로시져에 정보보호등급 값을 GetBoolean 함수로 변환하고 있었다. 정보보호등급은 Y/N 으로 설정하는 값이 아니고 입력한 문자열을 그대로 설정해야 하는데 불필요하게 GetBoolean 함수를 실행하여 값이 설정되지 않았다.

다음과 같이 코드를 수정하였다.

'DA# Attribute 개체에 값 설정
Public Sub SetValue(ByRef aodAttribute As Modeler5.Attribute)
    ....
    '-- 변경 전 코드
    arrAttr(Modeler5.ATR_PRIVACYGRADE) = GetBoolean(Me.m_s정보보호등급)

    '-- 변경 후 코드
    arrAttr(Modeler5.ATR_PRIVACYGRADE) = Me.m_s정보보호등급

참고로, GetBoolean 함수는 다음과 같이 구현되어 있다.

'Text(Y, N)의 Boolean value 변환(True, False)
Public Function GetBoolean(aValue As String) As Boolean
    GetBoolean = IIf(UCase(Trim(aValue)) = "Y", True, False) 'Y=True, Else=False
End Function

3. DA# Macro_v2.13_20221217 다운로드

버그를 수정한 버전을 github에 올려 두었다. 아래 URL에서 다운로드할 수 있다.

https://github.com/DAToolset/DA-Macro/raw/main/DA%23%20Macro_v2.13_20221217.xlsm

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

ko_KR한국어