13.03.2007, 17:45 | #1 |
Участник
|
Формат даты для "родного" диалекта SQL
Мы пишем приложения, работающие с Акзапта 4.01 через .NET коннектор.
Приходится пользоваться как методами AxaptaRecord через вызовы Call (типа find), так и SQL через ExecuteStmnt. Диалект этот мы почти освоили, но осталась проблема с полями типа дата. Никак не работают запросы типа: PHP код:
PHP код:
Последний раз редактировалось Jab Straight; 13.03.2007 в 18:25. |
|
13.03.2007, 17:55 | #2 |
Участник
|
Может метод класса Global date2StrXpp поможет? По-моему это так решалось
|
|
13.03.2007, 18:11 | #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 - та же фигня. Где собака зарыта? 2) эти запросы вы пишете для SQL-сервера? Если да, то почему в select * from присутствует «%1.», и как он у вас реагирует на «&&»? У меня лично понимает только «and», «or» и т.п. 3) У меня прокатывает такой запрос PHP код:
Последний раз редактировалось gl00mie; 13.03.2007 в 18:18. |
|
13.03.2007, 18:14 | #4 |
Участник
|
А я так понял, что люди в базу-то лезут не из Аксапты..
|
|
13.03.2007, 18:28 | #5 |
Участник
|
Надеюсь с тэгами вам больше нравится. Обратите внимание, что я убрал лишний %1, которого не было в нашем коде на самом деле. Не работает именно то, что в моем оригинальном сообщении.
Вопрос по встроенному языку Акзапты, а не T-SQL, правильно? Давайте о нем и говорить. Я предоставил исчерпывающую информацию о том что я делаю и в чем проблема, если что-то непонятно, задайте вопросы, что ли? |
|
13.03.2007, 18:31 | #6 |
Участник
|
Я по %1 подумал, что именно из Аксапты.
А что, date2strXpp не подошло? в эту функцию нужно передавать дату, а ее значения подставлять в запрос прямой к SQL из Axapta |
|
13.03.2007, 18:35 | #7 |
Участник
|
Можно ли получить доступ к классу Global через AxaptaObject класс .NET коннектора и как?
|
|
13.03.2007, 18:39 | #8 |
Участник
|
да незачем, собственно. можете сами прописывать.
Метод возвращает формат даты dd\mm\yyyy |
|
13.03.2007, 18:43 | #9 |
Участник
|
Вы вообще что имеете в виду? что значит "сами прописывать"?
|
|
13.03.2007, 18:45 | #10 |
Участник
|
Цитата:
PHP код:
|
|
13.03.2007, 18:53 | #11 |
Участник
|
Не работает ни@#$. Эту @#$%^ Акзапту даже протрассировать нельзя, она все внутри делает при вызове ExecuteStmnt.
Последний раз редактировалось Jab Straight; 13.03.2007 в 19:04. |
|
13.03.2007, 19:00 | #12 |
Member
|
Меня вот так писать учили знающие люди.
SELECT * FROM %1 WHERE %1.InvoiceID > '' && %1.InvoiceDate >= '20070305' && %1.InvoiceDate <= '20070306' Из Query Analyser всегда работало. А вы как именно ваш запрос запускаете (из какого приложения, и как к базе подключаетесь)?
__________________
С уважением, glibs® |
|
13.03.2007, 19:36 | #13 |
Участник
|
Чем Ваш запрос, glibs, отличается от моего?
И если Вы ссылаетесь на Query Analyzer SQL сервера, то такое работать не будет - это не транзакт-SQL. "пускаю" я запрос из приложения на c#, через методы некоторых классов, предоставляемых .NET business connector. Доступа ко всем классам я не имею, только к AxaptaRecord и AxaptaObject |
|
13.03.2007, 20:17 | #14 |
Member
|
Это не мой запрос, а ваш. Я слэши из него убрал.
Чего-то я не понял. Если вы работаете через .NET business connector, то зачем вам писать прямой запрос к БД? А если вы все-таки пишете прямой запрос на SQL сервер, то при чем тут .NET business connector? Запрос через ODBC соединение работает. Проверил только что из Аксапты. Только ваш запрос больше похож на Аксаптовский. Вы хотите произвольный SELECT в Аксапте запускать? По идее, лучше использовать класс Query тогда. С COM-connector я практически не работал (а с .NET business connector просто не работал), так что от дальнейших комментариев по этому вопросу воздержусь.
__________________
С уважением, glibs® |
|
13.03.2007, 20:27 | #15 |
Участник
|
Пробовали и без слэшей, я же писал. Всякие форматы пихали.
Доступа к Query у меня нет - мне доступна не вся функциональность. Класс Query - это что такое? Не вижу его в AOT. Если не пользоваться встроенным SQL, то как я могу выбирать из таблиц записи по фильтрам состоящим из множества критериев? Последний раз редактировалось Jab Straight; 13.03.2007 в 20:39. |
|
14.03.2007, 00:38 | #16 |
Member
|
Понял. Тогда так.
"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 |
Участник
|
Именно такой формат и возвращает date2strXpp, который посоветовал изначально
|
|
14.03.2007, 15:23 | #18 |
Участник
|
Правильный формат - с обратным слешем и БЕЗ КАВЫЧЕК.
|
|
14.03.2007, 16:02 | #19 |
Злыдни
|
Правильный формат для SQL "20060301" - (год, месяц, день).
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании. |
|
14.03.2007, 16:11 | #20 |
Участник
|
Замечу, что кавычки ставить вам никто и не советовал
Человеку нужно из Аксапты, просто через BC |
|