Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

FireBird 2.0 многопользовательская работа


DelphiLexx ©   (2007-04-27 11:20:00) 

Я разрабатываю приложение c БД, которое работает с FireBird2.0. Возникла следующая проблема: открываем два экземпляра моего приложения, сначала меняем значение записи в 1-ом экземпляре приложения но Transaction.Commit не делаем, а затем меняем значение этой же записи во 2-ом экземпляре программы, выскакивает ошибка ...wait transaction... Использовать CashedUpdate нет желания, да и с помощью него нельзя выделавать определенные сложности, например, при изменении значения ячеек для определенных записей в BeforePost вызываются разные Sql-запросы, т.е. я создается FibQuery c определенном SqlText'ом и выполняется в текущей транзакии. Скажите, пожалуйста, как можно заставить FireBird 2.0 редактировать одну и туже запись разным пользователям без конфликтом. Вообщем нужно как-то это сделать без CashedUpdates.


Виталий Панасенко   (2007-04-27 17:10:00) [1]


> DelphiLexx ©   (27.04.07 14:59) [14]
>
> > А триггеры зачем тогда придумали ?
>
> Я исхожу из позиций чтобы БД была как много проще. Это мне
> нужно чтобы обновление БД у клиента происходила как можно
> более спокойней

Думаю, вряд ли они будут более спокойней...


Desdechado   (2007-04-27 15:08:00) [2]

> Может тебе свою СУБД разработать?
А у него и так каждому юзеру по базе. Остается забыть акцесс, пересесть на CSV.


Sergey13   (2007-04-27 15:06:00) [3]

> [14] DelphiLexx ©   (27.04.07 14:59)

> Я исхожу из позиций

Странные у тебя позиции. Транзакции ты хочешь использовать через причинное место потому что кеширование тебе не нравится. Тригеры мешают спать при обновлении клиентов.
Может тебе свою СУБД разработать?


DelphiLexx   (2007-04-27 14:59:00) [4]


> А триггеры зачем тогда придумали ?

Я исхожу из позиций чтобы БД была как много проще. Это мне нужно чтобы обновление БД у клиента происходила как можно более спокойней


Виталий Панасенко   (2007-04-27 13:36:00) [5]


> DelphiLexx ©   (27.04.07 11:20)  


> в BeforePost вызываются разные Sql-запросы, т.е. я создается
> FibQuery c определенном SqlText'ом и выполняется в текущей
> транзакии
А триггеры зачем тогда придумали ?


Виталий Панасенко   (2007-04-27 13:35:00) [6]


> DelphiLexx ©   (27.04.07 11:20)  


> в BeforePost вызываются разные Sql-запросы, т.е. я создается
> FibQuery c определенном SqlText'ом и выполняется в текущей
> транзакии
А триггеры зачем тогда придумали ?


TohaNik   (2007-04-27 13:05:00) [7]

Я так понял что доступ через FIB
Пропиши в параметры пишущей транзакции

wait
no_rec_version

но в свете
> при изменении значения ячеек для определенных записей в
> BeforePost вызываются разные Sql-запросы, т.е. я создается
> FibQuery c определенном SqlText'ом и выполняется в текущей
> транзакии

все это специфично очень...


Sergey13   (2007-04-27 11:50:00) [8]

> [9] Jan1   (27.04.07 11:45)
> откат к нужному состоянию.

Часов через 5-7 после отрытия транзакции. 8-)


Jan1   (2007-04-27 11:45:00) [9]


> А что это даст?

откат к нужному состоянию.


ЮЮ   (2007-04-27 11:42:00) [10]

>с кучей записей которые может редактировать пользователь,

И кому такие данные представляют интерес, если нет ни крайнего, ни достоверного источника этих данных?


Sergey13   (2007-04-27 11:39:00) [11]

> [4] Jan1   (27.04.07 11:37)

А что это даст?


ЮЮ   (2007-04-27 11:39:00) [12]

[2] DelphiLexx ©   (27.04.07 11:31)

Куча пользователей целый день вбиваю всякую чушь в т.н. "справочники", каждый, что взбредет ему в голову. А в конце дня эта чушь в многократном количестве сваливается в одну таблицу. И это называется справочником?


Sergey13   (2007-04-27 11:39:00) [13]

> [2] DelphiLexx ©   (27.04.07 11:31)
> или кнопки в виде дискетке

Это конечно важнейший фактор. Попробуй изменить рисунок более нейтральный. 8-)


Jan1   (2007-04-27 11:37:00) [14]


> при этом пользователь может отменить внесенные изменения
> с момента нажатия дискетки с помощью кнопки Undo.

можно поиграться с вложенными транзакциями.
читать: http://www.ibase.ru/devinfo/savepoints.htm


Desdechado   (2007-04-27 11:34:00) [15]

>  Использовать CashedUpdate нет желания,
В этом и проблема. Обрети желание сам или юзеры помогут.


DelphiLexx   (2007-04-27 11:31:00) [16]


> > [0] DelphiLexx ©   (27.04.07 11:20)
> > но Transaction.Commit не делаем

Почему не делаю сразу транзакцию обяъясняю, потому что приложение содержит кучу справочников, с кучей записей которые может редактировать пользователь, причем сохранение в БД происходит при нажатии кнопки ОК или кнопки в виде дискетке, при этом пользователь может отменить внесенные изменения с момента нажатия дискетки с помощью кнопки Undo.


Sergey13   (2007-04-27 11:23:00) [17]

> [0] DelphiLexx ©   (27.04.07 11:20)
> но Transaction.Commit не делаем

Молоток роняем, но ногу не убираем. Почему больно то?


Наверх

Титульная страница Поиск, карта сайта Написать письмо