我是一名.NET / C#软件工程师,被录用到一个我不喜欢的临时工作岗位上。
我的公司使用MS-Access应用程序来实现其当前的许多功能。为此使用的Visual Basic版本是(v6.5)。组装它的开发人员(目前正在海外度假)有一个“登录”表单,该表单在进入“总机”页面之前弹出。为了保持对登录的“全局感知”,他让表单保持填写并打开状态--对用户隐藏表单,然后当他进入其他表单时,他会回到隐藏的登录表单中,以确定登录详细信息。
虽然这是功能性的,但它让我的面向对象的大脑有点痛苦。这是在这个版本的MS-Access + VB中模拟全局变量缓存的正确方法,还是仅仅是我们的MS-Access开发人员满足的一种方法。我找到了一些关于使用global关键字实现全局变量的VBA源代码的在线参考,但v6.5似乎不支持这一点(至少不是以这种方式)。
有没有人有任何关于这个或一些优秀的MS-Access资源的线索可以推荐给我,这样我就可以把这个令人头疼的事情抛在脑后了?
发布于 2010-08-11 02:19:11
作为bugtussle has said,你可以在模块中使用“全局”变量。下面是操作步骤:
创建一个名为LoginCredentials的模块。在该模块中,您可以将变量声明为public,这实际上使它们成为全局变量。例如:
public LoggedInUserId As Integer
public IsUserLoggedIn As Boolean您可以从其他表单设置和访问这些变量。我喜欢在VBA中始终使用模块名和变量名,这样我就知道全局变量是在哪里声明的,如下所示:
LoginCredentials.LoggedInUserId = 15
If LoginCredentials.IsUserLoggedIn Then
'Do Something '
End If当然,全局变量只在应用程序的生命周期内持续存在,因此如果应用程序崩溃或用户存在于应用程序中,您将丢失这些数据。如果您需要登录凭据来“存活”更长时间,请考虑将数据存储在数据库表中。
顺便说一句,在使用VB6 /VBA时,您的面向OOP的大脑可能会受到一些影响,这并不少见。该语言无法完全实现OOP设计特性,但当您知道自己在做什么时,仍有可能编写更好的代码。
发布于 2010-08-11 05:13:33
这种方法非常有效,因为在给定代码中断等情况下,全局变量可以重置为null。特别是当你作为开发人员在代码中工作的时候。
另外,如果它现在工作了,为什么要改变它呢?
发布于 2010-08-11 02:10:49
他和解了。存储全局变量的正确方法是使用模块。
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
https://stackoverflow.com/questions/3451989
复制相似问题