отслеживание измений в sql2000

strelok
Дата: 09.12.2002 02:43:42
господа, помогите кто чем может!

совсем недавно сел на программирование в delphi6 через ado к sql server 2000
и заколебался искать ответ на простой вопрос.

имеется элементарная оболочка к базе на серваке, одна таблица, на форме накиданы дэйтаконтролы и dbgrid. софтину пользуют несколько юзеров.

как сделать средствами ado или любыми другими чтобы при обновлении информации кем-либо из сети эти изменения ловились всем остальными, у кого открыта софтина, чтоб она обновляла датасет?
MiCe
Дата: 09.12.2002 05:02:55
извечный вопрос....
вообщето работает поиск по форуму.... это так кстати....
1)... ну неправильно это для клиент серверных платформ....
2) а если очень уж нужно организуте рассылку от клиета... broadcast....
.... по поводу п.1.... представте что клинтов под сотню хотябы....
каждый что то делает модифицирует,вставляет и тд..... и на каждый чих вам эвент подавай.... этож сервер только ваши эвенты генерить и будет....
strelok
Дата: 09.12.2002 05:33:32
т.е. в такого рода программах такого рода обновления вообще не предусматриваются в принципе?
Вася
Дата: 09.12.2002 08:16:45
Не предусмотрено
sparrow
Дата: 09.12.2002 08:17:05
Сделай на форме кнопку обновить, по клику обновляй DataSetы.
Еще можно по таймеру, с частотой которая завист от производительности сервера и сети...
Другие способы прородят проблеммы.
Вася
Дата: 09.12.2002 08:29:44
to sparrow
А если записей десятки тысяч ? Ну или хотя бы одна тысяча ?
Задержки знаети ли , даже на сети в 100 мб.
Glory
Дата: 09.12.2002 15:15:25
А если записей десятки тысяч ? Ну или хотя бы одна тысяча ?

У вас клиент вручную правит тысячи записей ??? И при этом хочет успеветь увидеть что из исправленного им исправили другие клиенты ?
VVG_
Дата: 09.12.2002 17:57:18
Я в итоге пришел к такому варианту:

1) В мастер-таблицу считываются только значения ключа, так быстрее, причем считываются не полностью, а либо с условием либо с разбивкой на страницы, чтобы обновления по таймеру не очень сильно грузили сервер и сеть.
2) На onAfterScroll вешается открытие подчиненной таблицы, куда считываются только одна запись и на которую вешаются все контролы.
3) В onBeforeEdit проверяется timestamp. Если он не совпадает со считанным ранее, то запретить редактирование и считать заново.
4) В onBeforePost тоже проверяется timestamp. Если не совпадает, то кто-то другой уже подредактировал и два варианта: жестокий - второй опоздал, и умный - писать свой разруливатель конфликтов.
tygra
Дата: 09.12.2002 18:13:21
В onBeforePost тоже проверяется timestamp. Если не совпадает, то

Не совпадает с чем??????????????????????
VVG_
Дата: 09.12.2002 19:29:17
Не совпадает со значением, считанным при заполнении датаконтролов.