Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Одна база Access - несколько клиентов [D7, access]


Страницы:   1 2

DVM ©   (2006-05-19 15:28:00) 

Вопрос, наверное глупый, но все же.
Требуется создать базу на основе Access (ну надо так!) с которой одновременно могли работать 2-5 клиентских приложения на Delphi (через ADO).
Вопрос: Как сделать так, чтобы измения, вносимые в базу одним клиентом сразу виделись другим?


Anatoly Podgoretsky   (2006-05-20 16:10:00) [1]

И даже в секунду.


Anatoly Podgoretsky   (2006-05-20 16:10:00) [2]

Вообще то речь про базу, а не таблицу, или ты про глобальную таблицу, одну на всю базу. В нормальной системе могут идти сотни запросов в минуту.


Рустем   (2006-05-20 15:41:00) [3]


> Вопрос: Как сделать так, чтобы измения, вносимые в базу
> одним клиентом сразу виделись другим?

1. Создать поле (в какой таблице - сам определись), скажем Integer, куда будет записываться клиентом значение текущего Дата/время, например, используя функцию DateTimeToFileDate, после добавления/редактирования/удаления записей в таблицу(ы).
2. Создать глобальную переменную и при запуске приложения присваивать ей значение поля [1].
3. По таймеру проверять равенство значения переменной [1] со значением поля [2] и в случае расхождения - обновление таблиц(ы).
Естественно, что нужно будет предусмотреть отключение таймера во время изменения записей таблиц(ы)...

Возможно это извращение, как посчитают многие, но лично я бы, с удовольствием, посмотрел бы на другие варианты...


Anatoly Podgoretsky   (2006-05-20 14:42:00) [4]

Только сервер приложений и вся работа через него. Остальное будут изращения разной степени тяжести.


YurikGL   (2006-05-19 22:02:00) [5]

Можно использовать более серьезную СУБД, чем Access и на триггер вешать посылку сообщения всем клиентам о том, что произведено изменение....
Однако, ИМХО такой подход не является правильным. Правильным является обновление данных по требованию пользователя.


Desdechado   (2006-05-19 17:46:00) [6]

> Начни длительную транзакцию
я ж не о длительности, а о том, что изменения, произошедшие после старта транзакции, остаются за кадром, как и должно быть
и не будет никаких "ой" при расчетах, кроме, конечно, недовольных ожидающих пользователей


Виталий Панасенко   (2006-05-19 17:28:00) [7]


> Desdechado ©   (19.05.06 16:13) [10]
> Виталий Панасенко   (19.05.06 16:10) [9]
> про транзакции не забыл?

Не забыл. Начни длительную транзакцию в блокировочнике - посмотрим что тебе пользоваетели скажут.:-)


Desdechado   (2006-05-19 16:58:00) [8]

MsGuns ©   (19.05.06 16:53) [14]
а прочитать внимательно?
"видеть" означает "знать об изменениях"


MsGuns   (2006-05-19 16:53:00) [9]

>Desdechado ©   (19.05.06 16:47) [13]
>почему?

А подумать ?


Desdechado   (2006-05-19 16:47:00) [10]

MsGuns ©   (19.05.06 16:42) [12]
почему?
ведь речь о том, что изменение должен видеть этот самый на третьем звене


MsGuns   (2006-05-19 16:42:00) [11]

>DVM ©   (19.05.06 16:16) [11]
>Да, вроде бы сервер приложений есть лучшее решение проблемы в данном случае.

"Третье звено" не поможет отцам русской демократии, желающим видеть "все и сразу".


DVM   (2006-05-19 16:16:00) [12]


> Desdechado ©   (19.05.06 16:04) [8]

Да, вроде бы сервер приложений есть лучшее решение проблемы в данном случае.


Desdechado   (2006-05-19 16:13:00) [13]

Виталий Панасенко   (19.05.06 16:10) [9]
про транзакции не забыл?


Виталий Панасенко   (2006-05-19 16:10:00) [14]


> Тут несколько иная ситуация:
> Имеется программа-сервер, которая выполняет некоторые действия,
>  в зависимости от данных в базе. Программы-клиенты (люди)
> меняют базу, программа-сервер должна реагировать на изменения.
>

Но, если я что-то начал делать в соответсвии с данными в БД, то по прошестивии некоторого времени юзера уже поменяют данные. я хочу сказать, что начал ты СЕРВЕРОМ какую-то обработку, ты что, должен проверить "а не поменлись ли за это время условия" и, если да, откатить все, что ты сервером наворотил и начать сначала 7 так можно, при интенсивнйо работе добиться того, что сервре будет отрабатывать ТОЛЬКО после окончания рабочего дня, когда никого нету уже.:-)))


Desdechado   (2006-05-19 16:04:00) [15]

если эта такая монитористая программа, так может сделать из нее сервер приложений, и все изменения пропускать через него
тогда уж точно ничего не прозевает, кроме прямого редактирования БД


DVM   (2006-05-19 16:01:00) [16]


> Т.е. эта программа по сути монитор в реальном времени?

Ну да, только еще этот монитор тоже вносит иногда изменения в базу, но их сразу видеть другим клиентам необязательно.


Johnmen   (2006-05-19 15:59:00) [17]

>DVM ©   (19.05.06 15:56) [5]
>программа-сервер должна реагировать на изменения.

Т.е. эта программа по сути монитор в реальном времени?


DVM   (2006-05-19 15:56:00) [18]


> Виталий Панасенко   (19.05.06 15:53) [4]

Тут несколько иная ситуация:
Имеется программа-сервер, которая выполняет некоторые действия, в зависимости от данных в базе. Программы-клиенты (люди) меняют базу, программа-сервер должна реагировать на изменения.

Может уведомлять сервер через сокеты?


Виталий Панасенко   (2006-05-19 15:53:00) [19]


> Вопрос: Как сделать так, чтобы измения, вносимые в базу
> одним клиентом сразу виделись другим?

Скажи, на кой мне, пользователю, которго интересует мясо СРАЗУ же видеть, что продали 10 л молока ? Вот когда мне будет интересно молоко...то тогда больше шансов, что другие продают мясо..:-)


DVM   (2006-05-19 15:53:00) [20]


> А разве не видятся?

Видятся, но после обновления, разумеется. Хотелось бы сразу.

> Плохое вступление.

:)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо