Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2012, 15:04   #1
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию Рассылка сообщений пользователям

Доброго времени суток!

Братья по Acсess-у! Не поможет ли кто советом или кодом в следующей ситуации:
Имеется связка MS SQL Server 2005 - MS Access 2003 (Как клиентское приложение). Возникла необходимость обновлять клиентское приложение по сети (порядка 15-20 компьютеров). При этом пользователям нужно сказать, чтобы они вышли из программы. Каким образом лучше это сделать? (пока в голове только таблица на сервере с именем пользователя и сообщением - и проверка наличия сообщений каждые n секунд). Попутно еще две задачи обозначились - 1. как получить список тех кто прицеплен к БД на данный момент (смотрит или меняет данные) и 2. как получить список тех у кого запущено клиентское приложение (даже если не смотрит БД сейчас). В связке Access - Access это решалось легко классическим примером из Кевина-Гетца
Помогите кто чем...

Последний раз редактировалось LittleFatCat; 14.05.2012 в 15:06.
LittleFatCat вне форума Ответить с цитированием
Старый 15.05.2012, 12:28   #2
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Добрый день.
А как Вы смотрите на идею создания какой-то скрытой таблицы в которой бы вёлся список пользователей.
Если приблизительно прикинуть то как-то так:
1. Создаём скрытую таблицу
2. Добавляем в автозапуск (при открытии базы записывается в таблицу имя пользователя и текущее время) запрос на добавление
3. При закрытии обновляется дата закрытия

Таким образом через некоторый промежуток времени имеем:
- Имена всех пользователей кто пользуется базой
- Частоту использования
- Активных пользователей
- Ну и если кто-то чего-то набокопорит - имя этого ........

Или как вариант добавить форму авторизации при входе (хотя понятно что её очень легко обойти)
gluk_fm вне форума Ответить с цитированием
Старый 15.05.2012, 14:03   #3
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию

Доброго времени суток!
Ну вот при открытии у меня лезет форма подключения к сиквел-серверу. На неё можно повесить процедуру добавления записи об открытии клиентского приложения. А как отследить закрытие? Есть ли какое-то событие на закрытие(выход из среды Access) базы?
LittleFatCat вне форума Ответить с цитированием
Старый 15.05.2012, 14:31   #4
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Есть вариант скрыть кнопки закрытия фала (крестик) и повесить кнопку выход где-то на форме или как вариант: повесить постоянное обновление на закрытие всех форм.
Тоесть: Закрывается форма - обновляется дата окончания работы, закрывется следующая - опять. Знаю что вариант не из лучших - но всё же вариант

Private Sub Form_Close()
gluk_fm вне форума Ответить с цитированием
Старый 15.05.2012, 15:11   #5
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию

Доброго времени суток!

Нет, отслеживать как формы закрываются это не то. Нужно отследить закрытие приложения, когда гыук в Виндовс вышел. Причем клиентское приложение у него может весь день висеть открытое, а может сотню раз за день открыть-закрыть. Вот интересно есть ли что-то типа Application.Quit или Application.Close или CurrentProject.Close (Quit).
А вот при подключении пользователя к таблицам сиквел-сервера в нем это где-то записывается в системную таблицу и вроде можно эту инфу как-то извлечь запросом (ходил на курсы по сиквел-серверу, но давно и поэтому забыл почти все :-)
LittleFatCat вне форума Ответить с цитированием
Старый 15.05.2012, 17:25   #6
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Честно говоря я вообще никогда ещё с этим не сталкивался.
Думаю что Вам сможет помочь "Teslenko_EA" - это действительно гений своего дела (лично мне он ОЧЕНЬ помогал неоднократно). Но Вы всётаки посмотрите в гугле по моему есть команда на закрытие базы.
gluk_fm вне форума Ответить с цитированием
Старый 15.05.2012, 23:23   #7
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Нужно отследить закрытие приложения ...
запустите скрытую форму (или может есть постоянная) и закрытие приложения отслеживайте по событию UnLoad этой формы
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 16.05.2012, 22:52   #8
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию

Доброго времени суток!

Да, с невидимой формой неплохая мысль, надо попробовать. В принципе, не такую форму можно еще навесить всякий функционал - от имитации буфера обмена до ... ну даже не придумал еще пока... А вот вопрос с работой с данными остается - как оследить тех кто не только открыл клиентское приложение, но и работает с БД
LittleFatCat вне форума Ответить с цитированием
Старый 16.05.2012, 23:08   #9
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Цитата:
Возникла необходимость обновлять клиентское приложение по сети (порядка 15-20 компьютеров). При этом пользователям нужно сказать, чтобы они вышли из программы. Каким образом лучше это сделать?
Имхо пусть приложение проверяет на соответствие своей сборки/версии с теккущей (из базы на сервере) и в случае не соответствия отваливается с дальнейшими необходимыми действиями ...
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 17.05.2012, 12:18   #10
LittleFatCat
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 68
По умолчанию

Доброго времени суток!
Этот вариант хорош при плановых нечастых апгрейдах, при старте приложение скачивает новую версию себя же... А у меня модули в оперативной разработке, за день может быть 2-3 обновления, и отрубать автоматом гыука, который вводит в форму данные, не есть хорошо... Вот наверное можно проверять периодически номер версии и при несовпадении выводить окно "Хватит работать!". С другой стороны, не проверял, может ли база перезаписать сама себя и корректно завершиться... У меня этим раньше (для другой БД) занимался стартовый модуль-екзешник, написанный на Дельфи... Но он также срабатывал еще до старта клиентского приложения
LittleFatCat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
icqclient рассылка сообщений. hacker_007 Работа с сетью в Delphi 2 19.09.2011 10:54
Сбор сообщений службы сообщений Windows XP testor48 Работа с сетью в Delphi 3 31.03.2011 20:20
Рассылка пользователям. (PHP) slavec PHP 4 22.03.2010 15:16
Перехват сообщений от Службы сообщений (Messenger) SJMS Win Api 6 17.07.2008 10:26
рассылка сообщений всем пользователям в чате, протокол UDP RKS Работа с сетью в Delphi 14 15.12.2007 11:36