31.08.2009, 17:18 | #1 |
Участник
|
Фильтр в Grid
Всем привет!
Столкнулся с такой ситуацией. Есть форма на ней грид состоящий из двух таблиц скажем(InventJournalTrans и связанная с ней InnerJoin InventDim) и поле combobox типа InventLocationId. Необходимо при выборе в поле значения склада фильтровались записиси в Gride. С одной таблицей все получается, но если 2 и связанные, то не выходит. |
|
31.08.2009, 18:10 | #2 |
Участник
|
sql на сервер правильный уходит?
|
|
31.08.2009, 18:33 | #3 |
Участник
|
Делала по подобию Журнала LedgerJournalTable, только с двумя связаными таблицами.
Сейчас работает только таким образом выбираю значение ничего не происходит в Gride, выбираю второе значение в Gride фильтруется по предыдущему значению. Метод modified на поле combobox X++: ...
ret = super();
inventLocationId = combInventLocationId.text();
InventJournalTrans_ds.executeQuery();
InventDim_ds.executeQuery();
... |
|
01.09.2009, 07:31 | #4 |
Участник
|
Попробуйте сначала перечитать подчиненный запрос
|
|
|
За это сообщение автора поблагодарили: KpecT (1). |
01.09.2009, 08:32 | #5 |
Участник
|
Мне как раз эта мысль пришла в голову, когда я ехал на работу :-) Вчера тупил.
|
|
01.09.2009, 11:25 | #6 |
Участник
|
Сколько ж вас там?
Лучше покажите, как вы именно фильтр применяете на основании inventLocationId. И в каком методе |
|
01.09.2009, 16:48 | #7 |
Участник
|
На форме:
1. Объявляем глобальную переменную в методе ClassDeclaration() 2. В dataSource в методе init() инициализируем поле, по которому собираемся фильтровать. В executeQuery() присваиваем значение глобальной переменной (см. шаг 1) 3. Перекрываем метод modified() у поля InventLocationId, там присваиваем новое значение глобальной переменной и вызываем у dataSource’ов метод executeQuery(). Последний раз редактировалось KpecT; 01.09.2009 в 16:54. |
|
01.09.2009, 20:44 | #8 |
Участник
|
Цитата:
Цитата:
Сообщение от KpecT
На форме:
1. Объявляем глобальную переменную в методе ClassDeclaration() 2. В dataSource в методе init() инициализируем поле, по которому собираемся фильтровать. В executeQuery() присваиваем значение глобальной переменной (см. шаг 1) 3. Перекрываем метод modified() у поля InventLocationId, там присваиваем новое значение глобальной переменной и вызываем у dataSource’ов метод executeQuery(). P.S. Кстати, а что там внутри executeQuery()?
__________________
// no comments Последний раз редактировалось dech; 01.09.2009 в 21:04. |
|
01.09.2009, 21:29 | #9 |
Участник
|
|
|
02.09.2009, 08:27 | #10 |
Участник
|
1.Обычно ComboBox используется в двух ситуациях:
2.В executeQuery() Range'у присваиваем значение глобальной переменной (см. шаг 1). Так что дважды я нигде не присваиваю значение. |
|
02.09.2009, 09:26 | #11 |
Участник
|
В аксапте combobox используется для выбора значения из статического списка, основанного на Base Enum. На основании данных из источника - поле с лукапом. Это не суть важно, но все же combobox и stringedit - два разных объекта.
По каким полям фильтруете?
__________________
// no comments |
|
02.09.2009, 10:07 | #12 |
Участник
|
Проблему решил. Фильтрую по складу.
Появился другой вопрос. Можно ли из метода lookup() вызвать скажем какую-нибудь форму InventLookup ? Последний раз редактировалось KpecT; 02.09.2009 в 10:12. |
|
02.09.2009, 12:16 | #13 |
Участник
|
Конечно, обычный FormRun. Но если нужно только вызывать форму-лукап, то можно указать её в свойстве FromHelp на EDT.
__________________
// no comments |
|
02.09.2009, 13:09 | #14 |
Участник
|
Пример: есть скажем таблица InventDim поле InventLocationId на нем уже есть EDT c FromHelp. Мне нужно на определенной форме перекрыть lookup, другим EDT с FromHelp.
|
|
02.09.2009, 15:08 | #15 |
Участник
|
Не забудьте у контрола MyStringEdit поставить AutoDeclaration в Yes:
X++: MyStringEdit.extendedDataType(extendedtypenum(SalesId));
__________________
// no comments |
|