24.01.2005, 12:19 | #1 |
Moderator
|
Объединение источников данных
Добрый день!
Мне надо фильтровать по полю (Название номенклатуры) из формы В наличии (InventSum + InventDim). Display - метод не устраивает -- нет стандартной сортировки. Добавляю datasource InventTable, в таблице InventTable делаю relation по ItemId связь с InventSum. Вывожу поле ItemName (из InventTable) на грид, у datasource InventTable делаю JoinSource InventSum, тип связи -- InnerJoin. Что не так? Почему не видно itemName? При смене типа связи -- itemName появляется и исчезает. Думаю дело в обновлении datasource.. |
|
24.01.2005, 12:34 | #2 |
Участник
|
Дело в том что в датасоурсе InventSum включен режим группировки данных.
Включите его и у вашего ItemTable (orderMode = Group By) и добавьте в sort filed поле ItemName. |
|
24.01.2005, 12:39 | #3 |
Участник
|
поиском что ли, пройдитесь по форуму...
НЕ БУДЕТ СОРТИРОВКИ ПО НАЗВАНИЮ в ЭТОЙ ФОРМЕ, НИКОГДА... ФИЛЬТР МОЖНО СДЕЛАТЬ... (без переписывания всей формы целиком) |
|
24.01.2005, 12:41 | #4 |
Administrator
|
добавлю: ... но фильтрацию можно сделать.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
24.01.2005, 12:43 | #5 |
Moderator
|
Цитата:
Изначально опубликовано Maxim Gorbunov
добавлю: ... но фильтрацию можно сделать. |
|
24.01.2005, 12:54 | #6 |
Administrator
|
Добавьте DataSource InventTable. Сделайте в нем группировку по ItemName.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
24.01.2005, 13:09 | #7 |
Участник
|
Если сильно надо, можете скопировать эту форму и в новом варианте сделать InventTable мастер-датасоурсом для InventSum, потому что в Аксапте действительно сортировка в мастер-датасоурсах производится в первую очередь, а в подчинённых уже после них и только после них. По крайней мере в режиме order mode = Group By это так. Но как следует из вышесказанного, в этой новой форме нельзя будет сортировать ни по чему, кроме какого нибудь поля из InventTable
|
|
24.01.2005, 13:42 | #8 |
Участник
|
если сделать InventTable первым датасорсом, прийдется еще поковырять в классе
InventDimCtrl_Frm_OnHand modifyQuery... как? - я не знаю, не сильные мы программисты, даже и не программисты вовсе |
|
24.01.2005, 14:26 | #9 |
Участник
|
Цитата:
Изначально опубликовано linney
если сделать InventTable первым датасорсом, прийдется еще поковырять в классе InventDimCtrl_Frm_OnHand modifyQuery... как? - я не знаю, не сильные мы программисты, даже и не программисты вовсе Самому такие опыты повторять времени нет, поэтому не исключаю возможности существования каких либо еще граблей. |
|
24.01.2005, 15:37 | #10 |
Участник
|
у меня есть - я пробывал.
сортировка все равно не работает и глючит все. форма-то работат по группировкам из InventSum... |
|
25.01.2005, 14:03 | #11 |
Участник
|
Я тоже попробовал.
Удивился результату. Дело не в том о чём вы говорите. Кажется форма запоминает последний query, отсюда все проблемы. |
|
07.07.2005, 13:55 | #12 |
Moderator
|
Цитата:
Изначально опубликовано Maxim Gorbunov
Добавьте DataSource InventTable. Сделайте в нем группировку по ItemName. PHP код:
Подозреваю что дело в алгоритме класса InventDimCtrl_Frm_OnHand. Что еще надо дописать чтобы появилось наименование номенклатуры? |
|
07.07.2005, 14:56 | #13 |
Участник
|
Надо бы еще группировать по ItemId вроде - бо это связующее поле. Попробуйте так.
А вообще, это лучше в классе делать по-моему |
|
07.07.2005, 15:04 | #14 |
Участник
|
я добавил в инвентсум поле itemname (заполняется при инсерте) и добился желаемого.
Ну не хотелось пол аксапты переписывать. ЗЫ только в ответ не кидайтесь камнями в виде умных слов про нормализацию и прочую "правильность" |
|
07.07.2005, 15:28 | #15 |
Moderator
|
Но даже добавив наименование номенклатуры itemName в InventSum просто так наименования на форме не отобразились! Хотя в таблице они есть..
Продолжу ковырять InventDimCtrl_Frm_OnHand... |
|
07.07.2005, 15:37 | #16 |
Moderator
|
В методе modifyQuery
PHP код:
|
|
07.07.2005, 15:38 | #17 |
Участник
|
Понятно что не отобразились. по ним же нет группировки.
Нужно добавить строку в классе в методе modifyQuery: qBSSum.orderMode(OrderMode::GROUPBY); qBSSum.addSortField(fieldnum(InventSum,itemId)); qBSSum.addSortField(fieldnum(InventSum,ItemName)); ЗЫ. О, уже опередил сам меня. |
|
07.07.2005, 15:40 | #18 |
Moderator
|
Спасибо!
|
|
03.08.2005, 10:51 | #19 |
Moderator
|
Цитата:
Изначально опубликовано linney
я добавил в инвентсум поле itemname (заполняется при инсерте) и добился желаемого. " Столкнулся с загадочным исчезновением наименования при таком раскладе. |
|
03.08.2005, 13:35 | #20 |
злыдень
|
Не мучь себя и пользователей..
Навскидку: 1. Сделай вью по инвентсам (не в акзапте, в субд), переливай в акцесс через дтс по ночам, выложи файл на сервер, дай доступ 2. Построй куб по вью, если нужно оперативно - сделай модель РОЛАП. Название товара вытащи в свойства 3. Подключи субд-шное вью к акзапте, выведи меню итем Отчеты в акзапте - это зло |
|