在 VBA 中为 MS Access 中的用户携带一个变量

Posted

技术标签:

【中文标题】在 VBA 中为 MS Access 中的用户携带一个变量【英文标题】:Carry a variable in VBA for an user in MS Access 【发布时间】:2015-08-17 12:14:24 【问题描述】:

我正在尝试创建变量,该变量将贯穿 MS Access 中的所有用户活动。

所以我想要实现的是: 用户打开应用程序并设置区域。

从那时起,我希望能够在我的 VBA 命令中引用该区域,这些命令在用户在表单之间移动时触发以限制显示的数据。如何通过各种形式和查询携带变量,或者只是将其创建为参数,并在调用时传递给每个过程?

谢谢

【问题讨论】:

【参考方案1】:

以下关于 VBA 中 ozgrid 变量的文章具有三个作用域级别:

    程序级 模块级 项目级别、工作簿级别或公共模块级别

似乎第三个与您的请求最相关。你可以这样定义它:

Public SelectedRegion as Long

作为一种替代方法,您可以考虑将此选择存储在一个文件和reading the data from file 中。介绍网站上可用示例的相关部分:

myFile = "C:\test\geographical-coordinates.txt"
Open myFile For Input As #1
Do Until EOF(1)
    Line Input #1, textline
    text = text & textline
Loop
Close #1

【讨论】:

谢谢,公共变量声明效果很好。由于多个用户同时更新,我避免在表中携带会话变量,这似乎是一个更好的选择。【参考方案2】:

Konrad 的回答涵盖了大多数选项,我只是想补充一点,当您使用 Access 时,您始终可以创建一个用户到区域的映射表并将数据存储在那里。

【讨论】:

嗨,问题是它太动态了——用户几乎每天都会根据当前的焦点转移他们正在使用的区域——所以让他们在输入时选择一个区域是最有效的方法。 Marc 我认为你没有理解我的观点,你如何收集数据以及收集数据的频率是不敬的,一旦你捕获了它,你需要将它持久化,以便它可以在其他领域使用您的应用程序。在数据库应用程序中存储数据比在数据库本身中存储数据有什么更好的方法。数据如何过于动态而无法存储在数据库中,这就是它们的设计目的。 问题在于多个用户并从表中获取正确的行。如果没有携带区域本身,则需要携带会话 id 或类似的东西来识别正确的行,以防在它们忙时添加另一行......如果没有携带变量,计算机不知道哪个是正确的行,因为它可能不是应该引用的最后一条记录 只需将用户的 Windows 用户名与他们的区域选择一起存储,请参阅 this question 了解如何完成此操作的想法。 感谢戴夫-实际上效果很好!一个非常优雅的解决方案!

以上是关于在 VBA 中为 MS Access 中的用户携带一个变量的主要内容,如果未能解决你的问题,请参考以下文章

VBA 代码中的 MS Access SQL 查询

MS ACCESS, VBA 将外部 MS Access 表导入 SQL server 表

如何在 VBA 代码中的 ms-access 中执行查询?

MS ACCESS TransferSpreadsheet VBA 在导入数据中包含额外信息

可以通过 VBA 更改 MS Access 子表单字段吗?

如何在 MS Access VBA 上将文本框注释值输入设置为表格数据插入