Как отобразить текстовые значения поля параметра таблицы Dynamics NAV в SQL Server - PullRequest
0 голосов
/ 29 сентября 2018

Иногда при разработке Dynamics NAV полезно быстро взглянуть на данные с помощью SQL Server.Но поскольку любые поля типа option являются перечислениями, все, что вы получаете в SQL Server, это числовое значение.Вместо этого мне нужен был быстрый и грязный способ получить значения текста опции.

Ответы [ 3 ]

0 голосов
/ 01 ноября 2018

Из NAV вы можете прочитать свойство OPTIONSTRING FieldReference.Это строка, разделенная запятыми.Можно запланировать задание, которое будет проходить по всем таблицам (виртуальная таблица объектов фильтруется по таблице) по номеру, находить строки параметров и добавлять их в таблицу.Затем в запросе вы можете найти текстовое значение параметра для таблицы, номера поля и значения поля.

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;
0 голосов
/ 11 декабря 2018

Я часто получаю эту проблему.Я создал таблицу со значениями параметров (int) и именами (строка).Первичный ключ - это код, значение.Таким образом, вы можете использовать его также для разрешения магических чисел из других систем.Тогда вы можете легко присоединиться к этой таблице:

select Type, i.[Option] [Option Name]
from Object o
join [xxx$IntegerToOption] i on i.Code = 'OBJEKT TYP' and i.Integer = o.Type
order by o.Name

Вывод:

Type    Option Name
5   Codeunit
2   Form
1   Table
2   Form
2   Form
1   Table
2   Form
5   Codeunit
3   Report
0 голосов
/ 29 сентября 2018

Чтобы сделать это немного менее болезненным, я создал файл Excel с поддержкой макросов, который анализирует строку параметра поля Dynamics NAV в операторе Sql Server T-Sql Case.Он предоставляет горизонтальный или вертикальный регистр и использует имя поля в качестве псевдонима столбца в Sql Server.Наслаждайтесь ...

Screenshot

Вот ссылка на файл Excel Файл Excel

...