Варианты реализации запросов с шаблонами.
Добавлено: 20 ноя 2006, 12:52
Здравствуйте. Помогите советом новичку.
Есть база с данными по материальным ценностям. Требуется реализовать удобный фильтр по различным критериям. Из-за не имения опыта выбрал связку IBDataSet->DataSourc->DBGrid. В этом случае я увидел 2 варианта реализации запросов по шаблону:
Вариант 1. Запрос у сервера. Использовать в запросе конструкцию "Select ... Where Field LIKE '%xxx1%' [AND Field LIKE '%xxx2%']". Работает замечательно, кроме одного "но" - запрос однозначно указывает на регистр запрашиваемой строчки 'xxx'.
Вариант 2. Локальная фильтрация. Из полностью запрошенной базы показываются только те записи, которые удовлетворяют условию. Констуируем условие с потерей зависимости от регистра, типа -
Вхождение(ВерхнРегистр(строка_запроса), ВерхнРегистр(очередная_запись)). Но этот вариант не устраивает тем, что при пробегании по отфильтрованным записям, бегунок полосы прокрутки соответсвует положению записи относительно всей базы (с невидимыми записями), и перемещается не равномерно.
Ни с первым, ни со вторым вариантом соглашаться не хочется. Посоветйте, пожалуйста, какие есть еще варианты. И много ли нужно будет переделывать?. Спасибо.
PS: Слышал, что для плавной прокрутки отфильтрованной части можно поиграться с индексами. Но пока не представляю этого.
Есть база с данными по материальным ценностям. Требуется реализовать удобный фильтр по различным критериям. Из-за не имения опыта выбрал связку IBDataSet->DataSourc->DBGrid. В этом случае я увидел 2 варианта реализации запросов по шаблону:
Вариант 1. Запрос у сервера. Использовать в запросе конструкцию "Select ... Where Field LIKE '%xxx1%' [AND Field LIKE '%xxx2%']". Работает замечательно, кроме одного "но" - запрос однозначно указывает на регистр запрашиваемой строчки 'xxx'.
Вариант 2. Локальная фильтрация. Из полностью запрошенной базы показываются только те записи, которые удовлетворяют условию. Констуируем условие с потерей зависимости от регистра, типа -
Вхождение(ВерхнРегистр(строка_запроса), ВерхнРегистр(очередная_запись)). Но этот вариант не устраивает тем, что при пробегании по отфильтрованным записям, бегунок полосы прокрутки соответсвует положению записи относительно всей базы (с невидимыми записями), и перемещается не равномерно.
Ни с первым, ни со вторым вариантом соглашаться не хочется. Посоветйте, пожалуйста, какие есть еще варианты. И много ли нужно будет переделывать?. Спасибо.
PS: Слышал, что для плавной прокрутки отфильтрованной части можно поиграться с индексами. Но пока не представляю этого.