Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как выкинуть пользователя, сидящего в базе / 13 сообщений из 13, страница 1 из 1
03.09.2003, 17:19
    #32255055
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Проблема такая: есть многопользовательская база на аксе2000. Нередко надо оперативно подправить формочку, что не позволяется, когда там сидят юзеры.

Можно ли их принудительно выкинуть?

Существующие темы вроде проглядел, и вариант со служебной таблицей и проверкой по таймеру не очень нравится.
...
Рейтинг: 0 / 0
03.09.2003, 17:23
    #32255061
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Выдернуть сетевой шнурок...

можно еще net sendом всех попросить выйти
...
Рейтинг: 0 / 0
03.09.2003, 17:34
    #32255080
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Шнурки выдергивать - убегаешься, хотя и так делали
А нет сенд не работает, если нет прокладки. Нужно как раз на этот случай. А то народ логинится и уходит... :-(
...
Рейтинг: 0 / 0
03.09.2003, 17:41
    #32255091
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Как вариант:
а) наваять на winsock.ocx "сервер,"
открывающийся на каждом запущенном клиенте-базе Аксцесса
и слушающем команду.
По команде - выход из базы и т.п.
НО: где-то тут обсуждались проблемы коммуникаций по винсоку именно через Эксцес (XL и VB - все ок),
поэтому стоит сначала попробовать надежность, а потом делать ;)))

б) папка (директория ;), лежащая в сети,
в нее по надобности записывается файлик username,
а запущенный клиент периодически проверяте -
если появился файл - читать - отрубиться...
...
Рейтинг: 0 / 0
03.09.2003, 17:50
    #32255099
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
То есть насколько я понял, штатных средств Аска нет.

Тогда вопрос: как повеситься на глобальный таймер (один для всего applicationа), а то похоже он только для формы..
...
Рейтинг: 0 / 0
03.09.2003, 17:55
    #32255109
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Форма - заставка (че -нить на заднем плане или скрытое). С таймером, (прочими параметрами текущего сеанса - по необходимости). И с простой такой процедуркой:

Private Sub Form_Unload(Cancel As Integer)
Application.Quit
End Sub

чтобы не прихлопнул кто ненароком.
...
Рейтинг: 0 / 0
03.09.2003, 18:01
    #32255125
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Интересная идея. А как сделать, чтобы она не показывалась в списке окон?

Кстати, тогда проще сделать Cancel = true. Нет?
...
Рейтинг: 0 / 0
03.09.2003, 18:06
    #32255132
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Запустить таймер функциями API.
Вот такой модуль добавь в свою базу:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Option Explicit
Option Private Module

Private Declare Function SetTimer Lib  "user32"  (ByVal lngHandle As Long, ByVal lngEvent As Long, ByVal lngElapse As Long, ByVal lngFuncion As Long) As Long
Private Declare Function KillTimer Lib  "user32"  (ByVal lngHandle As Long, ByVal lngEvent As Long) As Long

' в качестве lngHandle суй туда Application.hWndAccessApp - для глобальности, а так и Me.hWnd можно

Public Sub TimerProgress()
  ' твой код
End Sub
Public Sub CloseTimer(ByVal lngHandle As Long)
    KillTimer lngHandle,  0 
End Sub
Public Sub StartTimer(ByVal lngHandle As Long, ByVal lngInterval As Long)
    SetTimer lngHandle,  0 , lngInterval, AddressOf TimerProgress
End Sub


Остается только проблема его запуска. Надо его куда-нибудь рассувать, но тут вариантов масса.


2Alexus12: Кстати идея с клиентом winsock'а в базе мне понравилась.... прикольно. А то скоко не читал все обычно к таймеру скатываются, а тут новенько, интересненько.... это ведь можно только базу по команде с сервера закрывать, но еще за пользователями следить и пакостить, целого трояна наваять мона (чтобы он еще им потом что-нибудь типа VNC закачивал и запускал в тихоря - для получения удаленного доступа админа к своим пользователям ... :) )
...
Рейтинг: 0 / 0
03.09.2003, 18:15
    #32255151
GuDVin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Вот это прикольно, надо будет попробовать!

А lngHandle - это хэндл таймера вроде, а не аппликухи?

С запуском у меня проблемы нет, у меня одна форма гарантированно запускается. Нечего если на онлоад поставить? Повторный запуск таймера не критичен?

за пользователями следить и пакостить
Ба, шаловливые ручки... :-) А убирать за пользователем кто будет... А то ведь он испугается...:-)
...
Рейтинг: 0 / 0
04.09.2003, 10:34
    #32255511
SergeySV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
Таймер привязывается к окну. В lngHandle запихни Application.hWndAccessApp и по Access не закроешь он будет действовать.

Таймер можно запускать несколько раз (с таким же lngHandle), он просто продолжит свою работу, и потом легко будет убит (с одного раза) через CloseTimer
...
Рейтинг: 0 / 0
04.09.2003, 11:13
    #32255577
Alexus12
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
>Кстати идея с клиентом winsock'а в базе мне понравилась.... прикольно.

Тока не с клиентом, а с сервером - он после запуска должен открыть свой порт на прослушивание на каждой машине, запустившей твою базу.

>А то скоко не читал все обычно к таймеру скатываются, а тут новенько, интересненько.... это ведь можно только базу по команде с сервера закрывать, но еще за пользователями следить и пакостить, целого трояна наваять мона (чтобы он еще им потом что-нибудь типа VNC закачивал и запускал в тихоря - для получения удаленного доступа админа к своим пользователям ... :) )

наверное, можно - в той же сети, а иначе (из инета) файрвол не пропустит ;)))
наверное, что-то для передачи копий экрана и удаленного мувинга мыша можно сделать -
чтобы юзер звякнул, когда что-то сломалось -
а админ подконнектился и мышом отремонтировал.
...
Рейтинг: 0 / 0
04.09.2003, 12:08
    #32255680
assa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
>>Кстати, тогда проще сделать Cancel = true. Нет?
ГЫ!

А из приложения выходить - event отключать? Можно, но не "проще".
...
Рейтинг: 0 / 0
04.09.2003, 13:04
    #32255787
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выкинуть пользователя, сидящего в базе
> Интересная идея. А как сделать, чтобы она не показывалась в списке окон?

Если форма Visible = True, то в списке окон она отсутствует.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как выкинуть пользователя, сидящего в базе / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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