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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.09.2008, 10:46   #1  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Есть вопрос
ВСЕМ ДОБРЫЙ ДЕНЬ.
Есть программа. программа работает отлично,но надо мне всунуть в эту прогу 'индекатор состояния процесса' 'p = SysOperationProgress::newGeneral(#aviupdate, 'Client', 100);
p.incCount();' как мне это сделать и если не трудно можно с обьяснением хотя бы чуть чуть . Спасибо большое за помощ. Новичек в программирование
X++:
{
    ProdJournalTable ProdJournalTable;
    ProdJournalRoute ProdJournalRoute;
    ProdJournalRoute ProdJournalRoute_1;
    ProdJournalRoute ProdJOurnalRoute_2;
    TmpProdJournalRouteOutTime tmpTable;
    ProdTable  ProdTable;
    int nDay;

    ;
    delete_from tmpTable;

 
    while select  createddate,journalid,posted
    from ProdJournalTable
    where
        ProdJournalTable.Posted==NOYES::No
    exists join ProdJournalRoute
    where ProdJournalRoute.JournalId==ProdJournalTable.JournalId&&
          (ProdJournalRoute.WrkCtrId == '113' ||
           ProdJournalRoute.WrkCtrId == '135')
{
        select ProdJournalRoute_1
        order by oprnum desc
        where
            ProdJournalRoute_1.JournalId == ProdJournalTable.JournalId;

        select ProdTable
        where
            ProdTable.ProdId == ProdJournalRoute_1.ProdId;

        select  ProdJournalRoute_2
        where
                ProdJournalRoute_2.OprId like '045*' &&
                ProdJournalRoute_2.JournalId == ProdJournalTable.JournalId;

        info
        (
            strfmt("%1,%2,%3",
            ProdJournalTable.createdDate,
            ProdJournalTable.JournalId,
            toDay() - ProdJournalTable.createdDate)
        );


        tmpTable.clear();

        tmpTable.ITEMID =ProdTable.ItemId;
        tmpTable.WRKCTRID=ProdjournalRoute_1.WrkCtrId;
        tmpTable.Qty=ProdJournalRoute_1.QtyGood+ProdJournalRoute_1.QtyError;
        tmpTable.Days= toDay() - ProdJournalTable.createdDate;
        tmpTable.Normal=noYes::No;


       if ( tmpTable.WRKCTRID == '135')
        {
            nDay = 1;
        }
        if ( tmpTable.WRKCTRID == '113')
        {
            if (ProdJournalRoute_2 != NULL)
            {
                 nDay=5;
            }
            else
            {
                nDay = 3;
            }
        }
        
        if (tmpTable.Days > nDay)
            tmpTable.Normal=NoYes::No;
        else
            tmpTable.Normal=NoYes::Yes ;

        tmpTable.insert();
    }

}
Старый 10.09.2008, 10:51   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
1. ВАЖНО: Называйте темы осмысленно, а не "есть вопрос" или "помогите-спасите-умираю".
2. Для оформления кода на X++ есть тег [xpp].
3. Как правильно задать вопрос, что бы быть услышанным?
Старый 10.09.2008, 10:54   #3  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Поверьте я стараюсь .Я еще тока учусь не все сразу буду лучше стараться спасибо
Старый 10.09.2008, 10:56   #4  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Есть замечательная форма tutorial_Progress, посмотрите её. Там представлены варианты Progress-ов.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2008, 11:00   #5  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
А где именно находиться эта форма tutorial_Progress
Старый 10.09.2008, 11:04   #6  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от CRASH_505 Посмотреть сообщение
А где именно находиться эта форма tutorial_Progress
В AOT узел Forms...

Вот пример использования SysOperationProgress, показал основные методы которые используются:
X++:
static void job_Progress(Args _args)
{
    InventTable             inventTable;
    SysOperationProgress    sop;
    int                     cntItems;
    int                     selItem;
    #AviFiles
    ;

    cntItems = (select count(RecId) from InventTable).RecId;

    sop = SysOperationProgress::newGeneral(#AviSearch, 'Просмотр номенклатур', cntItems); // инициализируем sop
    sop.update(true); // выставляем параметр в true что бы наш прогресс бар обновлялся (точно не помню с каким интервалом)

    while select inventTable
    {
        selItem++;

        sop.setText(strFmt('Номенклатура %1 из %2', selItem, cntItems));// указываем какой текст писать в прогрессе
        sop.incCount();// заполняется строка состояния операции
    }

    sop.kill(); // завершаем прогресс
}
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2008, 11:10   #7  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
спасибо ща попробую
Старый 10.09.2008, 13:53   #8  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Цитата:
Сообщение от lev Посмотреть сообщение
В AOT узел Forms...

Вот пример использования SysOperationProgress, показал основные методы которые используются:
X++:
static void job_Progress(Args _args)
{
    InventTable             inventTable;
    SysOperationProgress    sop;
    int                     cntItems;
    int                     selItem;
    #AviFiles
    ;

    cntItems = (select count(RecId) from InventTable).RecId;

    sop = SysOperationProgress::newGeneral(#AviSearch, 'Просмотр номенклатур', cntItems); // инициализируем sop
    sop.update(true); // выставляем параметр в true что бы наш прогресс бар обновлялся (точно не помню с каким интервалом)

    while select inventTable
    {
        selItem++;

        sop.setText(strFmt('Номенклатура %1 из %2', selItem, cntItems));// указываем какой текст писать в прогрессе
        sop.incCount();// заполняется строка состояния операции
    }

    sop.kill(); // завершаем прогресс
}



Классно помогло спасибо.Ну а как сделать чтоб он считал все время строки которые будут обновляться я сделал 100 а если завтра их уже станет 135 как зделать так чтоб они считались А sop = SysOperationProgress::newGeneral('','',100);
Старый 10.09.2008, 14:04   #9  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
А для этого вам написали переменную cntItems, а вы заменили ее на 100....
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 10.09.2008, 14:07   #10  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Благодарю за ответ ща попробую
Старый 10.09.2008, 14:16   #11  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Alex_KD прав.
X++:
cntItems = (select count(RecId) from InventTable).RecId;
вот это определяет количество записей в таблице. причем в таком синтаксисе который тут приведен, аксапта выберет нужную информацию из БД без использования переменных, т.е. вернет результат запроса.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2008, 14:52   #12  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
А для этого вам написали переменную cntItems, а вы заменили ее на 100....

Большое спасибо вам за помощ все сделал все норм но после нажатия F7 пишет Присвоение/сравнение теряет точность.
cntItems = (select count(RecId) from tmpProdJournalRouteOutTime).RecId;
Старый 10.09.2008, 14:56   #13  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от CRASH_505 Посмотреть сообщение
Большое спасибо вам за помощ все сделал все норм но после нажатия F7 пишет Присвоение/сравнение теряет точность.
cntItems = (select count(RecId) from tmpProdJournalRouteOutTime).RecId;
у вас переменная cntItems каким типом объявлена? должна быть как int:
X++:
int   cntItems;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2008, 15:00   #14  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Цитата:
Сообщение от lev Посмотреть сообщение
у вас переменная cntItems каким типом объявлена? должна быть как int:
X++:
int   cntItems;
Да я ее так и обьявил
int cntItems;
вот так начало выглядит

{
ProdJournalTable ProdJournalTable;
ProdJournalRoute ProdJournalRoute;
ProdJournalRoute ProdJournalRoute_1;
ProdJournalRoute ProdJOurnalRoute_2;
TmpProdJournalRouteOutTime tmpTable;
ProdTable ProdTable;
int nDay;
SysOperationProgress sop;
int cntItems;

;
delete_from tmpTable;

cntItems = (select count(RecId) from tmpProdJournalRouteOutTime).RecId;



sop = SysOperationProgress::newGeneral('','',cntItems);

while select createddate,journalid,posted
Старый 10.09.2008, 15:08   #15  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
наверное понял в чем дело.
у вас ищется кол-во записей во временной таблице как я посмотрю (tmpProdJournalRouteOutTime).
т.е. у таблицы tmpProdJournalRouteOutTime свойство temporary установлено как "Да". такие таблицы не храняться в базе данных, поэтому и при выполнении присвоения вываливается такое сообщение.
Усли таблица временная то лучше написать с использованием переменной:
X++:
select count(RecId) from tmpTable;
cntItems = tmpTable.RecId;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2008, 15:11   #16  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Ща попробую
Старый 10.09.2008, 15:19   #17  
CRASH_505 is offline
CRASH_505
Участник
Аватар для CRASH_505
 
74 / 10 (1) +
Регистрация: 09.09.2008
Пишет тоже самое, может я просто не все написал. вот это я не писал
sop.update(true);
selItem++;

sop.setText(strFmt('', selItem, cntItems));
sop.incCount();//

Да а как вы делаете такие таблицы в ответе подскажите, а то я тупо копирую.
Старый 10.09.2008, 15:26   #18  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
В DAX4.0 recid типа int64.
поэтому и ругается - 64битное значение присваивается 32битному.

ЗЫ Это не ошибка, это предупреждение.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
Старый 10.09.2008, 15:36   #19  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
ЗЫ Это не ошибка, это предупреждение.
Да, я в сообщении поправил опечатку
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 10.09.2008, 15:37   #20  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от CRASH_505 Посмотреть сообщение
Пишет тоже самое, может я просто не все написал. вот это я не писал
sop.update(true);
selItem++;

sop.setText(strFmt('', selItem, cntItems));
sop.incCount();//

Да а как вы делаете такие таблицы в ответе подскажите, а то я тупо копирую.
С эти сообщением можно жить, ничего страшного
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Теги
progress bar, tutorial

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Еще вопрос про покрытие по аналитикам в Сводном планировании rt2 DAX: Функционал 3 24.03.2006 18:56
Функция поиска подстроки, чувствительная к регистру . Есть ли такая в аксапте? ATimTim DAX: Программирование 4 13.02.2006 15:37
Вопрос по фильтрации axaLearner DAX: Программирование 9 20.09.2005 18:59
Есть ли планирование движения денежных средств? dd DAX: Функционал 5 10.06.2004 15:57
Вопрос к пользователю при сохранении данных в таблице Anais DAX: Программирование 1 19.03.2004 10:28

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

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

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