Определение имени ползователя, открывшего базу

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Определение имени ползователя, открывшего базу

Сообщение Mishel » 14.09.2004 (Вт) 18:13

Как определить кто открыл и вообще открыта ли база DAO, база открывается программно,
физически расположена на удаленном компе, путь к базе известен.
Смысл следующий, нужно сделать так что бы базу нельзя было открыть с двух разных компов.
Неужели только при помощи *.ldb файла который появляется в этой директории,
ведь есть параметр имени пользователя при создании базы?
И еще вопрос если база открывается монопольно, почему локальный комп видит, что она открыта, а удаленный нет?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.09.2004 (Ср) 10:16

Для mdb помоему другого способа нет (кроме как читая ldb-файл). Собственно, а чем не нравиться этот способ? Предназначение этого файла как раз в том, чтобы регистрировать подключения.
А что значит, удаленный не видит? Удаленный пользователь может открыть базу монопольно, когда она уже открыта монопольно?
Помоему это возможно только, если машина с базой работает под Win9x, при этом не загружена утилита SHARE.
Lasciate ogni speranza, voi ch'entrate.

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 15.09.2004 (Ср) 17:24

Но ведь есть объект CONNECTION
Неужели нельзя узнать кто его Connect?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.09.2004 (Ср) 17:34

Connection - это твой Connection. Как ты получишь чужой Connection?
Lasciate ogni speranza, voi ch'entrate.

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 15.09.2004 (Ср) 17:43

А если база открыта OpenBase,
то формируется workspace автоматом, я прав?
Так там должен быть и name

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 15.09.2004 (Ср) 18:36

Код: Выделить всё
Dim oRst As New ADODB.Recordset
Dim oCn As New ADODB.Connection

Dim BasePath as String
BasePath = "c:\...\my.mdb"

oCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & BasePath & ";Persist Security Info=False"
Set oRst = oCn.OpenSchema(-1, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
   
oRst.MoveFirst
   
Do While Not (oRst.EOF)
    Me.List2.AddItem (oRst(0))
    oRst.MoveNext
Loop
   
oRst.Close
oCn.Close
Set oRst = Nothing
Set oCn = Nothing

If Me.List2.ListCount = 0 Then MsgbBox "Нет подключений"


Только почему-то глюк возникает - твоё собственное имя 2 раза показывается. Но от этого легко избавиться..

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 16.09.2004 (Чт) 9:11

Это понятно, что если нет записей значит ничего не открыто, хотя весьма спорно.
На самом деле тогда проще
проверить .RecordCount

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.09.2004 (Чт) 11:35

Scuder, это ведь ADO...
Lasciate ogni speranza, voi ch'entrate.

Scuder
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 334
Зарегистрирован: 17.08.2002 (Сб) 13:18
Откуда: Moscow, Russia

Сообщение Scuder » 16.09.2004 (Чт) 11:43

alibek:
Scuder, это ведь ADO...


Да. И что? :-) Человек спрашивал:

Как определить кто открыл и вообще открыта ли база DAO


И он не говорил, что нужно методами DAO.. Что сложного в том, чтобы подключить библиотеку ADO? :-)

И, кстати..
Для mdb помоему другого способа нет (кроме как читая ldb-файл). Собственно, а чем не нравиться этот способ? Предназначение этого файла как раз в том, чтобы регистрировать подключения.


Попробуй открыть базу на 5-ти компьютерах, потом закрой на 4-х. Затем посмотри, что записано в ldb.. Ты увидишь имена всех 5-ти пользователей. :-) Может быть, конечно, там статус как-то меняется - не разбирался.. Но определить визуально по ldb, кто сидит в базе - нереально..

Mishel
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 14.09.2004 (Вт) 17:55

Сообщение Mishel » 16.09.2004 (Чт) 12:51

.RecordCount кстати и в DAO нормально работает.
А насчет ldb файла последний оратор прав,
не удаляются из него имена, только после закрытия базы последним файл удаляется


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 2

    TopList