Я инженер по программному обеспечению .NET / C #, который был нанят на временную работу, и мне это не нравится.
Моя компания использует приложение MS-Access для многих своих текущих функций. , Для этого используется версия Visual Basic (v6.5). Разработчик, который его собрал (сейчас находится в отпуске за границей), имеет «логин» Форма, которая появляется перед переходом на страницы «Коммутатор». Чтобы поддерживать «глобальную осведомленность» о входе в систему, он оставляет форму заполненной и открытой - скрывая ее от пользователя, а затем, переходя в другие формы, возвращается к скрытой форме входа, чтобы определить детали входа.
Хотя это функционирует, это немного мешает моему мозгу, ориентированному на ООП. Является ли это правильным способом для моделирования кэша глобальных переменных в этом выпуске MS-Access + VB, или просто тем, за который наш разработчик MS-Access согласился. Я нашел некоторые онлайн-ссылки на источник VBA, реализующий глобальные переменные с использованием ключевого слова Global, но, похоже, это не поддерживается в v6.5 (по крайней мере, не так).
У кого-нибудь есть подсказки об этом или о некоторых выдающихся ресурсах MS-Access, которые они могут порекомендовать, чтобы я мог оставить эту головную боль позади?
Как bugtussle сказал , вы можете использовать «глобальные» переменные внутри модулей. Вот как:
Создайте модуль под названием LoginCredentials
. Внутри этого модуля вы можете объявлять переменные как public
, что фактически делает их глобальными переменными. Например:
public LoggedInUserId As Integer
public IsUserLoggedIn As Boolean
Вы можете установить и получить доступ к этим переменным из других форм. Я предпочитаю всегда использовать имя модуля с именем переменной в VBA, поэтому я знаю, где объявлены глобальные переменные, например:
LoginCredentials.LoggedInUserId = 15
If LoginCredentials.IsUserLoggedIn Then
'Do Something '
End If
Конечно, глобальные переменные сохраняются только в течение жизни приложения, поэтому, если оно выйдет из строя или пользователь существует приложение, вы потеряете эти данные. Если вам нужно, чтобы учетные данные для входа «жили» дольше, подумайте о том, чтобы сохранить данные в таблице базы данных.
В качестве примечания: ваш мозг, ориентированный на ООП, нередко может немного болеть при работе с VB6 / VBA. Язык просто не в состоянии полностью реализовать возможности дизайна ООП, но все же можно написать лучший код, если вы знаете, что делаете.
Этот метод отлично работает, поскольку глобальные переменные могут быть сброшены на ноль при прерываниях кода и т.п. Особенно пока вы, разработчик, работаете над кодом.
Также, если он работает сейчас, зачем его менять?
Он поселился. Правильный способ хранения глобальных переменных - использовать модуль.
http://www.blueclaw-db.com/access_database_global_variable.htm
http://forums.whirlpool.net.au/forum-replies-archive.cfm/528616.html
http: / /www.google.com/search?q=global+variables+in+vba+access