首页 > 解决方案 > 如何在 SQL Server 中显示 Dynamics NAV 表选项字段文本值

问题描述

有时在 Dynamics NAV 开发过程中,使用 SQL Server 快速查看数据会很有帮助。但是因为选项类型的任何字段都是枚举,所以您在 SQL Server 中得到的只是数值。我需要一种快速而肮脏的方法来获取选项文本值。

标签: dynamics-nav

解决方案


在 NAV 中,您可以读取 FieldReference 的 OPTIONSTRING 属性。这是一个逗号分隔的字符串。可以安排一个作业,该作业将按编号循环遍历所有表(按表过滤的对象虚拟表),找到选项字符串并将它们添加到表中。然后在查询中,您可以找到表、字段编号和字段值的选项文本值。

RecRef.OPEN(TableNo);
FOR i := 1 TO RecRef.FIELDCOUNT DO BEGIN
  FieldRef := RecRef.FIELDINDEX(i);
  IF FORMAT(FieldRef.TYPE) = 'Option' THEN BEGIN
    optionstring := FieldRef.OPTIONSTRING;
    c := NumberofOptions(optionstring);
    FOR o := 1 TO c DO BEGIN
      OptionsTable.INIT;
      OptionsTable."Table No" := TableNo;
      OptionsTable."Field No" := FieldRef.NUMBER;
      OptionsTable."Option Value" := o-1;
      OptionsTable."Option Text" := SELECTSTR(o, optionstring);
      OptionsTable."Field Name" := FieldRef.NAME;
      IF NOT OptionsTable.INSERT THEN OptionsTable.DELETE;
    END;
  END;
END;

推荐阅读