Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2008, 11:31   #1
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание DBLookupComboBox - Страна - Регионы - Города

Здравствуйте!
У меня вопрос такого плана:
Есть БД с таблицами Страны, Регионы, Города.
мне нужно сделать так:
Имеется 3 DBLookupComboBox.
DBLookupComboBox1 := Таблица Страны (Имеет поля(столбцы):'Код','Страны');
DBLookupComboBox2 := Таблица Регионы (Имеет поля(столбцы): 'Код','Регионы','id_Страны' );
DBLookupComboBox3 := Таблица Города (Имеет поля(столбцы):'Код','Города','id_Ре гиона' );
Если в DBLookupComboBox1 выбираем Россия
то в DBLookupComboBox2 должны отобразиться только Российские Регионы.
Далее если DBLookupComboBox2 выбираем допустим Московскую область
то в DBLookupComboBox3 должны отобразиться только Города московской области.

Последний раз редактировалось IIpopoK; 03.01.2008 в 11:58.
IIpopoK вне форума Ответить с цитированием
Старый 03.01.2008, 11:52   #2
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

DBLookupCombobox2.KeyValue:=DBLooku pCombobox1.KeyValue-это если когда мы вибираем страны, то в DBLookupCombobox2 должны отобразиться регионы. По аналогии так же и городами. Если я правильно Вас понял.
фЁдОр вне форума Ответить с цитированием
Старый 03.01.2008, 11:57   #3
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

Цитата:
Сообщение от фЁдОр Посмотреть сообщение
DBLookupCombobox2.KeyValue:=DBLooku pCombobox1.KeyValue-это если когда мы вибираем страны, то в DBLookupCombobox2 должны отобразиться регионы. По аналогии так же и городами. Если я правильно Вас понял.
Что-то я не совсем понял как это работает=(
Объясни плиз.
Вот скрин. Там и связи как должно быть

Последний раз редактировалось IIpopoK; 03.01.2008 в 12:29.
IIpopoK вне форума Ответить с цитированием
Старый 03.01.2008, 12:12   #4
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

если я Вас правильно понял. в таблице Страны, значения поля код, должны соответствовать значению поля id_Страны из таблицы Регионы Эти поля должны быть связаны и в соответствующих свойствах KeyField компонентов DBLookupCombobox должны быть выбраны эти ключевые поля. А потом при событии DBLookupComboBox1Click написать то, что я предложил.
IIpopoK - только я сам такого не делал, поэтому могут возникнуть ошибки, т.к. я предлагаю Вам этот как вариант и если ошибки всеже возникнуть, то пиши - разберемся !

Последний раз редактировалось фЁдОр; 03.01.2008 в 12:19.
фЁдОр вне форума Ответить с цитированием
Старый 03.01.2008, 12:49   #5
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

Да все правильно вы поняли! но то что вы предложили у меня не получилось, ошибок нет! просто как все изначально было так все и осталось!
IIpopoK вне форума Ответить с цитированием
Старый 03.01.2008, 13:36   #6
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

У вас 3 таблиці, в первой таблице страна, вторая- регион, 3-города.
можно все делать запросами... Которіе віполняются при нажатии КомбоБокса... Устанавливаете DBLookupComboBox1.ListSource, DBLookupComboBox1.ListField, DBLookupComboBox1.listKey для всех Комбобоксов. Остальное ( DBLookupComboBox1.DataSource) Вам не нужно в данной ситуации, т.к ві используете Комбобокс только , как список. Количество Query может біть и один, и 3... Єто , как Вам удобнее....
Вам нужно делать віборку:
типа такой:
procedure TForm1.DBLookupComboBox1Click(Sende r: TObject);
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.add('select * from Регон where страна=: par_cont') ; // тут задаете страну после двоеточия не нужно пробела...
Query1.Params[0].Value:=DBLookupComboBox1.Text;
Query1.ExecSQL;
Query1.open;
end;

тоесть при нажатии віполнится запрос из таблиці, где храняться данніе о регионе ,где значение страні , равно значению, которое ві вібрали в комбобоксе...
потом при нажатии на второй Комбо сделайте запрос к таблице, где находятся города и сделаете віборку по региону....
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 03.01.2008 в 13:43.
Pitbull вне форума Ответить с цитированием
Старый 03.01.2008, 13:40   #7
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

скажите а Вы писали только то, что я предложил? В чем у Вас БД создана? Выложите сюда то, что написали и при каком событии.
фЁдОр вне форума Ответить с цитированием
Старый 03.01.2008, 13:47   #8
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

Цитата:
Сообщение от фЁдОр Посмотреть сообщение
скажите а Вы писали только то, что я предложил? В чем у Вас БД создана? Выложите сюда то, что написали и при каком событии.
как видно из скрина, написано так и в таком событии..
БД в Access.
procedure TForm1.DBLookupComboBox1Click(Sende r: TObject);
begin
DBLookupCombobox2.KeyValue:=DBLooku pCombobox1.KeyValue
end;
IIpopoK вне форума Ответить с цитированием
Старый 03.01.2008, 14:32   #9
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

я попробовал - работает:
Код:
if(DBLookupCombobox1.KeyValue>0)then
   begin
   ADOQuery2.Close;
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('select *');
   ADOQuery2.SQL.Add('from city, country');
   ADOQuery2.SQL.Add('where city.id_country=country.id_country and city.id_country='+IntToStr(DBLookupCombobox1.KeyValue));
   ADOQuery2.Open;
   end
   else
   begin
    ADOQuery2.Close;
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('select *');
   ADOQuery2.SQL.Add('from city, country');
   ADOQuery2.SQL.Add('where city.id_country=country.id_country and city.id_country');
   ADOQuery2.Open;
   end;
ADOQuery1-подключена к странам;
ADOQuery2-подключена к городам.
Если что не понятно - спрашивайте.
фЁдОр вне форума Ответить с цитированием
Старый 03.01.2008, 16:12   #10
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Печаль

Чесно говоря я нифига не понял че к чему
IIpopoK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиграем в города? Hallo Свободное общение 178 24.07.2011 23:35
Карта города zzzzz Общие вопросы Delphi 16 15.06.2011 15:19
создание карты города Коржик Общие вопросы Delphi 8 13.08.2009 04:54
Карта города Vadimok Общие вопросы Delphi 4 26.08.2008 17:36
Карта города 2 Archangel Помощь студентам 3 04.03.2007 05:19