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

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

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

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

1. На сервере таблица с именами юзеров и колонкой флагов.
2. На клиенте в главной форме приложения (открыта всегда) по таймеру проверяется значение флага у определённого юзера. При 0 (или -1, как поставишь) приложение клиента клиента выдаёт предупреждение, а при следующей проверке завершает свою работу.
При попытке подключиться снова опять-таки проверяется значение флага и подключение осуществляется только при его определённом значении, в противном случае выдается что-то вроде "Подключение невозможно, обратись к тому-то" и выход.
...
Рейтинг: 0 / 0
16.06.2004, 11:46:18
    #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
16.06.2004, 12:28:39
    #32563284
Gyslik.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить юзеров от базы?
Спасибо, буду пробовать.
...
Рейтинг: 0 / 0
16.06.2004, 14:49:38
    #32563713
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как программно отключить юзеров от базы?
для отрубания юзеров от mdb без переделки кода и "зависших"
сварганил "монитор"
никто не хочет пробовать
/topic/99452&hl=

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

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

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


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