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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.03.2007, 17:45   #1  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Формат даты для "родного" диалекта SQL
Мы пишем приложения, работающие с Акзапта 4.01 через .NET коннектор.
Приходится пользоваться как методами AxaptaRecord через вызовы Call (типа find), так и SQL через ExecuteStmnt. Диалект этот мы почти освоили, но осталась проблема с полями типа дата. Никак не работают запросы типа:

PHP код:
SELECT FROM %1
WHERE 
%1.InvoiceID '' && %1.InvoiceDate >= '2007/03/05'
&& %1.InvoiceDate <= '2007/03/06' 
Запрос

PHP код:
SELECT FROM %1 WHERE %1.InvoiceID '' 
отрабатывает прекрасно. Пробовали даты в формате 20070306, 03/06/2007 - та же фигня. Где собака зарыта?

Последний раз редактировалось Jab Straight; 13.03.2007 в 18:25.
Старый 13.03.2007, 17:55   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Может метод класса Global date2StrXpp поможет? По-моему это так решалось
Старый 13.03.2007, 18:11   #3  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Jab Straight Посмотреть сообщение
Мы пишем приложения, работающие с Акзапта 4.01 через .NET коннектор.
Приходится пользоваться как методами AxaptaRecord через вызовы Call (типа find), так и SQL через ExecuteStmnt. Никак не работают запросы типа:
SELECT %1.* FROM %1 WHERE %1.InvoiceID > '' && %1.InvoiceDate >= '2007/03/05' && %1.InvoiceDate <= '2007/03/06'
Запрос
SELECT %1.* FROM %1 WHERE %1.InvoiceID > ''
отрабатывает прекрасно. Пробовали даты в формате 20070306, 03/06/2007 - та же фигня. Где собака зарыта?
1) Пользуйтесь тэгами [php][/php] или [code][/code] - сообщения будут куда более читаемыми
2) эти запросы вы пишете для SQL-сервера? Если да, то почему в select * from присутствует «%1.», и как он у вас реагирует на «&&»? У меня лично понимает только «and», «or» и т.п.
3) У меня прокатывает такой запрос
PHP код:
select 
from   vendinvoicejour v 
where  v
.invoiceid '' and v.invoicedate between '2007-03-05' and '2007-03-06' 
PS В Аксапте даты можно указывать через обратный слэш: 01\01\2007

Последний раз редактировалось gl00mie; 13.03.2007 в 18:18.
Старый 13.03.2007, 18:14   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Может метод класса Global date2StrXpp поможет?
А я так понял, что люди в базу-то лезут не из Аксапты..
Цитата:
Сообщение от Jab Straight Посмотреть сообщение
Мы пишем приложения, работающие с Акзапта 4.01 через .NET коннектор. Приходится пользоваться как методами AxaptaRecord через вызовы Call (типа find), так и SQL через ExecuteStmnt.
Старый 13.03.2007, 18:28   #5  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Надеюсь с тэгами вам больше нравится. Обратите внимание, что я убрал лишний %1, которого не было в нашем коде на самом деле. Не работает именно то, что в моем оригинальном сообщении.
Вопрос по встроенному языку Акзапты, а не T-SQL, правильно? Давайте о нем и говорить. Я предоставил исчерпывающую информацию о том что я делаю и в чем проблема, если что-то непонятно, задайте вопросы, что ли?
Старый 13.03.2007, 18:31   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от gl00mie Посмотреть сообщение
А я так понял, что люди в базу-то лезут не из Аксапты..
Цитата:
Сообщение от Jab Straight Посмотреть сообщение
Вопрос по встроенному языку Акзапты, а не T-SQL,
Я по %1 подумал, что именно из Аксапты.
А что, date2strXpp не подошло? в эту функцию нужно передавать дату, а ее значения подставлять в запрос прямой к SQL из Axapta
Старый 13.03.2007, 18:35   #7  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Можно ли получить доступ к классу Global через AxaptaObject класс .NET коннектора и как?
Старый 13.03.2007, 18:39   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
да незачем, собственно. можете сами прописывать.
Метод возвращает формат даты
dd\mm\yyyy
Старый 13.03.2007, 18:43   #9  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Вы вообще что имеете в виду? что значит "сами прописывать"?
Старый 13.03.2007, 18:45   #10  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5798 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от Jab Straight Посмотреть сообщение
Можно ли получить доступ к классу Global через AxaptaObject класс .NET коннектора и как?
По крайней мере, в 3.0 можно было получить доступ через IAxapta::CallStaticClassMethod, только метод этот imho не делает ничего такого, ради чего стоило бы возиться с его вызовами через COM, - он просто возвращает дату в формате dd\mm\yyyy:
PHP код:
return num2Str0(dayofMth(_date),2)+
       
'\\'+
       
num2Str0(mthofYr(_date),2)+
      
'\\'+
       
num2Str0(year(_date),4); 
Такое можно и в другом месте реализовать...
Старый 13.03.2007, 18:53   #11  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Не работает ни@#$. Эту @#$%^ Акзапту даже протрассировать нельзя, она все внутри делает при вызове ExecuteStmnt.

Последний раз редактировалось Jab Straight; 13.03.2007 в 19:04.
Старый 13.03.2007, 19:00   #12  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Меня вот так писать учили знающие люди.

SELECT * FROM %1
WHERE %1.InvoiceID > '' && %1.InvoiceDate >= '20070305'
&& %1.InvoiceDate <= '20070306'

Из Query Analyser всегда работало. А вы как именно ваш запрос запускаете (из какого приложения, и как к базе подключаетесь)?
__________________
С уважением,
glibs®
Старый 13.03.2007, 19:36   #13  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Чем Ваш запрос, glibs, отличается от моего?
И если Вы ссылаетесь на Query Analyzer SQL сервера, то такое работать не будет - это не транзакт-SQL.
"пускаю" я запрос из приложения на c#, через методы некоторых классов, предоставляемых .NET business connector. Доступа ко всем классам я не имею, только к AxaptaRecord и AxaptaObject
Старый 13.03.2007, 20:17   #14  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Это не мой запрос, а ваш. Я слэши из него убрал.

Чего-то я не понял. Если вы работаете через .NET business connector, то зачем вам писать прямой запрос к БД? А если вы все-таки пишете прямой запрос на SQL сервер, то при чем тут .NET business connector?

Запрос через ODBC соединение работает. Проверил только что из Аксапты.

Только ваш запрос больше похож на Аксаптовский. Вы хотите произвольный SELECT в Аксапте запускать? По идее, лучше использовать класс Query тогда. С COM-connector я практически не работал (а с .NET business connector просто не работал), так что от дальнейших комментариев по этому вопросу воздержусь.
__________________
С уважением,
glibs®
Старый 13.03.2007, 20:27   #15  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Пробовали и без слэшей, я же писал. Всякие форматы пихали.
Доступа к Query у меня нет - мне доступна не вся функциональность.
Класс Query - это что такое? Не вижу его в AOT.

Если не пользоваться встроенным SQL, то как я могу выбирать из таблиц записи по фильтрам состоящим из множества критериев?

Последний раз редактировалось Jab Straight; 13.03.2007 в 20:39.
Старый 14.03.2007, 00:38   #16  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Понял. Тогда так.

"SELECT * FROM %1 WHERE %1.InvoiceID != '' && %1.InvoiceDate >= 05\03\2001 && %1.InvoiceDate <= 26\03\2007"

И не говорите, что не работает. А то я проверял . Правда, на COM+ и под VBA. Но продемонстировать смогу.
__________________
С уважением,
glibs®
Старый 14.03.2007, 01:13   #17  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от glibs Посмотреть сообщение
%1.InvoiceDate >= 05\03\2001 && %1.InvoiceDate <= 26\03\2007
И не говорите, что не работает. А то я проверял .
Именно такой формат и возвращает date2strXpp, который посоветовал изначально
Старый 14.03.2007, 15:23   #18  
Jab Straight is offline
Jab Straight
Участник
 
51 / 11 (1) +
Регистрация: 02.01.2007
Правильный формат - с обратным слешем и БЕЗ КАВЫЧЕК.
Старый 14.03.2007, 16:02   #19  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от Jab Straight Посмотреть сообщение
Правильный формат - с обратным слешем и БЕЗ КАВЫЧЕК.
Правильный формат для SQL "20060301" - (год, месяц, день).
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 14.03.2007, 16:11   #20  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Jab Straight Посмотреть сообщение
Правильный формат - с обратным слешем и БЕЗ КАВЫЧЕК.
Замечу, что кавычки ставить вам никто и не советовал
Цитата:
Сообщение от KiselevSA Посмотреть сообщение
Правильный формат для SQL "20060301" - (год, месяц, день).
Человеку нужно из Аксапты, просто через BC
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как на EP в AX 4 поменять формат даты и размер шрифта? zelibobis DAX: Администрирование 11 04.08.2008 10:46
Ошибка "Машинной даты" Vals DAX: Администрирование 5 12.09.2007 12:20
Формат даты на сервере и клиенте bio_unit DAX: Администрирование 2 25.08.2004 16:44
Ошибка SQL в модуле "Расчеты с персоналом" Карбофос DAX: Функционал 5 02.08.2002 12:44
Ошибка SQL в модуле "Расчеты с персоналом" Карбофос DAX: Программирование 0 31.07.2002 17:20

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

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

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