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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.10.2004, 15:00   #1  
Anais is offline
Anais
Участник
Аватар для Anais
 
182 / 10 (1) +
Регистрация: 16.06.2003
Адрес: Москва
Angry Разные запросы в 2-х и 3-х уровневой конфигурациях. Что делать?!
Многоуважаемая публика. Столкнулась со странной ситуацией: при формировании отчета в 2-х и в 3-х уровневых конфигурациях Axapta отправляет на SQL-сервер разные (!) запросы.
В 2-х уровневой версии запрос уходит на сервер вот в таком виде:

SELECT A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,SUM(B.AMOUNTMST),SUM(B.AMOUNTCUR),B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID
FROM LEDGERTRANS A,LEDGERTRANS B
WHERE ((A.DATAAREAID='bgr')
AND ((((((((A.TRANSDATE>={ts '2004-06-01 00:00:00.000'}) AND (A.TRANSDATE<={ts '2004-06-30 00:00:00.000'}))
AND NOT ((A.BONDBATCH_RU=' '))) AND NOT ((A.BONDBATCHTRANS_RU=0)))
AND ((A.PERIODCODE>=1) AND (A.PERIODCODE<=2)))
AND NOT ((A.POSTING=19)))
AND (A.VOUCHER=' ВП-00000060'))
AND ((((((((((A.TRANSTYPE=0) OR (A.TRANSTYPE=3)) OR (A.TRANSTYPE=14)) OR (A.TRANSTYPE=16)) OR (A.TRANSTYPE=19)) OR (A.TRANSTYPE=20))
OR (A.TRANSTYPE=82)) OR (A.TRANSTYPE=80)) OR (A.TRANSTYPE=9)) OR (A.TRANSTYPE=99))))
AND ((B.DATAAREAID='bgr')
AND (((B.RECID<>A.RECID) AND (A.BONDBATCH_RU=B.BONDBATCH_RU)) AND (A.BONDBATCHTRANS_RU=B.BONDBATCHTRANS_RU)))
GROUP BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID
ORDER BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID
OPTION(FAST 19)

А в 3-уровневой, вот в таком:

SELECT A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,SUM(B.AMOUNTMST),SUM(B.AMOUNTCUR),B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID
FROM LEDGERTRANS A,LEDGERTRANS B
WHERE ((A.DATAAREAID='bgr')
AND ((((((((A.TRANSDATE>={ts '2004-06-01 00:00:00.000'}) AND (A.TRANSDATE<={ts '2004-06-30 00:00:00.000'}))
AND NOT ((A.BONDBATCH_RU=' '))) AND NOT ((A.BONDBATCHTRANS_RU=0)))
AND ((A.PERIODCODE>=1) AND (A.PERIODCODE<=2)))
AND NOT ((A.POSTING=19)))
AND (A.VOUCHER=' ВП-00000060'))
AND (((((((((A.TRANSTYPE=3) OR (A.TRANSTYPE=14)) OR (A.TRANSTYPE=16)) OR (A.TRANSTYPE=19))
OR (A.TRANSTYPE=20)) OR (A.TRANSTYPE=82)) OR (A.TRANSTYPE=80)) OR (A.TRANSTYPE=9)) OR (A.TRANSTYPE=99))))
AND ((B.DATAAREAID='bgr')
AND (((B.RECID<>A.RECID) AND (A.BONDBATCH_RU=B.BONDBATCH_RU))
AND (A.BONDBATCHTRANS_RU=B.BONDBATCHTRANS_RU)))
GROUP BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID
ORDER BY A.VOUCHER,A.TRANSDATE,A.BGR_INVENTTRANSID,B.ACCOUNTNUM,B.CREDITING,B.VOUCHER,B.TRANSDATE,B.BGR_INVENTTRANSID OPTION(FAST 19)

Разница отмечена жиным шрифтом: в 2-х уровневой конфигурации добавляется лишний фильтр, который совсем даже не лишний..... Причем, если идти по циклу в дебагере, то фильтр добавляется в обеих конфигурациях. А на SQL-сервер в итоге уходят разные запросы!

УЖАС! Кто-нибудь сталкивался с таким? Знает как бороться?!
__________________
Улыбаемся и машем, парни! Улыбаемся и машем...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
оптимизируем запросы. SHiSHok DAX: Программирование 18 13.09.2009 21:26
Почти одинаковые запросы возвращают разные данные ViV DAX: Программирование 5 03.03.2006 14:52
Сложные запросы в RLS Ruff DAX: Администрирование 12 30.08.2005 18:02
Разные дебеты в одном заказе? UNRW DAX: Функционал 15 28.10.2004 14:36
Заказов -> Строки заказов -> Запросы -> Пункт "Производство" Андре DAX: Программирование 1 20.09.2002 10:43

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

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

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