Уникальное значение свойства id для идентификации экземпляра базы данных Access - PullRequest
0 голосов
/ 26 октября 2009

У меня есть доступ «приложение» (.adp файл), когда он открывается, я обновляю базу данных администратора с именем пользователя и временем открытия. Когда он закрывается, он обновляет базу данных администратора с закрытым временем имени пользователя - это отдельные записи в таблице событий, поэтому она выглядит как

username,dbaction,time
bob,open,13:00
gareth,open,13:05
bob,close,14:00

Если пользователь, где открыть БД дважды, будет записано 2 открытых и 2 закрытых действия, но невозможно определить, к какому сеансу базы данных принадлежало каждое из 2 закрытых событий.

То, что я хочу сохранить в этой таблице, - это уникальный идентификатор, который связывает действия открытия и закрытия вместе с «каждым сеансом». Предпочтительно я хотел бы использовать свойство объекта приложения в VBA, если что-то существует. Он даже хранит время открытия БД? Я могу создать свой собственный идентификатор, когда базы данных открыты, и хранить его в переменной до закрытия, но идентификатор предпочитает использовать что-то встроенное. Есть идеи?

Ответы [ 5 ]

2 голосов
/ 26 октября 2009

Я делаю это, используя скрытую несвязанную форму, которая открывается при запуске. В этой форме я вставляю запись в таблицу. Затем я получаю идентификатор автономного номера (или любой другой SQL Server, вызывающий это поле) этой записи и сохраняю в текстовом элементе управления. Если вы делаете какую-либо разработку, и вы сталкиваетесь с ошибкой и сбрасываете работающий код, вы теряете все глобальные переменные, поэтому я предпочитаю использовать формы для хранения таких переменных.

В скрытых формах при событии «Закрыть» я обновляю ту же запись с выходом даты / времени. Я использую эту технику уже более десяти лет без каких-либо проблем.

0 голосов
/ 27 октября 2009

HWND будет уникальным для двух приложений доступа, открытых одновременно на одном и том же компьютере или на двух разных ПК?

0 голосов
/ 27 октября 2009

Все эти ответы мне кажутся слишком умными вдвое.

Что я делаю, так это добавляю поле Autonumber в таблицу, в которую они входят, а затем записывает значение Autonumber записи события запуска и сохраняет его где-то (обычно в скрытом поле в форме запуска приложения) для используйте при выключении, чтобы записать событие выключения с идентификационным номером события запуска.

0 голосов
/ 26 октября 2009

У вас может быть глобальная переменная 'Id_session', инициированная при запуске (например, случайно сгенерированный uniqueIdentifier), которую вы будете хранить в столбце 'id_Session' вашей таблицы событий. Когда база данных открыта, запись вставляется в таблицу «событие», а идентификатор записи сохраняется как глобальная переменная. Когда база данных закрыта, существующая запись идентифицируется (через значение id_session) и обновляется в базе данных.

На самом деле, я не понимаю интереса встроенного идентификатора вместо этого решения.

0 голосов
/ 26 октября 2009

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

Обновление: Вы можете использовать код, показанный здесь , чтобы сгенерировать GUID, который в значительной степени гарантированно уникален, поэтому он должен делать то, что вы хотите. Если это не так, вам, возможно, придется уточнить, так как я не понимаю вопроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...