【问题标题】:Access 2007 vba How to link a query to a button that will fill a field in a form?Access 2007 vba 如何将查询链接到将填写表单中的字段的按钮?
【发布时间】:2011-11-28 19:44:21
【问题描述】:

由于作为 Access/SQL/VBA 新手,每个人都对我很有帮助,我想我会尝试另一个问题。我正在为我们的一些信息保证流程构建一个系统跟踪表单,我在表单上有一个按钮,我想从表 B 中获取一个名为 Affected_Machine_Name 的 CSV 格式字段,并将其插入到表 A 中的 Affected_Machine_Name 字段中,这是表单的基础。

我写来尝试执行此操作的查询 (All_Machine_Names) 如下所示:

插入表 A(Affected_Machine_Name.[Value])
SELECT 表 B.Affected_Machine_Name
从表A,表B;

在其他帖子中做了一些研究后,我使用 VBA onClick 将其链接到按钮中,如下所示:

Public Sub All_Button()

Screen.ActiveDatasheet!Affected_Machine_Name = DoCmd.OpenQuery "All_Machine_Names"

结束子

我当前的问题是子函数出现语法错误,我不知道为什么,因为错误框没有提供有用的详细信息。就此而言,我什至不确定我的查询是否正确,因为我试图复制其他一些关于如何插入的帖子。

我认为我没有引用单个记录,因为当我自己运行查询时,它想要修改所有 180 条记录,而不仅仅是我突出显示的那条。

我们将不胜感激任何可以提供的帮助!谢谢!

更新:由于我一直在研究如何完成此操作的选项,并认为我需要关闭此问题并重新定义我的问题。感谢所有提供一些提示和指导的人。

【问题讨论】:

  • 是的,Affected_Machine_name 是来自复选框表单字段的多值字段,它引用了我的主系统主机表。它需要存储给定系统漏洞的所有受影响机器的名称。我正在阅读访问教程,这似乎是这样做的方法。我错了吗?
  • 多值字段对用户来说很方便。从开发人员的角度来看,多值字段在 VBA 代码和 SQL 语句中的使用更具挑战性。我个人只会在将 Access 与 SharePoint 数据源连接时使用它们。在所有其他情况下,我使用传统方法,其中“多个值”存储在相关表的单独行中,其中包括指向“父”表中行的键的外键。
  • 不幸的是,我发现自己更多地扮演了前者而不是后者的角色,尽管我正在“开发”这个表格和与之配套的表格。基本上,作为 IA 合规人员,我们的内部 DBA 可能会在睡梦中编写此代码,但我无法联系到他们。我基本上必须自产我工作所需的东西。我的代码没有美感,我只是想完成工作。所以我愿意接受任何能让我走到尽头的方法。到目前为止,我感谢有用的 cmets,并将尝试弄清楚您在说什么。谢谢!

标签: sql vba ms-access-2007


【解决方案1】:

我将假设您的表单上有唯一的机器 ID(PK?),并且您希望表 B 中的 Affected_Machine_Name,其中 Machine_ID(或任何 ID/PK 是)等于当前机器记录来自表 A。假设您的表单绑定(不仅仅是基于)到 TableA,并且两个表中的 ID 字段都命名为 Machine_ID。

如果是这种情况,那么以下代码应该适用于表单上的按钮:

me!Affected_Machine_Name = dlookup("Affected_Machine_Name", "TableB", "Machine_ID = " & me!Machine_ID

在那个代码中“我!”是一种为当前选定记录引用绑定表字段的方法。 Dlookup 从带有参数 dlookup(field,table,condition) 的表中返回数据。这样就会从 TableB 中返回与表单中的当前记录具有相同 ID 的机器名称。

(附带问题:为什么要将 CSV 数据存储在数据库中,而不是将其拆分到单独的表中?)

【讨论】:

  • 实际上,我表单上的 PK 是一个随机数字,允许我复制其他一些必要的项目以进行跟踪。当我尝试这段代码时,它似乎在 & me!Machine_ID 部分窒息。
    至于你的侧面问题,我在从我的主系统主机表中拉出的表单上显示为一个组合框,当我检查了这些框,我看到它看起来像是将输入作为 csv 存储在实际表中。就像我说的,我是个菜鸟,这让我觉得我误解了这一点。
猜你喜欢
  • 1970-01-01
  • 2012-09-25
  • 2012-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-29
相关资源
最近更新 更多