Поддержка перекрестных форм MS-Access

Я инженер по программному обеспечению .NET / C #, который был нанят на временную работу, и мне это не нравится.

Моя компания использует приложение MS-Access для многих своих текущих функций. , Для этого используется версия Visual Basic (v6.5). Разработчик, который его собрал (сейчас находится в отпуске за границей), имеет «логин» Форма, которая появляется перед переходом на страницы «Коммутатор». Чтобы поддерживать «глобальную осведомленность» о входе в систему, он оставляет форму заполненной и открытой - скрывая ее от пользователя, а затем, переходя в другие формы, возвращается к скрытой форме входа, чтобы определить детали входа.

Хотя это функционирует, это немного мешает моему мозгу, ориентированному на ООП. Является ли это правильным способом для моделирования кэша глобальных переменных в этом выпуске MS-Access + VB, или просто тем, за который наш разработчик MS-Access согласился. Я нашел некоторые онлайн-ссылки на источник VBA, реализующий глобальные переменные с использованием ключевого слова Global, но, похоже, это не поддерживается в v6.5 (по крайней мере, не так).

У кого-нибудь есть подсказки об этом или о некоторых выдающихся ресурсах MS-Access, которые они могут порекомендовать, чтобы я мог оставить эту головную боль позади?

1
задан Henk Holterman 1 May 2012 в 10:26
поделиться

3 ответа

Как 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. Язык просто не в состоянии полностью реализовать возможности дизайна ООП, но все же можно написать лучший код, если вы знаете, что делаете.

0
ответ дан 2 September 2019 в 22:17
поделиться

Этот метод отлично работает, поскольку глобальные переменные могут быть сброшены на ноль при прерываниях кода и т.п. Особенно пока вы, разработчик, работаете над кодом.

Также, если он работает сейчас, зачем его менять?

2
ответ дан 2 September 2019 в 22:17
поделиться

Он поселился. Правильный способ хранения глобальных переменных - использовать модуль.

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

0
ответ дан 2 September 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: