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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.11.2006, 15:45   #1  
Shakr
Гость
 
n/a
Как быстро посчитать кол-во записей?
Задачка для самообучения: есть табличка LedgerJournalTrans, хочется посчитать количество записей с произвольными критериями в ней и выкинуть в эксель.
X++:
    select count(RecId) from LedgerJournalTrans
Не подходит
Затык именно на критериях запроса. Идея сформировать НД
X++:
Query q;
QueryRun qr;
QueryBuildDataSource qbd;
QueryBuildRange qbr;
q = new Query();
qbd = q.AddDataSource(TableNum(LedgerJournalTrans));
// Добавили таблицу – источник данных
qbr =qbd.AddRange(FieldNum(LedgerJournalTrans,[]));
А потом пробежаться по НД и посчитаться кажется каким-то некузявым.

Поможете начинающему?
Старый 22.11.2006, 15:48   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
см. Сервис\Средства разработки\Количество записей в таблицах.

А что вы подразумеваете под НД?
Можете покопать в сторону (запрос ИЛИ - найдете, как в запросе указывать фильтр строкой - а строку, думаю, уже сможете сформировать)
Старый 22.11.2006, 15:50   #3  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Shakr Посмотреть сообщение
Задачка для самообучения: есть табличка LedgerJournalTrans, хочется посчитать количество записей с произвольными критериями в ней и выкинуть в эксель.
X++:
    select count(RecId) from LedgerJournalTrans
Не подходит
Затык именно на критериях запроса. Идея сформировать НД
X++:
Query q;
QueryRun qr;
QueryBuildDataSource qbd;
QueryBuildRange qbr;
q = new Query();
qbd = q.AddDataSource(TableNum(LedgerJournalTrans));
// Добавили таблицу – источник данных
qbr =qbd.AddRange(FieldNum(LedgerJournalTrans,[]));
А потом пробежаться по НД и посчитаться кажется каким-то некузявым.

Поможете начинающему?
Посмотрите тут
Старый 22.11.2006, 17:14   #4  
Shakr
Гость
 
n/a
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Посмотрите тут
Благодарю, оставалось только дописать
X++:
qr = new QueryRun(q);
cnt =  SysQuery::countTotal(qr);
Спасибо за маячок. НД - это набор данных. То есть по-хорошему - не хотелось выдёргивать информацию из БД, а только посчитать, ну раз так нужно-значит так нужно
Старый 24.08.2007, 11:34   #5  
gefr is offline
gefr
Участник
Аватар для gefr
MCBMSS
 
147 / 17 (1) ++
Регистрация: 01.11.2004
Адрес: МО, Котельники
Что-то функция у меня неправильно отрабатывает. Может, я чего не так делаю?

X++:
 Counter ii;
 QueryRun queryRun;
 Query Query;
 QueryBuildDataSource InvTrans,Inv,Dim;
; 
 query=new query();
 InvTrans=query.addDataSource(tablenum(InventTrans));

 Dim=InvTrans.addDataSource(tablenum(InventDim));
 Dim.relations(true);

 Inv=InvTrans.addDataSource(tablenum(InventTable));
 inv.addLink(fieldnum(inventtrans,itemid),fieldnum(InventTable,ItemId));
 inv.joinMode(JoinMode::ExistsJoin);

 InvTrans.addRange(fieldnum(InventTrans,ItemId)).value(ItemId);
 Dim.addRange(fieldnum(InventDim,InventLocationId)).value(LocId);
 Inv.addRange(fieldnum(InventTable,ModelGroupId)).value(MGId);

 queryRun =  new QueryRun(query);

  if (!queryRun.prompt())
      return;

[B]  ii=SysQuery::countTotal(queryrun);[/B]
он возвращает значительно больше, чем есть на самом деле (на несколько порядков)

Последний раз редактировалось gefr; 24.08.2007 в 11:49.
Старый 24.08.2007, 13:10   #6  
ivas is offline
ivas
Участник
Аватар для ivas
 
252 / 68 (3) ++++
Регистрация: 22.12.2005
попробуйте
SysQuery::countLoops
Старый 24.08.2007, 13:20   #7  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Цитата:
он возвращает значительно больше, чем есть на самом деле (на несколько порядков)
а еще лучше посмотреть какой запрос был отправлен на сервер, а там все станет ясно
Старый 19.05.2010, 16:53   #8  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
Цитата:
Сообщение от gefr Посмотреть сообщение
он возвращает значительно больше, чем есть на самом деле (на несколько порядков)
Такая же ерунда у меня.
CountTotal показывает 2392.
Считаю количество заходов в queryRun.next() = 193.
В чем причина? как то неправильно создаю запрос?
Старый 19.05.2010, 18:01   #9  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
вроде обсуждалось неоднократно
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Распределение суммы пропорционально кол-ву в переносах AvrDen DAX: Функционал 21 23.09.2008 11:55
вывод количества записей в таблице на web форме и указание текущей страницы таблицы bambuk1960 DAX: Программирование 1 06.07.2006 13:27
Кол-во по умолчанию в Закупках gudzon DAX: Программирование 2 01.11.2005 10:36
Хранение отмеченных записей Pavel Pustovalov DAX: Программирование 9 17.05.2005 21:56
Кол-во записей в отфильтрованном наборе ald DAX: Программирование 3 19.04.2004 15:19

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

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

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