Доброго времени суток уважаемые. Поздравляю Вас с профессиональным праздником.
Разрабатываю универсальный фильтр для извлечения необходимых данных в таблицу из базы данных. Назовем “Таблица1”. Интерфейс делаю в виде таблицы с полями:
1) Поле в таблице;
2) Условие поиска;
3) Текст поиска1;
4) Текст поиска2;
5) Совпадение.
Назовем “Таблица2”.
1) Столбец “Поле в таблице” таблицы2 содержит список всех заголовков полей из таблицы1, где и осуществляется поиск.
2) Столбец “ Условие поиска ” таблицы2 содержит возможную логику поиска (выбираемую пользователем из комбобокса), в зависимости от типа данных столбца таблицы1:
"равно" (для всех типов данных);
"не равно" (для всех типов данных);
"между" (для типов данных – числового, даты);
"больше" (для типов данных – числового, даты);
"больше или равно" (для типов данных – числового, даты);
"меньше" (для типов данных – числового, даты);
"меньше или равно" (для типов данных – числового, даты);
"начинается с" (для типов данных – текст);
"заканчивается на" (для типов данных – текст);
"включает" (для типов данных – текст);
"пустые" (для всех типов данных);
"не пустые" (для всех типов данных).
3, 4) В ячейки столбцов "Текст поиска1” и "Текст поиска2” пользователь вводит данные, которые нужно найти, в зависимости от типа данных и условия поиска.
5) Столбец “Совпадение” содержит условия отбора:
“искать это И это”;
“искать это ИЛИ это”.
В аттаче прикреплен пример с фильтром. Чтобы не перегружать пример, в нем нет “Таблицы1”, с данными из БД, а только форма с фильтром.
1) Столбец “Поле в таблице” фильтра содержит 15 вероятных названий полей таблицы1:
"Заголовок" & i & " таблицы 1", где i от 1 до 15.
2) В столбце “Условие поиска” везде по умолчанию написано "равно".
А теперь вопрос:
Как можно ограничить пользователю ввод данных? Т.е. по сути поместить в ячейки столбцов “Условие поиска” и “Совпадение” таблицы2 комбобоксы с нужными значениями. А также в ячейки столбцов “Текст поиска1” и “Текст поиска2” поместить другие компоненты, в зависимости от типа искомых данных в Таблице1 (компонент для ввода чисел, даты и т.п.).
Таблица2 заполняется через “отвязный” DftaSet.
P.S. Буду признателен также за возможные альтернативные варианты интерфейса.