|
![]() |
#1 |
Member
|
Цитата:
Сообщение от Beast-L
...
видеть количество строк в гриде что бы оценивать объёмы продаж ... Один уважаемый на данном форуме мой коллега анекдот рассказывал. Не могу найти в сети, но примерно так звучит. Сынуля: Папа, я сегодня с девушкой на дискотеку иду. Мне деньги нужны. Папа: А сколько тебе нужно? — (Показывает большим и указательным пальцем руки размер пачки денег толщиной примерно с сантиметр) Вот столько. — Ну, возьми в тумбочке. — А в какой? — Да в любой. У вас примерно вот так же с объемом продаж получается ![]()
__________________
С уважением, glibs® |
|
|
За это сообщение автора поблагодарили: e@gle (1). |
![]() |
#2 |
Участник
|
Понимаю как это со стороны выглядит, но лично я объёмы продаж оценивать не собираюсь. Заказчик просит я делаю, а как он уже этим пользоваться будет это меня мало беспокоит. Кроме того не вижу проблем в оценке объёмов если все проданные единицы попадают в одну таблицу из которой данные берутся на форму на которой столько фильтров сколько хочет заказчик, а оценивать как раз таки ему. Заказчику по моему видней что ему нужно для оценки объёмов продаж.
Последний раз редактировалось Beast-L; 05.11.2007 в 15:31. |
|
![]() |
#3 |
Участник
|
Не знаю, поможет ли, но попробуй вот этот метод использовать (его добавить надо в класс SysQuery)
X++: public client server static Integer dev_countTotal(Query _query) { int k; Query countQuery = _query.newObject(_query.pack(FALSE)); QueryRun countQueryRun; QueryBuildDataSource dataSource = countQuery.dataSourceNo(1); QueryBuildFieldList theFieldList = dataSource.fields(); Common record; int ret = 0; // Add contribution from dynalinks... countQuery = SysQuery::copyDynalinks(countQuery, _query); theFieldList.addField(fieldnum(Common, RecId), SelectionField::COUNT); for (k = 2; k <= countQuery.dataSourceCount();k++) { dataSource = countQuery.dataSourceNo(k); theFieldList = dataSource.fields(); theFieldList.dynamic(false); theFieldList.clearFieldList(); theFieldList.addField(fieldNum(Common,TableId)); } countQueryRun = new QueryRun(countQuery); while (countQueryRun.next()) { record = countQueryRun.getNo(1); ret += record.RecId; } return ret; } |
|
|
За это сообщение автора поблагодарили: belugin (3). |
![]() |
#4 |
Участник
|
См. job из FAQ'а
![]() Лучше внести правку в сам код, нежели создавать отдельный метод. Там была ошибка, ее нужно поправить. А вот с этим будьте предельно осторожны. TableID - псевдополе, которое отсутствует на SQL. Запрос может выродится как в "select * from", в "select from" или в "" в разных версиях. В общем, если хочется сократить количество возвращаемых полей, то для получаения гарантированного результата в любых версиях и сервис-паках, в списке полей должно быть хотя бы одно ХРАНИМОЕ на SQL поле. |
|
|
За это сообщение автора поблагодарили: belugin (5). |
![]() |
#5 |
Участник
|
Цитата:
На более ранних версиях не проверял. Сергей, а есть где-то задокументированные примеры такого поведения? Потому что ты уже пару раз выдаешь такое предупреждение, но на яву я его ни разу не видел. |
|
|
За это сообщение автора поблагодарили: Beast-L (1). |
![]() |
#6 |
Участник
|
Нет. Задокументированных не видел.
Но мне задают кучу вопросов. Несколько раз источником багов в запросах было наличие псевдполей и отсутствие хранимых полей. В том числе TableID. Особенно в join'ах. Может быть, я дую на воду. Но каждый раз, если есть возможность, предупреждаю о возможных проблемах с псевдополями. |
|
|
За это сообщение автора поблагодарили: Beast-L (1). |
Теги |
как правильно, подсчет строк |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|