Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IBDAC и транзакции 
:(
    Опции темы
GrigoriyFomin
Дата 19.5.2013, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



Знаю, что тема неоднократно поднималась, однако так докумекать я сам и не могу. 
Есть приложение на дельфи с компонентами ibdac (файрберд 2.5.2)
На рабочем примере покажите, как например, работать с транзакциями. Как ПРВИЛЬНО их создавать, комиттить, что после этого делать надо, если открыто куча IBCTable и IBCQuery? И почему измененные данные становятся доступны другим пользовательям, только если я переподключу IBConnection. Во всех компонентах стоит autocommit:=true.
Отсылать на чтение манов не стоит  - читал, а просветление так и не наступает :(((((
PM MAIL   Вверх
Akella
Дата 19.5.2013, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



после коммита нужно выполнять переоткрытие набора данных
т.е. полностью перечитать данные из базы

Добавлено через 8 минут и 3 секунды
я всё же рискну и дам ссылку
http://www.ibase.ru/devinfo/ibtrans.htm

изучать до просветления  smile 
там должны быть и примеры, но на базе IBX
PM MAIL   Вверх
GrigoriyFomin
Дата 19.5.2013, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



Почитаю до просветления обязательно, но как корректно именно работать с транзакцией - как ее создавать, или использовать дефолтную? Как узнать - нужен вообще коммит или ничего не поменялось? вот например задача в несколько таблиц последовательно внести изменения, ессно, если на каком-то этапе произойдет сбой - нужно отменить предыдущие изменения. Я так понимаю -  нужно в начале кода стартануть транзакцию и в конце вызвать коммит, либо роллбэк при ошибке. Но если в компонентах есть свойства AutoClose, AutoPrepare  и AutoCommit - как их нужно выставлять? 
Заранее спасибо

Добавлено через 3 минуты и 10 секунд
Просто те маны, что я нахожу через поиск, описывают либо в общем принцип транзакций, либо применительно к FB, но как их использовать в самих компонентах Delphi и на примере установки свойств и вызова методов - я не встречал. То есть типовые примеры кода для использования механизма транзакций вручную, не полагаясь на дефолтное поведение
PM MAIL   Вверх
Akella
Дата 19.5.2013, 18:51 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Её не надо создавать. Её надо стартовать.

Добавлено через 34 секунды
Возможно в настройках компонент уже есть autostart. Ведь autocommit есть же.

Добавлено через 1 минуту и 17 секунд
Цитата(GrigoriyFomin @  19.5.2013,  18:23 Найти цитируемый пост)
Как узнать - нужен вообще коммит или ничего не поменялось?

 smile  smile  smile  smile 

делай подтверждение после post

Добавлено через 2 минуты и 11 секунд
тебе вообще надо почитать про базы и про транзакции 1-2 книжки, слишком много у тебя вопросов довольно простых, которые уже описаны 100500 раз во многих источниках
PM MAIL   Вверх
GrigoriyFomin
Дата 19.5.2013, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 16.11.2010

Репутация: нет
Всего: нет



В теории это я все примерно понимаю, мне нехватает РЕАЛЬНОГО примера работы с транзакциями с данными компонентами. Ведь не для того создаются такие компоненты, чтоб потом напрямую с АПИ сервера работать, потому что в книжках описывается именно работа с АПИ.
То есть напрмер, как IBDAC стартовать транзакцию, как указать, какие действия нужно совершать в пределах ДАННОЙ транзакции, сделал коммит/ролллбэк - что делать с самими датасетами. Почему-то при превентивном коммите вылазит ошибка типа "нечего коммитить - ничего не поменялось".
PM MAIL   Вверх
Akella
Дата 19.5.2013, 22:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



При чем здесь, апи?
Тебе дают готовый инструмент, где есть всего 2 метода: подтвердить и откатить. Тебе самому решать нужно когда и что применять.

Добавлено @ 22:05
Цитата(GrigoriyFomin @  19.5.2013,  20:34 Найти цитируемый пост)
потому что в книжках описывается именно работа с АПИ.

Значит не те книжки читаешь почитай книжку Хелен Борри по firebird`у.
А ту ссылку читал? Там что, тоже про апи?

Добавлено @ 22:07
С компонентами наверняка идут примеры, посмотри их, изучи.

Добавлено @ 22:08
Цитата(GrigoriyFomin @  19.5.2013,  20:34 Найти цитируемый пост)
То есть напрмер, как IBDAC стартовать транзакцию,

Там же есть компонента-транзакция?
Вот и пиши
TxxTransaction.Start
выполняешь какие-то изменения
TxxTransaction.Commit

Добавлено @ 22:10
после Commit нужно переоткрыть НД (Набор Данных, DataSet -  IBCTable или IBCQuery), чтобы прочесть изменённые записи

Добавлено @ 22:11
вот здесь есть примеры
http://forum.vingrad.ru/forum/topic-194159.html
и даже мой, но на основе IBX + FIBPlus

Добавлено через 12 минут и 16 секунд
Здесь есть пример для FibPlus http://www.devrace.com/ru/fibplus/articles/2171.php
PM MAIL   Вверх
RusMikle
Дата 28.11.2013, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2011

Репутация: нет
Всего: нет



Доброе время суток!
Нахожусь сейчас примерно в той же ситуации как и Вы в момент написания этого сообщения.
Удалось что то нарыть? Я уже до дыр зачитал и книги и статьи по firebird и ранзакциям. На уровне базы все уже довольно понятно как работает но на уровне компонентов вроде и знаю какие есть и какие свойства имеют но как и в какой ситуации как настраивать пока не очень понятно. До этого работал с ado и mssql, особых проблем не возникало. Написал уже и в форум разработчиков сюда и на sql.ru  и на хабр. Пользы пока маловато. Вопросы примерно те же что и Вы сформулировали. Если что то интересное нашли книгу или статью поделитесь ссылочкой.
Заранее спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0650 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.