Текущий архив: 2011.11.06;
Скачать: CL | DM;
Вниз
Работа двух пользователей в FireBird Найти похожие ветки
← →
Diplomat © (2010-01-29 05:44) [0]Доброго времени суток господа!! Подскажите, пожалуйста, как сделать обновление данных у "второго" пользователя, если "первый" внес какие-то изменения в базу данных.
Ежеопределенный ревреш путем отсоединения-подсоединения, или есть какой-то другой путь?
Используется IbQuery.
Заранее благодарен!!!
← →
Кщд (2010-01-29 07:36) [1]post_event
но лучше в консерватории поправить
← →
Sergey13 © (2010-01-29 08:35) [2]> [0] Diplomat © (29.01.10 05:44)
> Подскажите, пожалуйста, как сделать обновление данных у
> "второго" пользователя
Сделать кнопку "Обновить данные".
> Используется IbQuery.
Правильнее использовать IBDataSet
← →
Дмитрий С © (2010-01-29 18:44) [3]
> Сделать кнопку "Обновить данные".
>
Поддерживаю.
Если сильно надо автоматически, я бы сделал более простой запрос, который определяет, были ли какие либо изменения, и если были - то refresh-л б DataSet
← →
Diplomat © (2010-01-30 04:11) [4]простой запрос, который определяет, были ли какие либо изменения
можно примерчик?
← →
Кщд (2010-01-30 18:56) [5]>Diplomat © (30.01.10 04:11) [4]
post_event в триггере чем не устраивает?
← →
Diplomat © (2010-01-31 01:45) [6]Вообще-то да! Спасибо!
← →
Ega23 © (2010-02-01 13:39) [7]Плохо так делать.
Сидишь, смотришь на экран, испытываешь катарсис.
Тут ррраз - и пошло всё обновляться.
Теперь усложним ситуацию. 10 пользователей. Сначала один что-то обновил, через 10 секунд второй что-то удалил, ещё через 10 третий что-то добавил...
А десятый наблюдает постоянное обновление данных.
Если уж настольео необходимо уведомлять всех пользователей об изменениях в БД - сделай индикатор, наподобие ICQ. Штоб заморгало где-нить внизу экрана. А дальше - по желанию. Надо - обновил данные, нет - сидишь со старыми.
← →
Sergey13 © (2010-02-01 13:52) [8]> [7] Ega23 © (01.02.10 13:39)
Более того, раз два и более пользователя работают с одними и теми же данными, то велика вероятность того, что они работают или в сумашедшем доме или в тестовой базе, куда поленились нагенерировать достаточно данных. 8-)
ИМХО.
← →
Diplomat © (2010-02-01 16:39) [9]Более того, раз два и более пользователя работают с одними и теми же данными, то велика вероятность того, что они работают или в сумашедшем доме или в тестовой базе, куда поленились нагенерировать достаточно данных
База данных по людям, где вероятность того, что они например работают не только в сумасшедшем доме, а например в сельской администрации, а таких много, и все они в сети?
Насчет уведомления пользователя, надо где-то держать список IP подключенных?
← →
Ega23 © (2010-02-01 16:50) [10]
> База данных по людям, где вероятность того, что они например
> работают не только в сумасшедшем доме, а например в сельской
> администрации, а таких много, и все они в сети?
если есть отличная от нуля вероятность - значит рано или позно событие произойдёт. После этого твою программу признают расово-негодной.
> Насчет уведомления пользователя, надо где-то держать список
> IP подключенных?
Как вариант - достаточно держать таблицу с одним полем и одной записью - дата-время последней модификации данных. И время от времени "пинговать" эту таблицу.
← →
Sergey13 © (2010-02-01 16:53) [11]> [9] Diplomat © (01.02.10 16:39)
> а например в сельской администрации
И в понедельник с утра вся сельская администрация в полном составе из двух человек кинулась править личные данные пастуха Сидорова?
И стОит из-за этого огород городить? Не проще ли заблокировать запись при начале редактирования?
← →
Diplomat © (2010-02-01 19:18) [12]Простите, как заблокировать запись при начале редактирования у другого пользователя?
Дата-время последней модификации данных опять же будет известна, если закрыть и затем опять открыть IBDatabase, не так-ли?
← →
Diplomat © (2010-02-01 19:30) [13]Маловероятно, что двое будут править личные данные пастуха Сидорова.
Но более чем вероятно, что двое под разными ID номерами добавят например новое наименование села. Попробовал, так и есть...
← →
Sergey13 © (2010-02-02 08:33) [14]> [12] Diplomat © (01.02.10 19:18)
> как заблокировать запись при начале редактирования у другого
> пользователя?
Не помню как в ИБ6, а ФБ есть конструкция Select For Update With Lock.
> Но более чем вероятно, что двое под разными ID номерами
> добавят например новое наименование села.
Села как грибы после дождя растут? Кто угодно может их создавать?
От этого частично может уберечь уникальный индекс по названию. В остальном только жесткими административными методами вплоть до лишения премии.
Иначе полезут
Новые Васюки
НОВЫЕ ВАСЮКИ
новые васюки
← →
Diplomat © (2010-02-02 16:26) [15]У меня идет проверка по двум составляющим в данном случае по справочнику сел. Но, Select For Update With Lock - это я если правильно понял будет срабатывать в момент транзакции, если вызвать ее у второго пользователя?
← →
Sergey13 © (2010-02-02 16:33) [16]> [15] Diplomat © (02.02.10 16:26)
> У меня идет проверка по двум составляющим в данном случае
> по справочнику сел.
Не понял эту фразу. И что из того что идет проверка?
Вообще дело твое - хочешь проверять/обновлять - делай. Но смысла в этом обычно немного (если он вообще есть), а телодвижений в клиенте и на серваке требует постоянно. Причем непроизводительных телодвижений.
> Но, Select For Update With Lock - это я если правильно понял
> будет срабатывать в момент транзакции, если вызвать ее у
> второго пользователя?
Просто сработает холостой апдейт без срабатывания тригеров и запись будет залочена для изменения другой сессией.
← →
Diplomat © (2010-02-02 18:30) [17]Нашел некоторые ссылки на Select For Update With Lock, буду изучать.
Спасибо Sergey13!!!!!!!!!!!!!!!!!!!!!!!!
← →
Виталий Панасенко(дом) (2010-02-02 20:05) [18]если честно, я так до конца и не понял сути..но! если тебя интересует вариант, чтобы, как в Парадоксе, юзер начал редактировать запись и другие не могли ее редактировать одновременно(я все именно так понял), то:1)Использовать FIBPlus -там есть опция "блокировать запись". 2)Либо, используя IBX, самому заблокировать запись в контексте одной транзакции, холостым Update типа
update table1
set F1=F1
where условие по ключу одной записи
(FIBPlus как раз так и делает)
тогда другие "вражеские морды" не смогут редактировать эту запись, пока "пап" не закончит.. или кончит..:-)
← →
Diplomat © (2010-02-03 17:58) [19]Спасибо, буквально вчера про холостой Update читал, не совсем понял, то что написано, но...
FIBPlus - есть платная библиотека компонентов, или у нее есть столь же позитивная бесплатная версия?
← →
Diplomat © (2010-02-03 18:43) [20]Скажите пожалуйста, какую версию FIBPlus использовать? В чем ее триальность, как это может отразиться на будущих программах?
← →
arigatai (2010-02-06 22:11) [21]
> Скажите пожалуйста, какую версию FIBPlus использовать? В
> чем ее триальность, как это может отразиться на будущих
> программах?
если не ошибаюсь, триальная версия работает ТОЛЬКО при запущщщенной IDE Delphi :-)
P.S. а вообще, если планируешь и в будущем создавать что-либо серьёзное (с профессиональной точки зрения) на Delphi/Builder"e под СУБД Interbase/Firebird (особенно это касается последнего) - мой тебе совет: купи эти компоненты и не взрывай себе моСК (велосипед-то уже давно изобретён!!! ;-) ) http://www.devrace.com/ru/fibplus/ (1500р. за эти компоненты для профессионального разработчика - можно сказать почти бесплатно!).
← →
Виталий Панасенко(дом) (2010-02-06 22:30) [22]только весь прикол в чем: вот ты заблокировал запись, "шоб ни какая вражья морда" тебе не мешала.. отредактировал все.. а через 0,000514545 секунды после твоего изменения Я(Царь и Бог!) эту же самую запись ИЗМЕНИЛ! смысл? в любом случае - КТО ПОСЛЕДНИЙ, ТОТ И ПАПА! разве, что ты в этом промежутке (между 0,000514544 и 0,0005145450 начнешь снепшот тразакцию.. что мало вероятно...
Страницы: 1 вся ветка
Текущий архив: 2011.11.06;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.008 c