![]() |
#18 |
Участник
|
Цитата:
Сообщение от Narayana
![]() ... и все-таки, ничо не понимаю.
Вот, есть представления традиционной ориентации. Есть таблица в БД, есть рекордсет. Берем таблицу и с помощью оператора select набираем записи из таблицы в рекордсет. Теперь Аксапта. Есть таблица в БД. Дальше Аксапта знает про эту таблицу в БД и структуру этой таблицы держит у себя в качестве типа объекта в виде элемента АОТ. Так? Так Дальше мы объявляем переменную с типом данной таблицы. Что при этом происходит? Ничего вроде, разве что память выделяется под переменную, но не уверен, вроде бы как в Java языке происходит. Мы создаем в памяти только пустую структуру этой таблицы или уже структуру, заселенную данными? Дальше самое интересное. Применяем оператор select. Результатом его работы должен быть рекордсет. Так этот самый рекордсет куда складывается? В нашу пустую объявленную переменную или еще куда-то? оператор селект формирует запрос к БП. Если не используется noFetch то он обычно сразу же и исполняется. Результат "складывается" (в реальности все сложнее - используется буфер, и складывается не весь результат) в объявленную табличную переменную Создается впечатление, что складывается как раз в нашу же переменную. Но, это же какой-то бардак получается. То есть, объявлением переменной с типом таблицы, мы создаем копию таблицы или пустой рекордсет? Если, допустим, пустой рекордсет "r" , то странным выглядит синтаксическая конструкция "select r;", потому как, вроде бы, "r" должен быть не операндом операции select, а ее результатом. Синтаксис не я придумал, но наверное проблемы с его пониманием возникают только у .Net девеорперов. Если вы его не понимаете, то у вас скорее всего проблемы с абстрагированием и программирование вам вообще противопоказано Вот, когда мы, например, в АОТе открываем форму таблицы, где показывается содержание таблицы, что происходит? Много чего, впрочем к вышесказанному отношение имеет опосредованное И еще. Вот мы создали в АОТе таблицу. А потом используем ее, например, в качестве датасорса для датасета, используемого дальше в портале. Допустим, я хочу к тому моменту, когда таблица будет использоваться в качестве дата сорса, произвести некоторые вычисления и положить результат их в одно из полей таблицы. Какое событие нужно использовать и какой метод таблицы лучше перекрывать для размещения кода вычислений? вы хотите не это наверное, просто решили, что хотите сделать XXX через YYY и спрашиваете на форуме, как сделать YYY как в известном анекдоте. Никто так не делает в здравом уме, обновление данных вместе с выводом тупо убъет производительность, представьте, что два пользователя откроют страничку, что произойдет с блокировками в сиквеле? Последний раз редактировалось lvan; 10.11.2012 в 16:01. |
|
Теги |
query, архитектура, как правильно |
|
|