Вниз
Скачать: CL | DM;

Помогите! Какие-то проблемы с IBTransaction.   Найти похожие ветки 

← →
NeyroSpace ©   (2002-11-19 17:41) [0]

Нужно вставить 1-ну запись в главную таблицу и n-записей в подчиненную.
Если я не глючу, то делается это так:
DataModule1.IBTransaction1.StartTransaction;
try
Pquery1.execsql(вставляем в главную)
...
Fquery1.execsql(вставляем в подчин)
...
FqueryN.execsql(вставляем в подчин)

DataModule1.IBTransaction1.Rollback;
except
DataModule1.IBTransaction1.Rollback;
end


У всех Fquery1 и Pquery1 указана IBTransaction1.
Но при выполнении DataModule1.IBTransaction1.StartTransaction;
Выдает ошибку: Transaction is active
Почему?


← →
Prooksius ©   (2002-11-19 20:08) [1]

Потому, что ты уже стартовал ее когда-то.
Для изменений в базе лучше пользоваться отдельными транзакциями.
Тогда тебе не придется постоянно беспокоиться насчет этого.


← →
oss ©   (2002-11-20 00:33) [2]

try
Pquery1.execsql(вставляем в главную)
...
Fquery1.execsql(вставляем в подчин)
...
FqueryN.execsql(вставляем в подчин)

DataModule1.IBTransaction1. Rollback; // может commit ?
except
DataModule1.IBTransaction1.Rollback;
end




← →
oss ©   (2002-11-20 00:35) [3]

и стартует она сама


← →
Олеся ©   (2002-11-20 05:01) [4]

Всегда проверяю активновсть транзакции
if not IBTransaction1.active then IBTransaction1.StartTransaction

if IBTransaction1.active then IBTransaction1.Commit

if IBTransaction1.active then IBTransaction1.Rollback


← →
Victor_Cr ©   (2002-11-20 08:48) [5]

2 Олеся © (20.11.02 05:01)
Это совсем не обызательно если транзакция у тебя выполняеться отдельной процедурой, и точка входа в StartTransaction...Commit(Rollback) единственная. За тебя все сделает блок try..except.

2 NeyroSpace © (19.11.02 17:41)

А ты действительно глючишь :-).

DataModule1.IBTransaction1.StartTransaction;
try
Pquery1.execsql(вставляем в главную)
...
Fquery1.execsql(вставляем в подчин)
...
FqueryN.execsql(вставляем в подчин)

DataModule1.IBTransaction1.Commit;
except
DataModule1.IBTransaction1.Rollback;
end


каким типом являються у тебя Pquery1,Fquery1,FqueryN. Если это обычные TQuery, то ты делаешь что-то дикое. Даже если в SQL тексте у них запросы на удаление, изменение, вставку...


← →
Dizzy   (2002-11-20 10:39) [6]

Я обычно делаю так:
if DataModule1.IBTransaction1.Active then
try
DataModule1.IBTransaction1.Commit;
except
DataModule1.IBTransaction1.Rollback;
end;

DataModule1.IBTransaction1.StartTransaction;
try
Pquery1.execsql(вставляем в главную)
...
Fquery1.execsql(вставляем в подчин)
...
FqueryN.execsql(вставляем в подчин)

DataModule1.IBTransaction1.Commit;
except
DataModule1.IBTransaction1.Rollback;
end
DataModule1.IBTransaction1.StartTransaction;

При этом TIBTransaction одна на весь проект.



← →
NeyroSpace ©   (2002-11-20 10:40) [7]

1.
DataModule1.IBTransaction1.Commit; //Rollback <- опечатка :-\
except
DataModule1.IBTransaction1.Rollback;
end

2. Pquery1,Fquery1:TIBQuery

С Transaction is active разобрался...
>Олеся © (20.11.02 05:01) спасибо.

Тогда еще один вопросик.
В IBUpdateSQLdocuments есть список параметров. Как до них добраться?
Делаю так, но не уверен, что правильно...

//Устанавливаем значение внешнего ключа из главной таблицы
DataModule1.IBQueryDocuments.ParamByName("ID").AsInteger := iPARENT;
DataModule1.IBUpdateSQLdocuments.SetParams(ukInsert);
DataModule1.IBUpdateSQLdocuments.ExecSQL(ukInsert);
//IBQueryDocuments <-связан-> IBUpdateSQLdocuments


← →
Alex-xxc   (2002-11-20 11:22) [8]

Я делаю следующим образом: в обработчике события OnSQLChanging у Query прописываю:

try
Query.CheckClosed;
except
Query.Close;
end;
if Query.Transaction.Active=False then Query.Transaction.StartTransaction;

при условии, что пользуештся TIBSQL. Единственное, за чем остается следить - это делать commit/rollback


← →
Олеся ©   (2002-11-21 05:37) [9]

>NeyroSpace
Если этот вопрос ко мне
>В IBUpdateSQLdocuments есть список параметров. Как до них >добраться?
>Делаю так, но не уверен, что правильно...
то лучше напиши, что тебе надо сделать, может здесь параметры совсем и не нужны (честно говоря мне ни разу не пришлось делать что-то подобное, хотя IBUpdateSQL использую довольно часто)




Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
1-28064
Карлсон
2002-11-27 17:51
2002.12.09
зеркальное отображение курсора.


14-28258
deep.1
2002-11-17 22:31
2002.12.09
Люди, а кто нить знает о замене консоли под Вынь


1-27926
Cranium
2002-11-28 22:58
2002.12.09
Как запретить возникновения события компонента?


14-28298
TTCustomDelphiMaster
2002-11-19 21:03
2002.12.09
Кто нибудь играл на Нью-Йоркской фондовой бирже?


3-27816
Макс
2002-11-20 12:55
2002.12.09
Сортировка иерархических данных




   Наверх