Обычно я в своих проектах использую хранимые процедуры. Например пользователь открывает окно, вводит данные в поля ввода, при нажати на "Сохранить" пишется код:
Код: Выделить всё
SP.Active := false;
SP.StoredProcName := 'MyProc';
SP.Prepare;
// ------------------------------------------------------------------------------
// Присваиваем параметры
// ------------------------------------------------------------------------------
SP.Params.ParamByName('MyParam').Value := MyValue;
try
WriteTr.StartTransaction;
//
SP.ExecProc;
//
WriteTr.Commit;
except
on e: EIBCError do
begin
//мои действия
end;
В текущем проекте необходимо редактировать записи прямо в DBGrid. К IBСQuery, как полагается, прикреплено две транзакции. При переходе на следующую запись в гриде, либо при сохранении командой DBNavigator`а транзакция подтверждается. Все хорошо. Но программа будет многопользовательская и запись нужно будет блокировать на время редактирования (на определенное время, например на 2 минуты). Устанавливаю свойство у IBСQuery LockMode в lmLockImmediate, свойство PrepareUpdateSQL в Fasle. IBСQuery начинает подтвеждать транзакции по CommitRetaining. При LockMode lmNone - все нормально. Транзакция подтверждается по Commit. Можно ли сделать так, чтобы IBCQuery подтверждала транзакцию по Commit?
Заранее спасибо.