如何在SQL查询中创建异常(访问Excel)

如何在SQL查询中创建异常(访问Excel),sql,excel,ms-access,vba,Sql,Excel,Ms Access,Vba,我从Access表中获取一些数据到Excel工作表,它们取决于一些参数。access表上的我的数据列表包括: 1-x branch 2-y branch 3-z branch 4-t commercial branch 5-r commercial branch 6-w corporate branch 7-g corporate branch 在Excel VBA上,如果要检索所有数据,我将创建一个SQL查询,如下所示: sql = "select * from [table] where

我从Access表中获取一些数据到Excel工作表,它们取决于一些参数。access表上的我的数据列表包括:

1-x branch
2-y branch
3-z branch
4-t commercial branch
5-r commercial branch
6-w corporate branch
7-g corporate branch
在Excel VBA上,如果要检索所有数据,我将创建一个SQL查询,如下所示:

sql = "select * from [table] where [Branches] like "%"
如果我只想检索商业分支机构数据:

sql = "select * from [table] where [Branches] like '%" & "commercial" & "%'"
如果我只想检索公司分支机构数据:

sql = "select * from [table] where [Branches] like '%" & "corporate" & "%'"
这就是问题所在。如果我想检索除公司和商业分支机构以外的数据,我必须做什么?我们可以创建什么样的sql查询

非常感谢


这是我的错,我可以解释得更清楚。在创建查询之前,我使用的参数如下:

Select Case main.Range("D6").Value
Case "ALL"
brnch = "%"
Case "CORPORATE"
brnch = "%" & "CORPORATE" & "%"
Case "COMMERCIAL"
brnch = "%" & "COMMERCIAL" & "%"
End Select
我的问题实际上是这样的:

sql = "select * from [table] where [Branches] like '" & brnch & "'"

现在,我如何检索没有商业广告和公司的分支机构。

您可以使用
不喜欢

sql = "select * from [table] where Branches not like '%corporate%' and branches not like '%commercial%'";
如果要在MS Access中运行此代码,则通配符不同,字符串分隔符是双引号:

sql = "select * from [table] where Branches not like ""*corporate*"" and branches not like ""*commercial*""";

您可以使用
而不是像

sql = "select * from [table] where Branches not like '%corporate%' and branches not like '%commercial%'";
如果要在MS Access中运行此代码,则通配符不同,字符串分隔符是双引号:

sql = "select * from [table] where Branches not like ""*corporate*"" and branches not like ""*commercial*""";

戈登的问题会解决的。但是,通过在每个分支的名称中查找某些关键字来查询数据。。。这变得丑陋、缓慢,而且可能不准确。是否有可能向该表中添加一个整数列,以指示每个实体所属的分支类型<代码>1=分行,2=商业分行,3=公司分行
。然后过滤查询变得很简单:
WHERE[Table].[BranchCategoryId]在(1,2)
中,而
WHERE[Table].[BranchCategoryId]不在(2,3)
中,这很好,但不幸我不能。这是一个非常旧的数据库,其他一些Excel工作簿使用此数据库运行。因此,您的Excel单元格,
main.Range(“D6”).Value
,将包含不包含商业和公司的条目?我得到了一个类似“Others”的条目,以便不选择商业和公司。但我不知道如何创建正确的查询。Gordon的查询将起作用。但是,通过在每个分支的名称中查找某些关键字来查询数据。。。这变得丑陋、缓慢,而且可能不准确。是否有可能向该表中添加一个整数列,以指示每个实体所属的分支类型<代码>1=分行,2=商业分行,3=公司分行
。然后过滤查询变得很简单:
WHERE[Table].[BranchCategoryId]在(1,2)
中,而
WHERE[Table].[BranchCategoryId]不在(2,3)
中,这很好,但不幸我不能。这是一个非常旧的数据库,其他一些Excel工作簿使用此数据库运行。因此,您的Excel单元格,
main.Range(“D6”).Value
,将包含不包含商业和公司的条目?我得到了一个类似“Others”的条目,以便不选择商业和公司。但我不知道如何创建正确的查询。非常感谢,但我对下面的问题做了补充。非常感谢,但我对下面的问题做了补充。