DA# Macro_v2.13_20221217部署

分发 DA# Macro_v2.13_20221217,纠正两个与反向相关的错误。更正的错误是:

  • [修复]反向:修改模板中指定的Attribute属性值(标准化、信息保护、信息保护等级、加密、加扰)
  • [Fix] Reverse:修复了未设置信息保护级别值的bug

作为参考,DA#宏介绍(DA# 宏 (1):DA#、DA# API、DA# 宏概述 – 生产力技能 (prodskill.com)) 是基于 v2.12 解释的。

1.Bug现象

1.1.反向:推送模板中指定的Attribute属性的值

这是一个错误,其中模板文件的“列”表中指定的值被一个一个地推回。例如,当在模板文件中输入以下内容时,会重现此错误。

template에 지정한 값 밀림
推送模板中指定的值

每个属性可以输入的值如下。

  • 标准化:只能输入其中一个固定值
  • 信息是否受保护:只能输入Y/N之一
  • 信息保护级别:字符串
  • 加密:只能输入Y/N之一
  • 争夺:字符串

由于可以输入的值不一样,所以一一推是不正常设置的。

1.2.反向:未设置信息保护级别值

这是一个错误,即使在上图中输入了“信息安全级别”值,也没有在数据模型中设置该值。由于“信息保护级别”值只能输入 Y/N 之一,因此不输入忽略字符串值。

2.修改

2.1. [修复]反向:修改模板中指定的属性值

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,然后将常量值减一。该常量值表示反向模板文件“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. [Fix] Reverse:修复了未设置信息保护级别值的bug

在 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

zh_CN简体中文