MS-Access跨表格支持

时间:2010-08-10 18:04:54

标签: ms-access vba global-variables

我是一名.NET / C#软件工程师,他被招聘到临时工作职位我并不感到兴奋。

我的公司为其许多当前功能使用MS-Access应用程序。用于此的Visual Basic版本是(v6.5)。组装它的开发人员(目前正在海外度假)有一个“登录”表单,在进入“交换机”页面之前弹出。为了保持登录的“全局意识”,他将表单填写并打开 - 将其隐藏在用户之外,然后当他移动到其他表单时,他回到隐藏的登录表单以确定登录详细信息。

虽然这是功能性的,但它会使我的面向OOP的大脑受到一点伤害。这是在这个版本的MS-Access + VB中模拟全局变量缓存的正确方法,还是仅仅是我们的MS-Access开发人员确定的缓存。我发现了一些使用Global关键字实现全局变量的VBA源的在线引用,但v6.5似乎并不支持这一点(至少不是那种方式)。

有没有人有这方面的线索或者他们推荐的一些优秀的MS-Access资源,所以我可以把这个头痛放在我身后?

3 个答案:

答案 0 :(得分:2)

此方法功能完备,因为在代码中断等情况下,全局变量可以重置为null。特别是在开发人员正在使用代码时。

此外,如果它现在正在工作,为什么要改变它呢?

答案 1 :(得分:0)

答案 2 :(得分:0)

作为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设计功能,但是当您知道自己在做什么时,仍然可以编写更好的代码。