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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.01.2009, 13:35   #21  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от petergunn Посмотреть сообщение
По умолчанию, возможно так и есть...
Вот-вот! Тоже не уверены?
А оно так и есть. Понятно, что можно исправить имя на любое, но кто об этом специально заботится без особой нужды?

Вот создал картинку, дабы запомнить навсегда про эту "_1":

Нажмите на изображение для увеличения
Название: query_1.jpg
Просмотров: 420
Размер:	61.9 Кб
ID:	4162

Ну, и теперь, раз уж пошла успешно дифференциальная диагностика, то можно и другие выводы закрепить:
Цитата:
Сообщение от DAX Посмотреть сообщение
я как то тестил, вроде именно в рендже было всёравно и так и так работало) вот нашел 1 рабочий пример, там тоже "=".
да, тоже проверил, и =, и == работают.


hated8, ну, а у Вас-то заработало наконец с _1??
Старый 16.01.2009, 14:05   #22  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
Наканецта!!!!!!!!
Ларчик просто открывался!

qbds = this.query().dataSourceTable(tablenum(RAssetTransferTable));
qbds.addDataSource(tablenum(RAssetLocation));
this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))');
this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(fieldNum(RAssetLocation, userGroupId)).value(
(select groupId from UserGroupList
where UserGroupList.UserId == currentUserId).groupId
);

Спасиб огромное всем за помощь!!!
Старый 16.01.2009, 14:11   #23  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Не очень понял... так про "убрать RAssetLocation" мы давно уже говорили и вроде не помогало?... А суффикс "_1" , смотрю, так и не понадобился?
Старый 16.01.2009, 14:16   #24  
hated8 is offline
hated8
Участник
Аватар для hated8
Злыдни
 
133 / 18 (1) ++
Регистрация: 27.06.2008
вся проблема была в том что я делал:
qbds.addDataSource(tablenum(RAssetLocation));
qbds.addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))');
поменял qbds на this.query().dataSourceTable(tablenum(RAssetLocation)) и стало счастье!)
Старый 16.01.2009, 14:44   #25  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Gustav Посмотреть сообщение
Вот же ёлки! Получается, суффикс "_1" всегда добавляется. Даже если таблица встречается в запросе один раз, то все равно имя ее датасорса модифицируется...
Именно поэтому, как я уже вчера и говорил, я предпочитаю использовать "qbds.name()". По умолчанию всегда так, единички подставляются, но если данная таблица только одна в запросе, то и без единички Аксапта нормально хавает.
Но с qbds.name() как-то уверенности больше!
__________________
Zhirenkov Vitaly
Старый 16.01.2009, 15:43   #26  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от ZVV Посмотреть сообщение
По умолчанию всегда так, единички подставляются, но если данная таблица только одна в запросе, то и без единички Аксапта нормально хавает.
Да вот не хавает
По крайней мере, в AX 3.0 SP4. Может, в 4-ке хавает? У меня же в 3-ке вот так - только с "_1":
X++:
static void Job129(Args _args)
{
    Query                   query = new Query();
    QueryBuildDatasource    qbds = new QueryBuildDatasource() ;
    QueryRun                qr;
    ;
    qbds = query.addDataSource(tablenum(RAssetTransferTable));
    // НЕ РАБОТАЕТ
    // qbds.addRange(fieldnum(RAssetTransferTable,RecId))
    //  .value(@'(RAssetTransferTable.TransDate==29\12\2008)');
    // РАБОТАЕТ - c _1
    qbds.addRange(fieldnum(RAssetTransferTable,RecId))
        .value(@'(RAssetTransferTable_1.TransDate==29\12\2008)');

    qr = new QueryRun(query);
    qr.userUpdate(false);
    qr.prompt();
    box::info(strFmt('Кол-во записей: %1', sysQuery::countLoops(qr)));
}
Старый 16.01.2009, 16:33   #27  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от hated8 Посмотреть сообщение
вся проблема была в том что я делал:
qbds.addDataSource(tablenum(RAssetLocation));
qbds.addRange(fieldNum(RAssetLocation, recid)).value('((RAssetTransferTable.NewLocation==Location) || (RAssetTransferTable.OldLocation==Location))');
поменял qbds на this.query().dataSourceTable(tablenum(RAssetLocation)) и стало счастье!)
Вся проблема была в том, что range сначала помещался не в тот датасорс. Вызов fieldNum(RAssetLocation, recid) вносил визуальную путаницу и казалось, что range строится для датасорса от таблицы RAssetLocation. Но в параметрах функции fieldNum для поля RecId можно было бы указать совершенно произвольную таблицу, хоть LedgerTable - все равно датасорс, к которому добавлялся это range определялся бы текущим состоянием переменной qbds, а в ней в тот момент был датасорс от таблицы RAssetTransferTable. Поэтому использование просто "Location" без квалификатора датасорса от RAssetLocation вызывало ошибку, так как в таблице RAssetTransferTable поле Location отсутствует.

Оператор this.query().dataSourceTable(tablenum(RAssetLocation)).addRange(...) добавлял диапазон уже к датасорсу от RAssetLocation, в которой поле Location присутствует и поэтому счастье стало возможным и без имени датасорса.

Если же сейчас то попробовать "==Location" с именем датасорса, то, почти уверен, что "==RAssetLocation.Location" вызовет ошибку, а "==RAssetLocation_1.Location" отработает нормально. Попробуете? (для завершенности эксперимента).

Вы меня спросите, а почему же работает без _1 имя RAssetTransferTable? Я отвечу: "Она приезжала в Москву в командировку!" (шутка!) Я отвечу: потому что, вероятно, имя датасорса от таблицы RAssetTransferTable было исправлено на "без _1" в том таинственном this.query(), к которому всё пристраивается. Либо это датасорс формы, в котором _1 не добавляется при перетаскивании в него таблицы (первого экземпляра! а ко второму (!) уже добавляется "единичка", но без подчеркинания).

Впрочем, если это 4-ка и там всё не так, как я думаю про _1, и прав ZVV - про "одну таблицу", то два предыдущих абзаца нужно будет воспринять с точностью до наоборот. P.S. Ну вот и выяснили
За это сообщение автора поблагодарили: ZVV (1).
Старый 16.01.2009, 16:34   #28  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Gustav Посмотреть сообщение
Да вот не хавает
По крайней мере, в AX 3.0 SP4. Может, в 4-ке хавает? У меня же в 3-ке вот так - только с "_1":
X++:
static void Job129(Args _args)
{
    Query                   query = new Query();
    QueryBuildDatasource    qbds = new QueryBuildDatasource() ;
    QueryRun                qr;
    ;
    qbds = query.addDataSource(tablenum(RAssetTransferTable));
    // НЕ РАБОТАЕТ
    // qbds.addRange(fieldnum(RAssetTransferTable,RecId))
    //  .value(@'(RAssetTransferTable.TransDate==29\12\2008)');
    // РАБОТАЕТ - c _1
    qbds.addRange(fieldnum(RAssetTransferTable,RecId))
        .value(@'(RAssetTransferTable_1.TransDate==29\12\2008)');

    qr = new QueryRun(query);
    qr.userUpdate(false);
    qr.prompt();
    box::info(strFmt('Кол-во записей: %1', sysQuery::countLoops(qr)));
}
гм... почему-то думал что хавает... ну а нет так и лучше даже, будет повод лишний писать нормально...
я с такими проблемами не сталкивался, всё по той же причине - всегда использую qbds.name(), для надёжности.
__________________
Zhirenkov Vitaly
Старый 16.01.2009, 16:49   #29  
ZVV is offline
ZVV
MCITP
MCP
Oracle
MCBMSS
 
1,006 / 246 (11) ++++++
Регистрация: 13.02.2004
Адрес: Минск
->
Цитата:
Сообщение от Gustav Посмотреть сообщение
...Впрочем, если это 4-ка и там всё не так, как я думаю про _1, и прав ZVV - про "одну таблицу", то два предыдущих абзаца нужно будет воспринять с точностью до наоборот.
Не, ZVV таки похоже был неправ, даже не знаю откуда у него сложилось такое впечатление..
__________________
Zhirenkov Vitaly
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как преобразовать запрос в SQL-инструкцию Oloops DAX: Программирование 7 07.07.2008 20:38
Поймать SQL запрос при формировании отчета Qaz Qwerty DAX: Программирование 7 12.06.2008 01:46
SQL мониторинг + прямой запрос к SQL Alex_KD DAX: Программирование 17 29.05.2007 03:58
SQL Запрос Александр Костоусов DAX: Программирование 5 24.09.2004 12:15
Собственный SQL запрос в FormDataSource Alexey DAX: База знаний и проекты 0 20.12.2001 00:35

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

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

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