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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.06.2006, 08:33   #1  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Количество выделенных записей
Добрый день. Мне необходимо вывести на форме в виде текста количество выделенных записей на гриде в этой же форме. Подскажите пожалуйста как это можно сделать.
Старый 23.06.2006, 08:56   #2  
Andrew Besedin is offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Регистрация: 25.01.2002
Привет!

Фрагмент кода примерно такой:
PHP код:
for (inventJournalTableLoop inventJournalTableDS.getFirst(true) ? inventJournalTableDS.getFirst(true) : inventJournalTableDS.cursor(); inventJournalTableLoopinventJournalTableLoop inventJournalTableDS.getNext())
    {
       
count ++;
    } 
Здесь inventJournalTableLoop - переменная типа inventJournalTable, inventJournalTableDS - источник данных формы.
__________________
С уважением,
Андрей Беседин
Старый 23.06.2006, 08:58   #3  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Пример перебора выделенных записей:

PHP код:
void clicked()
{
    
dem_t1  t;
    ;
    print 
dem_t1_ds.anyMarked();
    
dem_t1_ds.getFirst(1);
    print 
t.id;

    while (
t)
    {
       
dem_t1_ds.getNext();
       print 
t.id;
    }
    
pause;


У самого Grid’а и у всех конролов, которые хотят оставаться доступными при множественном выборе, необходимо установить свойство MultiSelect = true.

На форме грид и кнопка. Выбираем на гриде несколько строк и жмем на кнопку. Единичка в GetFirst как раз и заставляет брать выделенные записи.


Под свой случай думаю подгоните.
За это сообщение автора поблагодарили: Hans (1).
Старый 23.06.2006, 09:20   #4  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Дело в том, что мне нужно получить количество записей не по кнопке. Каждый раз при выборе очередной записи внизу формы должен изменяться текст. Пробовала перекрыть active(), leave() источника данных формы (в нем писала примерно такой код как был приведен выше), но форма начинает подвисать и не позволяет маркировать записи вообще.
Старый 23.06.2006, 09:50   #5  
Andrew Besedin is offline
Andrew Besedin
Участник
 
121 / 15 (1) ++
Регистрация: 25.01.2002
Предлагаю другой вариант решения:
1. Заводишь временную таблицу (можно использовать tmpFrmVirtual)
2. На форму - чек-бокс с едит-методом. При установке галки - пишем во временную таблицу RecId записи и флаг NoYes == Yes (возможны варианты: ставим галку - запись заносим, убираем галку - запись удаляем).
3. Считаешь число записей во временной таблице и выводишь в интерфейс.
4. Всё.
__________________
С уважением,
Андрей Беседин
Старый 23.06.2006, 09:56   #6  
Mila is offline
Mila
Участник
 
73 / 31 (2) +++
Регистрация: 21.04.2006
Я думала об этом. Просто надеялась, что есть стандартный метод какой-нибудь на источнике данных или форме. Если такого нет, то придется использовать временую таблицу. Спасибо за ответ.
Старый 23.06.2006, 10:31   #7  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от Mila
Дело в том, что мне нужно получить количество записей не по кнопке. Каждый раз при выборе очередной записи внизу формы должен изменяться текст. Пробовала перекрыть active(), leave() источника данных формы (в нем писала примерно такой код как был приведен выше), но форма начинает подвисать и не позволяет маркировать записи вообще.
Для подсчета я так понимаю вы перебираете записи на форме- понятно, что начинаются проблемы - попробуйте сделать копию активного query и использовать ее, примерно так

// Выводит итоговую сумму в форме - только по выделенным записям
display AmountCur totalSettleAmountCurPaymentJour()
{
VendInvoice4PaymJour_RU inv4PaymJour;
AmountCur totalAmountCur;
Query query;
QueryRun queryRun;
;

query = new Query(Invoice4PaymJour_ds.queryRun().query() ? Invoice4PaymJour_ds.queryRun().query() : Invoice4PaymJour_ds.query());

queryRun = new QueryRun(query);

while(queryRun.next())
{
inv4PaymJour = queryRun.get(tablenum(VendInvoice4PaymJour_RU));
totalAmountCur += this.SettleAmountCurPaymentJour(inv4PaymJour);
}
return totalAmountCur;
}

PS - точнее - выводит только отфильтрованные записи - можно сократить постановку задачи до такого допущения - как именно выделенные посчитать - вопрос..

Последний раз редактировалось MironovI; 23.06.2006 в 10:42.
Старый 23.06.2006, 10:37   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Mila
Просто надеялась, что есть стандартный метод какой-нибудь на источнике данных или форме.
Нет. И это не спроста.
1. любой метод на форме исполняется на клиенте, а не на сервере!

2. Обратите внимание, что теоретически источник данных получает не все поля, а только те, которые отображаются на экране.

3. И наконец, быстродействие. Посмотрите как считаются итоги в заказе/закупке. Посмотрите как много сделано для того, чтобы :
3.1. НЕ выполнять расчет итогов при каждой перерисовке заказов/закупок
3.2. выполнять расчет итогов на сервере приложений, а не на клиенте.

Разберитесь со стандартными итогами.
И только после этого принимайте решение - хотите ли вы отображать итоги на этой же форме. В аксапте итоги по гриду в той же форме, что и грид, показываются только в одном месте - в журналах ГК.
__________________
полезное на axForum, github, vk, coub.
Старый 23.06.2006, 10:39   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от MironovI
попробуйте сделать копию активного query и использовать ее
Тоже подход.

Только используйте ее на серверной стороне, а не на клиенте.
И ни в коем случае не вставляйте эту конструкцию в display-метод
__________________
полезное на axForum, github, vk, coub.
Старый 23.06.2006, 10:50   #10  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Цитата:
Сообщение от mazzy
Тоже подход.

Только используйте ее на серверной стороне, а не на клиенте.
И ни в коем случае не вставляйте эту конструкцию в display-метод
Да, немного неоптимизировано - саму выборку можно кинуть в статический серверный метод, а вызов - в ExecuteQuery основного датасорса.
Старый 23.06.2006, 10:54   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от MironovI
а вызов - в ExecuteQuery основного датасорса.
Почему только executeQuery?

Попробуйте представить возможные ситуации.
Еще может быть незаписанный record...
Еще может быть измененный другим пользователем record...
А еще может быть измененная другим приложением запись на уровне СУБД...

Вы никогда не задумывались о том, что журналы ГК - единственное место, где видны итоги по строчкам, а также единственное место, где запрещен повторный вход в журнал?...
__________________
полезное на axForum, github, vk, coub.
Старый 23.06.2006, 11:06   #12  
MironovI is offline
MironovI
Участник
 
724 / 77 (4) ++++
Регистрация: 30.05.2005
Это конечно справедливо - тут надо отталкиваться от рамок разумного -сколько человек пользуются конкретной областью данных одновременно, и т.д.. - поскольку замечу что quey НЕ записанный record все равно не заметит (!). На удалнение из формы записи точно надо забиваться - если это не запрос конечно..

Последний раз редактировалось MironovI; 23.06.2006 в 11:11.
Старый 23.06.2006, 11:08   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
не спорю.

я и говорю "Попробуйте представить возможные ситуации." - что должно показываться в итогах, а что не должно.
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странное количество в строке журнала инвентаризации pitersky DAX: Функционал 7 16.01.2009 16:46
как отдельно учитывать фактическое и финансовое количество? romulis DAX: Функционал 4 08.02.2007 15:01
Количество вакансий в штатном расписании. NJD DAX: Функционал 3 20.09.2006 15:48
Нужно подсчитать количество записей во всех таблицах Аксапты? Hidden DAX: Программирование 7 11.11.2005 15:20
Закупка. Количество введенное в таблицу PurchLine не отображается в накладной ATimTim DAX: Программирование 15 21.06.2004 10:11

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

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

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