Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2008, 16:59
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Печаль Одинаковые строки в DBLookupComboBox

Доброго времени суток!!!!
Есть 1 DBComboBox и 2 DBLookupComboBox
В DBComboBox забит список областей, а в DBLookupComboBox-ах по запросу выбираются соответствующие районы области и нас. пункты даного района.
При выборе области все работает нормально (список районов фильтрируется), но названия повторяются в том количестве сколько нас. пунктов в этом районе присутствует.
Список районов и нас пунктов забит в одной таблице.
Так вот, вопрос!!!!,:
Как Этого избежать?????
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
  #2  
Старый 13.02.2008, 19:14
trenger trenger вне форума
Прохожий
 
Регистрация: 21.01.2008
Сообщения: 6
Репутация: 10
По умолчанию

а запрос для lookup'а можно увидеть
Ответить с цитированием
  #3  
Старый 13.02.2008, 22:58
Аватар для Appolon
Appolon Appolon вне форума
Новичок
 
Регистрация: 10.01.2008
Адрес: гЕйск
Сообщения: 76
Репутация: 16
По умолчанию

Вся проблема скорее всего заключается в SQL запросе. Называется это декартовое произведение.
Избежать этого можно изменением запроса.
Например.
Таблица областей - oblast.
id_obl int индетификатор области
name_obl varchar(50) наименование области
Таблица районов - raion.
id_rai int индетификатор района
id_obl int индетефикатор области
name_rai varchar(50) наименование района
Таблица населенных пунктов - punkt.
id_punkt int индетификатор нас.пункта
id_rai int индетификатор района
name_punkt varchar(50) наименование нас.пункта

Тогда запрос на выбор района будет таким:
SELECT name_rai
FROM dbo.oblast INNER JOIN
dbo.raion ON dbo.oblast.id_obl = dbo.raion.id_obl
where id_obl=<индетификатор выбранной области>

А запрос на выбор населеного пункта будет выглядеть вот так:
SELECT dbo.punkt.name_punkt
FROM dbo.raion INNER JOIN
dbo.punkt ON dbo.raion.id_rai = dbo.punkt.id_rai
where id_rai=<индетификатор выбранного района>

Успехов!!
Ответить с цитированием
  #4  
Старый 14.02.2008, 09:31
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
Сообщение от trenger
а запрос для lookup'а можно увидеть
Код:
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT PUNKT FROM Sp_Region.DB WHERE REGION LIKE "'+ADR_REGION.Field.Text+'"');
Query2.Open;

Цитата:
Сообщение от Appolon
Таблица областей - oblast.
id_obl int индетификатор области
name_obl varchar(50) наименование области
Таблицы области - нет вообще. Список забит в Items (DBCoboBox)
Цитата:
Сообщение от Appolon
Таблица районов - raion.
Цитата:
Сообщение от Appolon
Таблица населенных пунктов - punkt.
Это первое, что пришло в голову.
Но эти две таблицы должны быть вместе (в одной)
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 14.02.2008 в 09:34.
Ответить с цитированием
  #5  
Старый 14.02.2008, 09:50
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Код:
Query2.Close;
Query2.SQL.Clear;
Query2.SQL.Add('SELECT PUNKT FROM Sp_Region.DB WHERE REGION LIKE "'+ADR_REGION.Field.Text+'"'+' GROUP BY PUNKT');
Query2.Open;
учите матчасть.
Ответить с цитированием
  #6  
Старый 14.02.2008, 09:59
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Aristarh Dark
Огромное Спасибо!!!
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter