|
Вопрос # 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 (статус: Посетитель)
Вопрос отправлен: 5 ноября 2010, 17:20
Состояние вопроса: открыт, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 2; последнее сообщение — 17 ноября 2010, 21:00; участников в обсуждении: 2.
|
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 (статус: Посетитель), 17 ноября 2010, 21:00 [#2]:
ну можно попробовать CAST() использовать
например
ADODataSet.CommandText :='SELECT * FROM Control WHERE CAST(DocDate as varchar(15)) like '#39+Text1.Text+#39;
Точно не уверен но на MS SQL работает
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|