Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Как Чтоб открыл базу только один? Ассес Добавлено: 27.09.05 19:43  

Автор вопроса:  student-uni
Делаю открытие базы с монопольным доступом. Ассесс
Но что то делаю не так.

Мне нужно, чтобы если один юзверь открыл базу,
то другие открыть не могли пока он не закроет.
/запрос у него будет короткий в две строки/
В очереди ждали Открытия!

А получается такая фигня:
её открывают все,
а изменения!!! вносятся по очереди.

Это знаете ли большая разница.

Юзер1 проверяет по базе нет ли там какой либо записи
других юзерей, и если нет - делет что то дальше.
/если есть - не делает/
И так все юзери.

ДЫк если б они в базу не входили все сразу
то всё б работало
 А так - они все вносят запись,
/тк не видят друг друга - стоящих в очереди на запись/
А потом их записи благополучно по очереди
вносятся в таблицу.

Вот такое вот.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Hunter2003



ICQ: 287314254 

Вопросов: 14
Ответов: 72
 Профиль | | #1 Добавлено: 29.09.05 14:29
Я не совсем понял из-за чего этот весь геморрой происходит. Если так уж нужно знать есть ли кто в базе, то создай регистрационную таблу типа: ключ (счетчик), юзер_нэйм, дата_входа, дата_выхода. При открытии базы юзер регится в ентой табле (соответственно дата_входа заполняется, а дата_выхода пустует) И при открытии делай проверку на наличие в табле записей с пустующим дата_выхода.

Ответить

Номер ответа: 2
Автор ответа:
 student-uni



Вопросов: 122
Ответов: 257
 Профиль | | #2 Добавлено: 29.09.05 14:49
Думал.
Не пойдет, он же ресет нажать может
Тогда ваще никто не воидет

Ответить

Номер ответа: 3
Автор ответа:
 Hunter2003



ICQ: 287314254 

Вопросов: 14
Ответов: 72
 Профиль | | #3 Добавлено: 03.10.05 13:16
Ну тогда есть еще один вариант (не очень красивый, но более простой!).
1. Первым делом тебе нужно подцепиться к БД и что-нить из нее выбрать (не важно что, это сути не меняет), затем закрываешь рекордсет и отцепляешься от БД.
2. Проверяешь на наличие файла твоя_база.ldb. Если такой существует, то уже какой-то юзверь там сидит.

P.S. Первая операция необходимо если юзверь нажмет на ресет.

Ответить

Номер ответа: 4
Автор ответа:
 Роман



Вопросов: 1
Ответов: 31
 Web-сайт: www.BubnovRV.narod.ru
 Профиль | | #4
Добавлено: 14.10.05 18:23
Данный код показывает все машины, а если подправить код то и всех юзеров подключенных к базе. При открытии базы mdb не в монопольном режиме создается файл ldb из него все считывается.

    Open App.Path & "Путь к базе" For Input Access Read As #1
    Line Input #1, varname
    Close #1
    ;Dim User(1 To 2, 1 To 10) As String
    j = 1
    For I = 1 To Len(varname)
     If Mid(varname, I, 1) = " " Then
      User(1, j) = Trim(Mid(varname, 1, I - 1))
      varname = LTrim(Right(varname, Len(varname) - Len(User(1, j))))
      User(2, j) = Mid(varname, 1, InStr(1, varname, " ";) - 1)
      varname = LTrim(Right(varname, Len(varname) - Len(User(2, j))))
      j = j + 1
     End If
    Next I
    ;Dim str As String
    str = "Локальная база открыта со следующих машин: "
    For I = 1 To 9
     For j = I + 1 To 10
     If User(1, I) = User(1, j) Then
      User(1, j) = ""
     End If
     Next j
    Next I
    For I = 1 To 10
     If Len(User(1, I)) > 0 Then
      str = str & User(1, I) & ", "
     End If
    Next I
    str = Left(str, (Len(str) - 2))
    str = str & ". Закройте все программы, использующие базу, и повторите попытку."

Ответить

Номер ответа: 5
Автор ответа:
 Роман



Вопросов: 1
Ответов: 31
 Web-сайт: www.BubnovRV.narod.ru
 Профиль | | #5
Добавлено: 14.10.05 18:24
А если в монопольном режиме база открыта то файла ldb просто нет!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам