Как лучше?

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
makvell
Сообщения: 6
Зарегистрирован: 05 дек 2005, 23:45

Как лучше?

Сообщение makvell » 06 дек 2005, 22:50

Доброго времени суток.
Задача у меня примерно следующая:

Есть БД, в ней 4 таблицы:
-темы
-авторы
-сложность
-уроки
На таблицу "уроки" наложены ограничения внешнего ключа - связи с
остальными таблицами.

Пишу программу на Delphi 7, использую IBX. При добавление нового
урока, необходимо, чтобы пользователь мог выбрать из списков: тему,
автора, сложность, а сам текст добавляется из файла.

Так вот, как лучше сделать эти списки, с учетом того, что данной темы
(автора) может еще не существовать в БД?

Пока это выглядит так:
Начинаем транзакцию, затем открываем IBDataSet (запрос для, например,
темы следующий SELECT THEME_NAME FROM THEME), далее,
перебираю все записи и добавляю каждую в список ComboBox. Если в
списке искомое отсутствует, есть кнопка "добавить новое значение",
нажимаем, записываем новое значение в таблицу THEME, обновляем список
(переписываем содержимое заново). Подтверждаем транзакцию.

Как еще (граммотнее) это можно реализовать?

Заранее спасибо.

makvell
Сообщения: 6
Зарегистрирован: 05 дек 2005, 23:45

Сообщение makvell » 23 дек 2005, 23:50

Да, у каждой таблицы есть уникальный Id, каждый генерируется и триггером пишется при вставке. Для урока, это номер задания, а для остальных таблиц - порядковые номера. Наверное можно было бы сделать с лкап полями, но что-то я не знаю как по ним сделать поиск...

У меня есть запрос с INNER JOIN в котором "куча" условий:
(Понятно, что одному номеру соответствует одно задание)
все задания одного автора из определенной темы и определенной сложности, например...

Ответить