![]() |
|
![]() ![]() ![]() |
|
serega1983 |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.10.2013 Репутация: нет Всего: нет |
Доброго времени суток.
Есть база данных Firebird. Необходимо реализовать списание товаров со склада. Делаю следующее. 1) создаю расходную накладную 2) заполняю ее данными из таблицы склада 3) выставляю необходимо количество товара для списания 4) жму сохранить и записи из dataSet вставляются в таблицу расходная накладная 5) со склада вычитается кол-во товара, указанное в dataSet Проблема возникает со списанием товара со склада. Как делаю. Таблицы ![]() Форма ![]()
запрос для query
Последний вариант моего "мучения" был такой
списание со склада проходит успешно, а вставка в расходную не происходит - ошибка транзакция уже активна. Почему так происходит я понимаю. Как это победить - не знаю. Ответа на форумах ни в книгах найти не смог. Подскажите как правильно работать, с точки зрения компонентов, при изменении данных, больше чем в одной таблице или правильный подход к решению таких задач, возможно здесь компонент IBUpdateSql и не нужен вовсе. |
||||||
|
|||||||
DYUMON |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 321 Регистрация: 17.6.2006 Где: Новосибирск Репутация: 2 Всего: 3 |
если в птичке есть тригеры то кури в их сторону
|
|||
|
||||
serega1983 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.10.2013 Репутация: нет Всего: нет |
Не используя возможности БД(тригерры, хранимые процедуры), есть варианты? |
|||
|
||||
Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Так а зачем ты её второй раз стартуешь? Добавлено @ 15:19 Значит не понимаешь. Добавлено @ 15:20 Зачем используешь механизм cashedUpdate? Добавлено через 5 минут и 22 секунды У тебя обе операции должны проходить в рамках одной активной транзакции (IBTransactionWriteoffProducts). Обе квери должны быть подключены к одной и той же транзакции. Если условно, то так.
|
|||
|
||||
serega1983 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.10.2013 Репутация: нет Всего: нет |
FDataSet.Database.ApplyUpdates([FDataSet]); Здесь она стартует автоматически.
Не исключаем такого варианта =)
Для занесения изменений в БД после нажатия кнопочки "Сохранить"
Все привязано к транзакции IBTransactionWriteoffProducts; |
||||||||
|
|||||||||
serega1983 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 2.10.2013 Репутация: нет Всего: нет |
Проблема решилась сама, но скорее всего было
и это добавил
Всем спасибо. Это сообщение отредактировал(а) serega1983 - 3.10.2013, 09:29 |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Delphi: Базы данных и репортинг" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |