Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549

Зависимость значений ComboBox 2 и 3 от выбора в ComboBox1

08.02.2012, 23:24. Показов 2320. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, значит такая ситуация. В ComboBox1 у меня названия таблиц, их я беру:

Delphi
1
ADOConnection1.GetTableNames(ComboBox1.Items, False);
вот, а мне нужно, чтобы в зависимости от таблицы выбранной в ComboBox1 высвечивался столбец "club" этой таблицы. (данные в COmboBox2 и ComboBox3 будут идентичными, т.е. в обоих столбец "club" таблицы выбранной в ComboBox1)

Заранее спасибо!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2012, 23:24
Ответы с готовыми решениями:

Зависимость значений combobox2 от значений в combobox1
Добрый день! помогите решить такую задачу, мне необходимо чтобы в comboBox2 подгружались значения из столбца № 2 БД на основе выбора...

Зависимость контента одного ComboBox от выбора в другом
Добрый день! Есть два combobox каждый из которых связан через linq to sql с двумя таблицами базы данных. cmbBrand.ItemsSource =...

Зависимость combobox2 от combobox1
Задача такая, при выборе элемента в combobox2, если не выбран элемент в combobox1, выдавал сообщение об ошибке Пример есть, но не...

18
 Аватар для Укрпошта
10 / 12 / 1
Регистрация: 07.02.2012
Сообщений: 25
08.02.2012, 23:28
используй DBLookupComboBox
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
08.02.2012, 23:34  [ТС]
и? что дальше-то?
0
 Аватар для Укрпошта
10 / 12 / 1
Регистрация: 07.02.2012
Сообщений: 25
08.02.2012, 23:53
DBLookupComboBox1
Подключай к запросу на который выводит все таблицы.


На OnClick
Delphi
1
2
3
4
ADOQuery.Active:=false; 
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='select club from '+QADOQueryTable.FiledByName('tablr_name').Value;
ADOQuery.Active:=false;
Подключай ADOQuery к DBLookupComboBox2

Добавлено через 5 минут
Delphi
1
ADOQuery.Active:=true; //Сори
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
09.02.2012, 00:12  [ТС]
Delphi
1
+QADOQueryTable.FiledByName('tablr_name').Value;
все кроме таблр_нейм ошибку выдает, что не зарегестрировано, как зарегить? что прописать
0
 Аватар для Укрпошта
10 / 12 / 1
Регистрация: 07.02.2012
Сообщений: 25
09.02.2012, 00:22
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Пример для MySQL
//FormShow
ADOQueryTable.Active:=false;
ADOQueryTable.SQL.Clear;
ADOQueryTable.SQL.Text:='SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES';
ADOQueryTable.Active:=true; 
 
//DBLookupComboBox1 подключай к ADOQuery1
 
// На OnClick DBLookupComboBox1 
 
ADOQuery.Active:=false;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='select club from '+QADOQueryTable.FiledByName(TABLE_NAME').Value;
ADOQuery.Active:=true;
Подключай ADOQuery к DBLookupComboBox2
 Комментарий модератора 
Теги кода добавлены модератором. По правилам форума, код должен быть оформлен соответствующими тегами. Для оформления кода Delphi следует выделить этот код и на панели редактирования сообщения нажать кнопку: "DELPHI".
0
13 / 13 / 7
Регистрация: 28.01.2012
Сообщений: 549
09.02.2012, 13:16  [ТС]
не дает повесить

Добавлено через 12 часов 40 минут
помогите пожалуйста
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
09.02.2012, 14:01
У Вас несколько разных таблиц, у которых есть поле с именем 'club' ?

1. подожите на форму TADODataSet1, TdataSource1, TDBGrid1 и свяжите их.
2. в св-ве ADODataSet1.Connection укажите ADOConnection1
3 Создайте обработчик события OnSelect для вашего комбобокса и там напишите:

Delphi
1
2
3
4
5
6
procedure TForm1.ComboBox1Select(Sender:TObject);
begin
  if ADODataSet1.Active then Close;
  ADODataSet1.CommandText := 'SELECT club FROM '+TComboBox(Sender).Text+' ORDER BY club ';
  ADODataSet1.Open;
end;
0
 Аватар для Укрпошта
10 / 12 / 1
Регистрация: 07.02.2012
Сообщений: 25
09.02.2012, 20:40
Цитата Сообщение от MsGuns Посмотреть сообщение
ORDER BY club
Не пойму зачем эта часть запроса,она не относится к теме.
Зачем сортировать ему это не нужно
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 42
09.04.2013, 01:12
у меня похожая ситуация, только я использую dblookupcombobox.
У меня на форме три dblookupcombobox (1-выводит поле название с таблицы клас, где поле кодклас является первичным ключом и внешним для таблицы раздел, 2-выводит поле название с таблицы раздел, где поле разделклас является первичным и внешним для таблицы подраздел, 3-выводит поле название с таблицы подраздел, где поле подраздел является первичным и внешним для таблицы книги).

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm3.DBLookupComboBox2Click(Sender: TObject);
begin
   DataModule2.ADOQuery6.Active:=false;
   DataModule2.ADOQuery6.SQL.Clear;
   DataModule2.ADOQuery6.SQL.Text:='SELECT nazvanie FROM razdel WHERE razdelklas LIKE '+QuotedStr(DBLookupComboBox1.Text)+''+' GROUP BY nazvanie;';
   DataModule2.ADOQuery6.Active:=true;
end;
procedure TForm3.DBLookupComboBox3Click(Sender: TObject);
begin
   DataModule2.ADOQuery7.Active:=false;
   DataModule2.ADOQuery7.SQL.Clear;
   DataModule2.ADOQuery7.SQL.Text:='SELECT nazvanie FROM podrazdel WHERE poddrazdel LIKE '+QuotedStr(DBLookupComboBox1.Text)+''+' GROUP BY nazvanie;';
   DataModule2.ADOQuery6.Active:=true;
end;
в ADOQuery6 (select * from razdel) , в ADOQuery7 (select * from podrazdel), подскажите что не правильно???при выполнении никаких действий не поисходит(((
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.04.2013, 01:59
Delphi
1
2
3
4
5
6
7
procedure TForm3.DBLookupComboBox3Click(Sender: TObject);
begin
DataModule2.ADOQuery7.Active:=false; <--------Какой датасет закрыл
DataModule2.ADOQuery7.SQL.Clear;
DataModule2.ADOQuery7.SQL.Text:='SELECT nazvanie FROM podrazdel WHERE poddrazdel LIKE '+QuotedStr(DBLookupComboBox1.Text)+''+' GROUP BY nazvanie;';
DataModule2.ADOQuery6.Active:=true;  <---------Какой датасет открыл
end;
1
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 42
09.04.2013, 02:45
нет, не помогло(((все так же(
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.04.2013, 02:56
Нужно смотреть проект с базой.
0
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 42
09.04.2013, 02:59
Мне не понятно:
Delphi
1
2
3
4
5
6
7
procedure TForm3.DBLookupComboBox3Click(Sender: TObject);
begin
DataModule2.ADOQuery7.Active:=false; <--------Почему 7 закрываем, если в нем должны сделать фильтрацию???
DataModule2.ADOQuery7.SQL.Clear;
DataModule2.ADOQuery7.SQL.Text:='SELECT nazvanie FROM podrazdel WHERE poddrazdel LIKE '+QuotedStr(DBLookupComboBox1.Text)+''+' GROUP BY nazvanie;';
DataModule2.ADOQuery6.Active:=true;  <--------я так понимаю. его открываем, потому что по его ключевому полю будет производить фильтрацию???
end;
Добавлено через 1 минуту
с не смогу, у меня база создана на MySQL и подключается через источник данных(

Добавлено через 34 секунды
не согу скинуть базу(
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.04.2013, 03:12
Мне не понятно:
procedure TForm3.DBLookupComboBox3Click(Sender: TObject);
begin
DataModule2.ADOQuery7.Active:=false; <--------Почему 7 закрываем, если в нем должны сделать фильтрацию???
DataModule2.ADOQuery7.SQL.Clear;
DataModule2.ADOQuery7.SQL.Text:='SELECT nazvanie FROM podrazdel WHERE poddrazdel LIKE '+QuotedStr(DBLookupComboBox1.Text)+''+' GROUP BY nazvanie;';
DataModule2.ADOQuery6.Active:=true; <--------я так понимаю. его открываем, потому что по его ключевому полю будет производить фильтрацию???
У тебя ADOQuery6 а нужно ADOQuery7 в последней строке
Цитата Сообщение от balslu Посмотреть сообщение
с не смогу, у меня база создана на MySQL и подключается через источник данных(
Схема базы есть?
1
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 42
09.04.2013, 09:11
да, я вам сейчасв личном ссообщщении все скину.
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
09.04.2013, 09:15
А я бы дерево строил. Удобней и наглядней. Чем 3 комбобокса.
Правда надо смотреть БД. Ибо не ясно чего там такого наваяли. Но думаю что проблем возникнуть не должно.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.04.2013, 17:51
Во первых выкладываю твою схему

Во-вторых.... все очень как-то запутанно...и очень многое не понятно... Ты делаешь запросы, вызывая события из DBLookupComboBox3 и DBLookupComboBox2, при этом они никак не участвую в самом запросе. С таким же успехом вызывать запросы можно из обычных кнопок.

Далее..., ты пытаешься постоянно вывести столбец nazvanie расположенный в таблице klas, через другие таблицы с групировкой. Из этого следует, что ты пытаешься получить список классов входящих в раздел и пораздел. Но...у тебя стоит Фильт, а это значит что ты хочешь узнать входит ли данный класс в раздел/пораздел

С учетом этого, Я подправил запросы так
Delphi
1
2
3
4
5
6
7
procedure TForm3.DBLookupComboBox2Click(Sender: TObject);
begin
   DataModule2.ADOQuery6.Active:=false;
   DataModule2.ADOQuery6.SQL.Clear;
   DataModule2.ADOQuery6.SQL.Text:='SELECT nazvanie FROM razdel r, klas k WHERE r.kodklas = k.kodklas  AND nazvanie = ' + QuotedStr(DBLookupComboBox1.Text) +' GROUP BY nazvanie';
   DataModule2.ADOQuery6.Active:=true;
end;
Delphi
1
2
3
4
5
6
7
procedure TForm3.DBLookupComboBox3Click(Sender: TObject);
begin
   DataModule2.ADOQuery7.Active:=false;
   DataModule2.ADOQuery7.SQL.Clear;
   DataModule2.ADOQuery7.SQL.Text:='SELECT nazvanier FROM razdel r, klas k, podrazdel p WHERE r.kodklas = k.kodklas AND r.razdelklas = p.razdelklas   AND  k.nazvanie = '+QuotedStr(DBLookupComboBox1.Text)+' GROUP BY nazvanie';
   DataModule2.ADOQuery7.Active:=true;
end;
За не имением подключения к самой базе, проверить точно запросы -не могу.
0
1085 / 571 / 79
Регистрация: 07.04.2011
Сообщений: 971
Записей в блоге: 2
09.04.2013, 18:08
Ошибся в столбце вывода
Delphi
1
2
3
4
5
6
7
procedure TForm3.DBLookupComboBox3Click(Sender: TObject);
begin
   DataModule2.ADOQuery7.Active:=false;
   DataModule2.ADOQuery7.SQL.Clear;
   DataModule2.ADOQuery7.SQL.Text:='SELECT nazvanie FROM razdel r, klas k, podrazdel p WHERE r.kodklas = k.kodklas AND r.razdelklas = p.razdelklas   AND  k.nazvanie = '+QuotedStr(DBLookupComboBox1.Text)+' GROUP BY nazvanie';
   DataModule2.ADOQuery7.Active:=true;
end;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.04.2013, 18:08
Помогаю со студенческими работами здесь

Вывод данных в label на основе выбора значений из combobox
Всем привет, подскажите каким способом можно это реализовать? У меня на форме есть combobox, который получает данных из таблицы БД SQL....

Связка combobox1 с combobox 2
Здравствуйте... Помогите решить задачку с помощью компонентов combobox1 combobox2 Panel1 button1 i MPlayer1... Задача такова: в...

Переход к процедуре от выбора пункта в итеме ComboBox1
Скажите - как должен выглядеть слушатель ComboBox1, для перехода к одной из трёх процедур, в зависимости от выбранного пункта?

Как создать ComboBox2 на основе выбора ComboBox1 / UserForm
У меня стоит следующая задача, как в UserForm на основе выбора в листинге ComboBox1 (C:\Temp\Fol1) представить в ComboBox2 выбранные...

Изменение выпадающего списка combobox2 после выбора элемента из combobox1
Здравствуйте. В программе необходимо изменить выпадающий список combobox2 после того, как был выбран элемент из combobox1. Однако после...


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

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