11.02.2004, 15:08 | #1 |
Участник
|
Вопрос по QueryBuildDataSource, QueryBuildRange и QueryRun
Всем кто меня слышит!
Честно говоря, несколько запутался с разбором примером работы с такими классами как QueryBuildDataSource, QueryBuildRange и QueryRun. Сначала задача: 1) Есть таблица, есть форма с единственным датасорсом (по этомй таблице). 2) Скажем хочется на форме в гриде иметь поле таблицы (ключевое) и второе поле - которое рассчитывается по первому - но НЕ через display-метод. формула расчёта - связь через первое поле с другой таблицей и там суммирование по некоторому числовому полю в некотором временном интервале. Есть подозрение, что это можно устроить через QueryBuildDataSource. Но как? Или как решить эту задачу иным способом? И ещё такой вопрос - может ли кто-нибудь разложить по полочкам принципы работу с QueryBuildDataSource, QueryBuildRange и QueryRun? Буду очень признателен!
__________________
Paul_ST |
|
11.02.2004, 15:43 | #2 |
Участник
|
Привет !
Есть альтернативный вариант. Если данных не очень много, то можно форму повесить на временную таблицу. При открытии формы будете начитывать данные в эту таблицу. Тогда и все поля можно сразу рассчитать, и поиск/фильтрация будут работать. |
|
11.02.2004, 15:45 | #3 |
Участник
|
Спасибо! НО я конечно же забыл написать, что вариантом с временной таблицей хотелось бы воспользоваться только в самом крайнем случае.
Не очень-то это по-Axapt'овски
__________________
Paul_ST |
|
11.02.2004, 16:24 | #4 |
NavAx
|
2 Paul_ST, ну сколько можно!? Сегодня уже обсуждалось:
http://www.axforum.info/forums/showt...7958#post27958 |
|
11.02.2004, 16:27 | #5 |
Участник
|
Если честно, то Ваш ответ там для меня непонятен и слишком краток. Можно прокомментировать более подробно про:
qbDS.addSelectionField(fieldId , SelectionField::Sum ) Буду очень признателен!
__________________
Paul_ST |
|
11.02.2004, 16:28 | #6 |
Участник
|
Цитата:
Изначально опубликовано Paul_ST
Спасибо! НО я конечно же забыл написать, что вариантом с временной таблицей хотелось бы воспользоваться только в самом крайнем случае. Не очень-то это по-Axapt'овски Цитата:
2) Скажем хочется на форме в гриде иметь поле таблицы (ключевое) и второе поле - которое рассчитывается по первому - но НЕ через display-метод.
То есть данные в таблице пересчитываются когда пользователь откравает форму? Подход прямо скажем выглядит не вполне адекватно. |
|
11.02.2004, 16:34 | #7 |
Участник
|
для DMA:
для таблицы A, состоящей из одного поля a1 хочется рассчитать ещё одно поле a2, которое рассчитывается (используюя значение первого поля a1) суммированием по диапазону поля b1 в другой таблице B. Неужели только подход через временные таблицы возможен?
__________________
Paul_ST |
|
11.02.2004, 16:45 | #8 |
Участник
|
Цитата:
Изначально опубликовано Paul_ST
для DMA: для таблицы A, состоящей из одного поля a1 хочется рассчитать ещё одно поле a2, которое рассчитывается (используюя значение первого поля a1) суммированием по диапазону поля b1 в другой таблице B. Неужели только подход через временные таблицы возможен? поле а2 это поле хранимое в таблице A? В противном случае мне не вполне понятно, как вы собираетесь отображать его в гриде, не используя display метод. |
|
11.02.2004, 17:06 | #9 |
----------------
|
Немного теории
Query - класс, который содержит всю структуру запроса
QueryBuildDataSоurce - источник данных (таблица), то что содержится в FROM. Сколько таблиц, столько и QBDS должно быть в Query. QBDS содержит также список полей, сортировок, ограничений (QueryBuildRange), связей с др. таблицами. QueryRun - класс, который позволяет исполнить запрос и получить результат. Простой пример: PHP код:
|
|
11.02.2004, 17:13 | #10 |
NavAx
|
Цитата:
Изначально опубликовано Paul_ST
Если честно, то Ваш ответ там для меня непонятен и слишком краток. Можно прокомментировать более подробно про: qbDS.addSelectionField(fieldId , SelectionField::Sum ) |
|