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

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

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

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

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

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

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

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

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

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



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

А так да, я делал форму на вход, есть таблица пользователи с логином и паролем. На аксесе 2007 делалось все. База разделенная.
...
Рейтинг: 0 / 0
11.11.2015, 16:39
    #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
11.11.2015, 18:15
    #39101060
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто вносил изменения
Ага, все варианты хороши, можно выбирать на свой вкус.
Писал пару лет назад простенькую но эффективную систему аутентификации в аксессе. Можно вообще не вводить логин и пароль а открывать базку и права сразу распределялись на контролы, элементы форм, фильтры итд автоматически. В большей степени при реализации в разделенной базе данных (без подключения к MS SQL server) это защита от дурака, но алгоритм такой же, как в клиент серверных приложениях. Для потомков найду, выложу.
...
Рейтинг: 0 / 0
12.11.2015, 05:58
    #39101335
adrian-82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто вносил изменения
Joss, Спасибо!
...
Рейтинг: 0 / 0
12.11.2015, 05:59
    #39101336
adrian-82
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто вносил изменения
Сергей Лалов, будет очень интересно посмотреть если найдете!
...
Рейтинг: 0 / 0
12.11.2015, 19:11
    #39102274
Сергей Лалов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто вносил изменения
adrian-82,

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

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

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

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

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

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

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

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

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

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

Подготовить шаблон логов и снимать с формы действия пользователя.
А почему не в Access таблице?
Зачем такой геморой?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Кто вносил изменения / 25 сообщений из 36, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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