如何在 SQL 语句中引用组合框并在 VBA 中运行该语句

Posted

技术标签:

【中文标题】如何在 SQL 语句中引用组合框并在 VBA 中运行该语句【英文标题】:How to reference a combo box in a SQL statement and run the statement in VBA 【发布时间】:2016-12-16 21:32:03 【问题描述】:

我试图让用户使用表单将数据插入 Microsoft 访问中的表 Inventory2Locaton。他们将从两个组合框中选择数据,然后按添加按钮将数据添加到表中。

我使用的查询是

INSERT INTO Inventory2Location
VALUES (ComboPart.value, ComboOver.value);

但它实际上不会从组合框中拉出ComboPart.valueComboOver.value

我也不知道如何通过单击按钮来运行此查询。我有这个模块

Private Sub CommandAdd_Click()

但不知道运行查询的 VBA 代码。

我从 excel 经验中对 VBA 非常熟悉,并且上过关于 SQL 的课程,但我对访问非常陌生,不知道如何将两者放在一起。

【问题讨论】:

***.com/questions/390420/… 【参考方案1】:

我会提出一个更好的解决方案是将表单的“记录源”属性设置为 Inventory2Location。然后,在表单属性的数据选项卡上,将“数据输入”设置为“是”。这将使表单只能将记录添加到表中。

接下来,对于代表您希望用户添加的表中的值的每个控件,进入该控件的属性并将Control Source 设置为您要更新的字段。

然后,在“保存”按钮的“事件”选项卡上,删除 [Event Procedure] 并单击 ... 按钮。选择Macro Builder。这将在表单中创建一个嵌入的宏。宏只是两个命令。一个保存当前记录,另一个关闭表单。

RunMenuCommand
       Command  SaveRecord
CloseWindow
   Object Type  Form
   Object Name  =[Screen].[ActiveForm].Name
          Save  Prompt

一定要把等号放在[Screen] 前面。

这种方法的好处是:

如果由于重复键或错误输入而发生错误,Access 将负责通知用户该问题。使用 VBA,您需要捕获这些类型的错误。 通过使用嵌入式宏,您应该能够彻底消除附加到表单的代码模块(在表单属性的其他选项卡中将Has Module 转换为No)。这将它变成了一种轻量级的形式,这意味着它运行得更快,并且不会受到 Access 中常见的代码损坏的影响。 最后,您应该能够在未授予数据库提升信任设置的情况下运行表单。因此,您无需担心人们会单击“启用”按钮以使表单正常工作。

【讨论】:

此方法如何知道要放入表中的数据字段? 您将控件(例如组合框)绑定到表格字段。在控件的属性中,您将使用“控件源”【参考方案2】:

试试这个,

sqlStr = "INSERT INTO Inventory2Location VALUES (" & ComboPart.Value & " ," & ComboOver.value & ");"

您需要获取组合框的值,您所做的只是将ComboPart.Value 设为文字字符串值。

至于这段代码,

Private Sub CommandAdd_Click()

它是自动生成的代码,所以当你点击它时它应该被附加到某个东西上。

【讨论】:

这会返回几个错误。对于一个 ComboPart 值,它会在查询表达式 '"U"CHANFRAME'" 中返回一个“语法错误(缺少运算符)”(“U”CHANFRAME 是 ComboPart 值中的部件号。另一个不完全是错误,但它只是给我一个弹出消息框手动输入文本。消息框将命名为我想输入的内容。 在字符串中发现语法错误。它只是缺少几个撇号。此代码适用于“INSERT INTO Inventory2Location VALUES ('" & ComboPart.Value & "','" & ComboOver.Value & "');"

以上是关于如何在 SQL 语句中引用组合框并在 VBA 中运行该语句的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 sql/vba 的结果填充文本框并出现 #Name 错误

访问 VBA - 使用 VBA 的 SQL 语句使用文本框组合框值在表单上填充列表框 OR

比较两个(py)spark sql数据框并在保持连接列的同时有条件地选择列数据

如何在 VBA 中获取 Select SQL 语句的结果

查询在 QBE 中返回结果,但不是通过 VBA 代码

如何在Excel,VBA中执行SQL语句?