Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Вниз

Помогите! Какие-то проблемы с 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 вся ветка

Форум: "Базы";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
3-27906
zks
2002-11-19 04:17
2002.12.09
Интересное явление со вставкой записи в MSSQL7


3-27875
Youri
2002-11-19 14:57
2002.12.09
Полностью не открывается база!


4-28352
AndyDN
2002-10-28 12:21
2002.12.09
Размер стека потока


1-28127
FROM_X
2002-11-28 17:03
2002.12.09
Innerfuse Pascal Script


4-28347
TankMan
2002-10-28 09:58
2002.12.09
Как описывать реакцию на события динамически создаваемых объектов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский