-
Доброго времени суток господа!! Подскажите, пожалуйста, как сделать обновление данных у "второго" пользователя, если "первый" внес какие-то изменения в базу данных.
Ежеопределенный ревреш путем отсоединения-подсоединения, или есть какой-то другой путь? Используется IbQuery. Заранее благодарен!!!
-
post_event но лучше в консерватории поправить
-
> [0] Diplomat © (29.01.10 05:44) > Подскажите, пожалуйста, как сделать обновление данных у > "второго" пользователя
Сделать кнопку "Обновить данные".
> Используется IbQuery.
Правильнее использовать IBDataSet
-
> Сделать кнопку "Обновить данные". >
Поддерживаю.
Если сильно надо автоматически, я бы сделал более простой запрос, который определяет, были ли какие либо изменения, и если были - то refresh-л б DataSet
-
простой запрос, который определяет, были ли какие либо изменения можно примерчик?
-
>Diplomat © (30.01.10 04:11) [4] post_event в триггере чем не устраивает?
-
Вообще-то да! Спасибо!
-
Плохо так делать. Сидишь, смотришь на экран, испытываешь катарсис. Тут ррраз - и пошло всё обновляться.
Теперь усложним ситуацию. 10 пользователей. Сначала один что-то обновил, через 10 секунд второй что-то удалил, ещё через 10 третий что-то добавил... А десятый наблюдает постоянное обновление данных.
Если уж настольео необходимо уведомлять всех пользователей об изменениях в БД - сделай индикатор, наподобие ICQ. Штоб заморгало где-нить внизу экрана. А дальше - по желанию. Надо - обновил данные, нет - сидишь со старыми.
-
> [7] Ega23 © (01.02.10 13:39)
Более того, раз два и более пользователя работают с одними и теми же данными, то велика вероятность того, что они работают или в сумашедшем доме или в тестовой базе, куда поленились нагенерировать достаточно данных. 8-) ИМХО.
-
Более того, раз два и более пользователя работают с одними и теми же данными, то велика вероятность того, что они работают или в сумашедшем доме или в тестовой базе, куда поленились нагенерировать достаточно данных
База данных по людям, где вероятность того, что они например работают не только в сумасшедшем доме, а например в сельской администрации, а таких много, и все они в сети? Насчет уведомления пользователя, надо где-то держать список IP подключенных?
-
> База данных по людям, где вероятность того, что они например > работают не только в сумасшедшем доме, а например в сельской > администрации, а таких много, и все они в сети?
если есть отличная от нуля вероятность - значит рано или позно событие произойдёт. После этого твою программу признают расово-негодной.
> Насчет уведомления пользователя, надо где-то держать список > IP подключенных?
Как вариант - достаточно держать таблицу с одним полем и одной записью - дата-время последней модификации данных. И время от времени "пинговать" эту таблицу.
-
> [9] Diplomat © (01.02.10 16:39) > а например в сельской администрации
И в понедельник с утра вся сельская администрация в полном составе из двух человек кинулась править личные данные пастуха Сидорова? И стОит из-за этого огород городить? Не проще ли заблокировать запись при начале редактирования?
-
Простите, как заблокировать запись при начале редактирования у другого пользователя? Дата-время последней модификации данных опять же будет известна, если закрыть и затем опять открыть IBDatabase, не так-ли?
-
Маловероятно, что двое будут править личные данные пастуха Сидорова. Но более чем вероятно, что двое под разными ID номерами добавят например новое наименование села. Попробовал, так и есть...
-
> [12] Diplomat © (01.02.10 19:18) > как заблокировать запись при начале редактирования у другого > пользователя?
Не помню как в ИБ6, а ФБ есть конструкция Select For Update With Lock.
> Но более чем вероятно, что двое под разными ID номерами > добавят например новое наименование села.
Села как грибы после дождя растут? Кто угодно может их создавать? От этого частично может уберечь уникальный индекс по названию. В остальном только жесткими административными методами вплоть до лишения премии. Иначе полезут Новые Васюки НОВЫЕ ВАСЮКИ новые васюки
-
У меня идет проверка по двум составляющим в данном случае по справочнику сел. Но, Select For Update With Lock - это я если правильно понял будет срабатывать в момент транзакции, если вызвать ее у второго пользователя?
-
> [15] Diplomat © (02.02.10 16:26)
> У меня идет проверка по двум составляющим в данном случае > по справочнику сел.
Не понял эту фразу. И что из того что идет проверка? Вообще дело твое - хочешь проверять/обновлять - делай. Но смысла в этом обычно немного (если он вообще есть), а телодвижений в клиенте и на серваке требует постоянно. Причем непроизводительных телодвижений.
> Но, Select For Update With Lock - это я если правильно понял > будет срабатывать в момент транзакции, если вызвать ее у > второго пользователя?
Просто сработает холостой апдейт без срабатывания тригеров и запись будет залочена для изменения другой сессией.
-
Нашел некоторые ссылки на Select For Update With Lock, буду изучать. Спасибо Sergey13!!!!!!!!!!!!!!!!!!!!!!!!
-
если честно, я так до конца и не понял сути..но! если тебя интересует вариант, чтобы, как в Парадоксе, юзер начал редактировать запись и другие не могли ее редактировать одновременно(я все именно так понял), то:1)Использовать FIBPlus -там есть опция "блокировать запись". 2)Либо, используя IBX, самому заблокировать запись в контексте одной транзакции, холостым Update типа update table1 set F1=F1 where условие по ключу одной записи (FIBPlus как раз так и делает) тогда другие "вражеские морды" не смогут редактировать эту запись, пока "пап" не закончит.. или кончит..:-)
-
Спасибо, буквально вчера про холостой Update читал, не совсем понял, то что написано, но... FIBPlus - есть платная библиотека компонентов, или у нее есть столь же позитивная бесплатная версия?
-
Скажите пожалуйста, какую версию FIBPlus использовать? В чем ее триальность, как это может отразиться на будущих программах?
-
> Скажите пожалуйста, какую версию FIBPlus использовать? В > чем ее триальность, как это может отразиться на будущих > программах?
если не ошибаюсь, триальная версия работает ТОЛЬКО при запущщщенной IDE Delphi :-) P.S. а вообще, если планируешь и в будущем создавать что-либо серьёзное (с профессиональной точки зрения) на Delphi/Builder'e под СУБД Interbase/ Firebird (особенно это касается последнего) - мой тебе совет: купи эти компоненты и не взрывай себе моСК (велосипед-то уже давно изобретён!!! ;-) ) http://www.devrace.com/ru/fibplus/ (1500р. за эти компоненты для профессионального разработчика - можно сказать почти бесплатно!).
-
только весь прикол в чем: вот ты заблокировал запись, "шоб ни какая вражья морда" тебе не мешала.. отредактировал все.. а через 0,000514545 секунды после твоего изменения Я(Царь и Бог!) эту же самую запись ИЗМЕНИЛ! смысл? в любом случае - КТО ПОСЛЕДНИЙ, ТОТ И ПАПА! разве, что ты в этом промежутке (между 0,000514544 и 0,0005145450 начнешь снепшот тразакцию.. что мало вероятно...
|