【发布时间】:2011-03-25 11:55:39
【问题描述】:
按照各种半相关的教程试图弄清楚如何将驻留在表单上的组合框字段发送到查询,我陷入了正确的混乱之中。
我正在使用查询来生成联系人详细信息的子集,从中为邮寄广告活动制作标签。我希望组合框为空或结合使用,因此我可以过滤选择的组合。 我已经让我的组合框进行查找以检索它们的值,并找到了一个关于使用 IS NULL 的好教程,但我不明白 VBA 创建“查看结果”和“清除表单”命令按钮所必需的。
这些是我在查询字段条件中引用的组合框的名称:
[Forms]![SearchForm]![cboStatus]
[Forms]![SearchForm]![cboNewsletter]
这些字段分别称为状态和描述。
我正在过滤的查询被称为
qryFilter
这些是我的命令按钮的名称:
cmdResults
cmdClear
cmdResults 应该将每个组合框值发送到查询,无论它们是 null 还是选中,但我无法让它工作,并且 clear 应该使组合框为 null。
我希望扩展它以包含更多标准,但我想先让它发挥作用!
任何帮助表示赞赏,在此先感谢, 抢
编辑: 试图改编帕特里克的这段代码:
Private Sub cmdResults_Click()
Dim tsSql As String
tsSql = "SELECT * FROM qryAll WHERE "
If cboNewsletter <> "" And Not IsNull(cboNewsletter) Then
tsSql = tsSql & "qryCorrespondence.NID = " & cboNewsletter & " "
If (cboStatus <> "" And Not IsNull(cboStatus)) Then
tsSql = tsSql & " AND "
End If
End If
If cboStatus <> "" And Not IsNull(cboStatus) Then
tsSql = tsSql & "tblCustomers.Status = " & cboStatus & " "
End If
Dim rs As New ADODB.Recordset
rs.Open tsSql, CurrentProject.AccessConnection, 3, 3
End Sub
最后一行给了我一个错误,它在调试器中突出显示了以下行:
rs.open tsSql, CurrentProject.AccessConnection, 3, 3,
并且在 WHERE 子句中说语法错误
有什么建议吗?
【问题讨论】:
-
你得到的错误是什么?它试图创建一个记录集......这甚至可能不是你最终需要做的。您正在编写的查询,它适用于表单上的什么?
-
感谢您的帮助,我希望使用该查询来即时创建我的客户数据库的子集,即列出我们一个多月未联系的当前客户或潜在客户没有收到任何东西的客户。然后我希望将生成的表插入到相关记录的表中。 编辑了我原来的帖子
-
要确定sql有什么问题,您可以在按钮单击事件上放置一个断点,然后在添加过滤器后在即时窗口中执行一个?tssl。它将为您提供 sql 的字符串表示形式……这样看起来更容易。 tsSql 字符串几乎可以用于任何事情,我通常使用 sup 表单并将源设置为 tssql,这样看起来很不错。
-
然后您可能可以摆脱 rs.open 行。
-
一直在使用 Debug.Print,我从 tsSql 字符串中得到的只是 SELECT * FROM qryAll WHERE。看起来它不喜欢 IF 语句?