Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тем кто поможет - с меня ПИВО!!!
|
|||
|---|---|---|---|
|
#18+
Есть два приложения (на DELPHI). Оба обращаются к одной таблице. Оба из нее получили данные. Затем первая программа удалила несколько строк из таблицы (с помощью вызова хранимой процедуры в MS SQL SERVER 2000). Как сделать, чтобы после удаления записей, во втором приложении обновились данные. А то может получиться, что второе приложение может использовать уже несуществующие данные, которые удалила первая программа. Надеюсь, что понятно спрашиваю? Кто поможет с меня пиво!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 19:28 |
|
||
|
Тем кто поможет - с меня ПИВО!!!
|
|||
|---|---|---|---|
|
#18+
Не надо боятся, что кто-то что-то сможет сделать с несуществующими записями. Не сможет, сервер не позволит. Обновление данных на клиенте можно сделать через 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() А механизма для автоматического обновления нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 20:04 |
|
||
|
Тем кто поможет - с меня ПИВО!!!
|
|||
|---|---|---|---|
|
#18+
Используй механизмы блокировки. Описано в любой книге delphi-bd-sql , и пользуй прямые запросы а не компоненты табле.. итд если записи нет при удалении по условию то не удалит если запрос, а если пользуешь тавле.. то смотри выше . в блокировке и курсорах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 20:06 |
|
||
|
Тем кто поможет - с меня ПИВО!!!
|
|||
|---|---|---|---|
|
#18+
Спасибо CAT2! Только надо будет ввести еще столбец "Имя таблицы". Потому что их много, а пользователь работает в данный момент с какой-то одной и нет смысла постоянно его опрашивать об обновлении таблиц, с которыми он не работает. А вообще здорово помогла! А какие приемы еще есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 21:39 |
|
||
|
Тем кто поможет - с меня ПИВО!!!
|
|||
|---|---|---|---|
|
#18+
Korkin спасибо за совет, но ты не понял вопрос. Блокировки я использую на сервере. А мне надо было знать как обновлять данные в делфях. Если интересно, почитай, что написала завсегдатая CAT2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2002, 21:44 |
|
||
|
Тем кто поможет - с меня ПИВО!!!
|
|||
|---|---|---|---|
|
#18+
Я специально не стал писать, что для каждой таблицы можно сделать свое поле UpdateTableName. Не хотелось лишать Вас маленьких открытий. Можно завести для каждой таблы свое поле, а можно сделать таблицу TablesUpdate UserId int TableName char IsUpdate bit Таймеры будут опрашивать select isUpdate from TablesUpdate where UserID=user_id() and TableName='TableName' ======= Другие варианты Все они все равно базируются на уведомлении клиента, что что-то изменилось. Можно ему это посылать мылом. Более сложный вариант. Если данные в таблице удаляются, то тоже самое. А если изменяются, то в таблицу изменений передаются уникальные ключи записей и по запросу обновляются только измененные строки. Через Refresh. Но на мой взгляд, это лишний геморрой. Обновил всю таблу - и дело с концом. Да, кстати, изменение таблицы обновления лучше делать в тригере. ============ Шестая банка выпита. Ваше здоровье! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2002, 00:46 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=2081&tid=2119783]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 159ms |

| 0 / 0 |
