02.03.2006, 17:45 | #1 |
Axapta Retail User
|
Почти одинаковые запросы возвращают разные данные
Понадобилось сделать легкий (казалось бы) отчетик - смысл которого вывести количество продаж по дням месяца (сгруппировать по дню а затем по категории).
Привожу результаты запроса из мониторинга SQL запросов: SELECT COUNT(A.SUMSALE),A.CREATEDDATE,B.CATEGORY FROM SALESTABLE A,MYTABLE B WHERE ((A.DATAAREAID='tst') AND (A.CREATEDDATE={ts '2006-02-04 00:00:00.000'})) AND ((B.DATAAREAID='tst') AND (A.SALESID=B.SALESID)) GROUP BY A.CREATEDDATE,B.CATEGORY ORDER BY A.CREATEDDATE,B.CATEGORY OPTION(FAST 5) Не возвращает нужную строку SELECT COUNT(A.SUMSALE),A.CREATEDDATE,B.CATEGORY FROM SALESTABLE A,MYTABLE B WHERE ((A.DATAAREAID='tst') AND (A.CREATEDDATE={ts '2006-02-04 00:00:00.000'})) AND ((B.DATAAREAID='tst') AND ((B.CATEGORY='25') AND (A.SALESID=B.SALESID))) GROUP BY A.CREATEDDATE,B.CATEGORY ORDER BY A.CREATEDDATE,B.CATEGORY OPTION(FAST 5) Есть нужная строка Вся разница запросов в том, что во втором варианте явно указан фильтрующий признак B.CATEGORY='25' - и соотвествующая строка появляется в отчете. Без фильтра по B.CATEGORY возвращаются не все строки (в частности нет 25). C чем такое поведение может быть связано?! Upd: Так. Создала job с запросом, который приведен первым - он отработал правильно. Значит дело в отчете?! Что там может мешать?! Простой отчет с автоматическим дизайном и одним body. |
|
02.03.2006, 18:03 | #2 |
Участник
|
я бы не мучался - раз job работает правильно, сделал бы класс(runBaseReport) с методом populateTmpTable и настроил бы отчет на эту Временную таблицу ))))
|
|
03.03.2006, 09:14 | #3 |
Axapta Retail User
|
После различных махинаций было выяснено, что отчет просто "съедает" повторяющиеся значения. То есть к примеру -
06.02.2006 - 92 07.02.2006 - 92 08.02.2006 - 96 В отчете строка 07.02.2006 - просто не отображается! Галочки "удалять идентичные итого" и "удалять подзаголовки с повторяющимеся значениями" не стоят! Может есть еще какие-нибудь хитрые настройки в этом плане? To Pustik: Сделать отчет другим методом проблем не составляет, но интересно разобраться именно в возникшей проблеме. |
|
03.03.2006, 11:06 | #4 |
Участник
|
Попробуй сбросить данные пользователя перед печатью.
|
|
03.03.2006, 12:11 | #5 |
NavAx
|
Такая же фича есть в автоотчёте по приджойненым таблицам с агрегирующими операторами (по крайней мере было в SP2).
Если его сделать например по форме Запасы в наличии и там есть две подряд идущие записи с идентичными значения всех количеств, но разными аналитиками, то в отчёт попадёт только одна запись! Этот баг так и остался неисправленным - уж больно нехотелось разбираться с автоотчётом. Для обычного отчёта это помоему лечилось с помощью перекрытия метода send - здесь отлавливали что аналитика изменилась и слали ещё раз на печать. Или с Body как-то игрались - уж точно не помню.
__________________
С уважением, Игорь Ласийчук. Последний раз редактировалось Garic; 03.03.2006 в 12:22. |
|
03.03.2006, 14:52 | #6 |
Axapta Retail User
|
Hamster, не помогло
Garic, спасибо! Значит это просто такой баг. Исправила то просто - сделала display метод на количество - и тогда он работает идеально, только дольше Но для данного отчета скорость не важна. Можно и fetch перекрыть - тоже помогает, но тогда пользователь не может фильтры менять, чего не хочется. |
|