如何将表单绑定到 Microsoft Access 中的 SQL 语句

Posted

技术标签:

【中文标题】如何将表单绑定到 Microsoft Access 中的 SQL 语句【英文标题】:How to bind a form to an SQL statement in microsoft access 【发布时间】:2014-07-04 23:18:20 【问题描述】:

**编辑

大家好,我正在尝试在我的 vba 中包含一条 SQL 语句,以便我可以轻松地对数据进行排序和过滤。所以我找到了将 SQL 包含到我的 VBA 中的方法,但我收到一条错误消息,提示“RunSQL 操作需要 SQL 语句”,但显然 SQL 语句在 strSQL 变量中。

Private Sub buttonNot_Click()


Dim strSQL As String

strSQL = "SELECT Table1.[FirstNam], Table1.[LastNam]" & _
"FROM Table1 " & _
"WHERE ((([FirstNam]) <> 'Jamie') AND (([LastNam]) <> 'Cartman'));"

DoCmd.RunSQL strSQL

Me.Filter = ""
Me.Filter = "FirstNam<>'Jamie' AND LastNam<>'Cartman'"

End Sub

【问题讨论】:

有人可以看看代码并告诉我它有什么问题吗? 点击buttonNot会发生什么? 假设运行 sql 语句,然后 Me.Filter 假设过滤数据,因此 sql 语句基本上遍历两列中的所有数据,然后 Me.Filter = "FirstNam'Jamie' AND Lastnam'Cartman'" 将过滤不等于 jamie 或 cartman 的数据 【参考方案1】:
Private Sub buttonNot_Click()


Dim strSQL As String

strSQL = "SELECT Table1.[FirstNam], Table1.[LastNam]" & _
"FROM Table1 " & _
"WHERE ((([FirstNam]) <> 'Jamie') AND (([LastNam]) <> 'Cartman'));"


Me.RecordSource = strSQL

'DoCmd.RunSQL strSQL

'Me.Filter = ""
'Me.Filter = "FirstNam<>'Jamie' AND LastNam<>'Cartman'"

End Sub

【讨论】:

【参考方案2】:

您不能从 DoCmd.RunSQL 查询中运行 SELECT 查询,该查询只能用于操作或数据定义查询(INSERT INTO、UPDATE、CREATE 等)。

Microsoft Dev Center Docs on DoCmd.RunSQL(我知道,我附上了一个链接,真丢人):o

我真的很喜欢@ClassyBear 的回答。该行代码相当于在设计视图和数据下转到表单的属性表,更改记录源属性。在那里,您可以选择一个表/查询或单击 ... 并在查询设计器中创建一个。

【讨论】:

【参考方案3】:

me.recordsource = SQL 字符串

确保在附加查询字符串后打开过滤器。

【讨论】:

我修改了我的帖子,我想我找到了一种包含 SQL 语句的方法,但是如果你能看看它会有错误,那就太好了。

以上是关于如何将表单绑定到 Microsoft Access 中的 SQL 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Microsoft Access 表单中的单个记录打印到报表中

如何使用 Microsoft Access 导航表单过滤加载

在 Microsoft Access 数据表上自定义自动完成功能

使用 Microsoft Access 中的两个表单将参数从一个组合框传递到另一个组合框

使用主窗体中的未绑定文本框过滤 Microsoft Access 中的子窗体

无法引用属性或方法/类型不匹配 Microsoft Access