powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как программно отключить юзеров от базы?
9 сообщений из 9, страница 1 из 1
Как программно отключить юзеров от базы?
    #32563093
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня проект на Access97 mdb+mdb, соответственно возникло два вопроса:
1. Можно ли, если к базе подключены пользователи, сжимать Б.Д.?
2. Как программно отключить от серверной mdb, всех пользователей, причем надо сделать так:
А. Сначала пользователю выдается сообщение, что у него есть 1 минута, чтобы закрыть базу.
Б. Если не закрыл, то всех работающих пользователей отрубить от сервера.

Мож где в инете есть примерчики на подобную тему, я что-то не нашел ничего.

P.S. Нашел топик на похожую тему, но оказалось не то, что нужно.
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32563107
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А по форуму поискать?
Уже столько раз обсуждалось...
Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32563131
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНашел топик на похожую тему, но оказалось не то, что нужно.
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32563178
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно много обсуждалось, сам задавал такой вопрос.

Предлагалось (да и применилось) следующий вариант (упрощённо):

1. На сервере таблица с именами юзеров и колонкой флагов.
2. На клиенте в главной форме приложения (открыта всегда) по таймеру проверяется значение флага у определённого юзера. При 0 (или -1, как поставишь) приложение клиента клиента выдаёт предупреждение, а при следующей проверке завершает свою работу.
При попытке подключиться снова опять-таки проверяется значение флага и подключение осуществляется только при его определённом значении, в противном случае выдается что-то вроде "Подключение невозможно, обратись к тому-то" и выход.
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32563192
Фотография Latuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня сделанно так:
Есть табличка пользователь,доступ
Юзер сканит таблицу раз в две минуты
по таймеру невидимой формы
если флаг доступа скинут,то предлагает пользователю завершится
сразу или дает ему две минуты на завершение текущих дел и завершается сама


Dim FlQuit As Boolean 'флаг отключения
Dim FlSructUpd As Boolean 'флаг обновления структуры
Dim FlVerUpd As Boolean 'флаг обновления версии
Dim QuitTime, CurTimer
Dim intCurCboRecUpd As Integer
Private Const lngIntervalProverki = 120000 'частота проверок флага доступа в милисекундах

Private Sub btNo_Click()
Me.TimerInterval = lngIntervalProverki / 12 'после включения авто завершения
Me.Visible = False 'проверять флаг доступа каждые 10 сек на случай отмены завершения
End Sub

Private Sub btYes_Click()
If FlSructUpd Then DoCmd.Quit Else UpdVer
End Sub

Private Sub Form_Open(Cancel As Integer)
'Me.Visible = False
FlVerUpd = True
FlQuit = True
FlSructUpd = True
Me.TimerInterval = lngIntervalProverki
intCurCboRecUpd = 0
End Sub

Private Sub Form_Timer()
Dim AcName As String


If Nz(DLookup("Dostup", "dbo.UP_Current_v"), False) Then 'проверить флаг доступа
'Проверка версии структуры базы
If intVerBStruct() < cnn.Execute("dbo.Ver_Max_p")("Struct_Max") Then
If FlSructUpd Then
lbl4.Caption = "На сервере обнаружена новая структура базы."
lbl1.Caption = "Необходимо обновление программы!"
lbl2.Caption = "Через две минуты вы будете обновлены автоматически."
lbl3.Caption = "Обновится сейчас ?"
FlSructUpd = False
Me.Visible = True
Me.SetFocus
QuitTime = TimeSerial(Hour(Now), Minute(Now) + lngIntervalProverki / 60000, Second(Now))
CurTimer = Timer
Me.TimerInterval = 1000 'обновлять раз в секунду
Else 'если завершение начато проверить прошло ли время ожидания если да то обновить версию
If Timer > CurTimer + lngIntervalProverki / 1000 Then UpdVer
'обновить поле оставшегося времени
Ostalos = QuitTime - TimeSerial(Hour(Now), Minute(Now), Second(Now))
End If
Else 'Проверка версии программы
If intVer_ID() < cnn.Execute("dbo.Ver_Max_p")("ID_Max") And FlVerUpd Then
If MsgBox("Обнаружена новая версия програмы.Обновить?", vbYesNo) = vbYes Then
UpdVer
Else 'если отказался то больше не спрашивать
FlVerUpd = False
End If
End If
End If

If FlQuit Then
On Error Resume Next
AcName = Screen.ActiveDatasheet.Name
If AcName = "" Then AcName = Screen.ActiveForm.Name
If AcName = "" Then AcName = Screen.ActiveReport.Name
' вместо "123" втавляй что хочеш (например номер тек документа) для идентификации записи с которой работает юзер в активной форме
' этот фрагмент нужен если хочеш заполнять лог чем занимается юзер
cnn.Execute "dbo.UL_P @FormName='" & AcName & ";" & Screen.ActiveControl.Name & "' ,@DocID=" & 123
On Error GoTo 0
Else 'если доступ разрешен после инициации завершения
FlQuit = True 'сбросить флаг отключения
Me.TimerInterval = lngIntervalProverki
Me.Visible = False
End If
Else
If FlQuit Then 'если доступ отключен и завершение не начато
lbl4.Caption = "По техническим причинам вы отключаетесь от базы."
lbl1.Caption = "Завершите работу с программой."
lbl2.Caption = "Через две минуты вы будете отключены автоматически."
lbl3.Caption = "Завершить работу сейчас ?"
FlQuit = False 'начать завершение
Me.Visible = True
Me.SetFocus
QuitTime = TimeSerial(Hour(Now), Minute(Now) + lngIntervalProverki / 60000, Second(Now))
CurTimer = Timer
Me.TimerInterval = 1000 'обновлять раз в секунду
Else 'если завершение начато проверить прошло ли время ожидания если да то выход
If Timer > CurTimer + lngIntervalProverki / 1000 Then DoCmd.Quit
'обновить поле оставшегося времени
Ostalos = QuitTime - TimeSerial(Hour(Now), Minute(Now), Second(Now))
End If
End If

End Sub

При открытии так-же проверяется флаг доступа
чтобы не дать юзеру запустится при сброшенном флаге.
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32563284
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, буду пробовать.
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32563713
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для отрубания юзеров от mdb без переделки кода и "зависших"
сварганил "монитор"
никто не хочет пробовать
/topic/99452&hl=

Студент - будь пионером попробуй!
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32564520
Фотография Gyslik.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал - как то слишком все навороченно для понимания.
Но в общем интересно.

Потом попробую более детально вникнуть. Просто сейчас у всех студентов сессия - времени не хватает. :)))
...
Рейтинг: 0 / 0
Как программно отключить юзеров от базы?
    #32564530
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gyslik.Попробовал - как то слишком все навороченно для понимания.
Но в общем интересно.

Потом попробую более детально вникнуть. Просто сейчас у всех студентов сессия - времени не хватает. :)))
Да и за это спасибки - уважил
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как программно отключить юзеров от базы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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