|
|
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
У меня проект на Access97 mdb+mdb, соответственно возникло два вопроса: 1. Можно ли, если к базе подключены пользователи, сжимать Б.Д.? 2. Как программно отключить от серверной mdb, всех пользователей, причем надо сделать так: А. Сначала пользователю выдается сообщение, что у него есть 1 минута, чтобы закрыть базу. Б. Если не закрыл, то всех работающих пользователей отрубить от сервера. Мож где в инете есть примерчики на подобную тему, я что-то не нашел ничего. P.S. Нашел топик на похожую тему, но оказалось не то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:12:01 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:14:53 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
авторНашел топик на похожую тему, но оказалось не то, что нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:22:46 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
Действительно много обсуждалось, сам задавал такой вопрос. Предлагалось (да и применилось) следующий вариант (упрощённо): 1. На сервере таблица с именами юзеров и колонкой флагов. 2. На клиенте в главной форме приложения (открыта всегда) по таймеру проверяется значение флага у определённого юзера. При 0 (или -1, как поставишь) приложение клиента клиента выдаёт предупреждение, а при следующей проверке завершает свою работу. При попытке подключиться снова опять-таки проверяется значение флага и подключение осуществляется только при его определённом значении, в противном случае выдается что-то вроде "Подключение невозможно, обратись к тому-то" и выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:41:45 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
У меня сделанно так: Есть табличка пользователь,доступ Юзер сканит таблицу раз в две минуты по таймеру невидимой формы если флаг доступа скинут,то предлагает пользователю завершится сразу или дает ему две минуты на завершение текущих дел и завершается сама 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 При открытии так-же проверяется флаг доступа чтобы не дать юзеру запустится при сброшенном флаге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 11:46:18 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 12:28:39 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
для отрубания юзеров от mdb без переделки кода и "зависших" сварганил "монитор" никто не хочет пробовать /topic/99452&hl= Студент - будь пионером попробуй! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 14:49:38 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
Попробовал - как то слишком все навороченно для понимания. Но в общем интересно. Потом попробую более детально вникнуть. Просто сейчас у всех студентов сессия - времени не хватает. :))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 21:51:12 |
|
||
|
Как программно отключить юзеров от базы?
|
|||
|---|---|---|---|
|
#18+
Gyslik.Попробовал - как то слишком все навороченно для понимания. Но в общем интересно. Потом попробую более детально вникнуть. Просто сейчас у всех студентов сессия - времени не хватает. :))) Да и за это спасибки - уважил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 22:11:08 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32563284&tid=1673789]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
212ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 549ms |

| 0 / 0 |
