MS-Access Cross-Form Поддержка - PullRequest
       21

MS-Access Cross-Form Поддержка

1 голос
/ 10 августа 2010

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 11 августа 2010

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

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

0 голосов
/ 10 августа 2010

Как сказал bugtussle , вы можете использовать "глобальные" переменные внутри модулей. Вот как:

Создайте модуль с именем LoginCredentials. Внутри этого модуля вы можете объявить переменные как public, что фактически делает их глобальными переменными. Например:

public LoggedInUserId As Integer
public IsUserLoggedIn As Boolean

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

LoginCredentials.LoggedInUserId = 15

If LoginCredentials.IsUserLoggedIn Then
    'Do Something    '
End If

Разумеется, глобальные переменные сохраняются только на протяжении всего жизненного цикла приложения, поэтому, если оно выйдет из строя или если приложение существует пользователем, вы потеряете эти данные. Если вам нужны учетные данные, чтобы «жить» дольше, рассмотрите возможность сохранения данных в таблице базы данных.

Как примечание: ваш OOP-ориентированный мозг нередко немного болит при работе с VB6 / VBA. Язык просто не в состоянии полностью реализовать возможности проектирования ООП, но все же можно писать лучший код, когда вы знаете, что делаете.

0 голосов
/ 10 августа 2010

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

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

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