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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.09.2004, 09:58   #1  
Александр Костоусов is offline
Александр Костоусов
drc
 
97 / 10 (1) +
Регистрация: 18.08.2004
SQL Запрос
Доброго утра!

Я делаю импорт данных через ODBC, потому в код X++ вставляю реальные SQL запросы. Их предварительно отлаживаю в SQL Server.

Так вот мой запрос:

Код:
SELECT
                   mkart.sclad,
                   mkart.nnum,
                   spr_part.cena_f,
                   SUM(mkart.koltek),
                   (CAST(SUM(spr_part.cena_f)/SUM(mkart.koltek)AS NUMERIC(20,4)))
                
FROM mkart INNER JOIN spr_part
ON (mkart.grup = spr_part.grup) 
       AND (mkart.nnum = spr_part.nnum) 
       AND (mkart.partia = spr_part.code)

WHERE (mkart.sclad IS NOT NULL) 
       AND (mkart.partia IS NOT NULL)
       AND (mkart.koltek <> 0)
                
GROUP BY mkart.sclad,mkart.nnum,spr_part.code,spr_part.cena_f
HAVING SUM(mkart.koltek) <> 0"
Фишка запроса в том что в SQL Server он отрабатывает без проблем, а в Аксапте вылезает Error указывая на пропущенный оператор( строка (CAST(SUM(spr_part.cena_f)/SUM(mkart.koltek)AS NUMERIC(20,4))) ).

Подскажите, в чем дело?
Старый 24.09.2004, 10:37   #2  
Александр Костоусов is offline
Александр Костоусов
drc
 
97 / 10 (1) +
Регистрация: 18.08.2004
В конце запроса нет кавычек -- это описка.

Думаю, дело вот в чем: т.к. запрос я отлаживал на базе SQL Server, а реально обращаюсь через ODBC к *.dbf у которого возможны отклонения от стандартного ANSI.
Старый 24.09.2004, 11:39   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,317 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
И снова здраствуйте :)
Дык косяк заключается в том, что обработка данных идет драйвером ODBC, а не SQL Server. Я в свое время говорил где нужно отлаживать запросы ODBC, однако, возможно, была допущена ошибка при построении связи...
В частности ODBC не поддерживает оператор CAST.
А Аксапта вылетает, т.к. драйвер ODBC не смог исполнить запрос. В то же самое время, SQL Server понимает оператор CAST и поэтому запрос прокатывает
Старый 24.09.2004, 11:57   #4  
Александр Костоусов is offline
Александр Костоусов
drc
 
97 / 10 (1) +
Регистрация: 18.08.2004
:)
Нет ошибки в связи не было. Я то думал что различий в SQL у ODBC и SQL Server нет.
Старый 24.09.2004, 12:04   #5  
xonix is offline
xonix
Участник
 
360 / 11 (1) +
Регистрация: 25.08.2004
Хм..
Скажем так, ODBC драйвер к dbf не поддерживает этот оператор CAST.
Это как в анекдоте: "ODBC большой..."
Старый 24.09.2004, 12:15   #6  
Been_Lasted is offline
Been_Lasted
Участник
 
1 / 10 (1) +
Регистрация: 24.09.2004
Адрес: Запорожье
Можно использавать convert
Например так:

stmt.executeUpdate(
'insert into TmpParm (CountRecord, recid , dataareaid) ' +
'select count(*) as CountRecord, ' +
' convert(int,'+int2str(beginRecId)+') AS recid ,' +
' \''+dataareaid+'\' as DATAAREAID ' +
sqlStr +';'
);

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Произвольный SQL-запрос listener DAX: База знаний и проекты 26 26.07.2016 09:31
Как преобразовать запрос в SQL-инструкцию Oloops DAX: Программирование 7 07.07.2008 20:38
Поймать SQL запрос при формировании отчета Qaz Qwerty DAX: Программирование 7 12.06.2008 01:46
SQL мониторинг + прямой запрос к SQL Alex_KD DAX: Программирование 17 29.05.2007 03:58
Собственный SQL запрос в FormDataSource Alexey DAX: База знаний и проекты 0 20.12.2001 00:35
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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