25.09.2007, 13:51 | #1 |
Участник
|
Динамическое связывание временной таблицы
Добрый день! Хочу отфильтровать данные на форме с помощью подвязывания временной таблицы.
Итак, есть некая форма с двумя датасорсами (LedgerJournalTable и LedgerJournalTrans), связанными по InnerJoin. Динамически подвязываю к подчинённому датасорсу ещё один QueryBuildDataSource по временной таблице (связь к LedgerJournalTrans по RecId). Делаю ему enabled(false). По нажатии на кнопку заполняю временную таблицу. Делаю enabled(true) для созданного QueryBuildDataSource. Вызываю X++: LedgerJournalTrans_ds.queryRun().setCursor(tmpTable); LedgerJournalTable_ds.research(); Почитал на форуме ветки setCursor() vs serRecord() и Врем.табл.: поведение в 2-х и 3-х уровневой конф.. Запускаю в 2х звенке (Axapta 3.0 SP4). Временную таблицу генерю на сервере. Помогите, плиз!
__________________
Paul_ST |
|
25.09.2007, 14:13 | #2 |
Программатор
|
После того как табла сгенерится нада её на форму обратно передать и сделать что то типа tmpTable1.data(tmpTable); или tmpTable1.setTmpData(tmpTable);, где tmpTable1 - имя датасорса вашей темповой таблицы
|
|
25.09.2007, 14:36 | #3 |
Участник
|
Это понятно. На форме (в дизайне) у меня DataSource не создан. Всё хотелось бы динамически сделать. Возможно ведь это?
__________________
Paul_ST |
|
25.09.2007, 14:37 | #4 |
Участник
|
В дизайне формы DataSource для временной таблицы не создан - я имел в виду
__________________
Paul_ST |
|
25.09.2007, 15:46 | #5 |
Программатор
|
Даеш код как вы её джойните и где...
|
|
25.09.2007, 16:05 | #6 |
Участник
|
Сорри, сделал ещё раз то, что было с нуля. Получилось. Видимо, где-то была незаметная на первый взгляд ошибка.
Т.е. можно констатировать, что фильтрация с помощью динамически приджойниваемой и динамически заполняемой временной таблицы работает корректно. Ура.
__________________
Paul_ST |
|
25.09.2007, 16:10 | #7 |
Участник
|
Жаль только скорость работы такого решения врядли радует
|
|
25.09.2007, 16:15 | #8 |
Участник
|
Если интересно, то я понял в чём было дело.
Свой динамически приджойненный датасорс при созданни датасорсов основных датасорсов формы я выключал (делал enabled(false)), а при необходимости заполнял временную таблицу, подсовывал её и включал датасорс (enabled(true)). Только вот указывал qbdsTMP.enabled(true), где qbdsTMP - запомненный QueryBuildDataSource в тот момент когда создавал динамический датасорс. Помогло замена этого выражения на вызов enabled() через queryRun(). Кто ж знал?
__________________
Paul_ST |
|
25.09.2007, 16:17 | #9 |
Участник
|
Тут уж не в скорости дело. Сама фильтрация по сути подбирается непростая - т.е. мне намного более удобно заполнить временную таблицу, которая затем уже и отфильтрует всё, что мне надо.
Поскольку используются Display-методы, которые нелегко вополотить в добавленные датасорсы.
__________________
Paul_ST |
|