|
|
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
У меня распределенная база по заводу. Часто на агрегатах по несколько часов данные не вносяться, но юзеры из базы не вылезают, а нужно чтоб вылезали (зачем другой вопрос, но нужно), т.е. закрывали приложение на своем компе. Как, какой и куда повесить код, чтоб база сама закрывалась, если в течении, скажем, 2-х часов ее никто не трогал - не смотрел и данные не вносил. Или ссылочку, плз, где это можно посмотреть. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2003, 19:08 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
1. Заводим переменную, которая обозначает время последнего прикосновения к системе. 2. Во всех событиях, где только можно, включая просто перемещения мышки по экрану, обновляем эту переменную. 3. В таймере какой-нибудь формы, которая никогда не закрывается, пишем: If Now - та переменная > 2 часов Then DoCmd.Quit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2003, 19:11 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Неужели только так муторно можно это дело исполнить? Такая мысль у меня была. Но рука не поднималась. Думал может есть чего-то вроде контрольного центра, где храниться время последнего изменения или "телодвижения". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 04:17 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
2 Саныч Я в одном своем проекте пункт 2 просто опустил. По истечении 20 минут по событию таймер выскакивает вопрос "Остаемся в программе ?" Если за 1 минуту не скажут "Да", то вываливаемся. Не очень красиво - но не нужно перелопачивать весь проект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 08:43 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Да разослать всем сообщение Код: plaintext и подождать 10 минут. Если человек не вышел - срубить его на фиг, все равно его на рабочем месте нет, он ничего не делает, и база не обрушится от его отключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 09:16 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
А я своих воспитываю бархатно. Не закрываю, а просто вывожу свою БД на передний план. До воспитания одновременно торчало до 30, после - 15. Удачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 12:19 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
> Не закрываю, а просто вывожу свою БД на передний план. Это опасно. Если юзер клацает по клаве в какой-нибудь другой аппликации, а в этот момент ему вместо его аппликации подсовывается наша, - то он по инерции нажмет еще на пару клавиш и наверняка что-нибудь запорет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 15:19 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Вариант от Odess эфективный и простой в реализации. Я пользуюсь чем-то подобным , когда нужно принудительно (но мягко) выгнать юзеров из базы или обновить проэкт на клиентских компах. Можно кстати сделать селективным относительно юзера. Например директора не беспокоить , а мерзких АгРеГаТоВ тудыть в качель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 15:40 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
2Лох Позорный Послать сообщение легко , а можно как-то поймать его на стороне клиента? Получилось бы очень изящно: Послал net send -ом кодированное сообщение , но вместо дурацкого диалога на экране - соответствующая реакция открытого приложения. (Примерно как у пиратского пейджера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 15:45 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Latuk писал:Послать сообщение легко , а можно как-то поймать его на стороне клиента? Поймать - глазами оператора Если он его не увидел - значит его на рабочем месте нет. Если его нет - он ничего не делает. Если ничего не делает - его можно безбоязненно срубить. Но это, конечно, несерьезное решение. По хорошему можно смотреть в сторону очередей сообщений (какое-нибудь MSMQ). Не только в целях срубания юзверей, оно вообще полезно. Вроде у MSMQ объектов и ActiveX события есть, лови не хочу. Жаль руки пока не дошли до изучения.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 15:54 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
> Если ничего не делает - его можно безбоязненно срубить. Угу. Он возвращается из туалета, а у него голова в тумбочке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:04 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Ну если его ТАК приперло, что он на полчаса свалил в туалет, да еще не закончив бросив работу на полпути (накладную там недовбивал или еще чего) - тогда когда он из туалета вернется ему будет ТАК хорошо, что он программеру эту накладную (или чего там еще) легко простит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:07 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
net send поймать можно (правда, по-моему, стандартный сервис должен быть отключен), но возни много и от операционнки методика их пересылки зависит, так что имхо лучше что-нибудь своё использовать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:25 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
IgorM писал:так что имхо лучше что-нибудь своё использовать... А может все-таки лучше чужое? Уже готовое и заточенное под это? Можно, конечно, и Exchange написать на аксесе, но зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:31 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Я еще где то читал (но не проверял) более изящное решение. В отдельной таблице создается логическое поле типа "Финиш". Клиентские программы опрашивают с нужным интервалом таймера его на предмет появления в нем значения "Истина". После этого выдается сообщение - типа все в сад - через минуту закрываемся. А потом если не закрылись - DoCmd.Quit ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:32 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
завести поле... периодически его опрашивать... Ну не изобретайте велосипед. это и есть msmq (упрощенно). ей для работы даже MS SQL Server раньше нужен был, она там собственное все очереди сообщений и хранила. Теперь уже и MS SQL вроде не нужен, типа на 2000-м серваке умеет и так данные хранить. А на клиенте - сидит себе компонент, который и опрашивает нужную ему очередь, или шлет сообщения другим. Ловишь от компонента события и делаешь все что душе угодно. Один компонент в невидимой форме сидит и базу закрывает когда нужно, другой - в форме со списком документов сидит и этот список обновляет (когда там изменения произошли) и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 16:47 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
2ЛП: 1. "Своё" - это не значит Exchange на Access. 2. Код для использования очередей тоже будет уже "своим". 3. Не стоит обобщать на всех пусть даже передовой опыт. У кого-то может и не стоять нужного ПО. 4. В данном случае имхо трудозатраты будут сопоставимы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 17:05 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
У Гетца в "Рецептах" есть готовый пример рассылки сообщений внутри акцесса. Аналогичный можно сделать хоть для удаленного выключения компьютеров. Я похожий использую для "выгоняния" юзеров из программы для копирования/архивирования/сжатия. Потом у них назреет идея внутреннего чата - придется сделать за символическую плату :) А закрывать программу - это слишком имхо слишком круто. Особенно если полунабранная "накладная" на пару сотен полей. Легче пару раз отправить какого-нить менеджера поискать отсутствующего на рабочем месте оператора - и операторы перестанут на рабочих местах отсутствовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 17:17 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
2 IgorM 1. Не спорю. Хотя видел и именно подобие Exchange на аксесе. 2. Разумеется своим. Только много ли того кода будет? 3. Может и не стоит нужный софт. У меня вон все на 97-м аксесе крутится, что ж мне теперь, про фичи 2002 не знать, а что успел узнать - то забыть? А про adp даже и не вспоминать никогда? 4. Неправда ваша . В данном случае - при ручной реализации трудозатраты будут на порядок меньше. Но сделать быстро - не всегда значит сделать правильно. Если сроки поджимают - делать как придется (с мыслю, что не мешало бы переделать). Если не критично по времени - пытаться сделать хорошо. Конечно если стоит софт, начальство согласно, и т.д. ИМХО. + 5. Механизм все равно полезный. Если его освоить - в дальшейшем трудозатраты как раз и снизятся на порядок. Обновление списка документов, обновление локального закешированных данных, и т.п. - везде похожая задача. Кто-то что-то сделал - надо всех оповестить. Вот я и думаю, может лучше один механизм один раз освоить, чем каждый раз велосипед изобретать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 17:31 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Для JinP HOW TO: Detect User Idle Time or Inactivity in Access 2000 http://support.microsoft.com/default.aspx?scid=kb;en-us;210297 там пример кода ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 17:38 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
2ЛП: 2. И в том и другом случае, зависит от функциональности. У кого-то много, у кого-то мало. И для очередей и для анализа что_там_предлагалось. 3. У меня тоже крутится. И A2002 стоит для разработки. Но это не означает то, что я должен непременно его всем поставить. 4. По трудозатратам: тем более. :) По второй части: трудно не согласится. 5. Кстати, о бесполезности очередей я ни слова не сказал. Да что там, даже неиспользовать их не призывал. :) Если удобно и в кассу - пожалуйста. Я про net send говорил вообще-то... Не знаю, чего это ты на меня так взъелся... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 17:47 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Я не взъелся. Я даже почти со всем согласился (за исключением п.4) Но "завести поле... периодически его опрашивать..." считаю все-таки изобретением велосипеда. Может оно и оправданно иногда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2003, 18:02 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
2 ЛП считаю все-таки изобретением велосипеда ИМХО это самое правильное решение в контексте поставленной задачи. Пусть не самое красивое, но самое простое. Пока речь не шла об обмнене документами, и т.п. Я на базе таких общих таблиц даже кассовые сервера организовывал - а уж просто завершение задачи организовать - как 2 пальца обос..ть. Ну а насчет прерывания программы при вводе накладной на 4568 записей - так для этого и дается сообщение с запасом времени для сохранения работы. В критичной ситуации можно организовать еще одно поле для администратора - типа при ответе "нет" организовать еще увеличение периода ожидания... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2003, 00:42 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
Как вариант: может быть какую-нибудь программулину вместо хранителя экрана у юзера. Проверить открытые окна или что там еще надо и отправить команды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2003, 11:55 |
|
||
|
Помоготе воспитать юзеров
|
|||
|---|---|---|---|
|
#18+
помню в 98 была такая WINPOPUP или нечто подобное по названию. позволяла трепаться письменно. в принципе можно использовать для рассылки предупреждения. можно еще и PCan... из нортона - подключаешься и сам закрываешь что нада долго но надежно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2003, 18:46 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32290585&tid=1678905]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 327ms |

| 0 / 0 |
