Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
Может кто поможет советом?
Есть многопользовательская база mdb, у нее около пяти пользователей.
Как сделать, чтобы каждый пользователь работал только со своими данными, т.е. есть четыре оператора, и каждый работает только с теми данными, которые он набил, есть один главный оператор, у которого есть доступ ко всем данным всех четырех операторов и + он тоже может набивать данные только для себя.
Как организовать такой ввод?

Конечно есть идея сделать 5 отдельных таблиц для всех пяти операторов и потом все данные сливать в одну общую таблицу, но наверно это как-то глупо.
Например завтра появится шестой оператор и что, ему еще одну таблицу заводить надо будет?

Как сделать, чтобы каждый оператор работал только со своими данными?
5 июн 04, 13:52    [724234]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
ну и сделай ключ в таблице ID оператора
а чтобы не лезли через таблицы - mde и убери окна базы
Shift я бы оставил если оператор умный против него нет приема
5 июн 04, 14:01    [724239]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Omar_K
Member

Откуда: Киев
Сообщений: 106
У меня тоже такая есть необходимость есть 5 юзеров они заводят в форму данные которые потом инсертятся в общую таблицу правда ключ юзера не нужен мне. Вопрос такой
на кнопку я вешаю
CurrentDB.Execute Insert......Me!Combo
так вот если допустим mde будет лежать где-нить в сетевой папке и они все одновременно открывают этот файл и вводят данные. Могу ли я быть уверенным что после отработки процедуры онклик все записи нормально заинтесртятся, то есть не будет там всяких конфликтов
5 июн 04, 14:16    [724253]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
автор

то есть не будет там всяких конфликтов

зависит от устройства ключа в этой таблице ксли счетчик то OK
проблема будет когда оператору надо понять где на экране(списке) то что ввел он , а где сосед
5 июн 04, 14:21    [724256]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Omar_K
Member

Откуда: Киев
Сообщений: 106
Ключ у меня счетчик, тогда может добавить таблицу юзеров ID Name например и добавить в главной таблице поле IDOperator.А форме комбо с фамилиями юзеров? Но тогда он может выбрать соседа и под ним забивать? есть ли в Аксе какой нибудь инструмент который бы инсертил бы код оператора(именно того под каким логином он зашел в базу) в таблицу, и еще как вобще можно сделать авторизацию юзеров в плане при запуске приложения выскакивает бокс с двумя полями логин и пароль?
5 июн 04, 14:31    [724264]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
2 Shuhard:
автор
ну и сделай ключ в таблице ID оператора

Т.е. сделать пять ключевых полей, по ключевому полю на каждого оператора?
Или я неправильно понял?
5 июн 04, 15:29    [724294]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
автор

Т.е. сделать пять ключевых полей, по ключевому полю на каждого оператора?
Или я неправильно понял?

одно(1,ОДЫН ДА) дополнительное поле содержащие Id оператора
+ табличка соответствия Id оператора его Nickу

соответственно запросы на выборку несут в where ... Id=Id_конкретного оператора
5 июн 04, 15:37    [724303]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Shuhard
Member

Откуда:
Сообщений: 4998
То Omar_K
автор

А форме комбо с фамилиями юзеров? Но тогда он может выбрать соседа и под ним забивать

способов много если проект mdb+mdb
то я кидаю на каждой машине поглубже в windows\system32 mdbу c 1 таблицей одним полем - Id оператора

если вопросу ДСП и коммерческой тайны то деоай стандартную как минимум защиту и привязывайся к User в Access(см конфа+фаги)


авторизовать можно своими средствами но лучше встроенными в Access
(сам использую в таких случаях Sql 2000 и знания по mdb гипотетические)
5 июн 04, 15:43    [724306]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
Хорошо, у меня в моих данных есть поле №пользователя (т.е. для каждого поля, занесенного пользователем есть числовое поле №пользователя), есть талбица соответствия №пользователя и имени_пользователя, сделал форму для ввода №пользователя и имени_пользователя, а как теперь сделать, чтобы у пользователя при вводе данных для каждой записи автоматически заносился в таблицу номер, который он ввел первоначально в поле №пользователя?

Как?
5 июн 04, 23:10    [724485]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Не знаю, сработает ли как DefaultValue; если нет, то через BeforeInsert:

dlookup("№пользователя","талбица","имяпользователя='" & currentuser() & "'")
5 июн 04, 23:17    [724491]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
dlookup, для многопользовательской базы ? ? ?
Когда записей будет, хотя бы 10000, то база уже будет очень медленно работать!
К сожалению, наверно этот способ не подойдет.

А можно как-то программно сделать "значение по умолчанию", для поля, ведь если пользователь ввел свой идентификатор, то наверно можно использовать это значение по умолчанию, для поля №пользователя , для тех записей которые вводит именно он?
Или я не прав?
5 июн 04, 23:24    [724493]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
dlookup будет тормозить, если к нему обращаться в запросе. Если всего одно обращение за операцию, то это не страшно.

В принципе, можно так: сразу после входа посчитать это число по той же моей формуле, занести в глобальную переменную и потом уже брать из этой переменной, а не запускать каждый раз dlookup.
5 июн 04, 23:30    [724495]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
автор
посчитать это число по той же моей формуле, занести в глобальную переменную и потом уже брать из этой переменной

Саныч, я же только учусь, я еще не такой умный и не знаю, как это сделать.

Можно, PLS, немного поподробнее, как это сделать.

P.S. А идея - супер.
5 июн 04, 23:33    [724496]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
В каждой базе есть либо макрос по имени AutoExec, в котором указано, какую подпрограмму исполнять при запуске, либо форма, которая открывается первой и у которой есть OnOpen и OnLoad. Вот где-нибудь среди этого кода и пишем:

nCurUser = dlookup...

где nCurUser - это переменная, описанная как Integer или лучше Long. Дальше. Создаем где-нибудь функцию:

public function CurUserNumber()as long
CurUserNumber=nCurUser
end function

И в DefaultValue соответствующего текстбокса пишем:

=CurUserNumber()
5 июн 04, 23:38    [724498]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
Все работало бы нормально, но у меня запрос с параметрами.
и соответветственно строка
nCurUser = DLookup("[№пользователя]", "запрос_пароль", "[имя_пользователя]='" & CurrentUser() & "'")
не работает, т.к. у меня есть запрос_пароль вида:
SELECT тбл_пароль.имя_пользователя, тбл_пароль.№пользователя
FROM тбл_пароль
WHERE (((тбл_пароль.имя_пользователя)=[p1]) AND ((тбл_пароль.№пользователя)=[p2]));
Что в DLookup написать, чтобы Access переваривал запрос с параметрами?
7 июн 04, 16:31    [726703]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
Хотя бы намекните, пожалуйста, в какую сторону копать?
7 июн 04, 21:36    [727458]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Не переварит. Нужен запрос без параметров.
7 июн 04, 21:58    [727469]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
2 ВС:
Спасибо.

2 Сам себе:
Я озадачен.
7 июн 04, 22:06    [727472]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
себесям
Guest
И чем же?
7 июн 04, 22:14    [727477]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Gyslik.
Member

Откуда: Москва
Сообщений: 748
автор
И чем же?

Тем, что для авторизации пользователя нельзя сделать запрос без параметров - работать не будет.
7 июн 04, 22:18    [727483]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Так сделай для дилукапа еще один запрос. Или у тебя в базе больше одного запроса не помещается?
7 июн 04, 22:22    [727490]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Владимир Саныч
Member

Откуда: Израиль (причем это 1 человек, а не 2 => прошу на ты)
Сообщений: 40414
Кстати, я-то предлагал запихивать в дилукап не запрос, а прямо таблицу. Зачем понадобился запрос, я не знаю.
7 июн 04, 22:23    [727491]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
dkny
Member

Откуда: Moscow, Russia
Сообщений: 135
Саныч, а как можно вставить Dlookup в таблицу? Впрочем, вопрос у меня не об этом, это так, вырвалось :)

Вопрос вот какой: идея организовать доступ к данным на основе Login'a посещает, похоже, каждого, кто работает с многопользовательской mdb. У меня это находится на стадии идеи, соответственно, прежде чем огород городить, хотелось бы выяснить все более подробно.

У меня: вход по логину, есть таблица (или таблицы) с полем ID, этот ID однозначно связан с данными о сотруднике. ID в таблицах служит индикатором доступа к данным, т.е. человек с другим ID эти данные не прочитает.

Нужно: занести Login в глобальную переменную (или куда там оно может влезть) и в запросах/формах/отчетах брать этот Login (это то же самое, что и ID) для своих целей.

Я так понимаю, что сначала нужно создать функцию, забирающую Login. Не подскажете ли как? (прошу прощения, если повторяюсь) И из нее, как глобальную переменную брать ID (тоже с примерчиком на пару строк, если возможно, например, для запроса). Правильно?
8 июн 04, 10:45    [727985]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
neal
Member

Откуда: Сердце Москвы
Сообщений: 492
автор
Есть многопользовательская база mdb, у нее около пяти пользователей.
Как сделать, чтобы каждый пользователь работал только со своими данными, т.е. есть четыре оператора, и каждый работает только с теми данными, которые он набил, есть один главный оператор, у которого есть доступ ко всем данным всех четырех операторов и + он тоже может набивать данные только для себя.
Как организовать такой ввод?

Конечно есть идея сделать 5 отдельных таблиц для всех пяти операторов и потом все данные сливать в одну общую таблицу, но наверно это как-то глупо.
Например завтра появится шестой оператор и что, ему еще одну таблицу заводить надо будет?

Как сделать, чтобы каждый оператор работал только со своими данными?

ИМХО, в таблице, где храняться эти данные сделать поле Доступ типа byte. Обязательное.
При входе брать идентификацию пользователя и/или компьютера через функции api.

Завести в таблицу где IDпользователя,ИмяПользователя поле УровеньДоступа типа byte.
Прописать для первого пользователя УровеньДоступа: 1
для второго: 2
для третьего: 4
для четвертого: 8
для пятого (в данном случае): 31 (1+2+4+8 его 16)

После идентификации в глобальную переменную (TheDostup) записывается его УровеньДоступа.
Создаются функции в каком-нибудь глобальном модуле:

private TheDostup as byte

public function CurrDostup() as byte
    CurrDostup = TheDostup
end function

Public Function Crossbit(ByVal I1 As Byte, ByVal I2 As Byte) As Boolean
    Dim K As Byte
    Dim F As Boolean
    F = False
    K = 128
    Do While (K > 1)
        If (I1 >= K) And (I2 >= K) Then
            F = True
            Exit Do
        End If
        If (I1 >= K) Then
            I1 = I1 - K
        End If
        If (I2 >= K) Then
            I2 = I2 - K
        End If
        K = K / 2
    Loop
    If (I1 = 1) And (I2 = 1) Then
        F = True
    End If
    Crossbit = F
End Function

При вставке новой записи не забывай присваивать полю Доступ значение =CurrDostup()

В запросах, которые выводятся на экран пишется дополнительное условие в раздел WHERE crossbit(Доступ,CurrDostup())

Будет чуть-чуть медленнее чем сейчас у тебя (если компы слабые, а запросы сами по себе сложные),
но будет гибкая система настройки прав пользователей.

Этой системы хватит на 8 различных типов доступа,
если надо больше, то вместо byte - integer, long.

Good luck!
8 июн 04, 13:15    [728651]     Ответить | Цитировать Сообщить модератору
 Re: Нужна идея по организации многопользовательской mdb  [new]
Alexus12
Member

Откуда:
Сообщений: 2868
вот интересно
а чем вопрошающему не понравился
стандартный в Access способ раздачи прав
с использованием механизма раздачи логинов-паролей из system.mdw???

тут и автоматическая формочка авторизации при запуске
и currentuser() не сбрасывается при возникновении ошибки
в отличие от глобальной переменной
и в табличку с правами залезть-права себе поменять юзер просто так не сможет

что не так со стандартной системой безопасности?
8 июн 04, 15:06    [729117]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft Access Ответить