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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.03.2003, 16:51   #1  
cyrus is offline
cyrus
OntargIT
 
22 / 19 (1) ++
Регистрация: 24.06.2002
Адрес: Kiev
Проблема: подстановка значений по дефолту в диалог QueryRun
Здравствуйте, уважаемые!

Итак, попрос:
Надо сделать фильтр по строкам таблицы, скажем, DateTrans, при выполнении периодической операции по этой таблице. При этом по дефолту в одно из полей в диалоге запроса надо поставить значение из поля TransDate найденой строки, скажем, DateTable.

Класс есть:
xxxxxXxxxxxCreate

static void main(Args args)
{
....
if (xxxxxXxxxxxCreate.prompt())
{
xxxxxXxxxxxCreate.run()
}
}

и, соответственно, prompt:
boolean prompt()
{
Query q;
TransDate transDate = DateTable::find(...).TransDate;
;
queryRun = new QueryRun(queryStr(DateTableQuery));
q = queryRun.query();
q.dataSourceTable(tableNum(DateTrans)).findRange(fieldNum(DateTrans,TransDate)).value(sysQuery::value(transDate));
return queryRun.prompt();
}
Вопрос знатокам: почему значение transDate не появляется в соотв поле диалога запроса, а вместо этого происходит unpack ранее введенных значений c runBaseDialog? DateTableQuery - interactive. Менять последовательность сборки qr тоже не помогает (в смысле, если сначала собирать query, а потом делать new QueryRun(q))

thanks in advance
Старый 20.03.2003, 18:11   #2  
AlGol is offline
AlGol
Участник
 
267 / 86 (3) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
:(
Похоже, что ядро по умолчанию загружает сохраненные значения.

Если в подобной ситуации посмотреть на закладку формы запроса Загрузить/Сохранить, то увидишь, что там установлена опция "Ранее исполненный запрос". При включении опции "Исходный запрос", увидишь свое значение.
Добиться, чтобы сразу отображались новые параметры запроса я так и не смог....

Можно попробовать подменить сохраненные для запроса значения, но как-то это неправильно.
Старый 20.03.2003, 18:13   #3  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,929 / 3823 (185) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
можно встречный вопрос к исходному вопросу?

а чем не устраивает функция сохранить/загрузить "ранее использованный запрос"?
Пробовал?

ответ на твой вопрос в постинге кроется именно в этом функционале.
Аксапта сама пытается подставить ранее использованные значения из сохраненного "ранее использованного" запроса.
Старый 20.03.2003, 18:34   #4  
Garic is offline
Garic
NavAx
Аватар для Garic
NavAx Club
 
393 / 63 (3) ++++
Регистрация: 23.07.2002
Адрес: Москва
Ну это можно сделать например в dialog перед вызовом super()

PHP код:
Object dialog(DialogRunbase _p1boolean _p2)
{
    
DialogRunbase   ret;
    
FormDataSource  table_ds caller.getTable_ds();
    
QueryBuildDataSource    qbds;
    
LedgerTable     ledgerTable;
    
Query           query = new Query();
    
str             range;
    ;

    
qbds query.addDataSource(tableNum(LedgerTable));
    if (
table_ds.anyMarked())
    {
        
ledgerTable table_ds.getFirst(1);
        do
        {
            
range += ledgerTable.AccountNum ',';
            
ledgerTable table_ds.getNext();
        }
        while (
ledgerTable);

        
range substr(range1strlen(range) - 1);
        
qbds.addRange(fieldNum(LedgerTableAccountNum)).Value(range);
        
queryRun.query(query);
    }

    
ret super(_p1_p2);
    Return 
ret;

__________________
С уважением, Игорь Ласийчук.
Старый 21.03.2003, 09:39   #5  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 119 (4) +++++
Регистрация: 14.12.2001
Можно попробовать так...
Предлагаю два возможных варианта:

1. После создани queryRun вызвать метод queryRun.saveUserSetup(false).
2. При каждом вызове метода давать запросу новое уникальное имя. Например, так:
PHP код:
= new Query();
q.name(strfmt('A%1'WinApi::getTickCount())); 
В этом случае запрос не будет автоматически восстанавлисаться из сохраненных.
За это сообщение автора поблагодарили: denny (1), Gustav (3).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX: QueryRun and Query Objects - Binding operation failed to allocate buffer space Blog bot DAX Blogs 0 03.04.2009 08:05
Простой QueryRun не работает miklenew DAX: Программирование 13 20.01.2009 14:17
OZKA's DAX Journal: Join между временной и постоянной таблицей через QueryRun. Blog bot DAX Blogs 12 14.01.2009 17:34
Проблема с установкой начальных значений для поля ввода даты polygris DAX: Программирование 6 06.06.2006 13:48
Проблема с составлением Query axaLearner DAX: Программирование 10 01.12.2005 15:00
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:11.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.