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
Участник
 
263 / 86 (3) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
:(
Похоже, что ядро по умолчанию загружает сохраненные значения.

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

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

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

ответ на твой вопрос в постинге кроется именно в этом функционале.
Аксапта сама пытается подставить ранее использованные значения из сохраненного "ранее использованного" запроса.
Старый 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 / 116 (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, время: 06:40.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.