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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.11.2012, 18:10   #1  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от Narayana Посмотреть сообщение
.
Вот, есть представления традиционной ориентации.
Есть таблица в БД, есть рекордсет.
Берем таблицу и с помощью оператора select набираем записи из таблицы в рекордсет.
Абсолютно не факт.
Все зависит от реализации клиента, который подает команду. Может выбираем в рекордсет на клиенте, может просто открываем серверный курсор, может просто определяем структуру рекордсета.
В любом случае, для разработчика это просто некоторое действие, которым можно пользоваться, внутренняя реализация для разработчика прикладной части абсолютно по барабану. Подробности могут заинтересовать только системного разработчика, который, например, реализовывает низкоуровневый доступ к конкретной системе.
Цитата:
Теперь Аксапта.
Есть таблица в БД.
Дальше Аксапта знает про эту таблицу в БД и структуру этой таблицы держит у себя в качестве типа объекта в виде элемента АОТ. Так?
Можно сказать и так
Цитата:
Дальше мы объявляем переменную с типом данной таблицы.
Что при этом происходит?
Мы создаем в памяти только пустую структуру этой таблицы или уже структуру, заселенную данными?
Какая разница,что при этом происходит? Это все проблемы Аксы. Явно данными эта структура пока не заполнена, а уж что там выделяется - просто ссылка на область памяти или эта область памяти будет выделена при первом обращении, что там в этой области памяти, может быть просто резервируется какой-либо хендл для доступа к объектам - прикладного программиста это волновать вообще не должно.
Цитата:
Дальше самое интересное.
Применяем оператор select.
Результатом его работы должен быть рекордсет.
Так этот самый рекордсет куда складывается?
В нашу пустую объявленную переменную или еще куда-то?
Создается впечатление, что складывается как раз в нашу же переменную.
Но, это же какой-то бардак получается.
Опять же, техническая реализация Вас волновать не должна. Может быть данные сразу передаются в рекордсет клиента, может быть серверный курсор выдает данные по мере потребности (если включить профайлер на MS SQL, то для конкретных случаев будет все понятно, но зачем эта информация кроме тех случаев, когда производите тонкую настройку производительности?)
Цитата:
То есть, объявлением переменной с типом таблицы, мы создаем копию таблицы или пустой рекордсет?
Ничего Вы не создаете, Вы просто объявляете переменную. Что при этом дулает Акса: выделяет память ли ждут обращения к переменной, Вас волновать не должно.
Цитата:
Если, допустим, пустой рекордсет "r" , то странным выглядит синтаксическая конструкция "select r;", потому как, вроде бы, "r" должен быть не операндом операции select, а ее результатом.
Как уже сказано, ничего не создается. А конструкция это просто особенность синтаксиса, применяемого в Аксе. Его просто нужно знать, как синтаксис LINQ тоже в первое время может казаться странным, но потом понимаешь, что вроде все логично. Я часто создаю хранимые процедуры и функции в MS SQL. понимаю, что синтаксис Аксы немного своеобразный, но это не составляет проблемы - нужно просто знать и понимать как что использовать.
Цитата:
...
У Вас там еще много всего. Просто следует отделять функциональный подход стандарта SQL и процедурную реализацию доступа к данным в разных клиентах.
Не только в Аксе, но и в dot.net, в OBDC и т.п. есть определенные соглашения о том, как использовать доступ к данным. При это разработчика прикладных решений не касаются внутренние реализации механизмов. Конечно, понимать общие принципы необходимо хотя бы с точки зрения быстродействия.
За это сообщение автора поблагодарили: RVS (3), AlexeyS (2).
Старый 11.11.2012, 00:13   #2  
RVS is offline
RVS
Сенбернар
Аватар для RVS
Злыдни
 
696 / 130 (6) +++++
Регистрация: 27.02.2003
Адрес: Королев МО
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
В любом случае, для разработчика это просто некоторое действие, которым можно пользоваться, внутренняя реализация для разработчика прикладной части абсолютно по барабану. Подробности могут заинтересовать только системного разработчика, который, например, реализовывает низкоуровневый доступ к конкретной системе.
+100500
===
А началось-то - с чего? Просто парень хотел суммируемое поле на форму подвесить.. в ШареПойнт...

Море юмора.. в этом мире
__________________
Best Regards,
Roman

Последний раз редактировалось RVS; 11.11.2012 в 00:27.
Старый 12.11.2012, 15:40   #3  
Narayana is offline
Narayana
Участник
 
241 / 100 (4) +++++
Регистрация: 05.01.2009
Адрес: Москва
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Конечно, понимать общие принципы необходимо хотя бы с точки зрения быстродействия.
...и не только с точки зрения быстродействия.
А вам не кажется, что это ваше последнее утверждение несколько противоречит всему, что вы написали выше?
Теги
query, архитектура, как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обновление поля с определённым типом во всех таблицах. Corel DAX: Программирование 1 20.12.2008 13:37
Достаточно ли изменить дату в таблицах inventTrans, inventTransPosting, VendPackingSlipJour? DmitryS DAX: Программирование 3 18.09.2008 14:37
Проверки заполненных значений в связанных таблицах. miklenew DAX: База знаний и проекты 11 25.12.2007 14:40
Как не использовать relations на таблицах demetra DAX: Программирование 13 14.07.2006 11:00
Осторожнее с CTRL+S на таблицах mit DAX: Администрирование 7 25.07.2005 19:09

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

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

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