传递多个条件以通过VBA代码进行查询

时间:2015-08-28 16:41:57

标签: vba ms-access

我正在开发一个Access数据库,这个数据库是从我之前从事这个工作的人那里继承的。我是新手,在我学习的同时学习。

背景: 我正在使用实验数据数据库。 我正在尝试创建一个搜索和导出表单,允许用户搜索特定的数据集,然后将其导出到Excel工作表。它还允许用户过滤搜索,以便只将特定值写入excel文件。

我的数据库有2个主要子表,区分实验类型。 我使用一个列表框,允许用户选择他/她想要搜索的表。

根据此选择,两个额外的列表框将填充相关选项

选项是“作者姓名”和“编号ID”  到目前为止一切正常 如果选择了表1,则在列表框中填充一组作者姓名和编号ID,如果选择了表2,则同样如此。

作者姓名和号码ID列表框都是简单的多选。

我遍历列表框选择以获取所有选定的值

然后我创建了SELECT和IN语句。

这就像数字id的魅力(当我只用1个列表框执行时)。

但是,如果我尝试按如下方式创建查询语句,则会出现错误:

SELECT * FROM tbl1 [Number_ID] IN (a,b,...) AND 
SELECT * FROM tbl1 [AUTHOR_NAME] IN ("xyz", "abc",....)

其中Number_ID是整数和 Author_Name是文字

1 个答案:

答案 0 :(得分:1)

解决方案:

strSQL = "SELECT * FROM tbl1 WHERE "

strWhere = "[Number_ID] IN (1, 2, 3, ...)"
strSQL = strSQL & strWhere

strSQL1 = " AND "
strWhere1 = "[Author_Name] IN ("xyz", "abc", ...)"

strSQL = strSQL & strSQL1 & strWhere1

这会生成一个查询字符串,如下所示

"SELECT * FROM tbl1 WHERE [Number_ID] IN (1, 2, 3, ...) AND [Author_Name] IN 

("xyz", "abc", ...)"

可以传递给qryDef变量来创建查询。