AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2023, 17:37   #15  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,971 / 3267 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
На будущее оставлю здесь ссылку на SQL-скрипт для AX2012
https://github.com/dodiggitydag/AX-2...model%20db.sql
Там похоже ошибка в этом месте
X++:
----------------------------------------------------------------------------------------------
-- Step 4 Fix the field ids in SQLDictionary which do not match
----------------------------------------------------------------------------------------------
PRINT 'Step 4';

WITH t AS (
    SELECT (
            SELECT m1.NAME
            FROM ModelElement m1
            WHERE m1.ElementHandle = m.ParentHandle
        ) AS [Table Name],
        m.NAME AS [mName],
        m.AXid,
        s.RECID,
        M.ParentId,
        s.TableId,
        s.FieldID,
        S.NAME,
        s.SQLNAME
    FROM ModelElement m
    LEFT OUTER JOIN AX2012DB.dbo.SQLDICTIONARY s
        ON m.ParentId = s.TABLEID
        AND s.NAME =  upper(m.NAME) collate Latin1_General_CI_AS
    WHERE m.ElementType = 42 -- UtilElementType::TableField
        AND (s.ARRAY = 1 OR s.ARRAY IS NULL)
        AND (s.FieldID > 0 OR s.FieldID IS NULL)
        AND s.FieldID != m.AxId
)
UPDATE AX2012DB.dbo.SQLDICTIONARY
SET FIELDID = (t.axid * -1) -- Set to a negative number but correct ID
FROM t join AX2012DB.dbo.SQLDICTIONARY s
ON upper(t.mName) collate Latin1_General_CI_AS = s.NAME
    AND s.FieldID <> 0
    AND s.TableId = t.ParentId
проблема в том что для табличек с наследованием (DirPartyTable -->..--> CompanyInfo) таблички наследники в ModelElement содержат ParentId равный идентификатору таблички (для CompanyInfo - будет 41 т.е. tableNum(CompanyInfo), а в SqlDictionary содержат в TableId значение корневой таблички иерархии, т.е. 2303 = tableNum(DirPartyTable) )

Последний раз редактировалось Logger; 04.05.2023 в 17:42.
За это сообщение автора поблагодарили: sukhanchik (10).
Теги
ax2009, sqldictionary, законченный пример

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Set записей таблицы OOuph DAX: Программирование 6 11.02.2008 10:27
Как добавить в фильтрацию записей доп. таблицы n:1 или 1:n? Hidden DAX: Программирование 6 11.08.2006 14:04
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
Программное создание новых записей Владимир Максимов DAX: Программирование 35 06.03.2006 14:08
Lookupы при большом количестве записей выводимой таблицы Pavlo AKA Panok DAX: Программирование 9 07.05.2002 22:02

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:54.