Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2010, 19:31   #1
R11
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 61
По умолчанию

есть БД(ADO) на одном из столбцов стоит фильтр, к примеру на столбце Фамилия, и если попытаться найти по фильтру фамилию "Иванов", то как только полностью в строку поиска вбиваешь её, Иванов, то эта фамилия пропадает из грида
Не мог понять в чем дело, открыл книжку Фленова, у его примера таже ерунда....
в чем подвох?

Delphi 7. если имеет значение
Вложения
Тип файла: rar Filter.rar (445.1 Кб, 7 просмотров)

Последний раз редактировалось Stilet; 17.03.2010 в 10:14.
R11 вне форума Ответить с цитированием
Старый 17.03.2010, 00:48   #2
Xatr
Форумчанин
 
Аватар для Xatr
 
Регистрация: 17.09.2008
Сообщений: 349
По умолчанию

Цитата:
как только полностью в строку поиска вбиваешь её, Иванов, то эта фамилия пропадает из грида
Ну да . Если нужно найти только по фамилии "Иванов", то эту строку
Код:
DataModule1.BookTable.Filter:='Фамилия>'''+FindEdit.Text+'''';
нужно заменить на эту:
Код:
DataModule1.BookTable.Filter:='Фамилия='''+FindEdit.Text+'''';
если чем помог, поставьте отзыв на весы
Xatr вне форума Ответить с цитированием
Старый 17.03.2010, 08:52   #3
R11
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 61
По умолчанию

Цитата:
Сообщение от Xatr Посмотреть сообщение
Ну да . Если нужно найти только по фамилии "Иванов", то эту строку
Код:
DataModule1.BookTable.Filter:='Фамилия>'''+FindEdit.Text+'''';
нужно заменить на эту:
Код:
DataModule1.BookTable.Filter:='Фамилия='''+FindEdit.Text+'''';
Если ставить "=" то вообще все записи пропадают при введений первой буквы....
R11 вне форума Ответить с цитированием
Старый 17.03.2010, 08:59   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

DataModule1.BookTable.Filter:='Фами лия LIKE '''+FindEdit.Text+'%''';
% означает что на этом месте может быть любой набор символов(может использоваться неоднократно

Иванов% А%
получим
Иванов Александр
Иванова Анна
Иванович Антон
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 17.03.2010 в 09:03.
evg_m вне форума Ответить с цитированием
Старый 17.03.2010, 09:12   #5
R11
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 61
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
DataModule1.BookTable.Filter:='Фами лия LIKE '''+FindEdit.Text+'%''';
% означает что на этом месте может быть любой набор символов(может использоваться неоднократно

Иванов% А%
получим
Иванов Александр
Иванова Анна
Иванович Антон
Выдает "Аргументы имееют неверный тип выходят за пределы .....
R11 вне форума Ответить с цитированием
Старый 17.03.2010, 10:12   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Фами лия LIKE
а не забыли ли вы убрать пробелы в подчеркнутом
проверьте filter в результате должен выглядить так
Код:
Фамилия LIKE 'Иванов% А%'
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 17.03.2010, 18:45   #7
R11
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 61
По умолчанию

Нет пробелы не поставил!
во вложении вариант Фленова с вашей строкой фильтр, не работает
Вложения
Тип файла: rar Filter.rar (448.7 Кб, 10 просмотров)
R11 вне форума Ответить с цитированием
Старый 17.03.2010, 19:54   #8
Xatr
Форумчанин
 
Аватар для Xatr
 
Регистрация: 17.09.2008
Сообщений: 349
По умолчанию

Есть один проверенный мною способ, вроде работает как нужно. Это сделано через ADOQuery.
Если что не понятно, объясню.
Я это делал в Delphi 7 если что...
Вложения
Тип файла: rar Filter.rar (59.2 Кб, 20 просмотров)
если чем помог, поставьте отзыв на весы
Xatr вне форума Ответить с цитированием
Старый 18.03.2010, 00:25   #9
R11
Пользователь
 
Регистрация: 06.01.2008
Сообщений: 61
По умолчанию

sql запрос у Query объясните (момент И%) ?!

select * from Справочник where [Справочник.Фамилия] like 'И%'

и зачем он, практически дублируется, в теле программы ?!

DataModule1.ADOQuery1.SQL.Text:='se lect * from Справочник where [Cправочник.Фамилия] like '''+FindEdit.Text+'%''';
R11 вне форума Ответить с цитированием
Старый 18.03.2010, 02:43   #10
Xatr
Форумчанин
 
Аватар для Xatr
 
Регистрация: 17.09.2008
Сообщений: 349
По умолчанию

Что такое % в 4 посте уже объяснили.
Like - это "содержит"
А дублируется потому, что каждый раз при вводе новой буквы в Edit, нужно обновлять запрос, чтобы сразу показывались результаты поиска.
если чем помог, поставьте отзыв на весы
Xatr вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание фильтра Apostolx БД в Delphi 0 15.10.2009 10:12
Настройка фильтра в Экселе 2003 andrewvd Microsoft Office Excel 11 21.08.2009 12:12
Значения фильтра... nikolai_P Microsoft Office Excel 1 25.02.2009 14:49
Грмотная настройка фильтра в компоненте Table Avalonix БД в Delphi 18 24.05.2008 12:27
Опции фильтра в ADOTable alain БД в Delphi 0 02.05.2008 22:17