Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Тем кто поможет - с меня ПИВО!!! / 7 сообщений из 7, страница 1 из 1
12.10.2002, 19:28
    #32057700
alexu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
Есть два приложения (на DELPHI). Оба обращаются к одной таблице. Оба из нее получили данные. Затем первая программа удалила несколько строк из таблицы (с помощью вызова хранимой процедуры в MS SQL SERVER 2000). Как сделать, чтобы после удаления записей, во втором приложении обновились данные. А то может получиться, что второе приложение может использовать уже несуществующие данные, которые удалила первая программа.
Надеюсь, что понятно спрашиваю?
Кто поможет с меня пиво!!!
...
Рейтинг: 0 / 0
12.10.2002, 20:04
    #32057702
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
Не надо боятся, что кто-то что-то сможет сделать с несуществующими записями. Не сможет, сервер не позволит.
Обновление данных на клиенте можно сделать через reQuery.
Остается задача, как клиент это узнает.
Как один из вариантов.
На сервере создается табла Users.

UserID int, UpdateTable bit

Сразу после коннекта (в FormOncreate) выполняется запрос

if not exists (select * from from users where userID=user_id())
insert into users (userID) values (User_id())

При удалении/обновлении данных в поле UpdateTable заногсится 1.

Клиенты, через определенные промежутки времени опрашивают эту таблицу.

select UpdateTable from users where userID=user_id()

Если единичка, то юзеру выкидывается табличка типа "Данные изменились. Обновить?"
если юзер соглашается, то делается reQuery и

Update users set UpdateTable=0
where userID=user_id()

А механизма для автоматического обновления нет
...
Рейтинг: 0 / 0
12.10.2002, 20:06
    #32057703
korkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
Используй механизмы блокировки. Описано в любой книге
delphi-bd-sql , и пользуй прямые запросы а не компоненты
табле.. итд если записи нет при удалении по условию то не удалит если запрос, а если пользуешь тавле..
то смотри выше . в блокировке и курсорах
...
Рейтинг: 0 / 0
12.10.2002, 21:39
    #32057709
alexu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
Спасибо CAT2!
Только надо будет ввести еще столбец "Имя таблицы". Потому что их много, а пользователь работает в данный момент с какой-то одной и нет смысла постоянно его опрашивать об обновлении таблиц, с которыми он не работает. А вообще здорово помогла!
А какие приемы еще есть?
...
Рейтинг: 0 / 0
12.10.2002, 21:44
    #32057710
alexu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
Korkin спасибо за совет, но ты не понял вопрос. Блокировки я использую на сервере. А мне надо было знать как обновлять данные в делфях. Если интересно, почитай, что написала завсегдатая CAT2
...
Рейтинг: 0 / 0
13.10.2002, 00:46
    #32057727
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
Я специально не стал писать, что для каждой таблицы можно сделать свое поле UpdateTableName. Не хотелось лишать Вас маленьких открытий.

Можно завести для каждой таблы свое поле, а можно сделать таблицу

TablesUpdate

UserId int
TableName char
IsUpdate bit

Таймеры будут опрашивать

select isUpdate from TablesUpdate
where UserID=user_id()
and TableName='TableName'

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

Более сложный вариант.
Если данные в таблице удаляются, то тоже самое. А если изменяются, то в таблицу изменений передаются уникальные ключи записей и по запросу обновляются только измененные строки. Через Refresh. Но на мой взгляд, это лишний геморрой. Обновил всю таблу - и дело с концом.

Да, кстати, изменение таблицы обновления лучше делать в тригере.
============
Шестая банка выпита. Ваше здоровье!
...
Рейтинг: 0 / 0
13.10.2002, 01:08
    #32057731
alexu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тем кто поможет - с меня ПИВО!!!
На счет маленьких открытий это точно.
А на счет запроса в форуме DELPHI ты касяка спорол.
Кстати, после шестой банки ты уже сменил пол? Еще днем ты был ей
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Тем кто поможет - с меня ПИВО!!! / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]