Формы MS Access доступны только для чтения

#database #ms-access

#База данных #ms-access

Вопрос:

У меня есть приложение, разработанное в MS access forms, указывающее на базу данных SQL Server. Строка подключения на стороне форм использует пользователя базы данных, который имеет полный доступ к базе данных SQL Server.

Я хочу сделать форму доступа доступной только для чтения или, скажем, не хочет, чтобы какие-либо вставки / обновления / удаления выполнялись на стороне базы данных.

Есть ли какие-либо настройки, которые я могу использовать, чтобы сделать все меню Access forms доступным только для чтения? Я попытался установить для параметров форм, таких как Разрешить редактирование / Разрешить добавления, значение «Нет», но это не работает.

Пожалуйста, помогите.

Спасибо

Комментарии:

1. Что вы подразумеваете под «полным меню форм доступа»? Для этих ограничений должны быть установлены свойства каждой формы. Что вы подразумеваете под «не работает»?

2. Лучше и проще полагаться на безопасность SQL Server. Настройте другого пользователя с правами доступа к данным только на чтение и используйте это при подключении или, что еще лучше, используйте проверку подлинности Windows AD и поместите пользователей в соответствующую группу AD, у которой есть роль только для чтения.

3. @June17 Я пытался выполнить эти настройки для всех форм, но это все еще позволяет мне изменять и сохранять в базе данных, которую я не хочу. Я хочу ограничить пользователя от добавления, изменения в базу данных

4. @LordPeter.. Да, я тоже думал об этом и запросил пользователя базы данных SQL Server только для чтения. Но не приведет ли предоставление сведений об этом пользователе в строке подключения на уровне форм Access к какой-либо ошибке на уровне форм?

5. @LordPeter.. Не могли бы вы более подробно рассказать об аутентификации Windows AD и о том, как это работает? Спасибо..

Ответ №1:

IMO лучший и простой способ — установить для формы RecordsetType значение Snapshot вместо Dynaset по умолчанию.

Это предотвращает любые вставки / обновления / удаления связанных данных, но позволяет вводить данные в несвязанные элементы управления, например, поля поиска.

Ответ №2:

Вы можете открыть форму с

 DoCmd.OpenForm "myform", DataMode:=acFormReadOnly, ... other required parameters
  

Кроме того, вы можете задать для Allow Additions , Allow Edits и Allow Deletions свойств значение False для формы и любых вложенных форм.

Комментарии:

1. Я не хотел изменять какой-либо код на стороне VBA, поэтому изменения настроек помогли.

Ответ №3:

У вас есть несколько вариантов.

На странице свойств форм, вкладка данные, установите разрешить редактирование = Нет.

Создайте представление на sql server для связанных с таблицей представлений, которые невозможно обновить, если вы не выберете PK в процессе компоновки. Таким образом, связанное представление доступно только для чтения.

Создайте сквозной запрос. И создайте форму на основе этого запроса с передачей. Все запросы PT доступны только для чтения.

Итак, выше приведены 3 варианта, которые не требуют от вас изменения или настройки разрешений на стороне сервера.

Комментарии:

1. Спасибо, я попробовал ваш первый вариант хорош, второй и третий имеют некоторые изменения в коде, но тоже работают.. Спасибо