lazarus = Firebird - транзакции

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: lazarus = Firebird - транзакции

Сообщение bpg » 17.04.2018 20:41:09

Ого, сколько написали ;-)
Короче, попытаюсь подробнее.... есть приёмная комиссия, в разных корпусах сидят девочки (студентки), к ним заходят люди и они только вносят в базу данные. Естественно они имеют право ошибаться.
В другом месте другой человек берет из базы данные, печатает договор и т.д. и и приглашает родителей или абитуриента подписать. И вот тут и засада. Все думают что в базе данные нормальные, а на самом деле.... я допустим увидел, что Иванов Иван Иванович женщина и допустим эскимос, делаю правку и никто эти данные не видит, они не обновились, а этот человек спокойно печатает договор с усатой женщиной. Поэтому и нужны мне ивенты и обязательная синхронизация данных, если честно, всегда думал. что этим занимается сам сервер баз данных. То же самое происходит при формировании отчета, ты допустим решил глянуть сколько по каким специальностям документов подано, а тут оказывается данные еще не обновились.
А тут выплывает такой косяк, на тестовых машинах пробовал одновременно и в программе что-то делать, и тут же в IBExpert правлю таблицу, все работает. Обновляется и т.д. Но до тех пор, пока я делаю одно изменения и сразу комит транзакции, а если же я удалил несколько записей или сделал правки, а только потом делаю комит, то прога намертво виснет.

Что посоветуете, может я себе чересчур мозг выи...ал? Может все проще делается?
Проект бесплатный и на чистом энтузиазме.

P.S. В голове у меня крутиться что-то такое. Если пользователь имеющий полномочия печатать справки, отчеты , договора и т.д. начал что то этакое делать, то всем программа должна послать какое то сообщение, что все теперь только readonly. И после формирование снова сообщение, продолжайте работать. Это как реализовать? Или все проще?
Простите за сумбур.
bpg
новенький
 
Сообщения: 17
Зарегистрирован: 28.11.2017 21:23:18

Re: lazarus = Firebird - транзакции

Сообщение olegy123 » 18.04.2018 07:51:11

Посылай сигнал, а у клиентов обновляй таблицы с перезапуском транзакций.

Добавлено спустя 3 минуты 29 секунд:
с IBExpert у меня были тоже неприятные вещи.. попробуй другой инструмент.

Добавлено спустя 12 минут 46 секунд:
bpg писал(а):В голове у меня крутиться что-то такое. Если пользователь имеющий полномочия печатать справки, отчеты , договора и т.д. начал что то этакое делать, то всем программа должна послать какое то сообщение, что все теперь только readonly. И после формирование снова сообщение, продолжайте работать. Это как реализовать? Или все проще?
База тебе предлагает определенный функционал, не более того что написано в документации.. Online перевод подключенных клиентов из режима редактирования и в режим только чтения - я не встречал. Это очень частный случай, который требует дополнительных ветвлений - разработчики даже о них не думают.
Значит нужно этот функционал реализовать на клиенте. Можно сделать техзвенку..

bpg писал(а):делаю правку и никто эти данные не видит

делай состояние документа, создан/проверяется/проверен. Кнопка печать активизируется при статусе проверен.
olegy123
энтузиаст
 
Сообщения: 895
Зарегистрирован: 25.02.2016 12:10:20

Re: lazarus = Firebird - транзакции

Сообщение alexs » 18.04.2018 12:42:19

bpg
Вообще тебе надо почитать для чего нужны транзакции и как с ними работать в FireBIrd
В общем случае тебе надо делать комит после каждого изменения данных в базе.
Это либо одна строка - либо несколько строк, но в любом не держи не подтверждённые транзакции вообще.
Оператор (девочка) что-то измененила - программа тут же делает комит.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3617
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: lazarus = Firebird - транзакции

Сообщение bpg » 18.04.2018 17:01:43

olegy123, alexs, и всем спасибо.
olegy123 писал(а):с IBExpert у меня были тоже неприятные вещи.. попробуй другой инструмент.
скорее всего был глюк.
olegy123 писал(а):делай состояние документа, создан/проверяется/проверен. Кнопка печать активизируется при статусе проверен.
хорошая идея, спасибо
alexs писал(а):Оператор (девочка) что-то измененила - программа тут же делает комит.
К этому и пришёл.

Добавлено спустя 4 минуты 42 секунды:
Со времен Delphi привык работать с БД в активном режиме при проектировании.
Т.е у меня Connection, Query и т.д. активны и я вижу данные в DBGrid например.
Не встречались ли у Вас при разработке в Lazarus глюки при таком подходе?
Может надо подключаться при запуске программы и меньше проблем будет? Может глючить из за этого?
bpg
новенький
 
Сообщения: 17
Зарегистрирован: 28.11.2017 21:23:18

Re: lazarus = Firebird - транзакции

Сообщение alexs » 18.04.2018 20:35:53

bpg писал(а):Не встречались ли у Вас при разработке в Lazarus глюки при таком подходе?

Всё точно также.
Недостаток - лишние запросы, тормоза.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 3617
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: lazarus = Firebird - транзакции

Сообщение olegy123 » 19.04.2018 14:59:24

bpg писал(а):Может надо подключаться при запуске программы и меньше проблем будет? Может глючить из за этого?
В дизайн режиме, естественно данные ведут себя как в работе. Это значительно упрощает разработку.. Так что в дизайн - тоже включаются транзакции.
При запуске компоненты проходят инициализацию. и если в дизайн режиме было активно, то в реальном оно активизируется. Так же проще. Но не всегда правильно "в тяжелых работе".. Особенно когда нужно контролировать запуск поочередно. а при всех включенных - открытие формы может сильно тормозить программу.
Поэтому правильно тут отключать автоматизацию и переходить на ручник.
olegy123
энтузиаст
 
Сообщения: 895
Зарегистрирован: 25.02.2016 12:10:20

Re: lazarus = Firebird - транзакции

Сообщение bpg » 20.04.2018 21:01:53

olegy123Спасибо.
Кстати, тут на форуме вообще нет системы "спасибо" ? Или я ....? Искал не нашел, почти везде есть спасибо или рейтинг, оценки и т.д.
bpg
новенький
 
Сообщения: 17
Зарегистрирован: 28.11.2017 21:23:18

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Рейтинг@Mail.ru