Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2011, 07:50   #1
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
Вопрос Запретить изменение существующих данных в таблице

Привет!
Есть проект, который состоит из базы данных .mdb и интерфейса с формами .mde, все в формате Access 2000. Нужно запретить изменение существующих данных через форму, но при этом желательно оставить возможность создания новой записи.
Проблема в том, что исходника .mde нет, так что конструктор форм недоступен. Что можно сделать с таблицей?

Например, в таблице есть поле "Дата", у существующих данных все даты прошлые. Можно ли сделать так, чтобы при изменении ЛЮБОГО ПОЛЯ записи это поле сравнивалось с текущей датой? Если я ставлю условие на значение =Date(), то после изменения этого поля, при попытке сохранения записи ошибка, конечно, возникает, но как сделать, чтобы она возникала после изменения любого поля?
Может, можно создать какой-то макрос на событие сохранения записи?

Все это нужно как временная мера, чтобы показать аудиторам, что наша БД защищена - позволяет создавать новые записи, но не позволяет изменять уже созданные.

Выручайте!

PS Сервис - Защита - Разрешения. Все галки снял, но по-прежнему могу делать с таблицей что угодно. Почему? Защита работает только с паролем, что ли? Но если ставлю пароль, .mde не получает доступ к БД
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 11.11.2011 в 08:57.
Казанский вне форума Ответить с цитированием
Старый 11.11.2011, 09:10   #2
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

Казанский, приветствую.
Может я очень ошибаюсь, если так пусть более опытные коллеги поправят. Насколько помню где то натыкался на статейку, что если к примеру какой то пользователь первым открыл свою интерфейсную часть с определённой политикой блокировок записей, то настройки интерфейсных частей пользователей, подключившихся позже уже по барабану.
В общем попробуйте быстренько состряпать форму с запретом изменений записей, откройте её, а потом подключите интерфейсную часть и с неё попробовать изменить данные.
Woodlin вне форума Ответить с цитированием
Старый 11.11.2011, 11:33   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Woodlin,

действительно работает, но проблема в том, что если я ставлю

разрешить изменение... нет
разрешить добавление... да
блокировка записей... всех записей

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

В общем, острота проблемы исчезла, аудитора убедили, что так оно и должно быть для работы
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.11.2011, 11:58   #4
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
... но проблема в том, что если я ставлю

разрешить изменение... нет
разрешить добавление... да
блокировка записей... всех записей

, то у другого юзера в полях формы вообще невозможно редактирование и создание новой записи.
А если я ставлю блокировка записей - Изменяемой записи, то другой юзер может все менять, даже открытую тут запись...
вот оно как оказывается, без побочных эффектов никуда.
Woodlin вне форума Ответить с цитированием
Старый 11.11.2011, 13:26   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Хотел так сделать: добавить в таблицу текстовое поле и вписать туда сцепленные значения полей, которые надо контролировать. В условие на значение вписать
Код:
"" Or [Date] & [SerialNumber] & и т.д.
Смысл такой: если одно из сцепленных полей меняется - условие не выполняется и запись не сохраняется. У новой записи поле пустое и оно удовлетворяет условию.

Но получил ошибку "Недопустимый синтаксис SQL - невозможно использовать несколько столбцов в ограничении CHECK уровня столбца."
Может, можно как-то обойти эту ошибку?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 11.11.2011, 13:49   #6
Woodlin
Форумчанин
 
Регистрация: 30.03.2010
Сообщений: 153
По умолчанию

Я с форматом mde никогда не работал, помочь ничем не смогу.
Мне интересно, в формате mde вообще нельзя редактировать формы, отчёты, модули, макросы? Или всё же новые объекты, к примеру формы, можно добавить?
Woodlin вне форума Ответить с цитированием
Старый 11.11.2011, 14:02   #7
gluk_fm
Форумчанин
 
Аватар для gluk_fm
 
Регистрация: 09.06.2011
Сообщений: 515
По умолчанию

Если как временная мера для вида - то посоветовал бы всётаки запаролить или побалываться с параметрами защиты админ - юзер.
gluk_fm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение данных в одной таблице, с последующими заменами в другой. Delphi, ADO. RuthlessD БД в Delphi 5 17.06.2011 13:34
Запретить изменение форматов Psisa Microsoft Office Excel 15 10.11.2010 11:19
Изменение данных в таблице через форму. Blah Blah Помощь студентам 2 07.04.2010 16:04
Запретить изменение размеров формы larin1974 Общие вопросы Delphi 9 12.09.2009 20:27
Изменение данных в таблице access AD_min БД в Delphi 2 27.10.2008 12:23