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

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

10.01.2013, 20:10. Показов 4747. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru