Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/22: Рейтинг темы: голосов - 22, средняя оценка - 4.77
 Аватар для Альма
13 / 10 / 4
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1

Как вывести LookUp поля в ComboBox

10.01.2013, 20:10. Показов 4786. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется база, подключенная из Access в Delphi 7. Нужно сделать SQL запросы, но почти во все таблицах имеются LookUp поля.
Организуется след. образом - в ComboBox1 выводятся названия таблиц, в ComboBox2 - поля. Так вот LookUp поля в второй ComboBox не выводятся, выводит старые, которые в таблице скрыты. Соответственно запрос по ним сделать я не могу. А как их вывести в ComboBox?
Вывод названий полей:
Delphi
1
2
3
4
5
6
7
if ComboBox1.Items[19]='Âíåøíèé âèä ãèáðèäîâ'then
begin
Form1.DBImage1.DataField := '';
DM.HLook.Active:=False;
DM.HLook.open;
DM.ADOConnection1.GetFieldNames(combobox1.items[ComboBox1.ItemIndex], combobox2.Items);
end;
Запрос:
Delphi
1
2
3
4
5
6
7
8
9
procedure TForm3.Button1Click(Sender: TObject);
begin
DM.ADOQuery1.Close;
DM.ADOQuery1.SQL.Clear;
DM.ADOQuery1.SQL.Add('SELECT * FROM ' + ComboBox1.Items[ComboBox1.ItemIndex] + ' WHERE ' +  ComboBox2.Items[ComboBox2.ItemIndex] + ' LIKE ' + QuotedStr(Edit1.Text));
DM.ADOQuery1.Open;
Form4.DBGrid1.DataSource:=DM.DataSource2;
Form4.Show;
end;
Добавлено через 8 минут
https://docs.google.com/file/d... hQU28/edit

Добавлено через 18 минут
https://docs.google.com/open?i... k0tb3hQU28 вроде тут должно дать скачать проект полностью...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.01.2013, 20:10
Ответы с готовыми решениями:

Как клавишами в DBGrid`e развернуть список LookUp поля?
Тут User`ы озадачили. У них мыша больная, а LookUp поле с клавиатуры не разворачивается. Может кто посоветует как выбирать значения?...

Автозаполнение поля грида на основе значения другого lookUp поля
с помощью ADOQuery в грид отображаю данные из 4-х аксессовских таблиц: фио, группа, курс, специальность, отделение, т.е. все они из разных...

Вывести в combobox три поля
Всем привет! Я знаю как сделать выпадающий список из одного поля таблицы. А как в combobox'e сделать выпадающий список состоящий из трех...

5
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
10.01.2013, 21:46
А более точнее, как звучит запрос? Что ты хочешь получить и из каких таблиц. Еще выложи проект, без базы (уже есть)
0
 Аватар для Альма
13 / 10 / 4
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
10.01.2013, 21:53  [ТС]
Ну, для начала я хочу, чтобы во втором ComboBox'e отображались Look Up поля, а не те, которые скрыты. Например, в таблице Гибриды есть поле Вид самца, в начальной базе, вместо него в делфи у меня поле Самец, оно Look Up. Для Вид самца стоит Visible:=False. Но в ComboBox'e поле Самец не отображается, отображается только Вид самца, по которому я не могу сделать запрос, т.к. там только код, а не само значение.
Вложения
Тип файла: rar Database1.rar (1.68 Мб, 36 просмотров)
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
11.01.2013, 03:18
Для начало одна вещь.
Delphi
1
if ComboBox1.Items[19]='Внешний вид гибридов' then
Поменяй для всех условий, items на text
Delphi
1
if ComboBox1.text='Внешний вид гибридов' then
я хочу, чтобы во втором ComboBox'e отображались Look Up поля, а не те, которые скрыты.
Это сделать можно, но...см.ниже
отображается только Вид самца, по которому я не могу сделать запрос, т.к. там только код, а не само значение.
А вот тут как раз все на оборот. Ты не можешь сделать запрос по Look Up полю, т.к. это поле существует только в самой программе, а в базе данных такого поля нет и SQL запрос с таким полем в лучшем случае вернется с исключением.

Не по теме:

P.S. Устал очень и головая боль не как не хочет проходить. Завтра что-нибуть придумаем...

1
 Аватар для Альма
13 / 10 / 4
Регистрация: 25.11.2010
Сообщений: 358
Записей в блоге: 1
11.01.2013, 03:19  [ТС]
Ясно, спасибо за пояснение, видимо придется переделывать, чтобы LookUp не было.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
11.01.2013, 16:47
Итак начнем.
Для начало тебе надо будет составить ко всем таблицам SQL запросы со связями к другим таблицам и выводить только те поля которые нам нужны. Например, для правильного вывода таблицы "Внешний вид гибридов" мы должны связать с таблицей "Гибриды"
T-SQL
1
2
SELECT В.Код, Г.Гибрид, [Масса, кг],[Длины тела, см]
FROM [Внешний вид гибридов] В inner join [Гибриды] Г on В.Гибрид = Г.Код
Так он свяжет таблицы и выведет все необходимые поля.
Ну и все это должно выглядеть примерно так для таблицы "Внешний вид гибридов" .
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm3.ComboBox1Change(Sender: TObject);
begin
  ComboBox2.clear;
..................................
if ComboBox1.text = 'Внешний вид гибридов' then
    begin ;
      Form1.DBImage1.DataField := '';
      ComboBox2.items.add('В.Код');
      ComboBox2.items.add('Г.Гибрид');
      ComboBox2.items.add('Масса, кг');
      ComboBox2.items.add('Длины тела, см');
   //   ComboBox2.items.add('Фото');
      S := 'SELECT В.Код, Г.Гибрид, [Масса, кг],[Длины тела, см] FROM [Внешний вид гибридов] В inner join [Гибриды] Г on В.Гибрид = Г.Код';
    end;
..................................
end;
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm3.Button1Click(Sender: TObject);
begin
  DM.ADOQuery1.Close;
  DM.ADOQuery1.SQL.clear;
  DM.ADOQuery1.SQL.add(S);
  if Edit1.text <> '' then
    DM.ADOQuery1.SQL.add('WHERE ' + '[' + ComboBox2.items[ComboBox2.ItemIndex]+ ']' + ' LIKE ' + '''%' + Edit1.text + '%''');
   DM.ADOQuery1.open;
  form4.Memo1.Lines := DM.ADOQuery1.SQL; // показывает SQL запрос
  form4.DBGrid1.DataSource := DM.DataSource2;
  form4.Show;
end;
Переменна S - глобальная
Delphi
1
2
3
4
5
...............
var
  Form3: TForm3;
  S: string;
...................
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.01.2013, 16:47
Помогаю со студенческими работами здесь

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

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

Lookup поля
Здравствуйте, есть БД в Access, подключена к Delphi, таблицы подключены через ADOTable и в DBGrid отображают через DatasSource, зделаны...

DBGrid и Lookup поля
Имеется две таблицы DBGrid: родительская и дочерняя. Как в дочерней создать lookup-поле, чтобы можно было в нем выбирать значения из...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
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