powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Тем кто поможет - с меня ПИВО!!!
7 сообщений из 7, страница 1 из 1
Тем кто поможет - с меня ПИВО!!!
    #32057700
alexu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть два приложения (на DELPHI). Оба обращаются к одной таблице. Оба из нее получили данные. Затем первая программа удалила несколько строк из таблицы (с помощью вызова хранимой процедуры в MS SQL SERVER 2000). Как сделать, чтобы после удаления записей, во втором приложении обновились данные. А то может получиться, что второе приложение может использовать уже несуществующие данные, которые удалила первая программа.
Надеюсь, что понятно спрашиваю?
Кто поможет с меня пиво!!!
...
Рейтинг: 0 / 0
Тем кто поможет - с меня ПИВО!!!
    #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
Тем кто поможет - с меня ПИВО!!!
    #32057703
korkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Используй механизмы блокировки. Описано в любой книге
delphi-bd-sql , и пользуй прямые запросы а не компоненты
табле.. итд если записи нет при удалении по условию то не удалит если запрос, а если пользуешь тавле..
то смотри выше . в блокировке и курсорах
...
Рейтинг: 0 / 0
Тем кто поможет - с меня ПИВО!!!
    #32057709
alexu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо CAT2!
Только надо будет ввести еще столбец "Имя таблицы". Потому что их много, а пользователь работает в данный момент с какой-то одной и нет смысла постоянно его опрашивать об обновлении таблиц, с которыми он не работает. А вообще здорово помогла!
А какие приемы еще есть?
...
Рейтинг: 0 / 0
Тем кто поможет - с меня ПИВО!!!
    #32057710
alexu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Korkin спасибо за совет, но ты не понял вопрос. Блокировки я использую на сервере. А мне надо было знать как обновлять данные в делфях. Если интересно, почитай, что написала завсегдатая CAT2
...
Рейтинг: 0 / 0
Тем кто поможет - с меня ПИВО!!!
    #32057727
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я специально не стал писать, что для каждой таблицы можно сделать свое поле UpdateTableName. Не хотелось лишать Вас маленьких открытий.

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

TablesUpdate

UserId int
TableName char
IsUpdate bit

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

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

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

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

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


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