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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 15:09   #1
NARKOM
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 12
Восклицание Фильтрация данных в DBLookupComboBox

Добрый день. НИкогда не обращался к помощи форума но жизнь заставила. Уже около 2 недель бьюсь над одной прослемой. Расскажу покороче. Создаю БД в Interbase через IBExpert (таблицы нарисовал в дизайнере БД, сгеннерировал SQL коди также сделал триггеры, процедуры и генераторы) и Delphi 7. БД заключает в себе программу по отображению статей: имеются несколько глав, в каждую из которых входят несколько разделов и в каждом разделе находятся соответствующие статьи. Смысл в чем: при добалении статьи я должен :
1) указать главу ( я делаю чрез DBLookupComboBox1)
2) указать соответствующий раздел(принадлежащий определенной главе) - делаю через DBLookupComboBox2.
И вот моя проблема: видираю тему в первом DBLookupComboBox а во втором у меня показывается список всех разделов по всем главам. И вот сколько ни бьюсь никак не могу понять как сделать. Я понял что надо фильтровать. но как и где написать этот фильтр не знаю. То ли в DataModule то ли у же в самом DBLookupComboBox2. И если делать через запрос то как это сделать? Помогите, буду благодарен всем откликнувшимся....
Изображения
Тип файла: gif 108.GIF (7.6 Кб, 200 просмотров)
NARKOM вне форума Ответить с цитированием
Старый 26.04.2010, 17:17   #2
bezOn
Пользователь
 
Регистрация: 14.04.2010
Сообщений: 51
По умолчанию

Для начала нужно немного изменить структуру базы данных...


В таблице "Отзыв", поля "Вопрос" и "Ответ" по идее не могут быть больше 255 символов. Если нужно больше,тогда тип поля должен быть "memo";

В таблице "Статья", поля "Название Темы" и "Названия Раздела" по идее лишние, мы их может получить через поля "связки" IDTema и IDRazdel
(но для простоты создания sql запроса их можно оставить, хотя они и нарушают нормализацию БД)

---
При смене (выборе) темы, необходимо "переоткрыть" IBQuery который отвечает за "Раздел"

Для этого связываем "Разделы" с "Темами".
Код:
IBQuery_Razdel.Close;
IBQuery_Razdel.SQL.Clear;
IBQuery_Razdel.SQL.ADD('SELECT * FROM Razdel, Tema');
IBQuery_Razdel.SQL.ADD('WHERE (R_IDTema = T_ID) AND T_ID = :IDTema');
IBQuery_Razdel.SQL.ADD('ORDER BY R_ID');
   IBQuery_Razdel.ParamByName('IDTema').asInteger := DBLookupComboBox1.KeyValue;
   IBQuery_Razdel.Open;
Как-то так.


p.s.
В принципе использование таблицы "Tema" необязательно, можно изменить запрос так:
Код:
IBQuery_Razdel.Close;
IBQuery_Razdel.SQL.Clear;
IBQuery_Razdel.SQL.ADD('SELECT * FROM Razdel');
IBQuery_Razdel.SQL.ADD('WHERE R_IDTema = :IDTema');
IBQuery_Razdel.SQL.ADD('ORDER BY R_ID');
   IBQuery_Razdel.ParamByName('IDTema').asInteger := DBLookupComboBox1.KeyValue;
   IBQuery_Razdel.Open;

Последний раз редактировалось bezOn; 26.04.2010 в 17:20.
bezOn вне форума Ответить с цитированием
Старый 01.06.2010, 16:15   #3
NARKOM
Пользователь
 
Регистрация: 26.04.2010
Сообщений: 12
По умолчанию

Спасибо большое
NARKOM вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация данных skiffter Помощь студентам 10 17.11.2009 16:44
фильтрация данных elen1khp БД в Delphi 6 28.09.2009 20:01
Фильтрация данных Gladiator БД в Delphi 4 23.05.2009 12:37
Занесение данных в таблицу через DBLookupComboBox andirock2112 БД в Delphi 3 18.05.2009 09:51
Фильтрация данных в delphi7 @Akulina21 Компоненты Delphi 1 31.03.2009 16:30