Форум: "Базы";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
ВнизОдна база Access - несколько клиентов Найти похожие ветки
← →
DVM © (2006-05-19 15:28) [0]Вопрос, наверное глупый, но все же.
Требуется создать базу на основе Access (ну надо так!) с которой одновременно могли работать 2-5 клиентских приложения на Delphi (через ADO).
Вопрос: Как сделать так, чтобы измения, вносимые в базу одним клиентом сразу виделись другим?
← →
Desdechado © (2006-05-19 15:30) [1]переоткрывать наборы данных
но не советую делать это по таймеру или автоматически, как сразу может прийти в голову, - убьют
лучше поставь кнопку "обновить данные"
← →
Johnmen © (2006-05-19 15:31) [2]А разве не видятся?
ЗЫ
>Вопрос, наверное глупый,
Плохое вступление.
← →
DVM © (2006-05-19 15:53) [3]
> А разве не видятся?
Видятся, но после обновления, разумеется. Хотелось бы сразу.
> Плохое вступление.
:)
← →
Виталий Панасенко (2006-05-19 15:53) [4]
> Вопрос: Как сделать так, чтобы измения, вносимые в базу
> одним клиентом сразу виделись другим?
Скажи, на кой мне, пользователю, которго интересует мясо СРАЗУ же видеть, что продали 10 л молока ? Вот когда мне будет интересно молоко...то тогда больше шансов, что другие продают мясо..:-)
← →
DVM © (2006-05-19 15:56) [5]
> Виталий Панасенко (19.05.06 15:53) [4]
Тут несколько иная ситуация:
Имеется программа-сервер, которая выполняет некоторые действия, в зависимости от данных в базе. Программы-клиенты (люди) меняют базу, программа-сервер должна реагировать на изменения.
Может уведомлять сервер через сокеты?
← →
Johnmen © (2006-05-19 15:59) [6]>DVM © (19.05.06 15:56) [5]
>программа-сервер должна реагировать на изменения.
Т.е. эта программа по сути монитор в реальном времени?
← →
DVM © (2006-05-19 16:01) [7]
> Т.е. эта программа по сути монитор в реальном времени?
Ну да, только еще этот монитор тоже вносит иногда изменения в базу, но их сразу видеть другим клиентам необязательно.
← →
Desdechado © (2006-05-19 16:04) [8]если эта такая монитористая программа, так может сделать из нее сервер приложений, и все изменения пропускать через него
тогда уж точно ничего не прозевает, кроме прямого редактирования БД
← →
Виталий Панасенко (2006-05-19 16:10) [9]
> Тут несколько иная ситуация:
> Имеется программа-сервер, которая выполняет некоторые действия,
> в зависимости от данных в базе. Программы-клиенты (люди)
> меняют базу, программа-сервер должна реагировать на изменения.
>
Но, если я что-то начал делать в соответсвии с данными в БД, то по прошестивии некоторого времени юзера уже поменяют данные. я хочу сказать, что начал ты СЕРВЕРОМ какую-то обработку, ты что, должен проверить "а не поменлись ли за это время условия" и, если да, откатить все, что ты сервером наворотил и начать сначала 7 так можно, при интенсивнйо работе добиться того, что сервре будет отрабатывать ТОЛЬКО после окончания рабочего дня, когда никого нету уже.:-)))
← →
Desdechado © (2006-05-19 16:13) [10]Виталий Панасенко (19.05.06 16:10) [9]
про транзакции не забыл?
← →
DVM © (2006-05-19 16:16) [11]
> Desdechado © (19.05.06 16:04) [8]
Да, вроде бы сервер приложений есть лучшее решение проблемы в данном случае.
← →
MsGuns © (2006-05-19 16:42) [12]>DVM © (19.05.06 16:16) [11]
>Да, вроде бы сервер приложений есть лучшее решение проблемы в данном случае.
"Третье звено" не поможет отцам русской демократии, желающим видеть "все и сразу".
← →
Desdechado © (2006-05-19 16:47) [13]MsGuns © (19.05.06 16:42) [12]
почему?
ведь речь о том, что изменение должен видеть этот самый на третьем звене
← →
MsGuns © (2006-05-19 16:53) [14]>Desdechado © (19.05.06 16:47) [13]
>почему?
А подумать ?
← →
Desdechado © (2006-05-19 16:58) [15]MsGuns © (19.05.06 16:53) [14]
а прочитать внимательно?
"видеть" означает "знать об изменениях"
← →
Виталий Панасенко (2006-05-19 17:28) [16]
> Desdechado © (19.05.06 16:13) [10]
> Виталий Панасенко (19.05.06 16:10) [9]
> про транзакции не забыл?
Не забыл. Начни длительную транзакцию в блокировочнике - посмотрим что тебе пользоваетели скажут.:-)
← →
Desdechado © (2006-05-19 17:46) [17]> Начни длительную транзакцию
я ж не о длительности, а о том, что изменения, произошедшие после старта транзакции, остаются за кадром, как и должно быть
и не будет никаких "ой" при расчетах, кроме, конечно, недовольных ожидающих пользователей
← →
YurikGL © (2006-05-19 22:02) [18]Можно использовать более серьезную СУБД, чем Access и на триггер вешать посылку сообщения всем клиентам о том, что произведено изменение....
Однако, ИМХО такой подход не является правильным. Правильным является обновление данных по требованию пользователя.
← →
Anatoly Podgoretsky © (2006-05-20 14:42) [19]Только сервер приложений и вся работа через него. Остальное будут изращения разной степени тяжести.
← →
Рустем © (2006-05-20 15:41) [20]
> Вопрос: Как сделать так, чтобы измения, вносимые в базу
> одним клиентом сразу виделись другим?
1. Создать поле (в какой таблице - сам определись), скажем Integer, куда будет записываться клиентом значение текущего Дата/время, например, используя функцию DateTimeToFileDate, после добавления/редактирования/удаления записей в таблицу(ы).
2. Создать глобальную переменную и при запуске приложения присваивать ей значение поля [1].
3. По таймеру проверять равенство значения переменной [1] со значением поля [2] и в случае расхождения - обновление таблиц(ы).
Естественно, что нужно будет предусмотреть отключение таймера во время изменения записей таблиц(ы)...
Возможно это извращение, как посчитают многие, но лично я бы, с удовольствием, посмотрел бы на другие варианты...
← →
Anatoly Podgoretsky © (2006-05-20 16:10) [21]Вообще то речь про базу, а не таблицу, или ты про глобальную таблицу, одну на всю базу. В нормальной системе могут идти сотни запросов в минуту.
← →
Anatoly Podgoretsky © (2006-05-20 16:10) [22]И даже в секунду.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c