07.12.2019, 06:53 [+3 UTC]
в нашей команде: 4 039 чел. | участники онлайн: 5 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.78 (18.11.2019)
JS-v.1.34 | CSS-v.3.35

Общие новости:
28.04.2019, 09:13

Форум:
29.11.2019, 17:59

Последний вопрос:
07.12.2019, 03:46
Всего: 151182

Последний ответ:
05.12.2019, 15:20
Всего: 259536

Последняя рассылка:
06.12.2019, 16:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
09.02.2019, 13:24 »
dar777
Это самое лучшее решение! [вопрос № 194580, ответ № 277415]
29.08.2019, 09:48 »
dar777
Это самое лучшее решение! [вопрос № 196215, ответ № 278603]

РАЗДЕЛ • Pascal / Delphi / Lazarus

Создание программ на языках Pascal, Delphi и Lazarus.

[администратор рассылки: Зенченко Константин Николаевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 701
puporev
Статус: Профессионал
Рейтинг: 488
Gluck
Статус: 9-й класс
Рейтинг: 449

Перейти к консультации №:
 

Консультация онлайн # 188620
Раздел: • Pascal / Delphi / Lazarus
Автор вопроса: arujan.nurlankul23 (Посетитель)
Отправлена: 09.01.2016, 09:26
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:
у меня в программе есть радиогрупп. И через него осуществляется фильтрация.
procedure TForm5.SpeedButton5Click(Sender: TObject);
begin
case RadioGroup2.ItemIndex of
0: datamodule24.posmotr.Filter := 'ФИО';
1: datamodule24.posmotr.Filter := 'ИИН';
2: datamodule24.posmotr.Filter := 'тЕЛЕФОН';
3: datamodule24.posmotr.Filter := 'Адрес';

Но при введении значении в едит там фильтрация не осуществляется. Там нужно точь в точь указать ФИо или ИИН. А мне нужно чтобы при введении любых значении в едит соответствующий выбранной категории в радиогруп только отфильтрованныеданные отображались в таблице. Можно и без баттона обойтись.
Спасибо

Состояние: Консультация закрыта

Ответ # 273209 от Евгений/Genia007/ (Профессионал)

Здравствуйте, arujan.nurlankul23!
Предлагаю такой способ, при помощи запроса, по мере введения очередного символа будет сокращаться список значений поиска. В событие edit пишем:

procedure TForm1.Edit1Change(Sender: TObject);
var id: string;
begin
 case RadioGroup2.ItemIndex of  // где id будет строка с названием поля по которому идёт поиск
  0: id := 'ФИО';
  1: id := 'ИИН';
  2: id := 'тЕЛЕФОН';
  3: id := 'Адрес';
 end;
 ADOQuery2.Close; // Закрыть запрос
 ADOQuery2.SQL.Clear; // Отчистить запрос
 ADOQuery2.SQL.Add('select DISTINCT '+id+' from table_name'); // 'table_name' название нужной таблицы
 ADOQuery2.SQL.Add(' where '+id+'>=par and '+id+' like '''+edit1.Text+'%''ORDER  BY '+id+'');  // Добавление новых значений в запрос 
 ADOQuery2.Parameters.Clear;
 ADOQuery2.parameters.addParameter.name:='par';
 ADOQuery2.Parameters.ParamByName('par').DataType:= ftString;
 ADOQuery2.Parameters.ParamByName('par').Attributes:= [paNullable];
 ADOQuery2.Parameters.ParamByName('par').Value:= edit1.Text;  //  как раз вводимое значение в поле edit
 ADOQuery2.Open; // Открыть запрос
end;


Консультировал: Евгений/Genia007/ (Профессионал)
Дата отправки: 09.01.2016, 12:51

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 188620
arujan.nurlankul23
Посетитель

ID: 399390

# 1

= общий = | 09.01.2016, 09:28 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

smile smile smile smile smile smile smile smile smile

Евгений/Genia007/
Профессионал

ID: 153662

# 2

= общий = | 09.01.2016, 10:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
arujan.nurlankul23:

Здравствуйте. Можно при помощи запроса сделать поиск по введённым буквам, причём с каждой новой буквой список будет уменьшаться.

ADOQuery2.Close; // Закрыть запрос 
ADOQuery2.SQL.Clear; // Отчистить запрос
ADOQuery2.SQL.Add('select DISTINCT seans from zur ');  // 'seans' название нужного поля по которому идёт поиск, 'zur' название нужной таблицы
ADOQuery2.SQL.Add('where seans>=sen and seans like '''+c+'%''ORDER  BY seans');  // Добавление новых значений в запрос
ADOQuery2.Parameters.ParamByName('sen').Value:= c;  // 'с' как раз вводимое значение в поле edit 
ADOQuery2.Open; // Открыть запрос

-----
Последнее редактирование 09.01.2016, 10:27 Евгений/Genia007/ (Профессионал)

=====
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

arujan.nurlankul23
Посетитель

ID: 399390

# 3

= общий = | 09.01.2016, 10:36 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

а с радиогрупп
у меня там разные параметры
например кто-то может делать поиск с помощью фио
а кто-то иин
smile

Евгений/Genia007/
Профессионал

ID: 153662

# 4

= общий = | 09.01.2016, 10:43 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
arujan.nurlankul23:

А что прячется в datamodule24.posmotr.Filter под posmotr? А в радиогруп выбираем

case RadioGroup2.ItemIndex of
0: seans := 'ФИО';
1: seans := 'ИИН';
2: seans := 'тЕЛЕФОН';
3: seans := 'Адрес';
то есть по радиогрупп выбираем название поля по которому будем искать, ну и строку
ADOQuery2.SQL.Add('select DISTINCT seans from zur ');  // 'seans' название нужного поля по которому идёт поиск, 'zur' название нужной таблицы
ADOQuery2.SQL.Add('where seans>=sen and seans like '''+c+'%''ORDER  BY seans');  // Добавление новых значений в запрос
изменить на
ADOQuery2.SQL.Add('select DISTINCT '+seans+' from zur ');  // 'seans' название нужного поля по которому идёт поиск, 'zur' название нужной таблицы
ADOQuery2.SQL.Add('where '+seans+'>=sen and seans like '''+c+'%''ORDER  BY '+seans+'');  // Добавление новых значений в запрос

-----
Последнее редактирование 09.01.2016, 12:22 Евгений/Genia007/ (Профессионал)

=====
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

arujan.nurlankul23
Посетитель

ID: 399390

# 5

= общий = | 09.01.2016, 10:45 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

а куда этот код писать в событие едит или баттон

arujan.nurlankul23
Посетитель

ID: 399390

# 6

= общий = | 09.01.2016, 10:46 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

seans это что

Евгений/Genia007/
Профессионал

ID: 153662

# 7

= общий = | 09.01.2016, 10:54 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: arujan.nurlankul23
а куда этот код писать в событие едит или баттон
   case RadioGroup2.ItemIndex of
    0: seans := 'ФИО';
    1: seans := 'ИИН';
    2: seans := 'тЕЛЕФОН';
    3: seans := 'Адрес';
пишем в баттон, а остальное в едит, seans это переменная типа строка.

=====
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

arujan.nurlankul23
Посетитель

ID: 399390

# 8

= общий = | 09.01.2016, 11:00 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

СПАСИБО

Евгений/Genia007/
Профессионал

ID: 153662

# 9

= общий = | 09.01.2016, 11:05 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
arujan.nurlankul23:

можно оформлять ответом?

=====
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

arujan.nurlankul23
Посетитель

ID: 399390

# 10

= общий = | 09.01.2016, 11:06 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

ну там про seans and zur немного не понятно

Евгений/Genia007/
Профессионал

ID: 153662

# 11

= общий = | 09.01.2016, 11:18 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

© Цитата: arujan.nurlankul23
ну там про seans and zur немного не понятно
seans здесь переменная типа строка указывает на поле поиска в таблице, а zur название Вашей таблицы для поиска, это код из работающем программы.

=====
Мои программы со статусом freeware для Windows на моём сайте jonix.ucoz.ru

arujan.nurlankul23
Посетитель

ID: 399390

# 12

= общий = | 09.01.2016, 11:25 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

можно оформлять ответом?
да

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14444 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.78 от 18.11.2019
Версия JS: 1.34 | Версия CSS: 3.35