DA# Macro_v2.13_20221217 デプロイ

Reverse関連の2つのエラーを修正したDA# Macro_v2.13_20221217を展開します。修正したエラーは次のとおりです。

  • [修正] Reverse: templateに指定したAttribute属性値のジャンプ修正(標準化、情報保護の有無、情報保護等級、暗号化の可否、スクランブル)
  • [修正] Reverse:情報保護等級の値が設定されていないバグを修正

参考までに、DA# Macro紹介記事(DA# Macro(1): DA#, DA# API, DA# Macro (マクロ) 概要 – 生産性 Skill (prodskill.com)) は v2.12 に基づいて説明した。

1. バグ現象

1.1。 Reverse: template で指定した Attribute 属性値をジャンプする

templateファイルの「Column」シートに指定した値が1つずつ後方に押されて設定されるバグです。たとえば、テンプレートファイルに次のように入力すると、このバグが再現されます。

template에 지정한 값 밀림
template で指定した値のジャム

各Attribute属性に入力できる値は次のとおりです。

  • 標準化:指定された値の1つのみを入力可能
  • 情報保護の有無:Y/Nのうち1つのみ入力可能
  • 情報保護等級:文字列
  • 暗号化可:Y/Nのうち1つのみ入力可能
  • スクランブル:文字列

入力できる値がそれぞれ異なるため、1つずつ押すと正常に設定されない。

1.2. Reverse:情報保護等級値が設定されていません

上の画像で「情報保護等級」の値を入力してもデータモデルに値が設定されないバグです。 「情報保護等級」の値をY/Nのうち1つだけ入力可能に扱っており、文字列値を無視して入力されない。

2. 修正内容

2.1。 [修正] 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 をコメントアウトし、その後定数値を1つずつ減らした。この定数値は、Reverse templateファイル「Column」シートの列順番を表します。

'----------------------------------------------------------------------------------------------------
'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. [修正] 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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ja日本語