|
![]() |
#1 |
Участник
|
Не знаю, поможет ли, но попробуй вот этот метод использовать (его добавить надо в класс 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). |
![]() |
#2 |
Участник
|
См. job из FAQ'а
![]() Лучше внести правку в сам код, нежели создавать отдельный метод. Там была ошибка, ее нужно поправить. А вот с этим будьте предельно осторожны. TableID - псевдополе, которое отсутствует на SQL. Запрос может выродится как в "select * from", в "select from" или в "" в разных версиях. В общем, если хочется сократить количество возвращаемых полей, то для получаения гарантированного результата в любых версиях и сервис-паках, в списке полей должно быть хотя бы одно ХРАНИМОЕ на SQL поле. |
|
|
За это сообщение автора поблагодарили: belugin (5). |
![]() |
#3 |
Участник
|
Цитата:
На более ранних версиях не проверял. Сергей, а есть где-то задокументированные примеры такого поведения? Потому что ты уже пару раз выдаешь такое предупреждение, но на яву я его ни разу не видел. |
|
|
За это сообщение автора поблагодарили: Beast-L (1). |
![]() |
#4 |
Участник
|
Нет. Задокументированных не видел.
Но мне задают кучу вопросов. Несколько раз источником багов в запросах было наличие псевдполей и отсутствие хранимых полей. В том числе TableID. Особенно в join'ах. Может быть, я дую на воду. Но каждый раз, если есть возможность, предупреждаю о возможных проблемах с псевдополями. |
|
|
За это сообщение автора поблагодарили: Beast-L (1). |
Теги |
как правильно, подсчет строк |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|