系统:Windows 7
软件:Excel 2010 / Access 2010
- 这个系列开展一个新的篇章,重点关注Access数据库
- 主体框架:以Excel作为操作界面,Access作为数据库
- 今天讲讲模糊查询
- 涉及知识:
ADO
,SQL:like
Part 1:目标
商品清单
- 根据商品ID检索需要的商品
- 通过模糊检索实现,有点百度的味道,只知道部分信息,来查询
- 逻辑过程
- 连接数据库
- 根据需求确定SQL语句
- 执行SQL语句,得到recordset
- 将recordset写入工作表(字段名+所有记录 即 列名+每一行)
- 断开与数据库的连接
- 检索商品ID首字母为m的商品
Part 2:代码
Sub test()
Dim cnn As New ADODB.Connection '连接
Dim rs As New ADODB.Recordset
Dim SQL As String
Dim tblName
Dim dbAddr
dbAddr = ThisWorkbook.Path & "\商品清单.accdb"
tblName = "商品清单"
'连接数据库
With cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open "Data Source=" & dbAddr
End With
opFilds = "商品ID,商品名称,厂家,数量"
searchC = "商品ID like 'm%'"
SQL = "Select " & opFilds & " from " & tblName & " where (" & searchC & ")"
Set rs = cnn.Execute(SQL)
Dim sht
Dim fildNum
Set sht = ThisWorkbook.Worksheets("示例")
sht.Cells.ClearContents
fildNum = rs.Fields.Count
For j = 0 To fildNum - 1 Step 1
fildName = rs.Fields(j).Name
sht.Cells(1, j + 1) = fildName
Next j
sht.Cells(2, 1).CopyFromRecordset rs
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
代码截图
执行结果
Part 3:部分代码解读
Select 商品ID,商品名称,厂家,数量 from 商品清单 where (商品ID like 'm%')
- 中文释义:选取满足商品ID第1位为字母m的商品信息,从结果看,没有区分大小写
- 这样的%表示0或者任意字符,有点像
*
的作用
Part 4:延伸
_
代表单一字符,searchC = "商品ID like '____'"
,四个下划线,结果如下
[]
指定范围,searchC = "商品ID like '[0-9]%'"
,表示0-9开头的字符串,结果如下
[ ]
指定范围,searchC = "商品ID like '[a-z]%'"
,表示a-z开头的字符串,依然没有区分大小写,结果如下
[!]
指定范围之外,searchC = "商品ID like '[!a-z]%'"
,表示不以a-z开头,结果如下
not like
取反,searchC = "商品ID not like '[a-z]%'"
,表示a-z开头的字符串,依然没有区分大小写,结果如下
本文为原创作品,如需转载,可加小编微信号learningBin
以上为本次的学习内容,下回见
如发现有错误,欢迎留言指出
更多精彩,请关注微信公众号
扫描二维码,关注本公众号