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

Вниз

Как передать TIBTransaction в качестве параметра процедуры.   Найти похожие ветки 

 
avers_sm   (2010-12-27 11:27) [0]

Уважаемые мастера, помогите разобраться. Приложение нестабильно работает. Эмпирическим путем установлено, что проблема скорее всего в механизме использования транзакций.
Использую Firebird 1.5.

Имеется фрейм GrItemsFrame, в котором реализована логика каталога товаров. Соответственно во фрейме имеются наборы данных, подвязанные к транзакции. Она размещена тоже во фрейме.

Данный фрейм используется на разных формах. Для его инициализации используется процедура Init, одним из параметров которой является транзакция, в контексте которой следует инициализировать наборы данных фрейма.


procedure TGrItemsFrame.Init(Transaction:TIBTransaction; WID:integer);
var i:integer;
begin

Groups.Transaction:=Transaction;
Wares.Transaction:=Transaction;
WaresUnit.Transaction:=Transaction;

Groups.Active:=true;
Wares.Active:=true;
WaresUnit.Active:=true;

....
end;


Далее при вызове определенной формы, которая имеет свою транзакцию, я инициализирую фрейм, в контексте этой транзакции:


procedure TWaresForm.FormActivate(Sender: TObject);
begin
Tr_Wares.Active:=true;
GrItemsFrame1.Init(Tr_Wares,ID:integer);
end;


Подскажите, правильна ли такая передача параметра? Ведь TIBTransaction - это указатель на объект, а потом при инициализации фрейма я этот указатель присваиваю датасетам.

Или такой механизм неприменим для TIBTransaction?


 
Ega23 ©   (2010-12-27 11:43) [1]


> Подскажите, правильна ли такая передача параметра? Ведь
> TIBTransaction - это указатель на объект, а потом при инициализации
> фрейма я этот указатель присваиваю датасетам.


Передача параметра таким образом - вполне допустима. Более того, в целом именно так и делается.
Другой вопрос - а что с логикой? И тут уже на него никто, кроме тебя не ответит.


 
avers_sm   (2010-12-27 11:57) [2]


> Передача параметра таким образом - вполне допустима. Более
> того, в целом именно так и делается.
> Другой вопрос - а что с логикой? И тут уже на него никто,
>  кроме тебя не ответит.


Спасибо за ответ. А насчет логики - буду ковырять дальше. Перед тем как задать следующий вопрос его нужно правильно сформулировать.


 
Sergey13 ©   (2010-12-27 12:12) [3]

> [0] avers_sm   (27.12.10 11:27)
> Далее при вызове определенной формы, которая имеет свою транзакцию
А зачем ей СВОЯ транзакция?


 
avers_sm   (2010-12-27 12:18) [4]


> А зачем ей СВОЯ транзакция?


Исключительно для разработки. Например, хотя бы создать список полей датасету.


 
Sergey13 ©   (2010-12-27 12:33) [5]

> [4] avers_sm   (27.12.10 12:18)

Я имею в виду КАЖДОЙ форме СВОЯ транзакция зачем? Какой в этом смысл? Это надежнее чем одна транзакция или что?
В чем выражается
> Приложение нестабильно работает. Эмпирическим путем установлено,
> что проблема скорее всего в механизме использования транзакций.
?


 
avers_sm   (2010-12-27 13:13) [6]


> Sergey13 ©   (27.12.10 12:33) [5]
> Я имею в виду КАЖДОЙ форме СВОЯ транзакция зачем? Какой
> в этом смысл? Это надежнее чем одна транзакция или что?
> В чем выражается


Нет, не в каждой. Только в справочниках. Именно справочники могут вызываться или со своей транзакцией, или в контексте транзакции той формы, которая его вызвала.

Таким образом, пользователь может работать в разных режимах со справочником:
1. Обособлено и потом подтвердить/отменить свои действия.
2. Из какого-то документа. Например, при добавлении товара нужного не обнаружено и вызывается справочник (в контексте транзакции документа) и туда сначала добавляются товары, а потом уже переносятся в документ. Но при откате документа и все изменения в справочнике тоже будут отвергнуты.


 
Sergey13 ©   (2010-12-27 13:26) [7]

> [6] avers_sm   (27.12.10 13:13)

Ну так а в чем выражается нестабильность то?
Каковы параметры транзакции кстати?

> 1. Обособлено и потом подтвердить/отменить свои действия.
И много отменяют? И интересно как это реализовано - начал транзакцию и ущел думать "ту би ор нот ту би"?

> Но при откате документа и все изменения в справочнике тоже будут отвергнуты.

Зачем? Что плохого в том, что в справочнике будет еще одно правильное (оно ведь не от балды туда вводилось?) значение? ИМХО конечно.


 
Petr V. Abramov ©   (2010-12-27 13:33) [8]


> Sergey13 ©   (27.12.10 13:26) [7]

да ладно, особого криминала в подходе нет.


 
avers_sm   (2010-12-27 13:47) [9]


> Ну так а в чем выражается нестабильность то?


Периодически в разных местах вылетают runtime ошибки. Нерегулярно. Системы в их появлении пока не нашел. Сейчас нет смысла все это описывать. Пока разбираюсь. Сомневался в механизме передачи транзакции в качестве параметра, вот и задал вопрос. Получил исчерпывающий ответ:

> Ega23 ©   (27.12.10 11:43) [1]
>
> Передача параметра таким образом - вполне допустима. Более
> того, в целом именно так и делается.


Теперь буду разбираться дальше.
> avers_sm   (27.12.10 11:57) [2]
>  Перед тем как задать следующий вопрос его нужно правильно
> сформулировать.


:)

Возможно, проблема с EhLib. Попробую поменять версию библиотеки.

P.S.
А насчет замечаний по логике, то это субъективный подход. Как говорится кому что нравится. :)

В любом случае всем спасибо за участие.


 
Ega23 ©   (2010-12-27 14:00) [10]


> Периодически в разных местах вылетают runtime ошибки. Нерегулярно.
>  Системы в их появлении пока не нашел.

Логи, стек вызова, и снова логи. Много логов.
Только так.


 
Дмитрий Белькевич   (2011-01-02 00:45) [11]

Эврикалог в помощь.



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

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

Наверх





Память: 0.48 MB
Время: 0.003 c
15-1368541324
Es
2013-05-14 18:22
2013.11.03
Падение приложения, crash без визуализации


15-1369142209
p
2013-05-21 17:16
2013.11.03
Помогите перевести


15-1367900957
O'ShinW
2013-05-07 08:29
2013.11.03
С днем Радио!


15-1368909003
Юрий
2013-05-19 00:30
2013.11.03
С днем рождения ! 19 мая 2013 воскресенье


2-1360298852
Andrey K
2013-02-08 08:47
2013.11.03
Вкладка Diagram





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