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

Откуда:
Сообщений: 3575
Да и потом, если "злоумышленник" не знает как увидеть спрятанную таблицу - может и нет смысла в этом CONSTRAINT а просто спрятать критичные таблицы оставив к ним доступ только через формы?

Еще одна любопытная вещь: я почему то считал что CONSTRAINT и Validation Rule для таблицы взаимозаменяемы. Оказывается нет: CONSTRAINT установлен а в Validation Rule пусто.
Кроме того по моему в Validation Rule нельзя использовать пользовательскую функцию.
12 июл 08, 23:29    [5926168]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
alexmsp
Member

Откуда:
Сообщений: 3575
Имеется в виду CONSTRAINT CHECK конечно.
14 июл 08, 01:56    [5927540]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
Бенедикт
Member

Откуда:
Сообщений: 2099
alexmsp
Т.е. Бенедикт имел в виду что "если злоумышленник низкоквалифицированный" то не он не сможет использовать
Currentdb.TableDefs("Audit_A").Attributes=0
.
Не совсем. То, что я имел ввиду, в точности обрисовал Karfaqen: "фишка" не в пижонском(?) выставлении TableDef-у атрибута dbHiddenObject (хотя под низкой квалификацией я подразумеваю, в первую очередь, отсутствие или минимальные знания программной модели доступа к данным и объектам БД), а в вызове VBA-шной функции при добавлении или обновлении записи в таблице. А уж что функция делает - условия целостности проверяет, в табличный лог пишет или в named pipe на сервере, или помещение блокирует, газы пускает и бригаду вызывает :), это определяется тех. заданием и фантазией.

P.S. Встроенная справка по Jet SQL в Access-е слишком куцая. Цикл статей
Fundamental Microsoft Jet SQL for Access 2000,
Intermediate Microsoft Jet SQL for Access 2000 (после очередного прочтения идея "триггера" и возникла, кстати)
Advanced Microsoft Jet SQL for Access 2000
отлично её дополняет.
14 июл 08, 15:55    [5931255]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
inUSSR
Guest
To: Бенедикт
Мои ошибки:
1. Не стояла птичка ANSI-92.
2. Не было понятно, где сохраняется журнал изменений.

Спасибо большое - ответ вопросом на вопрос существенно продвинул дело. Теперь все хохочет.
15 июл 08, 10:41    [5934286]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
alexmsp
Member

Откуда:
Сообщений: 3575
Бенедикт
[quot alexmsp]... а в вызове VBA-шной функции при добавлении или обновлении записи в таблице...

Идея безусловно интересна, главное удобство в том что не нужно вешать этот код на каждую форму.
Кроме того в отличие от Validation Rules можно использовать не только встроенные но и пользовательскую функцию. Думаю разработчики просто "упустили" этот момент (в том смысле что это не задумывалось):)
Но саму идею вы уже на этом форуме озвучивали ранее, я с нею знаком , а вот такое скрытие таблиц увидел впервые:)

По поводу защищенности думаю что файл рабочих групп - более надежная защита, и при этом никто не мешает объединить ее с вашей идеей псевдотриггера для ведения журнала(лога) изменений.
15 июл 08, 22:08    [5938547]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
inUSSR
Guest
Если зашел разговор об ANSI-92, то правильно ли, что по этому стандарту имена полей таблиц не могут содержать пробелы (в отличие от стандарта Access SQL)?
16 июл 08, 10:18    [5939744]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
inUSSR
Guest
Сам задаю вопросы - сам отвечаю.
Увы, по ANSI 92 имена таблиц и полей таблиц должны состоять из лат. символов без пробелов. Значит в текущем проекте не получится использовать идею Бенедикта...
16 июл 08, 11:43    [5940592]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
alexmsp
Member

Откуда:
Сообщений: 3575
inUSSR
Сам задаю вопросы - сам отвечаю.
Увы, по ANSI 92 имена таблиц и полей таблиц должны состоять из лат. символов без пробелов. Значит в текущем проекте не получится использовать идею Бенедикта...

А если VBA скриптом поменять пробел на другой символ?
16 июл 08, 20:17    [5944826]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
Бенедикт
Member

Откуда:
Сообщений: 2099
alexmsp
По поводу защищенности думаю что файл рабочих групп - более надежная защита, и при этом никто не мешает объединить ее с вашей идеей псевдотриггера для ведения журнала(лога) изменений.
Конечно. И псевдотриггер - не альтернатива другим мерам безопасности, а одна из них. Её, кстати, можно применить втихую, без громогласного объявления охоты на злоумышленника :).
16 июл 08, 21:05    [5944918]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
Бенедикт
Member

Откуда:
Сообщений: 2099
inUSSR
Сам задаю вопросы - сам отвечаю.
Увы, по ANSI 92 имена таблиц и полей таблиц должны состоять из лат. символов без пробелов. Значит в текущем проекте не получится использовать идею Бенедикта...
Не совсем понял, почему.
16 июл 08, 21:24    [5944959]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
alexmsp
Member

Откуда:
Сообщений: 3575
Бенедикт
inUSSR
Сам задаю вопросы - сам отвечаю.
Увы, по ANSI 92 имена таблиц и полей таблиц должны состоять из лат. символов без пробелов. Значит в текущем проекте не получится использовать идею Бенедикта...
Не совсем понял, почему.

Предполагаю что автор имел в виду что запуск запроса
ALTER TABLE A ADD CONSTRAINT Trigger CHECK ((SELECT TriggerA(A.Id, A.[Field 1], A.fDbl, A.fDat) FROM MSysObjects WHERE Id=2));
выдаст ошибку синтаксиса
16 июл 08, 21:31    [5944981]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
Бенедикт
Member

Откуда:
Сообщений: 2099
alexmsp
Предполагаю что автор имел в виду что запуск запроса
ALTER TABLE A ADD CONSTRAINT Trigger CHECK ((SELECT TriggerA(A.Id, A.[Field 1], A.fDbl, A.fDat) FROM MSysObjects WHERE Id=2));
выдаст ошибку синтаксиса
И правда... Ругается на квадратные скобки, вне зависимости от того, есть пробелы или нет. Перестаёт ругаться, если ввести имя таблицы в выражение FROM, но тогда алиас в подзапросе перекрывает алиас во внешнем запросе, и в функцию передаются не те значения (меняется семантика). Пока не вижу, как обмануть парсер :(. Для таблиц с именами с пробелами можно попробовать трюк со связанными таблицами.
17 июл 08, 12:29    [5947274]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
inUSSR
Member

Откуда:
Сообщений: 15
2 alexmsp
именно это имел ввиду...
18 июл 08, 09:27    [5951730]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
Ламер777
Guest
Объясните ламеру, плиз, как пользоваться этим файлом - trigger?
как информация записыватеся в таблицу Аудит-А?
С помощью запроса? какого?
Есть два запроса: запрос1 и запрос2. Какой из них использовать? Или оба одновременно?


Допустим, создал я таблицу1. По незнанию, запускаю я оба запроса. Смотрю в форму Аудит-А и не вижу там чего-то понятного. Ну да, вижу даты изменения. Но текст изменения везде одинаков, то есть lkfdsgkl. И что означает этот текст? Где видно название таблицы и поля, в которых произведено изменение?
Где виден старый и новый текст?

Все, что понимаю я - это имя компьютера и пользователя. А также дату изменения. Хотя тоже есть вопросы:
logtime и newdat - это даты чего? судя по названиям - первое - это время, когда был произведен лог, то бишь запущен запрос на изменение таблицы с логом, а второе - это время изменения непосредственно самой таблицы?

То есть хотя бы краткую справку по полям формы Аудит-А и как это работает и как это интегрировать в свою БД можно?
СПЕЦИАЛЬНО ДЛЯ ЛАМЕРА. ДУМАЮ, Я НЕ ОДИН ТАКОЙ ЛАМЕР. И ВАМ МНОГИЕ БУДУТ БЛАГОДАРНЫ ЗА КРАТКИЙ ХЕЛП ПО РАБОТЕ ЭТОГО ФАЙЛА.

ДАБЫ ОН ОЧЕНЬ ПОЛЕЗЕН И НУЖЕН. ДУМАЮ, НЕ ТОЛЬКО МНЕ. и даже при всех недостатках и проблемах, о которых я на форуме прочитал, все равно - штука классная и очень полезная.

Очень благодарен, если поможете!!!!!!!!!!
11 сен 08, 00:22    [6171227]     Ответить | Цитировать Сообщить модератору
 Re: Злоумышленник.  [new]
Бенедикт
Member

Откуда:
Сообщений: 2099
Ламер777
>Объясните ламеру, плиз, как пользоваться этим файлом - trigger?
Как примером (технологическим демонстратором), который можно смотреть, анализировать и пытаться перенести в свою БД, если пример заинтересовал.

>как информация записыватеся в таблицу Аудит-А?
На таблицу A(Id,fTxt,fDbl,fDat) накладывается условие проверки (CONSTRAINT CHECK), которое построено таким образом, что для каждой обрабатываемой им записи вызывается VBA-функция TriggerA(). Условие проверяется автоматически при изменении и добавлении записей в таблицу A. В функцию передаются параметрами новые (точнее, проверяемые) значения полей таблицы A. Функция открывает таблицу-журнал Audit_A и добавляет в неё запись, содержащую
  • Время изменения (вызова функции Trigger_A()) в поле LogTime
  • Имя компьютера в поле Audit_A.ComputerName
  • Имя пользователя в поле Audit_A.UserName
  • Значение ключевого поля A.Id в поле Audit_A.A_Id
  • Новое значение поля A.fTxt в поле Audit_A.NewTxt
  • Новое значение поля A.fDbl в поле Audit_A.NewDbl
  • Новое значение поля A.fDat в поле Audit_A.NewDat
  • Старое значение поля A.fTxt в поле Audit_A.OldTxt
  • Старое значение поля A.fDbl в поле Audit_A.OldDbl
  • Старое значение поля A.fDat в поле Audit_A.OldDat

    >С помощью запроса? какого?
    Условие проверки накладывается запросом CreateTrigger, снимается запросом DropTrigger.

    >Есть два запроса: запрос1 и запрос2. Какой из них использовать? Или оба одновременно?
    Запросы Запрос1 и Запрос2 даны, чтобы показать, что условие проверки срабатывает (и, соответственно, изменения попадают в журнал) не только при ручном редактировании записей таблицы A, но и в результате выполнения запросов на обновление и добавление. Их (вместе и по отдельности) можно вызывать или не вызывать. Они имитируют запросы на обновление и добавление реальной БД.

    >Допустим, создал я таблицу1. ... Где видно название таблицы и поля, в которых произведено изменение?
    Вы проецируете своё желание "добавил таблицу, и всё заработало" на пример. А пример показывает работу некоторого технического приёма для одной таблицы, в данном случае таблицы A с четырьмя полями. Если хотите повторить этот приём для своей таблицы, повторите те шаги (вручную, или программно), что были сделаны для таблицы A. Если хотите сделать универсальный журнал, делайте универсальную таблицу (группу взаимосвязанных таблиц) для ведения журнала, универсализируйте VBA-функцию, добавляющую запись в журнал.

    >как это интегрировать в свою БД можно?
    Что - "это"? Журналирование? Журналирование - отдельная тема, а "фишка" примера уже обсуждалась.
    В своей БД (на примере одной таблицы)
  • создаёте или приспосабливаете имеющийся журнал изменений для того, чтобы он мог отражать изменения в этой таблице
  • создаёте VBA-функцию, которая будет вносить изменения (добавлять запись в простом случае) в журнал
  • Накладываете на таблицу условие проверки (CONSTRAINT CHECK), вызывающее VBA-функцию

    >СПЕЦИАЛЬНО ДЛЯ ЛАМЕРА.
    Это повод для гордости? Переходите в класс Intermediate.
  • 11 сен 08, 13:36    [6173452]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    Ламер777
    Guest
    Что повод для гордости? То, что я ламер?
    Нет, конечно. Был бы повод, я бы гордился и в форумах помогал бы, а не просил бы помощи.
    дело в том, что я не программист изначально. И никогда даже не касался программирования. Просто некоторое время назад увидел в Аксесе программу, которая может сильно облегчить мой труд. Ну а потом увидел, что ВБА может сильно облегчить работу с программой.
    В общем, гордиться буду тогда, когда я в этот класс, средненький, хотя бы попаду. А пока что, к сожалению, гордиться нечем.

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

    Но все же, если это возможно. Да даже Вы, Бенедикт, могли бы для меня сделать такой примерчик? Я готов оплатить Вашу помощь. Но мне правда, очень это нужно.
    Благодарю!
    11 сен 08, 14:28    [6173878]     Ответить | Цитировать Сообщить модератору
     Re: сводная таблица. добавление вычисляемого поля  [new]
    v-e-t
    Member

    Откуда:
    Сообщений: 77
    24 дек 08, 12:17    [6612612]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    alexmsp
    Member

    Откуда:
    Сообщений: 3575
    v-e-t,
    Я раньше тоже похожим образом "помечал" топики для более быстрого их поиска, потом узнал что на этом сайте есть еще возможность "помечать" через "избранное", бабай подсказал.
    24 дек 08, 12:26    [6612697]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    v-e-t
    Member

    Откуда:
    Сообщений: 77
    Идея понравилась.
    Есть замечания:
    1. При добавлении новой записи, в таблицу-журнал вносится информация об изменении записи, которая была выбрана до добавления новой записи. (В принципе, решаемо)
    2. При удалении записи функция вообще TriggerA не вызывается совсем.

    Вопрос: каким образом отслеживать удаление записи из таблицы с тем, чтобы в таблицу-журнал добавлялась информация о событии удаления определенной записи.
    24 дек 08, 12:26    [6612701]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    v-e-t
    Member

    Откуда:
    Сообщений: 77
    alexmsp
    v-e-t,
    Я раньше тоже похожим образом "помечал" топики для более быстрого их поиска, потом узнал что на этом сайте есть еще возможность "помечать" через "избранное", бабай подсказал.


    :) не.. это случайно отправил пустое сообщение. пардон.
    24 дек 08, 12:27    [6612715]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    Формами пользоватся
    Guest
    v-e-t
    ....Вопрос: каким образом отслеживать удаление записи из таблицы с тем, чтобы в таблицу-журнал добавлялась информация о событии удаления определенной записи.
    24 дек 08, 12:27    [6612725]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    v-e-t
    Member

    Откуда:
    Сообщений: 77
    Открыл Америку :)... Про формы все понятно. Вопрос об отслеживании на уровне таблиц, чему данный топик и посвящен.
    24 дек 08, 12:31    [6612753]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    этого уровня быть не должно
    Guest
    v-e-t
    ....Вопрос об отслеживании на уровне таблиц, чему данный топик и посвящен.
    24 дек 08, 12:38    [6612834]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    v-e-t
    Member

    Откуда:
    Сообщений: 77
    Комментируй по существу вопроса. Что должно и не должно быть - вопрос не из этой темы
    24 дек 08, 12:41    [6612862]     Ответить | Цитировать Сообщить модератору
     Re: Злоумышленник.  [new]
    по-существу
    Guest
    переходить на СУБД использующую триггеры
    24 дек 08, 12:42    [6612882]     Ответить | Цитировать Сообщить модератору
    Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
    Все форумы / Microsoft Access Ответить