Sql Access 2007 vba如何将查询链接到将在表单中填充字段的按钮?

Sql Access 2007 vba如何将查询链接到将在表单中填充字段的按钮?,sql,vba,ms-access-2007,Sql,Vba,Ms Access 2007,作为一名Access/SQL/VBA新手,每个人都对我很有帮助,所以我想我应该尝试另一个问题。我正在为我们的一些信息保障流程构建一个系统跟踪表单,我在表单上有一个按钮,我想从表B中获取一个名为“受影响的机器名称”的CSV格式字段,并将其插入表a中的“受影响的机器名称”字段,这是表单的基础 我编写的用于尝试执行此操作的查询(所有机器名称)如下所示: 插入表A(受影响的机器名称。[值]) 选择表B.受影响的机器名称 从表A到表B 在其他一篇文章中做了一些研究之后,我使用VBA onClick将其链接

作为一名Access/SQL/VBA新手,每个人都对我很有帮助,所以我想我应该尝试另一个问题。我正在为我们的一些信息保障流程构建一个系统跟踪表单,我在表单上有一个按钮,我想从表B中获取一个名为“受影响的机器名称”的CSV格式字段,并将其插入表a中的“受影响的机器名称”字段,这是表单的基础

我编写的用于尝试执行此操作的查询(所有机器名称)如下所示:

插入表A(受影响的机器名称。[值])
选择表B.受影响的机器名称
从表A到表B

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

公共子所有按钮()

Screen.ActiveDatasheet!受影响的机器名称=DoCmd.OpenQuery“所有机器名称”

端接头

我当前的问题是我得到了子函数的语法错误,我不知道为什么,因为错误框没有提供有用的细节。就这一点而言,我甚至不确定我的查询是否正确,因为我正试图复制其他一些帖子,了解如何进行插入

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

如能提供任何帮助,我们将不胜感激!谢谢


更新:因为我一直在研究如何完成这个问题,我认为我需要结束这个问题并重新定义我的问题。感谢所有提供了一些提示和指导的人。

我假设您的表单上有一个唯一的机器ID(PK?),并且您希望表B中受影响的机器名,其中机器ID(或ID/PK是什么)等于表a中的当前机器记录。让我们假设您的表单是绑定的(而不仅仅是基于)到表A,两个表中的ID字段都命名为Machine\u ID

如果是这种情况,那么表单上按钮的代码中应包含以下内容:

me!Affected_Machine_Name = dlookup("Affected_Machine_Name", "TableB", "Machine_ID = " & me!Machine_ID
在该代码中,“me!”是一种引用当前所选记录的绑定表字段的方法。Dlookup从带有参数Dlookup(字段、表、条件)的表返回数据。因此,它将从TableB返回与表单中当前记录具有相同ID的机器名


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

实际上,我表格上的PK是一个随机数字,允许我复制一些其他必要的项目以进行跟踪。当我尝试这个代码时,它似乎被&me!机器ID部分。
至于你的附带问题,我在从主系统主机表中提取的表单上,将受影响的机器名称显示为一个组合框,当我选中这些框时,我看到它看起来像是将输入存储为实际表中的csv。就像我说的,我是一个noob,这让我觉得我误解了这一点。是的,受影响的机器名称是一个多值字段,来自引用我的主系统主机表的复选框表单字段。它需要存储给定系统漏洞的所有受影响机器的名称。我正在阅读access教程,这似乎就是我的方法。我错了吗?多值字段对用户来说似乎很方便。从开发人员的角度来看,在VBA代码和SQL语句中使用多值字段更具挑战性。就我个人而言,我只会在连接Access与SharePoint数据源时使用它们。在所有其他情况下,我使用传统的方法,将“多个值”存储在相关表的单独行中,该表包括一个外键,该外键指向“父”表中某一行的键。不幸的是,我发现自己更多地扮演前者而不是后者的角色,即使我正在“开发”这张表格和与之配套的表格。基本上,我们的内部DBA,他们可能会在睡梦中写这篇文章,作为IA合规人员,我无法使用。我基本上必须在家里种植我工作所需的东西。我的代码没有什么美,我只是想把工作做好。所以我愿意接受任何能让我达到目的的方法。我很感激到目前为止的有益评论,我会尽力弄明白你在说什么。谢谢