Клиент Серверная работа в Access

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

Добрый день,

Подскажите пожалуйста, каким образом можно реализовать на Access 97 модель работы с данными, что бы люди, могли вносить информацию в базу, но не знали где храниться все данные. А лишь могли только вносить информацию, и редактировать только лично внесенную информацию. Без возможности просмотра внесенных данных другими. И уж тем более коррекции чужой информации.

По сути, могу организовать структурное хранение, сделать связи между данными. А вот распределение доступа по вводу информации, не знаю каким образом можно осуществить.

Есть такая идея, можно ли как то через Excel настроить макрос, который записывал бы в определенные таблицы в указанную базу, но и благодаря запросам, позволял бы редактировать данные. Внесенные этим же юзером.
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

Можете пожалуйста привести пример, подключения макросом к имеющейся базе данных. Access 97.
И добавление значений в ячейках ексель, в указанную табличку в Access. Это очень помогло бы в моей задачке.

Заранее благодарю !
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Пользователям нужно дать форму в которой свойство "Ввод данных" = true
Такая форма не позволяет видеть уже имеющиеся данные, а только вводить и редактировать новые.
Редактирование разрешено только для записей которые только что введены. После переоткрытия формы эти записи такде станут недоступными.

В Access 97/2000 пока еще можно настраивать разные права для разных пользотелей и админитрировать рабочую группу Access, но в более поздних версиях эта возможность упразднена. (Кажется мы с Вами уже обсуждали тут эту тему) Т.е. даже если эта форма будет открываться автоматически, пользователи, открывая БД с клавишей shift, увидят все объекты БД и смогут посмотреть сырые данные в таблице.

Можно поступить еще таким образом: создать новую БД, создать там таблицу, как связь с целевой таблицей в основном хранилище. Затем установить этой таблице атрибут "Скрытая" (см. свойства таблицы). Ну а затем создать форму с "Ввод данных"=true. Т.е. получится БД как бы с единственным объектом - формой, которая по связи смотрит на основную БД. Показ скрытых объектов по умолчанию всегда выключен... Но это тоже не бог весть какая защита.

Записывать данные макросом просто. Есть много способов. Если у вас компьютеры в сети разнородны, то проще всего будет сделать так

Код: Выделить всё

Sub qwe()
  Set dbe = CreateObject("DAO.DBEngine.36")
  Set db = dbe.OpenDatabase("D:\Path\Datafile")
  db.Execute ("insert into t1 values(123)")
End Sub
Т.е. не открывая явно датасет, а используя SQL: INSERT INTO
kuznetsovSergey
Сообщения: 163
Зарегистрирован: 05 мар 2009, 11:27

Naeel Maqsudov писал(а):Пользователям нужно дать форму в которой свойство "Ввод данных" = true
Такая форма не позволяет видеть уже имеющиеся данные, а только вводить и редактировать новые.
Редактирование разрешено только для записей которые только что введены. После переоткрытия формы эти записи такде станут недоступными.

В Access 97/2000 пока еще можно настраивать разные права для разных пользотелей и админитрировать рабочую группу Access, но в более поздних версиях эта возможность упразднена. (Кажется мы с Вами уже обсуждали тут эту тему) Т.е. даже если эта форма будет открываться автоматически, пользователи, открывая БД с клавишей shift, увидят все объекты БД и смогут посмотреть сырые данные в таблице.

Можно поступить еще таким образом: создать новую БД, создать там таблицу, как связь с целевой таблицей в основном хранилище. Затем установить этой таблице атрибут "Скрытая" (см. свойства таблицы). Ну а затем создать форму с "Ввод данных"=true. Т.е. получится БД как бы с единственным объектом - формой, которая по связи смотрит на основную БД. Показ скрытых объектов по умолчанию всегда выключен... Но это тоже не бог весть какая защита.

Записывать данные макросом просто. Есть много способов. Если у вас компьютеры в сети разнородны, то проще всего будет сделать так

Код: Выделить всё

Sub qwe()
Set dbe = CreateObject("DAO.DBEngine.36")
Set db = dbe.OpenDatabase("D:\Path\Datafile")
db.Execute ("insert into t1 values(123)")
End Sub
Т.е. не открывая явно датасет, а используя SQL: INSERT INTO
Спасибо, Naeel Maqsudov !!
Буду пробовать! Защиту данных необходимо произвести на очень простом уровне. И я уже придумал как я это сделаю !!!
я создам для каждой зоны ответственности, свой подкаталог на сетевом диске. И назначим доступ только к определенному под каталогу. В каждом подкаталоге, как Вы предложили, создам базу с формой работы, и связанной таблицей к форме. Каждый будет работать только лишь со своими данными. Но на этом же уровне, создам подкаталог, где создам консолидированную базу, со связями всех этих "мини-баз данных". И что бы увидеть всю информацию в одном месте, нужно иметь доступ ко всем вложенным подкаталогам, чего никому сделано не будет, кроме заинтересованных лиц.

ОГРОМНОЕ СПАСИБО ЗА СОВЕТ!!! думаю это сработает !!!
Ответить