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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.07.2008, 13:39   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,947 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Баг SysDataImport
При стандартном импорте SysDataImport
есть неприятный баг.
Если испортируемые таблицы связаны по RecId и в таблице содержащей ссылку refrecId нет индекса по RecId то ссылка импортируется некорректно - происходит ошибка времени выполнения, некорректный SQL запрос, но транзакция не откатывается и кривые записи импортируются

Ошибка содержится тут :
\Classes\SysDataImport\recIdSimpleSqlUpdate

X++:
//        sql+=' FROM ' + dictTable.name(DbBackend::Sql); // эта строка не нужна в Update запросе // pkoz 16.07.2008
Для исправления нужно закомментировать указанную строчку

Последний раз редактировалось Logger; 16.07.2008 в 13:48.
За это сообщение автора поблагодарили: gl00mie (5).
Старый 16.07.2008, 14:49   #2  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
...происходит ошибка времени выполнения, некорректный SQL запрос...
Как я понимаю, необходимо отключить "Резервирование кодов записей", чтобы попасть в SysDataImport.recIdSimpleSqlUpdate() ?
Но все-равно воспроизвести на AX3 SP2 + SQL 2000 не удалось.
Запрос в указанном методе имеет вид
PHP код:
UPDATE TABLE SET FIELD 111 FROM TABLE WHERE DATAAREAID = {fn LCASE('xxx')} AND RECID 222 
Все выполняется корректно.
Как именно жалуется SQL-сервер? Модифицировали импорт?
Старый 16.07.2008, 15:16   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,947 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от vallys Посмотреть сообщение
Как я понимаю, необходимо отключить "Резервирование кодов записей", чтобы попасть в SysDataImport.recIdSimpleSqlUpdate() ?
Но все-равно воспроизвести на AX3 SP2 + SQL 2000 не удалось.
Запрос в указанном методе имеет вид
PHP код:
UPDATE TABLE SET FIELD 111 FROM TABLE WHERE DATAAREAID = {fn LCASE('xxx')} AND RECID 222 
Все выполняется корректно.
Как именно жалуется SQL-сервер? Модифицировали импорт?
Импорт не модифицировали.
Резервирование кодов записи было отключено.

Оракл выругался на FROM TABLE в теле запроса - убрал FROM TABLE - все заработало.

Ругань такая
Цитата:
Оракл
ORA-00933: SQL command not properly ended
UPDATE MARKUPAUTOLINE
SET TABLERECID = -307756916
FROM MARKUPAUTOLINE
WHERE SUBSTR(NLS_LOWER(DATAAREAID),1,3) = NLS_LOWER('100')
AND RECID = -307757021

SQL2000
Как выяснилось не ругается :-)
Просто стандартный update_recordset из X++ выдает на SQL2000 запрос без FROM MARKUPAUTOLINE - я это увидел и решил что для SQL синтаксис c FROM MARKUPAUTOLINE также недопустим, не стал перепроверять.

В общем под SQL сервер все работает.
SQL понимает UPDATE запрос как с конструкцией FROM так и без неё. Оракл требует всегда без FROM

P.S.
Ax3.0 SP5
За это сообщение автора поблагодарили: vallys (1).
Теги
oracle, recid, баг, импорт данных, ошибка, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Баг при удалении листа Excel Zabr DAX: Программирование 7 26.03.2009 18:39
Баг в системном классе SysOperationProgressBase. Hyper DAX: Прочие вопросы 0 19.03.2009 18:58
SysUsersOnlineHolder - баг в 3.0 kashperuk DAX: База знаний и проекты 0 14.08.2007 16:58
Нашёл баг, причем очень похоже на баг ядра (SP5 FP2 KR2) Deep Dreamer DAX: Программирование 5 10.11.2006 18:04
баг в 2.5. Будьте осторожнее с символом "_" подчеркивание levsha DAX: Программирование 5 07.12.2004 12:26

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

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

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