Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 703

/ вопрос открыт /

Здравствуйте, эксперты! В качестве БД использую MS Access, связь через ADODataSet. Проблема в фильтрации записей через свойство набора данных Filter по дате по мере её ввода в строку редактирования типа TEdit. При этом с SQL-запросом проблем нет, например, строка: ADODataSet.CommandText := 'SELECT * FROM Control WHERE DocDate LIKE '''+Edit1.Text+'%''' работает прекрасно. Ввел в Edit1, например, цифру "2" и отобрались все записи с днем "2", добавил "1" - получил на выходе записи с датой, где день "21". Подскажите, как реализовать подобный последовательный отбор по дате через свойство датасета Filter

olezek Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: olezek (статус: Посетитель)
Вопрос отправлен: 5 ноября 2010, 17:20
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 17 ноября 2010, 21:00; участников в обсуждении: 2.
Vic

Vic (статус: 1-ый класс), 8 ноября 2010, 10:32 [#1]:

фильтры в ADO работают плохо!
но Delphi позволяет расширить возможности фильтрации.
У компонента ADODataSet есть такое событие OnFilterRecord
Оно вызывается при включенной фильтрации и когда надо выяснить
соответствует ли строка фильтру
для этого события можно написать следующее
Accept :=false;
if copy(ADODataSet1//здесь имя поля по которому надо фильтровать.asString,1,Length(Edit1.Text)) = FindEdit1.Text then
Accept:=true;

здесь функция copy возвращает из строки (первый параметр) символы в количестве (третий параметр)

Еще обратите внимание на ковычки в строке фильтра
BurcevD

BurcevD (статус: Посетитель), 17 ноября 2010, 21:00 [#2]:

ну можно попробовать CAST() использовать
например
ADODataSet.CommandText :='SELECT * FROM Control WHERE CAST(DocDate as varchar(15)) like '#39+Text1.Text+#39;

Точно не уверен но на MS SQL работает

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.03 сек.