|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Всем привет! На вас надежда! Я плохо с VBA дружу... Форум я читал и в поисковике искал, но чуток не получается... Мне надо, чтобы в таблице была запись кто и когда изменял данные. В базу пользователи входят по логину и паролю. У меня есть таблица, данные обновляются через форму. В таблице есть поля UserUpdate и DateUpdate. В форму я их тоже вытащил, но пользователям они не видны. На Событие формы Внесены Изменения я написал код: Me.UserUpdate = CurrentUser () Me.DateUpdate = Now () Дата после изменений обновляется отлично, а вот в поле UserUpdate всегда пишется Admin а не логин пользователя. Подскажите в чем моя ошибка. Подозреваю что не CurrentUser писать надо было. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 15:19 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
adrian-82, Где хранятся данные по зашедшему пользователю в систему? Это MDW реализация защиты в MS ACCESS 2003, или вы сами писали костыли по логину и паролю в более поздних версиях аксесса? Выцепить данные по пользователю, который производил последние изменения строки /поля /чего то еще .. достаточно просто, без дополнительных костылей и псевдологинов с паролями. На нужно событие повесьте такой код: Код: vbnet 1. 2. 3.
И усё ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 15:42 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей Лалов, большое Вам спасибо! Отлично записывает данные учетки кто изменения вносил! А так да, я делал форму на вход, есть таблица пользователи с логином и паролем. На аксесе 2007 делалось все. База разделенная. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 16:13 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Можно ещё так определять пользователя Код: vbnet 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 16:39 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Ага, все варианты хороши, можно выбирать на свой вкус. Писал пару лет назад простенькую но эффективную систему аутентификации в аксессе. Можно вообще не вводить логин и пароль а открывать базку и права сразу распределялись на контролы, элементы форм, фильтры итд автоматически. В большей степени при реализации в разделенной базе данных (без подключения к MS SQL server) это защита от дурака, но алгоритм такой же, как в клиент серверных приложениях. Для потомков найду, выложу. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 18:15 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Joss, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 05:58 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей Лалов, будет очень интересно посмотреть если найдете! ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 05:59 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
adrian-82, Старую версию не нашел, наклепал на коленке по быстрому образец. Вложил его в данное письмо. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 19:11 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Прошу прощения. Вот файл. Смысл заключается в следующем. В вашем проекте есть некая таблица т_пользователи (где хранятся все данные по пользователям, которые могут входить в систему). При открытии входной формы моя указанная чуть выше функция определяет ваш профиль, и сравнивает его с профилем в таблице т_пользователи. Если ваш профиль существует в списке указанных строк в таблице, то на открываемую форму выводятся из этой же таблицы данные по вашему ФИО, должности, профилю, и вашей роли в компании (аналог системной роли для распределения прав доступа на полноценном сервере) Если аналогии в таблице нет, то база закрывается. Вы перед входом в данную базу внесите ваш профиль компьютера, чтобы система вас индентифицировала. Обычно это текстовый путь C:/users итд итп (через шифт откройте и внесите данные в таблицу). Если интересно ,могу рассказать ,как хранить данные по пользователю на весь период работы открытого пользователем приложения (на всю сессию, от открытия до закрытия клиентской части) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 19:20 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
У нас давно ведётся протоколирование. Работа с таблицами только через формы. В таблице 6 служебных полей 2 на ввод (дата, код пользователя) 2 на изменение и 2 на удаление. Регистрируется только последнее изменение. Записи не удаляются а в специальном поле (Actuale -тип логическое) помечаются как переставшие быть актуальными. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 21:13 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей Лалов, спасибо! очень интересно было узнать это все. Я то конечно не так все делал. У меня логин, пароль и в отдельную таблицу запросом на добавление писалось кто когда залогинился )) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 08:26 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей, Environ("USERPROFILE") определяет мой профиль как C:\Documents and Settings\049-Presnov. внес в таблицу свой профиль, но что то не определяет меня база... Чего я не правильно делаю, подскажите? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 09:33 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
adrian-82Сергей, Environ("USERPROFILE") определяет мой профиль как C:\Documents and Settings\049-Presnov. внес в таблицу свой профиль, но что то не определяет меня база... Чего я не правильно делаю, подскажите?Не надо пользоваться Environ("USERPROFILE") пользуйтесь Function UserName() и таблицей соответствия разрешённых UserName(). Счётчик такой таблицы и будет кодом пользователя, который Вы будете вставлять в служебные поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 09:57 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Joss, то есть, если я правильно понимаю, создаю таблицу с пользователями, а код Function UserName() на открытие формы? и в таблице самой кроме поля "пользователь" еще надо что то? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 10:46 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
кто изменял записи я понял как сделать. ААА = CreateObject("WScript.Network").UserName Me.UserUpdate = ААА А вот как на вход проверку организовать не дошло пока) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 11:54 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей Лалов, все получилось!!! правда вместо Environ("USERPROFILE") пришлось написать CreateObject("WScript.Network").UserName ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 13:33 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
adrian-82Сергей Лалов, все получилось!!! правда вместо Environ("USERPROFILE") пришлось написать CreateObject("WScript.Network").UserName Зачем создавать объект? Вам ведь Joss подсказал: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 15:12 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Agapov_stas, все понял теперь) спасибо) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 15:30 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
adrian-82Joss, то есть, если я правильно понимаю, создаю таблицу с пользователями, а код Function UserName() на открытие формы? и в таблице самой кроме поля "пользователь" еще надо что то? Таблица операторов у меня состоит из следующих полей Id - код оператора (можно вручную, можно счётчиком) UserName - название оператора в системе. OperatorName - имя оператора для различных отчётов OperatorLevel - уровень доступа оператора (На основании его программируется доступ к различным формам) Active - логическое поле, помечает действующих операторов. (перевели оператора в другой отдел, всё, с этой задачей он работать уже не сможет) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 15:52 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Joss, здорово конечно! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 20:29 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Да, ещё. Я не вешаю определение кода пользователя на каждую форму. Описал глобальную переменную, Написал функцию определения кода пользователя, а функцию засунул в autoexec. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 11:43 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Joss, а вот некоторые ведут еще в логах старое и новое значение поля, скажите насколько это нужно и сложно ли это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 14:05 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
adrian-82, Можно выгружать изменения в файл txt или к примеру в excel. Пользователь такой то изменил /добавил/удалил строку. Тип таблицы логов: Имя Таблицы|название поля|Тип действия|Пользователь|Старое значение|Новое значение| Дата и время события Для событий типа добавление и удаление записей соответственно значения полей автоматом не заполняются ,остаются пустыми. Подготовить шаблон логов и снимать с формы действия пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 14:22 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей Лалов, надо будет попробовать) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 07:21 |
|
Кто вносил изменения
|
|||
---|---|---|---|
#18+
Сергей Лаловadrian-82, Можно выгружать изменения в файл txt или к примеру в excel. Пользователь такой то изменил /добавил/удалил строку. Тип таблицы логов: Имя Таблицы|название поля|Тип действия|Пользователь|Старое значение|Новое значение| Дата и время события Для событий типа добавление и удаление записей соответственно значения полей автоматом не заполняются ,остаются пустыми. Подготовить шаблон логов и снимать с формы действия пользователя. А почему не в Access таблице? Зачем такой геморой? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 08:23 |
|
|
start [/forum/topic.php?fid=45&msg=39105146&tid=1614084]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 329ms |
total: | 465ms |
0 / 0 |