Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
2 / 2 / 3
Регистрация: 17.11.2015
Сообщений: 395

Поиск в LookUp

24.05.2017, 09:31. Показов 5647. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть созданное поле LookUp, нужно сделать поиск по этому полю, не получается.

делаю через ADOQuery

Delphi
1
2
3
4
5
6
7
8
9
10
11
Var help1,help2:string;
begin
help1:='%'+Unit1.Form_glav.Edit1.Text+'%';
help2:=QuotedStr(help1);
with DM.tblobr do
begin
Close;
SQL.Clear;
SQL.Text := 'select * from Оборудование where Название like' + help2;
Open;
end;
Здесь выдает ошибку скорее всего из-за того что поля "Название" нет в таблице. Как можно осуществить поиск?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.05.2017, 09:31
Ответы с готовыми решениями:

Поиск при помощи метода Lookup
Привет. Есть база, в ней необходимо реализовать поиск по Lookup. (Locate уже использовал).

Динамический поиск (фильтрация) по Lookup-полям
Здравствуйте. БД в Paradox 7.0, для доступа используются Query. Есть главная таблица и много справочников, связанных с ней. Приведу на...

Как осуществить поиск по lookup полю
Всем привет! Не могу понять как мне осуществить поиск по lookup полю, ведь его нет в основной таблице. Кто может, подскажите, пожалуйста.

15
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,666
Записей в блоге: 21
24.05.2017, 09:53
тыщу раз говорили, не пользуйте русские буквы в названиях полей и таблиц
а если используете, читайте документацию по вашему серверу и особенностям SQL в нем
например вот
листаем до слов "Если идентификатор содержит"

Добавлено через 3 минуты
ну и структуру вашей базы никто не знает
и как вы задаете LookUp поле
0
2 / 2 / 3
Регистрация: 17.11.2015
Сообщений: 395
24.05.2017, 13:47  [ТС]
Ну так поиск работает с этим кодом. Но на LookUp поле не работает.

Вот так задаю LookUp поле и по нему нужно как-то поиск сделать.
0
2 / 2 / 3
Регистрация: 17.11.2015
Сообщений: 395
24.05.2017, 13:47  [ТС]
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,666
Записей в блоге: 21
24.05.2017, 15:11
ну. с лукап полем понятно. а с поиском пока нет.
поиск по вашему датасету, уже затянутому в программу, выполняется например командой Locate
а вообще поиск в программах выполняется при помощи SQL запросов

а как вы делаете поиск по другим полям?
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
24.05.2017, 16:38
Лучший ответ Сообщение было отмечено Александр9797 как решение

Решение

Вся проблема в том что лукапное поле с точки зрения Дельфи обязано состоять из двух полей (Ключ,Значение) причем Ключ не должен быть тем-же полем, что и значение. Вообще я не вижу причины, почему в БД Ключ не может быть и Значением, но у Дельфи свое видение. Исходя из вышесказанного делаем вот такой финт:
В компонент AdoTable, где мы хотим видеть лукапное поле и по нему искать мы создаем 1 дополнительное строковое поле КодНазвания и его надо настроить как лукап-поле. Табличное поле Название надо скрыть, в него будет писать лукап. Далее настраиваем поле КодНазвания
fieldKind=fkLookup
FielfName=КодНазвания
KeyFields=Название
LookupKeyFields=Название_Техники
LookupResultField=Название_Техники

Теперь в таблице есть лукапное поле КодНазвания для получения Списка техники и в то-же время есть поле Название которое можно напрямую использовать для поиска и фильтра.
1
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,666
Записей в блоге: 21
24.05.2017, 23:05
потому что если ключ и значение одно и то же поле то это вообще бред а не лукап
ибо искать по номеру квартиры номер квартиры несколько странновато
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
25.05.2017, 00:39
их моего ответа в соседней теме
Цитата Сообщение от YuryK Посмотреть сообщение
Если поле подстановочное, то странный выбор использовать для поиска TEdit. Следует использовать компонент с такими же принципами работу, что и подстановочное поле - TDBLookupComboBox (с пустым DataSource) и фильтровать не по значению подстановочного поля, а по значению реального, сранивая его с TDBLookupComboBox.KeyValue
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
25.05.2017, 01:04
потому что если ключ и значение одно и то же поле то это вообще бред а не лукап
ибо искать по номеру квартиры номер квартиры несколько странновато
Отнюдь. Вы видимо даже не представляете как удобно использовать одно поле ключ/значение вместо пары.
Простой пример: У вас есть таблица людей, где для выбора Фамилии,Имени,Отчества использованы лукапы завязанные сами на себя. Т.е. ключ и значение будет Фамилия датасетом будет тоже выборка Фамилий из этой-же таблицы. То же самое для остальных полей Имя,Отчество. В итоге у вас будут самополняемые справочники Фамилий,Имен,Отчеств.
И даже на нескольких миллионах записей такое решение не будет притормаживать. Есть еще один плюс в таких справочниках - случайное изменение значения при том-же ключе не приведет к ахинее в БД.
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
25.05.2017, 01:13
Цитата Сообщение от Пытливый Посмотреть сообщение
В итоге у вас будут самополняемые справочники Фамилий,Имен,Отчеств
как же он будет пополняться, если Имя можно выбрать только из списка уже внесенных Имен. Новое имя таким образом уже не внести
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
25.05.2017, 01:21
Ага, действительно для стандартного лукапа такого сервиса похоже нет. Я пользуюсь компонентами от DevExpress, где можно много чего полезного делать с лукапом. Тут я дал маха.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,666
Записей в блоге: 21
25.05.2017, 08:53
у меня для этого нормально работали простые DBCombo, без обвесок
SQL Query к нему состоит из одной строки. Заполнение - из трех. Даже компонент можно не использовать )
Написание четырех банальных строк вообще не влияет на скорость написания программы. И ошибиться вообще негде.
0
2 / 2 / 3
Регистрация: 17.11.2015
Сообщений: 395
25.05.2017, 10:08  [ТС]
Цитата Сообщение от krapotkin Посмотреть сообщение
SQL Query к нему состоит из одной строки. Заполнение - из трех. Даже компонент можно не использовать )
Написание четырех банальных строк вообще не влияет на скорость написания программы
Могли бы Вы скинуть код для примера.
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,666
Записей в блоге: 21
25.05.2017, 10:29
не знаю набор компонентов, которым вы пользуетесь, поэтому предположим что есть какой-то Query вообще
Delphi
1
2
3
4
5
6
Query.SQL.Text := 'select distinct LAST_NAME || ' ' || FIRST_NAME from users order by 1';
Query.Open;
DBCombo.Items.Clear;
while not Query.Eof do
  DBCombo.Items.Add(query.fields[0].asString);
Query.Close;
более интересный способ для DBGrid
https://www.thoughtco.com/drop... id-4077749
1
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
26.05.2017, 00:41
Delphi
1
2
while not Query.Eof do
  DBCombo.Items.Add(query.fields[0].asString);
Интересно, как быстро память кончится?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,666
Записей в блоге: 21
26.05.2017, 06:07
ну да, на коленке писал )))
Delphi
1
2
3
4
5
While not Query.Eof do
begin
  DBCombo.Items.Add(query.fields[0].asString);
  Query.Next;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.05.2017, 06:07
Помогаю со студенческими работами здесь

Lookup
LookRes:=DM.Priem_DB.Lookup('TypeP; NameP; ArcticP; DateP; Kol_voP; Cena', VarArrayOf(), 'Type_ix; Name_ix; Date_ix; Cena_ix');...

Lookup fields
Беда, товарищи! В этом деле уж совсем новичок, местами сильно тормозящий... не судите строго. Есть на форме грид с полями из разных...

Lookup поля
Здравствуйте. Создал lookup поля, можно ли в DBGrid убрать всплывающий список.

2 зависимых lookup
здравствуйте подскажите пожалуста как реализовать и ли стратегию или вообще пример даже лучше у меня база в sql server к ней delphi...

Lookup поля
Не понимаю как правильно настроить Lookup поля, использую базу в которой есть 2 таблицы `пицца` и `акции` что связаны по общему полю...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru