Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
332 / 85 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1

Быстрый поиск по выбранному полю

10.12.2012, 13:01. Показов 1513. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
procedure TfmMenu.sEdit8Change(Sender: TObject);
var str, s: string;
    v: byte;
    i: char;
    b: bool;
begin
 s:=sEdit8.Text;
 if sEdit8.Text='Ñòðîêà ïîèñêà' then
  exit;
 str:='';
 b:=true;
 for i:='A' to 'я' do
  if pos(i, s)> 0 then
   b:=false;
 s:=QuotedStr(s);
 v:=SearchCombo.ItemIndex;
 
 case v of
  0:  if b then
        str:='N_receipt='+s;
  1: str:='FIO>'+s;
  2: if b then
        str:='Cont_Cl='+s;
  3: str:='Admission>'+s;
  4: str:='Device>'+s;
  5: str:='Manufacturer>'+s;
  6: str:='Model>'+s;
  7: str:='State>'+s;
  8: str:='Set_Device>'+s;
  9: str:='Fault>'+s;
  10: str:='ExecWork>'+s;
  11: str:='FIO_Master>'+s;
  12: str:='State>'+s;
  13: str:='Serial>'+s;
  14: str:='Date_in>'+s;
 
  end;
 
 if length(sEdit8.Text)=0 then
  str:='';
 fmMain.ADOTableReceipt.Filter:=str;
 if length(s)>0 then
  fmMain.ADOTableReceipt.Filtered:=true
 else fmMain.ADOTableReceipt.Filtered:=false;
end;
так вот, работает не совсем корректно. то есть например ищу "Иванов", при вводе "Ивано" выводит результат хорошо. Но при вводе "Иванов" не показывает. когда меняю условие в строке фильтра на >= то уже выводит не только "Ивановых" но и других... Как вообще можно сделать такой поиск более правильным и надежным?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2012, 13:01
Ответы с готовыми решениями:

Сортировка по выбранному полю
Здравствуйте Мне нужно что бы при нажатии на название поля(колонки) проходила сортировка по этому полю. Не только числа, но и имена,...

Сделать поиск по выбранному полю в таблице
Столкнулся с такой вот задачей, хочу сделать поиск по выбранному полю в таблице, выбираем в комбобоксе нужное поле таблицы, а во втором...

Отчет по выбранному полю в таблице
Добрый день! Подскажите,пожалуйста, как вывести отчет только по определенным данным из таблицы. А то при отображении отчета...

6
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
10.12.2012, 16:57
Цитата Сообщение от xNeKiToSx Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
procedure TfmMenu.sEdit8Change(Sender: TObject);
var str, s: string;
    v: byte;
    i: char;
    b: bool;
begin
 s:=sEdit8.Text;
 if sEdit8.Text='Ñòðîêà ïîèñêà' then
  exit;
 str:='';
 b:=true;
 for i:='A' to 'я' do
  if pos(i, s)> 0 then
   b:=false;
 s:=QuotedStr(s);
 v:=SearchCombo.ItemIndex;
 
 case v of
  0:  if b then
        str:='N_receipt='+s;
  1: str:='FIO>'+s;
  2: if b then
        str:='Cont_Cl='+s;
  3: str:='Admission>'+s;
  4: str:='Device>'+s;
  5: str:='Manufacturer>'+s;
  6: str:='Model>'+s;
  7: str:='State>'+s;
  8: str:='Set_Device>'+s;
  9: str:='Fault>'+s;
  10: str:='ExecWork>'+s;
  11: str:='FIO_Master>'+s;
  12: str:='State>'+s;
  13: str:='Serial>'+s;
  14: str:='Date_in>'+s;
 
  end;
 
 if length(sEdit8.Text)=0 then
  str:='';
 fmMain.ADOTableReceipt.Filter:=str;
 if length(s)>0 then
  fmMain.ADOTableReceipt.Filtered:=true
 else fmMain.ADOTableReceipt.Filtered:=false;
end;
так вот, работает не совсем корректно. то есть например ищу "Иванов", при вводе "Ивано" выводит результат хорошо. Но при вводе "Иванов" не показывает. когда меняю условие в строке фильтра на >= то уже выводит не только "Ивановых" но и других... Как вообще можно сделать такой поиск более правильным и надежным?
Быстрый поиск = Учитесь язык SQL. Вам надо писать SQL Запрос. почитайте на это форуме здесь ADOQuery не выполняет запрос SQL
1
332 / 85 / 16
Регистрация: 10.01.2011
Сообщений: 516
Записей в блоге: 1
10.12.2012, 20:50  [ТС]
Не подскажете книгу-справочник по SQL запросам? ну или ссылочкой )

Добавлено через 11 минут
ЛАдно это найду, разберусь, выучу. SQL тоже чувствителен к типу полей? Придется делать почти то же самое что и в коде выше(проверять тип поля)? Только все это дело заработает быстрее?
0
 Аватар для HyperZen
498 / 251 / 56
Регистрация: 16.06.2011
Сообщений: 904
10.12.2012, 21:12
Вот простой пример поиска по двум полям БД, где первое - пустое, либо второе чем-то заполнено, поиск осуществляется введенного в поле EditSearch текста:
Delphi
1
2
ADOQuery1.SQL.Text:= 'SELECT * FROM MyFirstTable WHERE ((MyFirstTable.MyFirstField IS NULL) OR (MyFirstTable.MySecondField LIKE "%' + EditSearch.Text + '%"))');
ADOQuery1.Open;
1
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
11.12.2012, 00:03
Цитата Сообщение от xNeKiToSx Посмотреть сообщение
Не подскажете книгу-справочник по SQL запросам? ну или ссылочкой )

Добавлено через 11 минут
ЛАдно это найду, разберусь, выучу. SQL тоже чувствителен к типу полей? Придется делать почти то же самое что и в коде выше(проверять тип поля)? Только все это дело заработает быстрее?
Пожалуйста для начало луче не найдете
Вложения
Тип файла: rar Грабер М. Введение в SQL.rar (585.5 Кб, 8 просмотров)
1
Эксперт Pascal/Delphi
 Аватар для droider
4888 / 2822 / 865
Регистрация: 04.10.2012
Сообщений: 10,264
11.12.2012, 09:54
А Locale поиск использовать не судьба? Он позволяет выполнять поиск не только при полном, но и частичном совпадении.
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
11.12.2012, 10:47
Цитата Сообщение от droider Посмотреть сообщение
А Locale поиск использовать не судьба? Он позволяет выполнять поиск не только при полном, но и частичном совпадении.
1. Во первых надо смотреть внутренний нормализация

2. Locale можно да , Но если уже будим говорит Быстрый поиск как SQL Запрос таком скорости не будить работать, вообще если работаешь базами данных лучи выбрать ADOQuery и писать SQL Запрос что программа работал максимальный скорости и для пользователь было приятно работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.12.2012, 10:47
Помогаю со студенческими работами здесь

Сортировка по выбранному полю DbGrid
У меня есть 3 Radiobutton. Подскажите, как сделать сортировку по выбранному одному из полей.

Сортировка массива структур по выбранному полю с помощью алгоритма std::sort
Не знаю, как правильно передать функцию сравнения в std::sort. Кроме того в моей структуре есть поля одного типа, мне кажется будет...

Поиск в бд по выбранному значению в Combobox
Доброго времени суток! Помогите,пожалуйста,сделать поиск в программе по бд Имеется бд сделанная в access; DBGrid на форме,на котором...

Поиск пользователя по выбранному критерию
мне нужно сделать так! у меня есть выпадающий список, textbox, кнопка Если пользователь выбирает например, по фамилии (при этом в теле...

Быстрый поиск
Может подскажите еще по одному вопросу. Хочу реализовать поиск по первым введенным буквам фамилии. На форме есть StringGrid, в который...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru