Part 1:目标
商品清单
![59287a6c16dc405d22b37cba17800b9a.png](https://img-blog.csdnimg.cn/img_convert/59287a6c16dc405d22b37cba17800b9a.png)
- 根据商品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 = NothingEnd Sub
代码截图
![8d8bcb30a22ef0248119cb6e144be8d8.png](https://img-blog.csdnimg.cn/img_convert/8d8bcb30a22ef0248119cb6e144be8d8.png)
执行结果
![da81cb124777d732cb5e765fe386154b.png](https://img-blog.csdnimg.cn/img_convert/da81cb124777d732cb5e765fe386154b.png)
Part 3:部分代码解读
- Select 商品ID,商品名称,厂家,数量 from 商品清单 where (商品ID like 'm%')
- 中文释义:选取满足商品ID第1位为字母m的商品信息,从结果看,没有区分大小写
- 这样的%表示0或者任意字符,有点像*的作用
Part 4:延伸
- _代表单一字符,searchC = "商品ID like '____'",四个下划线,结果如下
![c6c581ecc664c9b253d4ab917f8c2416.png](https://img-blog.csdnimg.cn/img_convert/c6c581ecc664c9b253d4ab917f8c2416.png)
- []指定范围,searchC = "商品ID like '[0-9]%'",表示0-9开头的字符串,结果如下
![de4f206890aed80183af6117ef5e9a86.png](https://img-blog.csdnimg.cn/img_convert/de4f206890aed80183af6117ef5e9a86.png)
- [ ]指定范围,searchC = "商品ID like '[a-z]%'",表示a-z开头的字符串,依然没有区分大小写,结果如下
![0178f8165cfbb008e839d00a6913a207.png](https://img-blog.csdnimg.cn/img_convert/0178f8165cfbb008e839d00a6913a207.png)
- [!]指定范围之外,searchC = "商品ID like '[!a-z]%'",表示不以a-z开头,结果如下
![ca60021737be54d4e692bcf2ac7027b4.png](https://img-blog.csdnimg.cn/img_convert/ca60021737be54d4e692bcf2ac7027b4.png)
- not like取反,searchC = "商品ID not like '[a-z]%'",表示不满足a-z开头的字符串,依然没有区分大小写,结果如下
![356a2dbe7c560075683960eb9bd32415.png](https://img-blog.csdnimg.cn/img_convert/356a2dbe7c560075683960eb9bd32415.png)