Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > FIBPlus и вставка данных в табл связи справочников |
Автор: 4EVERCooL 6.7.2009, 03:01 | ||||||
Продублирую свой пост на sql.ru, может вы охотнее поможете? ![]() Итак, база данных состоит к примеру из трех таблиц - справочника людей, справочника сертификатов этих людей и таблицы связи "многие ко многим" человек/сертификат. Представьте себе форму, на ней два грида и два датасета. Один показывает список людей, второй связан с первым по мастер-деталь и показывает список сертификатов у человека, выбранного в данный момент в первом датасете. Первый датасет прекрасно редактируется из делфей, тут проблем нет. Во втором оператор выбора данных такой:
А оператор вставки вот такой:
Компонент доступа как вы догадались - ФИБПлюс. И вот тут затык. Ввожу в новой форме данные сертификата выбранного человека: procedure TFADDCert.bsSkinButton1Click(Sender: TObject);
И эта сволочь ругается на то, что не может произвести вставку, поскольку на поле EMPLOYEES_EMP_ID наложено ограничение not null . Так вот мой вопрос. Насколько я понял, добавление суффикса MAS_ к имени поля означает, что ID человека из справочника, выбранного в данный момент в мастер-датасете, будет добавляться АВТОМАТОМ в таблицу связей (поле EMPLOYEES_EMP_ID). Но этого не происходит... Подскажите пожалуйста, что я делаю не так. Заранее сэнкс. ![]() |
Автор: Romikgy 6.7.2009, 09:46 |
имхо мало инфы для корректной помощи , хоть бы показал как создавались таблицы и какие поля есть в них к чему это вообще не понятно (( |
Автор: former 6.7.2009, 12:44 |
Необходимо у компонентов DataSet настроить AutoUpdate Options (см. офф. документацию стр. 106). Romikgy, прочти в офф. руководстве стр. 39. |
Автор: Romikgy 6.7.2009, 14:14 |
former, к чему офф руководство ? |
Автор: former 6.7.2009, 15:50 |
к FIBPlus |
Автор: 4EVERCooL 6.7.2009, 16:42 | ||||
Думаю, что не лучше. Официально ведь рекомендуетсяв Firebird использовать именно соединения ![]() ![]() |
Автор: Akella 6.7.2009, 17:18 | ||
Думаю, что ничего у тебя не выйдет. Ну или придётся попотеть. |
Автор: 4EVERCooL 6.7.2009, 17:33 | ||||
А почему? ![]() ![]() |
Автор: Romikgy 6.7.2009, 20:08 | ||||
прочитал
имхо возможно что из за того проблемка что в руководстве запрос простой , а у автора
где то здесь упоминалось о редактируемости запросов и не редактируемости .... могу и ошибаться... |
Автор: Bose 6.7.2009, 22:52 | ||||||
AutoUpdateOptions тут не причём. 1й вариант - добавить второму(detail) датасету обработчик события OnBeforePost с кодом:
2й вариант - добавить в код вставки записи строку:
3-й вариант. Будет работать при условии, что master-detail сделано через свойство DataSource+MasterField(или как они там называются). Изменить SQL для вставки на следующий.:
|
Автор: Akella 7.7.2009, 08:06 |
Ты, по-моему, даже не имеешь представления, что такое lookup и с чем его едят. |
Автор: former 7.7.2009, 09:11 |
Очень даже причем. Набросал небольшой пример. |