powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Кто вносил изменения
36 сообщений из 36, показаны все 2 страниц
Кто вносил изменения
    #39100796
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! На вас надежда! Я плохо с VBA дружу...
Форум я читал и в поисковике искал, но чуток не получается...

Мне надо, чтобы в таблице была запись кто и когда изменял данные.
В базу пользователи входят по логину и паролю.
У меня есть таблица, данные обновляются через форму.
В таблице есть поля UserUpdate и DateUpdate. В форму я их тоже вытащил, но пользователям они не видны.

На Событие формы Внесены Изменения я написал код:

Me.UserUpdate = CurrentUser ()
Me.DateUpdate = Now ()

Дата после изменений обновляется отлично, а вот в поле UserUpdate всегда пишется Admin а не логин пользователя.

Подскажите в чем моя ошибка. Подозреваю что не CurrentUser писать надо было.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39100834
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82,

Где хранятся данные по зашедшему пользователю в систему? Это MDW реализация защиты в MS ACCESS 2003, или вы сами писали костыли по логину и паролю в более поздних версиях аксесса?

Выцепить данные по пользователю, который производил последние изменения строки /поля /чего то еще .. достаточно просто, без дополнительных костылей и псевдологинов с паролями.

На нужно событие повесьте такой код:

Код: vbnet
1.
2.
3.
...
me.ваше_скрытое_поле_где_должна_быть_инфа =Environ("USERPROFILE")
...



И усё
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39100902
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов, большое Вам спасибо! Отлично записывает данные учетки кто изменения вносил!

А так да, я делал форму на вход, есть таблица пользователи с логином и паролем. На аксесе 2007 делалось все. База разделенная.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39100942
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё так определять пользователя
Код: vbnet
1.
2.
3.
4.
5.
Public Function UserName() As String
   Dim WshNetwork As Object
   Set WshNetwork = CreateObject("WScript.Network")
   UserName = WshNetwork.UserName
End Function
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39101060
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, все варианты хороши, можно выбирать на свой вкус.
Писал пару лет назад простенькую но эффективную систему аутентификации в аксессе. Можно вообще не вводить логин и пароль а открывать базку и права сразу распределялись на контролы, элементы форм, фильтры итд автоматически. В большей степени при реализации в разделенной базе данных (без подключения к MS SQL server) это защита от дурака, но алгоритм такой же, как в клиент серверных приложениях. Для потомков найду, выложу.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39101335
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, Спасибо!
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39101336
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов, будет очень интересно посмотреть если найдете!
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102274
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82,

Старую версию не нашел, наклепал на коленке по быстрому образец. Вложил его в данное письмо.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102282
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения.
Вот файл.

Смысл заключается в следующем.
В вашем проекте есть некая таблица т_пользователи (где хранятся все данные по пользователям, которые могут входить в систему).

При открытии входной формы моя указанная чуть выше функция определяет ваш профиль, и сравнивает его с профилем в таблице т_пользователи.

Если ваш профиль существует в списке указанных строк в таблице, то на открываемую форму выводятся из этой же таблицы данные
по вашему ФИО, должности, профилю, и вашей роли в компании (аналог системной роли для распределения прав доступа на полноценном сервере)

Если аналогии в таблице нет, то база закрывается.
Вы перед входом в данную базу внесите ваш профиль компьютера, чтобы система вас индентифицировала. Обычно это текстовый путь C:/users итд итп (через шифт откройте и внесите данные в таблицу). Если интересно ,могу рассказать ,как хранить данные по пользователю на весь период работы открытого пользователем приложения (на всю сессию, от открытия до закрытия клиентской части)
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102382
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас давно ведётся протоколирование. Работа с таблицами только через формы. В таблице 6 служебных полей 2 на ввод (дата, код пользователя) 2 на изменение и 2 на удаление. Регистрируется только последнее изменение. Записи не удаляются а в специальном поле (Actuale -тип логическое) помечаются как переставшие быть актуальными.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102568
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов, спасибо! очень интересно было узнать это все. Я то конечно не так все делал. У меня логин, пароль и в отдельную таблицу запросом на добавление писалось кто когда залогинился ))
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102618
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей, Environ("USERPROFILE") определяет мой профиль как C:\Documents and Settings\049-Presnov.
внес в таблицу свой профиль, но что то не определяет меня база... Чего я не правильно делаю, подскажите?
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102643
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82Сергей, Environ("USERPROFILE") определяет мой профиль как C:\Documents and Settings\049-Presnov.
внес в таблицу свой профиль, но что то не определяет меня база... Чего я не правильно делаю, подскажите?Не надо пользоваться Environ("USERPROFILE") пользуйтесь Function UserName() и таблицей соответствия разрешённых UserName(). Счётчик такой таблицы и будет кодом пользователя, который Вы будете вставлять в служебные поля.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102697
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, то есть, если я правильно понимаю, создаю таблицу с пользователями, а код Function UserName() на открытие формы? и в таблице самой кроме поля "пользователь" еще надо что то?
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102776
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
кто изменял записи я понял как сделать.

ААА = CreateObject("WScript.Network").UserName
Me.UserUpdate = ААА

А вот как на вход проверку организовать не дошло пока)
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39102887
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов, все получилось!!! правда вместо Environ("USERPROFILE") пришлось написать CreateObject("WScript.Network").UserName
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39103003
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82Сергей Лалов, все получилось!!! правда вместо Environ("USERPROFILE") пришлось написать CreateObject("WScript.Network").UserName
Зачем создавать объект? Вам ведь Joss подсказал:
Код: vbnet
1.
Environ("UserName")
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39103019
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Agapov_stas, все понял теперь) спасибо)
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39103052
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82Joss, то есть, если я правильно понимаю, создаю таблицу с пользователями, а код Function UserName() на открытие формы? и в таблице самой кроме поля "пользователь" еще надо что то?
Таблица операторов у меня состоит из следующих полей
Id - код оператора (можно вручную, можно счётчиком)
UserName - название оператора в системе.
OperatorName - имя оператора для различных отчётов
OperatorLevel - уровень доступа оператора (На основании его программируется доступ к различным формам)
Active - логическое поле, помечает действующих операторов. (перевели оператора в другой отдел, всё, с этой задачей он работать уже не сможет)
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39103945
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, здорово конечно!
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39104246
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, ещё. Я не вешаю определение кода пользователя на каждую форму. Описал глобальную переменную, Написал функцию определения кода пользователя, а функцию засунул в autoexec. Всё.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39104474
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Joss, а вот некоторые ведут еще в логах старое и новое значение поля, скажите насколько это нужно и сложно ли это сделать?
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39104508
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82,
Можно выгружать изменения в файл txt или к примеру в excel. Пользователь такой то изменил /добавил/удалил строку.
Тип таблицы логов:
Имя Таблицы|название поля|Тип действия|Пользователь|Старое значение|Новое значение| Дата и время события

Для событий типа добавление и удаление записей соответственно значения полей автоматом не заполняются ,остаются пустыми.

Подготовить шаблон логов и снимать с формы действия пользователя.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105131
adrian-82
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов, надо будет попробовать)
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105146
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лаловadrian-82,
Можно выгружать изменения в файл txt или к примеру в excel. Пользователь такой то изменил /добавил/удалил строку.
Тип таблицы логов:
Имя Таблицы|название поля|Тип действия|Пользователь|Старое значение|Новое значение| Дата и время события

Для событий типа добавление и удаление записей соответственно значения полей автоматом не заполняются ,остаются пустыми.

Подготовить шаблон логов и снимать с формы действия пользователя.
А почему не в Access таблице?
Зачем такой геморой?
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105316
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROIА почему не в Access таблице?
Зачем такой геморой?
Думаю, аналог log -файла. Да и при крахе mdb , данные не погибнут, если что.
П.С. Я думаю, Сергей имел ввиду это.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105319
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
adrian-82Joss, а вот некоторые ведут еще в логах старое и новое значение поля, скажите насколько это нужно и сложно ли это сделать?А это уже зависит от конкретной задачи.
Из практики. Была задача для бухгалтерии. И постоянно происходили разборки кто когда и что поменял. Записи активно правились. Были сделаны копии важных таблиц (только структуры) и при любом изменении записи старая запись скидывалась в эту таблицу (полностью) Так можно было отследить кто, когда и что заменил.

Сроки хранения данных в этих таблицах, очистка, резервирование решались административно.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105324
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stasROIА почему не в Access таблице?
Зачем такой геморой?
Думаю, аналог log -файла. Да и при крахе mdb , данные не погибнут, если что.
П.С. Я думаю, Сергей имел ввиду это.Я бы делал в базе. А бэкапы никто не запрещал.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105337
Agapov_stas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JossЯ бы делал в базе.
Ну, т.е. субъективное мнение. На вкус и цвет...
JossА бэкапы никто не запрещал.
Так log -и тоже, вроде, никто не запрещал, не?
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105354
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agapov_stasJossЯ бы делал в базе.
Ну, т.е. субъективное мнение. На вкус и цвет...
JossА бэкапы никто не запрещал.
Так log -и тоже, вроде, никто не запрещал, не?
log никто не запрещал.
Но чюю начнется (как писать в тхт, как создать, как распарсить и т.д.)
Знакомо проходили!
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105395
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лаловadrian-82,
Можно выгружать изменения в файл txt или к примеру в excel. Пользователь такой то изменил /добавил/удалил строку.
Тип таблицы логов:
Имя Таблицы|название поля|Тип действия|Пользователь|Старое значение|Новое значение| Дата и время события

Для событий типа добавление и удаление записей соответственно значения полей автоматом не заполняются ,остаются пустыми.

Подготовить шаблон логов и снимать с формы действия пользователя.
А как здесь с распределением доступа? Один пользователь ещё пишет, а второй уже хочет писать? И эти ситуации надо отслеживать и обрабатывать. А Access такие вещи берёт на себя.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39105398
Фотография Joss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей ЛаловАга, все варианты хороши, можно выбирать на свой вкус.
Писал пару лет назад простенькую но эффективную систему аутентификации в аксессе. Можно вообще не вводить логин и пароль а открывать базку и права сразу распределялись на контролы, элементы форм, фильтры итд автоматически. В большей степени при реализации в разделенной базе данных (без подключения к MS SQL server) это защита от дурака, но алгоритм такой же, как в клиент серверных приложениях. Для потомков найду, выложу. У меня такая же система идентификации внедрена в программах на работе. По имени пользователя в домене. Имя даёт системщик и это навсегда. По нему все права и допуски определяются.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39142549
Dennis S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, тема супер!

Вопрос следующий:
Очень много задач решается через запросы, которые потом сохраняются. Как получить текст запроса сформированной формы? Что-то липну.
Номер измененной строки я-то получу через AbsolutePosition, значения до и после - через Value и OldValue, а вот как получить запрос, из которого построена форма?
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39142685
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dennis S...а вот как получить запрос, из которого построена форма?.. А я то думал из чего построена форма!

Dennis S., чтобы узнать источник записей для формы, нужно анализировать свойство формы RecordSource . Там может быть строка SQL, имя сохранённого запроса, а может ничего не быть (реже) - форма без источника или на рекордсете.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39142760
Dennis S.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага, рекордсорс поимел.
А если на рекордсете, как получить его данные?
Какие-то свойства я могу получить, но не все.
...
Рейтинг: 0 / 0
Кто вносил изменения
    #39142783
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dennis S., забей...
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Кто вносил изменения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]