Связь DataSet и передача значений.

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

Модератор: kdv

Ответить
Fed
Сообщения: 17
Зарегистрирован: 13 ноя 2005, 10:39

Связь DataSet и передача значений.

Сообщение Fed » 10 дек 2005, 12:55

Здравствуйте. Не знаю, насколько верно я сформулировал тему, но вопрос вот в чем. Имеется таблица примерно с 20-ю полями и несколькими внешними ключами. В клиентском приложении поля, соответсвующие внешним ключам должны быть заменены (визуально) на "расшифровки" (соответствующие записи из справочных таблиц). Чтобы не иметь дело с МЕГА запросом, скажем на выборку, и сделать организацию немного лучше, я создаю представление, в котором содержаться И значения внешних ключей (коды) И их "расшифровка" из таблиц-справок. Делаю я это, с мыслью о том, как потом буду добавлять новую запись - меня ведь не интересут "расшифровки", меня интересуют только "коды". Вопрос 1:

Разумен ли такой подход? Есть ли лучшая альтернатива?

Затем, на форме клиентского приложения, я, в общем случае, ставлю DBEdit, если поле не является внешним ключем, и DBComboBox, если является (чтобы можно было выбрать строго определенные значения).
Естественно (для меня), что для каждого DBComboBox-а нужен свой DataSource и DataSet. К примеру, я считал некоторую запись из таблицы (представления). В соответстующих полях должна высветиться информация. Но ComboBox-ы связаны с другим DataSource. Вопрос 2:

Как выбрать из него в текущую ту, которую нужно? Простым сравнением?

К примеру я решил отредактировать запись и изменил текущую ComboBox-а. Вопрос 3:

Как мне теперь получить код его текущего значения из таблицы справки для создания SQL-запроса на вставку в представление (фактически - в таблицу)? Генерировать в программе SQL запрос?

Не подумайте чего. Я просто не хочу наступать на грабли на которые многие из вас по своему опыту уже наступили. Меня интересует принцип. Конкретная реализация не обязательна. Просто, кто как делает.(?)

smu
Сообщения: 39
Зарегистрирован: 29 окт 2005, 10:12

Сообщение smu » 11 дек 2005, 00:13

1. Если хочешь использовать сведения из справочных таблиц для связей Master-Detail используй TDBLookUpComboBox а не TDBComboBox

2. Почитай про TIBUpdateSQL, если захочешь использовать в TIBQuery. Или просто используй TIBTable - но не советую, в некоторых ситуациях можно получить хороший "тормоз", особенно при большом количестве справочников и применении фильтрации.

3. Можно обрабатывать как вручную (TEdit + TIBQuery :)), так и на автомате (TDBEdit + TTable). Все зависит от ЗАДАЧИ.

Fed
Сообщения: 17
Зарегистрирован: 13 ноя 2005, 10:39

Сообщение Fed » 11 дек 2005, 04:54

Спасибо огромное. Многие проблемы решились.

Ответить