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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.01.2007, 16:40   #1  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Динамический SQL
Есть вот проблемка.

ТЗ: Сделать отчет - фильтрация по любым полям (то есть юзверь сам выбирает в стандартной форме SysQuery отчета).

НО проблемка в том, что сам запрос такой сложный, что с QBDS нельзя его построить, так как фильтрация идет по полям разных таблиц (не-relations)... то есть:

Код:
where table1.date1 <= table2.date2
Так как сам запрос будет в Axapta-SQL, то тут отпадают юзерские Range-ы ... так как их всех пречислать будет слишком геморойно...

Почему мне надо такой сложный JOIN? - потомы что очень много данных и делать Display-методы это равно самоубийству :[ ... >1.000.000 SQL запросов за один отчет - затормаживает сервак :[

Может все-таки есть какой выход?

Все что мне хочется:

Код:
select ... from ... [user_ranges] join ..[user_ranges] [my_ranges]
Спасибо заранее...
Старый 17.01.2007, 16:46   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Delfins Посмотреть сообщение
НО проблемка в том, что сам запрос такой сложный, что с QBDS нельзя его построить, так как фильтрация идет по полям разных таблиц...
Читайте мануалы - они рулез.
Используйте поиск по форуму.

http://axapta.mazzy.ru/lib/search/ (внизу: используйте скобки)
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: Delfins (2).
Старый 17.01.2007, 16:56   #3  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Сложные можно создать указав Value = '(field1 <= table2.field2)'
скобочки обязательны
Старый 17.01.2007, 18:03   #4  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Спасибо...

Но теперь проблема с датами - Аxапта не правильно форматирует дату и отсылает на SQL сервер неправельный TS [timestamp]

Код:
SQL k??das apraksts: [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string.
Код:
...
 (((E.TRANSDATE>={ts '1950-49-49 00:00:00.000'}) AND (E.TRANSDATETO<={ts '1950-49-49 00:00:00.000'})) OR ..
Код:
        tmpRangeValue  = strfmt('((table.TransDate >= "%1") && (table.TransDateTo <= "%1"))',systemdateget());
пробовал по всякому - ничего не получается

PS: помогло DATE2STRXPP() ... Помоему это надо написать в мануале

Последний раз редактировалось Delfins; 17.01.2007 в 18:08.
Старый 17.01.2007, 18:15   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Delfins Посмотреть сообщение
Помоему это надо написать в мануале
Читайте мануалы - они рулез.

Не используйте строки вместо дат.
Следующая конструкция является категорически неправильной
Цитата:
Сообщение от Delfins Посмотреть сообщение
Код:
(table.TransDate >= "%1")
Если хотите задать литерал, используйте конструкцию DD\MM\YYYY (без апострофов и кавычек)
Например, 17\01\2007
__________________
полезное на axForum, github, vk, coub.
Старый 17.01.2007, 18:20   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Delfins Посмотреть сообщение
Код:
tmpRangeValue = strfmt('((table.TransDate >= "%1") && (table.TransDateTo <= "%1"))',systemdateget());
Кроме того, для того, чтобы задать такое условие вовсе необязательно заниматься ручным кодированием критерия. Достаточно было обычным образом наложить два критерия на два поля.

Ручное программирование критерия нужно только в том случае, если несколько полей одновременно связаны оператором ИЛИ, или два поля сравниваются друг с другом.

Прочтите наконец, документацию.
Посетите обучающие курсы.
Вам будет намного легче, ей богу.
Вы сейчас пытаетесь сделать закат солнца вручную...
__________________
полезное на axForum, github, vk, coub.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX: SQL Sever 2008 - Performance with Dynamics AX 2009 - Resource Governor Blog bot DAX Blogs 0 23.01.2009 22:05
Dynamics AX: Dynamics AX 2009 & SQL Server 2008 Blog bot DAX Blogs 0 10.06.2008 21:08
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01

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

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

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