微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有没有办法将 0 视为整数字段中的值,而不是 x++ 中的空值?

如何解决有没有办法将 0 视为整数字段中的值,而不是 x++ 中的空值?

我正在将数据从 excel 导入到我的日记中,并且我有温度场...有些温度的值为 0,但是当我将其导入我的日记并验证该日记时,它说温度场为空。有没有办法让系统理解我导入的是 0 作为值,而不是在验证时作为空值??

编辑:

我在表单网格上更改了显示零“否”。它删除认零,但遗憾的是它也删除了我导入的 0 温度值.... 我找到了该字段的控制权 -

if( !table.temperature)
            {
                ret = checkFailed(strFmt("label",fieldId2PName(table.TableId,fieldNum(table,temperature))));
            }

问题是,它将 0 视为空字段...

解决方法

根据您的编辑和评论,我认为您想区分温度字段中的默认 0 值和从 Excel 导入的 0 值。

正如我在评论中提到的,Dynamics AX/365FO 表中没有空值,这是个坏消息,您无法通过温度场单独区分这两种“类型”的 0 值。>

选项 1:添加布尔字段

一个选项是添加另一个布尔类型的字段,例如名为hasTemperature。从 Excel 导入温度值时,需要添加逻辑将此字段设置为 true。 然后,在您问题的代码片段中,您可以检查此字段,例如像这样:

if (table.hasTemperature == false)
{
    ret = checkFailed(strFmt("Field '%1' must be filled in.",fieldId2PName(table.TableId,fieldNum(table,temperature))));
}

注意,当表格中的数据不仅是通过Excel导入,还有其他方式输入时,还需要添加相应的设置hasTemperature的逻辑。

选项 2:定义您自己的“空”值

如果您不喜欢添加另一个字段的想法,您还可以找到数据中不存在的温度值(例如 -4711 将远低于摄氏和华氏度的 absolute zero 温度)并将其视为您的默认“空”值。然后在表的 init 方法中,将温度字段设置为该值。请确保在您的代码中为其他开发人员完整记录此 magic number。还要确保在 Excel 导入过程中调用 init 方法。

然后您可以按如下方式重写代码片段:

if (table.temperature == -4711)
{
    ret = checkFailed(strFmt("Field '%1' must be filled in.",temperature))));
}

我建议您向表中添加一个静态方法,该方法仅返回此幻数并具有一个有意义的名称(例如 defaultNullTemperature)。然后在您需要此幻数时在代码中使用此方法。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。