Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1310955478
R_R
2011-07-18 06:17
2011.11.06
Какие существуют аналоги TImage?


2-1310622837
mamon
2011-07-14 09:53
2011.11.06
Не могу открыть РФ сайты


2-1310662885
Anthony
2011-07-14 21:01
2011.11.06
Простой RTF редактор для Delphi


15-1310499331
R_R
2011-07-12 23:35
2011.11.06
Хостинг+домен...


8-1217859464
REX
2008-08-04 18:17
2011.11.06
Звук