![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 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. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
![]()
Добрый день.
А как Вы смотрите на идею создания какой-то скрытой таблицы в которой бы вёлся список пользователей. Если приблизительно прикинуть то как-то так: 1. Создаём скрытую таблицу 2. Добавляем в автозапуск (при открытии базы записывается в таблицу имя пользователя и текущее время) запрос на добавление 3. При закрытии обновляется дата закрытия Таким образом через некоторый промежуток времени имеем: - Имена всех пользователей кто пользуется базой - Частоту использования - Активных пользователей - Ну и если кто-то чего-то набокопорит - имя этого ........ Или как вариант добавить форму авторизации при входе (хотя понятно что её очень легко обойти) |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 14.09.2010
Сообщений: 68
|
![]()
Доброго времени суток!
Ну вот при открытии у меня лезет форма подключения к сиквел-серверу. На неё можно повесить процедуру добавления записи об открытии клиентского приложения. А как отследить закрытие? Есть ли какое-то событие на закрытие(выход из среды Access) базы? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
![]()
Есть вариант скрыть кнопки закрытия фала (крестик) и повесить кнопку выход где-то на форме или как вариант: повесить постоянное обновление на закрытие всех форм.
Тоесть: Закрывается форма - обновляется дата окончания работы, закрывется следующая - опять. Знаю что вариант не из лучших - но всё же вариант Private Sub Form_Close() |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 14.09.2010
Сообщений: 68
|
![]()
Доброго времени суток!
Нет, отслеживать как формы закрываются это не то. Нужно отследить закрытие приложения, когда гыук в Виндовс вышел. Причем клиентское приложение у него может весь день висеть открытое, а может сотню раз за день открыть-закрыть. Вот интересно есть ли что-то типа Application.Quit или Application.Close или CurrentProject.Close (Quit). А вот при подключении пользователя к таблицам сиквел-сервера в нем это где-то записывается в системную таблицу и вроде можно эту инфу как-то извлечь запросом (ходил на курсы по сиквел-серверу, но давно и поэтому забыл почти все :-) |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 515
|
![]()
Честно говоря я вообще никогда ещё с этим не сталкивался.
Думаю что Вам сможет помочь "Teslenko_EA" - это действительно гений своего дела (лично мне он ОЧЕНЬ помогал неоднократно). Но Вы всётаки посмотрите в гугле по моему есть команда на закрытие базы. |
![]() |
![]() |
![]() |
#7 | |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
![]() Цитата:
на неконкретные вопросы даю неконкретные ответы ...
|
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 14.09.2010
Сообщений: 68
|
![]()
Доброго времени суток!
Да, с невидимой формой неплохая мысль, надо попробовать. В принципе, не такую форму можно еще навесить всякий функционал - от имитации буфера обмена до ... ну даже не придумал еще пока... А вот вопрос с работой с данными остается - как оследить тех кто не только открыл клиентское приложение, но и работает с БД |
![]() |
![]() |
![]() |
#9 | |
Форумчанин
Регистрация: 09.06.2011
Сообщений: 388
|
![]() Цитата:
на неконкретные вопросы даю неконкретные ответы ...
|
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 14.09.2010
Сообщений: 68
|
![]()
Доброго времени суток!
Этот вариант хорош при плановых нечастых апгрейдах, при старте приложение скачивает новую версию себя же... А у меня модули в оперативной разработке, за день может быть 2-3 обновления, и отрубать автоматом гыука, который вводит в форму данные, не есть хорошо... Вот наверное можно проверять периодически номер версии и при несовпадении выводить окно "Хватит работать!". С другой стороны, не проверял, может ли база перезаписать сама себя и корректно завершиться... У меня этим раньше (для другой БД) занимался стартовый модуль-екзешник, написанный на Дельфи... Но он также срабатывал еще до старта клиентского приложения |
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |