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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.09.2021, 10:12   #1  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
376 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
А попробуйте вместо reread сделать

select _common where _common.recid == _common.recId;
__________________
Sergey Nefedov
Старый 02.09.2021, 10:41   #2  
oleggy is offline
oleggy
Участник
 
285 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от SRF Посмотреть сообщение
А попробуйте вместо reread сделать
select _common where _common.recid == _common.recId;
Причем этот запрос не работал. Та же ошибка.

Потом я создал локальную common и написал так.
X++:
select common 
    where common.TableId == _common.TableId 
        && common.RecId == _common.RecId;
И тоже не сработало. Что странно. Я в common не силен. Запись не выбиралась почему то.
Старый 02.09.2021, 10:56   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,450 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Ну надежды на то что сработает условие _common.recid == _common.recId нет и не может быть. Это как масло масленое. А то что common нужно инициализировать (типизировать) перед использованием в принципе логично. Иначе система не будет знать к какой таблице делать запрос и дополнительно условие по TableId здесь не спасает (в SQL нет такого понятия как запрос сразу ко всем таблицам).

Не понятно почему не сработал reread
За это сообщение автора поблагодарили: SRF (2).
Старый 02.09.2021, 12:31   #4  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,450 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Ну надежды на то что сработает условие _common.recid == _common.recId нет и не может быть. Это как масло масленое
Хотя никто не запрещает сделать так
X++:
recId = _common.recid;
select forupdate _common where _common.recid == recId;

И по сути это тоже самое что и _common.reread(). Интересно сработает?

Последний раз редактировалось S.Kuskov; 02.09.2021 в 12:36.
Старый 03.09.2021, 09:22   #5  
oleggy is offline
oleggy
Участник
 
285 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Хотя никто не запрещает сделать так
X++:
recId = _common.recid;
select forupdate _common where _common.recid == recId;
И по сути это тоже самое что и _common.reread(). Интересно сработает?
Сегодня решил проверить. Да сработало.

После этого решил проверить:
X++:
_common.reread()
И сработало. Я не поверил ведь вчера оно не срабатывало.
Зашел на другой терминал, начал выполнять - не сработало. Вернулся на первоначальный терминал и теперь и там не работает.

Потом решил проверить это:
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Ну надежды на то что сработает условие _common.recid == _common.recId нет и не может быть. Это как масло масленое.
Все работает. Не знаю почему она вчера у меня не отрабатывала. Сегодня работает.

После этого я снова решил проверить:
X++:
_common.reread()
И снова заработало. Очень странно.

Последний раз редактировалось oleggy; 03.09.2021 в 09:24.
Старый 03.09.2021, 09:35   #6  
oleggy is offline
oleggy
Участник
 
285 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Я понял из за чего ошибка генерируется у меня.
Данный код отрабатывает корректно:
X++:
ttsBegin;
select forupdate _common
	where _common.recid == _common.recid;
_common.(_fieldId) = _value;
_common.doUpdate();
ttsCommit;
Если я сразу его меняю на:
X++:
ttsBegin;
_common.selectForUpdate(true);
_common.reread();
_common.(_fieldId) = _value;
_common.doUpdate();
ttsCommit;
Код так же продолжает корректно работать.
Если я в коде убираю _common.reread(), т.е. хочу сгененрировать ошибку:
X++:
ttsBegin;
_common.selectForUpdate(true);
//_common.reread(); // <-- убираю
_common.(_fieldId) = _value;
_common.doUpdate();
ttsCommit;
Естественно возникает эта ошибка. И если я снова возвращаю:
X++:
ttsBegin;
_common.selectForUpdate(true);
_common.reread(); // <-- возвращаю
_common.(_fieldId) = _value;
_common.doUpdate();
ttsCommit;
ошибка не пропадает а остается.
Помогает снова обойти эту ошибку изменение кода на:
X++:
ttsBegin;
select forupdate _common
	where _common.recid == _common.recid;
_common.(_fieldId) = _value;
_common.doUpdate();
ttsCommit;
Добавлю что речь про AX09.

Последний раз редактировалось oleggy; 03.09.2021 в 09:40.
Старый 03.09.2021, 10:01   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,450 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Условие where _common.recid == _common.recid равносильно условию where true или что тоже самое отсутствию условия. Если у вас в таблице (APMParameters) одна запись то она и выберется и вы не почувствуете разницы. На таблицах с несколькими записями такой запрос вернёт вам первую попавшуюся запись, а не обязательно ту с которой вы работали.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009 странный баг, в любой форме отображается только 1-я запись oleggy DAX: Администрирование 4 24.06.2021 21:30
Невозможно выбрать запись, ...База данных SQL обнаружила ошибку actNaturally DAX: Администрирование 4 11.12.2014 12:56
axforum blogs: Ошибка обновления Организации при установке UpdateRollup Blog bot DAX Blogs 0 11.04.2013 20:11
Не корректно сохраняет запись в inventTable Starling DAX: Программирование 8 31.03.2008 15:30
Ошибка при импорте демоданных (Axapta 3.0 CIS SP1) KocDm DAX: Администрирование 2 11.08.2005 12:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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