Показать сообщение отдельно
Старый 26.05.2004, 08:50   #4  
Vpooh is offline
Vpooh
Участник
 
17 / 10 (1) +
Регистрация: 26.09.2003
Очистить фильтр по ShopInventItems не даёт результата, так как есть товары, не привязанные ни к одному формату (в ShopInventItems их просто нет, а видеть их надо).
На человеческом языке задача звучит так. Есть список товаров (InventTable), каждый товар привязан к категориям магазинов "Супермаркет","Универсам", "Дискаунтер" (ShopInventItems) или не привязан никуда (важный момент). Я хотел-бы предоставить пользователю возможность фильтровать список товаров по этим трём категориям (выбором из выпадающего списка), а также чтобы можно было выбрать пункт "Все форматы"(там будут видны также товары, не привязанные ни к одной категории магазинов).

То есть при выборе одной из трёх категорий магазинов результирующий набор должен быть - InventTable inner join ShopInventItems с фильтром, наложенным на ShopInventItems по данной категории.
При выборе пункта "Все форматы" результат - это просто InventTable.

Проблема в том, что не удаётся на лету манипулировать свойством LinkType источника данных.
В дизайне источник ShopInventItems связан с InventTable по InnerJoin. Я пытался разрывать связь между ними с помощью ShopInventItems_ds.linkType(1);
ShopInventItems_ds.joinSource(0); но это не действует.
Пробовал также определить в дизайне связь между ShopInventItems и InventTable как Delayed и в коде менять query у InventTable_ds. Так всё работает, как хотелось, но только если в форме нет других источников данных, связанных с InventTable по InnerJoin.(а они есть) В этом случае выдаёт ошибку на InventTable_ds.executeQuery(), причём ругается по разу на каждый источник данных, связанный с InventTable по InnerJoin: "Неправильный тип аргумента функции"