Вот уперся рогами-помогите, кто знает... Короче есть 2 таблицы со сведениями о клиентах-одна с основной инфой (ФИО и тп) а другая - с кучей дополнительной. Для удобства хочу связать их как мастер-деталь. Ограничение вторичного ключа на уровне базы не прописывалось, значение втор.ключа вставляется во вторую таблицу по IBDataset2.BeforePost. В обоих - первичные ключи с автоинкрементом (через GeneratorField/On New Record). Постинг сделан по нажатию одной кнопки(сначала-1-й потом 2-й таблицы).
И все замечательно работает, пока не ввожу связь мастер-деталь(указ. 1-ю датасурсу для 2-й IBDataset, в SelectSQL добавил "where FKey=:MKey". Вызываю для обоих таблиц метод APPEND, ввожу данные в DBEditы, и при нажатии на кнопку "Post" вылазит "IBDataset2 not in edit or insert mode" !
Вопрос: а при чем тут edit or insert mode? В какой момент Датасет2 вылез из режима вставки? P.S. Просьба не учить, как это обойти (уже сделано), а ПОЧЕМУ так (похоже я что-то недопонимаю)?
Непонятная ошибка при постинге
Модератор: kdv
--------LDF писал(а):вторая транз. не видит изменений первой. а первая только начала и не подтвердила данные (создала ИД-MKey).
Решение же в том было, что сначала постится первая, а потом вносятся вторая? Так?
Да нет, транзакция там одна на всех, и таблица в-общем одна по-смыслу, я ее разбил на 2 для удобства просмотра данных.
IBDataset1.Append;IBDataset2.Append;
<Заполняются данные в обоих таблицах>
IBDataset1.Post;IBDataset2.Post;
-и все работает, пока не добавлю связь мастер-деталь. Вот тогда и кричит, что второй датасет не в режиме изменений (так оно и есть- если перед вторым постингом тупо добавить Dataset2.Edit, то все нормально) Вопрос в том , где он вылез из dsInsert и почему?
-
- Заслуженный разработчик
- Сообщения: 1436
- Зарегистрирован: 15 сен 2005, 09:05
Значит, полноценная связь М-Д включается просто ссылкой на мастер-датасурсу и всё? (Ну да, в IB -я полный чайник, вот пытаюсь разобраться). Кстати, подскажите в каком инетмагазине можно заказать ту самую книжку Хелен по FB-не хватает инфы жутко, особенно на русском:)Dimitry Sibiryakov писал(а):Где? В момент IBDataset1.Post.
Почему? Из-за связи. Запись в мастере сменилась -> детайл обновился, попутно запостив изменения.
Кто такую кривизну написал? Не знаю, Джеф, наверное...