如何在 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.value
或ComboOver.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