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

Вниз

Транзакции. откат не работает.   Найти похожие ветки 

 
Наташа   (2003-03-22 08:42) [0]

Уважаемые Мастера Delphi! Помогите пожалуйста советом. Начинаю транзакцию и
выполняю вызовы ХР. Сначала ХП вставки общих данных о заказе List_Order,
затем ХП вставки данных о самом заказе orders
затем Commit или Rollback. В случае ошибки параметрах для ХП Вставки в сам заказ orders
выдает сообщение об откате, но при этом информация в List_order вставляется.
IBTransaction.StartTransaction;
Try
вызов ХП вставки в List_Order;
вызов Хп вставки в Orders;
IBTransaction.Commit; ShowMessage("Выполнено")
Except
IBTransaction.Rollback;
ShowMessage("откат");
End;
В чем может быть дело? Заранее благодарна.


 
zacho   (2003-03-22 09:04) [1]

В какой-то из версий IB был баг, при котором если в ХП был INSERT и EXCEPTION, INSERT не откатывался. Возможно у тебя именно этот случай. Попробуй перейти на более старшую версию IB, а еще лучше - FB.
P.S. Описание бага было, кажется, где-то на www.ibase.ru


 
Наташа   (2003-03-22 09:08) [2]

А что такое "баг"?


 
zacho   (2003-03-22 09:14) [3]


> Наташа © (22.03.03 09:08)

:-)
"баг" (англ. bug) - ошибка в коде. В данном случае - ошибка в коде IB


 
Наташа   (2003-03-22 09:24) [4]

Большое спасибо и за совет и за разъяснения!


 
Olivka   (2003-03-22 13:56) [5]

У меня недавно была та же проблема. Хотя я использую FIBplus для доступа к ИБ, но все решалось тем, что транзакция откатывалась правильно, а действия не отменялись, потому что это оказывались разные транзакции. Выход был в том, чтобы выполнять вызовы Select (хп и другие операторы) с помощью компонента Query, а не других компонент. Тогда все действия были в контексте именно этой начатой транзакции. Если объясняю непонятно - спрашивайте. Вы не указали как вы вызываете свои хп.


 
Наташа   (2003-03-22 14:10) [6]

Вызов происходит следующим образом
IBTransaction.StartTransaction;
Try
With SPInsert_LO do
begin
ParamByName("iDate").AsDate:=Date;
ParamByName("iManager").AsString:=fLogin.edPassword.Text;
ParamByName("iC_id").AsInteger:=CodCl;
и .т.д. другие параметры
ExecProc;
NumberOrder:=ParamByName("rLO_id").AsInteger;
end;
With SPInsertOrder do
begin
ParamByName("iLO_Id"):=NumberOrder;
ParamByName("iPr_Id").AsInteger:=Table["Pr_Id"];
ParamByName("iCount").AsInteger:=Table["Counts"];
и.т.д. другие параметрыж
ExecProc;
end;
IBTransaction.Commit; ShowMessage("Выполнено")
Except
IBTransaction.Rollback;
ShowMessage("откат");
End;
Тексты ХП , если требуется
SPInsert_LO
rLO_Id:=gen_Id(LO_Id_Gen,1);
Insert Into List_Order(Date, Manager, C_Id ....)
Values(:iDate,:iManager, :iC_Id...)
SPInsert_Order
Insert Into Orders (LO_Id, Pr_id, Counts... )
Values (:iLO_Id, :iPr_Id, :iCount)


 
Olivka   (2003-03-22 14:18) [7]

что такое у тебя SPInsert_LO


 
Наташа   (2003-03-22 14:30) [8]

SPInsert_LO это название компонента IbStorecProc, связанного с ХР вставки в list_order


 
Olivka   (2003-03-22 14:41) [9]

Сравнивать с FIBplus конечно, особо нельзя, а попробуй взять компоненты IBquery и выполнять запросы и вызовы хп через него. И не забудь в свойстве transaction этого компонента указать свой компонент транзакцию. Еще запусти SQL-монитор какой-нибудь и проверь логи. Там будут номера транзакций. так вот - все действия должны проходить под одним номером транзакции и она же должна в случае чего подтверждаться или откатываться


 
zacho   (2003-03-22 15:03) [10]

Все-таки попробуй поставить FB вместо IB, или более свежую версию IB. Кстати, напиши какой версией IB ты пользуешся.
А IBX или FIBPlus - особой разницы в твоем случае нет, идеология работы и с тем, и с тем одинаковая, все равно все они родились из FIBC


 
Наташа   (2003-03-22 15:07) [11]

IB6


 
zacho   (2003-03-22 15:33) [12]


> Наташа © (22.03.03 15:07)

IB 6.0 ? Тогда выбрось это глюкало и ставь хотя бы IB 6.5. А лучше, все-таки, FB. Посмотри www.ibase.ru, там есть информация по разным версиям IB и клонов.


 
Наташа   (2003-03-22 19:17) [13]

Всем Большое Спасибо!!!


 
zacho   (2003-03-22 19:47) [14]


> Наташа © (22.03.03 19:17)

Так проблема все-таки решилась или нет ? Любопытно, однако :)


 
Наташа   (2003-04-03 22:47) [15]

Проблема решилась.



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

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

Наверх





Память: 0.47 MB
Время: 0.009 c
8-67391
kpo
2003-01-19 13:39
2003.04.21
вставка flash ролика


6-67415
SkyKiller
2003-02-27 17:17
2003.04.21
MAPI - Где закопана собака??? :(


3-67140
Юров Владимир
2003-04-03 10:11
2003.04.21
MS SQL + Delphi


3-67130
aleks
2003-04-02 18:44
2003.04.21
Сортировка , фильтрация по вычисляемому полю


6-67425
nester
2003-02-25 15:41
2003.04.21
Как отобразить в браузере страничку браузер был без меню





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский