Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
 Аватар для badkass
0 / 0 / 1
Регистрация: 22.05.2015
Сообщений: 69

Запрос на выборку данных по нескольким полям

29.06.2016, 09:48. Показов 1167. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе утро! Помогите сделать выборку по нескольким полям из БД, например вводим фамилию(или часть фамилии) и через пробел описание, на данный момент выполняется поиск только по одному полю.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.edt1Change(Sender: TObject);
var help1, help2: string;
begin
  if edt1.Text = 'Поиск...' then
    FormCreate(Self)
  else
  begin
   help1 := '%'+ edt1.Text + '%' ;
   help2 := QuotedStr(help1);
   with Form1.ADOQuery1 do
    begin
      close;
      SQL.Clear;
      SQL.Add('SELECT * FROM Документы where [НомДок] like '+help2+' or [ДатаПол] like '+help2+' or [Контрагент] like '+help2+' or [Описание] like '+help2+' or [НомерСост] like '+help2+' or [ВидДок] like '+help2+' or [Координатор] like '+help2+' or [Объект] like '+help2+' or [ГенПлан] like '+help2+' or [ПозОб] like '+help2+' or [СобКом] like '+help2+'');
      Open;
    end;
  end;
end;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.06.2016, 09:48
Ответы с готовыми решениями:

Запрос по нескольким полям
Не получается сделать запрос. Если ADOQuery1.SQL.Add('SELECT*FROM БД where 1=1 '); if edit1.text<>'' ADOQuery1.SQL.Add(' and LIKE ...

Поиск по нескольким полям в Базе Данных
Здаствуйте, хотел бы попросить выложить пример, с поиском по нескольким атрибутам в Базе Данных. Желательно что-бы там был осуществлён...

Запрос на выборку данных
Доброго времени суток.Искал в интернете, да и сам сколько сидел, но так ни к чему и не пришел.Задача такова: таблица Access соединена с...

5
5971 / 4547 / 1094
Регистрация: 29.08.2013
Сообщений: 28,168
Записей в блоге: 3
29.06.2016, 10:01
Цитата Сообщение от badkass Посмотреть сообщение
Помогите сделать выборку по нескольким полям из БД
1 вариант
то что вы вводите вы ищите по всем полям в БД (но это бред)

2 вариант
то что вы вводите вы ищите по определенным полям в БД (это не бред, но тоже довольно глупо)

лучше сделать многоступенчатый фильтр - как в экселе

PS и что у вас за 8 и 9 строка? почему нельзя сразу в запросе писать то что нужно? зачем разбивать на эти шаги?
0
 Аватар для badkass
0 / 0 / 1
Регистрация: 22.05.2015
Сообщений: 69
29.06.2016, 10:15  [ТС]
Цитата Сообщение от qwertehok Посмотреть сообщение
1 вариант
то что вы вводите вы ищите по всем полям в БД (но это бред)
2 вариант
то что вы вводите вы ищите по определенным полям в БД (это не бред, но тоже довольно глупо)
лучше сделать многоступенчатый фильтр - как в экселе
PS и что у вас за 8 и 9 строка? почему нельзя сразу в запросе писать то что нужно? зачем разбивать на эти шаги?
Возможно и бред, но это видение моего заказчика
А строки 8 и 9 сделаны для того, что переменными проще оперировать в запросе.
0
5971 / 4547 / 1094
Регистрация: 29.08.2013
Сообщений: 28,168
Записей в блоге: 3
29.06.2016, 10:19
Цитата Сообщение от badkass Посмотреть сообщение
но это видение моего заказчика
ок, но тогда вы херню пишите
перечислять все поля - что может быть хуже?

PS и что за фигня? у вас обработчик TForm1.edt1Change - зачем же вы пишите Form1.ADOQuery1?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,668
Записей в блоге: 21
29.06.2016, 12:06
бывают такие задания. для CRM при звонке чтобы идентифицировать клиента иногда приходится искать наименования, телефоны, фамилия дирика и т.д.
но тогда
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
ADOQuery1.sql.text:=
  'SELECT * FROM Документы where [НомДок] like '+help2+
  ' or [ДатаПол] like '+help2+
  ' or [Контрагент] like '+help2+
  ' or [Описание] like '+help2+
  ' or [НомерСост] like '+help2+
  ' or [ВидДок] like '+help2+
  ' or [Координатор] like '+help2+
  ' or [Объект] like '+help2+
  ' or [ГенПлан] like '+help2+
  ' or [ПозОб] like '+help2+
  ' or [СобКом] like '+help2;
ADOQuery1.Open;
и это все должно работать
0
5971 / 4547 / 1094
Регистрация: 29.08.2013
Сообщений: 28,168
Записей в блоге: 3
29.06.2016, 12:12
и все равно делается не так

SQL
1
SELECT id, s FROM (SELECT id, поле1 поле2 .. AS S FROM t) WHERE s LIKE XXX
и когда что-то находим пользователю показываем не нашу склеенную строку, а по ID вытягиваем реальные данные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.06.2016, 12:12
Помогаю со студенческими работами здесь

Запрос на выборку данных
"из таблицы Виды работ вывести все данные о конкретной работе (например, о работе Пошив костюма)." Объясните пожалуйста как примерно...

Поиск по нескольким полям
авм Добавлено через 6 минут Если не ввести временной интервал отказывается искать в БД Кто поможет разобраться? вот код : ...

Поиск по нескольким полям
Всем привет! Подскажите пожалуйста, как организовать поиск по нескольким полям. Причем может вводится 1-ое значение , а второе например...

Поиск по нескольким полям
что то я делаю не так... если делаю так: ADOQuery1.SQL.Clear; AdoQuery1.Sql.Add('SELECT * FROM База WHERE Наименование LIKE :nam or...

Фильтр по нескольким полям
Привет всем. Использую OracleDataSet - Zayavka. Пишу "последовательный" фильтр, (когда-то был такой вопрос, но на Acces, и там работало...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru