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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2020, 10:45   #1  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
? Вычисление длины string-поля в запросе
Здравствуй.
Можно ли в запросе в обозревателе таблицы использовать функцию типа strLen для определения количества символов в поле типа String?
Ну что-то типа
select strLen(Field1) from Table1
Старый 28.05.2020, 11:11   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,701 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Нельзя

Запрос напрямую выполняется в MS SQL. С "переводом", конечно, из синтаксиса X++ в синтаксис MS SQL. Но "перевода" встроенных функций X++ в синтаксис MS SQL не существует. Поэтому такая операция запрещена
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 28.05.2020, 11:44   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Metrofun Посмотреть сообщение
Здравствуй.
Можно ли в запросе в обозревателе таблицы...
сформулируйте вопрос полностью, ответ станет очевидным.

SQL - это язык запроса данных. Этот язык оперирует данными и не заботится о внешнем виде полученных данных.

Обозреватель таблиц - это форма в Аксапте. Как и все формы/отчеты в Аксапте эта форма заботится о представлении данных и о взаимодействии с полученными данными (фильтрация, сортировка, выравнивание, форматирование и т.п.)

мало того, почти все инструменты Аксапты прежде всего заточены на представление и взаимодействие с пользователем. В том числе "запросы". (обратите внимание что в Аксапте есть запросы select и query - они в разной степени заточены на взаимодействие с пользователем)

Именно поэтому select/query в Аксапте в корне отличаются от запросов в SQL
Запросы в SQL готовят данные создавая новую сущность. SQL не волнует как эту сущность потом будут представлять пользователю.
Запросы в Аксапте раскладывают полученные даные по заранее подготовленным табличным переменных, в которых помимо способа хранения определены форматы и способ представления.

в этом принципиальная разница.
поэтому в Аксапту не завезли произвольных выражений вместо полей.
(можно было... но в свое время Дамгаард-разработчики не успели/не смогли, а теперь Майкрософт-разработчики занимаются всякой фигней лишь бы не лазить в ядро работы с базой)


==============
в Аксапте можно воспользоваться классами Statement и ResultSet, чтобы выполнить произвольный SQL-запрос.
в коде вы получите обычный SQL resultSet.
Но вам придется написать дополнительный код чтобы отобразить этот resultSet пользователю.

я видел на проектах такие доработки.
но в стандартной Аксапте нет готовых инструментов чтобы отобразить произвольный resultSet. нужно программировать.
__________________
полезное на axForum, github, vk, coub.
Старый 28.05.2020, 11:56   #4  
Metrofun is offline
Metrofun
Участник
 
72 / 10 (1) +
Регистрация: 27.04.2020
Цитата:
Сообщение от mazzy Посмотреть сообщение
==============
в Аксапте можно воспользоваться классами Statement и ResultSet, чтобы выполнить произвольный SQL-запрос.
в коде вы получите обычный SQL resultSet.
Но вам придется написать дополнительный код чтобы отобразить этот resultSet пользователю.

я видел на проектах такие доработки.
но в стандартной Аксапте нет готовых инструментов чтобы отобразить произвольный resultSet. нужно программировать.
Про это я знаю.
Мне не для пользователя надо, а для разработчика.
Просто немного странно, что в аксапте не реализовали работу с запросами, как в редакторе запросов MS SQL Server Management Studio. Вроде и акспата и студия майкросовт?!?
И как я понял в аксапте нет даже аналога редактора запросов, как вариант, чтобы посмотреть результаты select-запроса советовали 'рисовать' job.
Старый 28.05.2020, 13:06   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Metrofun Посмотреть сообщение
Мне не для пользователя надо, а для разработчика.
Просто немного странно, что в аксапте не реализовали работу с запросами, как в редакторе запросов MS SQL Server Management Studio. Вроде и акспата и студия майкросовт?!?
И как я понял в аксапте нет даже аналога редактора запросов, как вариант, чтобы посмотреть результаты select-запроса советовали 'рисовать' job.
Думаю, чтобы получить понимание, стоит вопросы формулировать полностью.

стандартной аксапте не реализовали работу с запросами"
да, в стандартной не реализовали.

стандартной аксапте нет даже аналога редактора запросов"
в стандартной нет редактора запросов select.
в стандартной есть редактор запросов query.

но более контруктивным являлись бы вопросы:
1. как вы, люди добрые, редактируете запросы?
2. как вы, люди добрые, определяете длину строкового поля?

на первый вопрос вам бы ответили про tabax, sidax и sysTableBrowser, xTableBrowser и о других проектах на эту тему
вам бы обязательно рассказали про разницу между SQL таблицами, временными таблицами аксапты и временными талицами MS SQL

на второй вопрос вас бы спросили про кеширование на вашей таблице и рассказали бы о том, что в режиме EntireTable запрос на SQL может вообще не отправляться.

в общем, Аксапта - это обычный такой ORM со своими тараканами. Типа Hibernate ранних версий.
у ORM есть свои достоинства и есть свои недостатки.

Также конструктивным был бы вопрос что Майкрософт сделал чтобы развить ORM, запоженный в Аксапту?
Вам рассказали бы грустную историю про Query, View, DataSet, про несчастный DataEnity и про умертвия DataContract
https://www.youtube.com/watch?v=IQKMxyc8QcY

Цитата:
Сообщение от Metrofun Посмотреть сообщение
чтобы посмотреть результаты select-запроса советовали 'рисовать' job.
именно так.
можно дать совет?
не делайте select-запросы.
работайте сразу с query.

Вам же намного проще будет сделать следующий шаг и дать разработанный вами функционал для пользователя.
Создайте query в АОТ мышкой и заинджектите его в код.
В коде только меняйте необходимые фильтры, сортировки и тп.

X++:
Query q = new Query(querystr(mySuperQueryInAOT));
MyTable myTable;
;
SysQuery::findOrCreateRange(q.datasource(myTable.tableId), fieldnum(MyTable, MyField)).value('!Value*');
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 28.05.2020 в 13:12.
Старый 28.05.2020, 19:59   #6  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от mazzy Посмотреть сообщение
Вам же намного проще будет сделать следующий шаг и дать разработанный вами функционал для пользователя.
И не только для пользователя.
Хотя в стандарте этого нет, но тот же DevTools для DAX2012 содержит механизмы просмотра данных по Query из AOT. На просмотрах инета есть утилитки, позволяющие вписать в код вызов просмотра данных Query в момент отладки.
Старый 28.05.2020, 21:09   #7  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,325 / 3548 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Metrofun Посмотреть сообщение
И как я понял в аксапте нет даже аналога редактора запросов, как вариант, чтобы посмотреть результаты select-запроса советовали 'рисовать' job.
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
На просмотрах инета есть утилитки, позволяющие вписать в код вызов просмотра данных Query в момент отладки.
Когда я начинал изучать систему - я тоже на это жаловался. Мне сказали - ну так напиши в чем проблема? Заодно и систему изучишь )
Ну и когда начинаешь "брать барьер" - начинаешь понимать, почему разработчики АХ этого не сделали. И далеко не всегда даже получается и "взять барьер", даже если взялся.
__________________
Возможно сделать все. Вопрос времени
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX максимальный размер поля string arhat DAX: Программирование 7 06.08.2024 13:07
Изменение в отчёте размера шрифта, высоты и ширины поля в зависимости от длины строки в поле. Metrofun DAX: Программирование 2 29.05.2020 11:06
Функции для поля в запросе Морковка DAX: Программирование 10 07.05.2015 13:37
выбор полей в запросе (не все поля видны) mdconsult DAX: Программирование 12 02.02.2009 09:21
вычисляемые поля в запросе или View Aleksandr Parfenov DAX: Программирование 2 28.06.2004 12:19

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

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

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