Дайте пример заполнение мастер детайл (инвойс) одним хранимой процедурой?

Обсуждение возникших проблем, предложений и ошибок IBDAC компонентов
Ответить
mrUlugbek
Сообщения: 6
Зарегистрирован: Чт 17 ноя 2011 05:50

Дайте пример заполнение мастер детайл (инвойс) одним хранимой процедурой?

Сообщение mrUlugbek » Чт 29 янв 2015 08:45

Привет всем
Хотел спросить можно ли заполнить мастер детайл (инвойс) одним хранимой процедурой?..
Использую компонент Devart Ibdac
Примерно делаю так
Главная форма+ДбГрид+Датасет='select * from view order by 1'
Три кнопки Добавить,Редактировать,Удалить
При нажатия кнопки Добавить открываю вторую форму детали
для редактирование использую два датасета у обоих cachedUpdate = true стоит
1 - МастерДатасет = 'select * from master where id=-1'
2 - Детайл = 'select * from master where id=:master_id'

Мастер Сиквенс беру при инсерте. Заполняю мастера потом заполняю детали много товара если нажимать на отмену то все отменяется в базе ничего ни пишется если нажимать сохранить то все сохраняеться.. и обновляю Главную форму датасет..
Мне не нравиться в этом подходе что генерация сиквенса при инсерте если отменяет юзер то секвенс уже генерировался.

Как та можно все это в одном процедуре сделать
Примерно заполнил шапку инвойса потом детали к нему... и сохранить
Try
СтартТранзакция
вызов процедуры
Коммит
except
Роллбек

Рефреш датасет

ХП Процедура примерно

insert into master (gen(seq,1),name)
returning id into :id

insert detail (mastid)
:id

Как такое реализовать

Детали как буду передавать в цикле? Или есть какойта способ пакетный передача

ViktorV
Devart Team
Сообщения: 202
Зарегистрирован: Чт 31 июл 2014 09:52

Re: Дайте пример заполнение мастер детайл (инвойс) одним хранимой процедурой?

Сообщение ViktorV » Чт 29 янв 2015 11:54

Генераторы возвращают значения (и сохраняют свои значения на диске) вне контекста транзакции пользователя. Вы можете получить более подробную информацию об этом в документации FireBird, в разделе "Generators and transactions":
http://www.firebirdsql.org/pdfmanual/Fi ... -Guide.pdf
Вопрос о заполнение мастер-детайл таблиц из одной хранимой процедуры зависит от архитектуры Вашего приложения, а не от компонентов IBDAC. Информацию об алгоритмах заполнения таблиц и коде процедур Вы можете найти в документации к серверу или на профильных форумах.

Ответить