Access/VBA/Excel-12-模糊查询

微信公众号原文

系统:Windows 7
软件:Excel 2010 / Access 2010

  • 这个系列开展一个新的篇章,重点关注Access数据库
  • 主体框架:以Excel作为操作界面,Access作为数据库
  • 今天讲讲模糊查询
  • 涉及知识:ADOSQL:like

Part 1:目标

商品清单
1.png

  1. 根据商品ID检索需要的商品
  2. 通过模糊检索实现,有点百度的味道,只知道部分信息,来查询
  3. 逻辑过程
    • 连接数据库
    • 根据需求确定SQL语句
    • 执行SQL语句,得到recordset
    • recordset写入工作表(字段名+所有记录 列名+每一行)
    • 断开与数据库的连接
  4. 检索商品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

代码截图
3.png

执行结果
2.png

Part 3:部分代码解读

  1. Select 商品ID,商品名称,厂家,数量 from 商品清单 where (商品ID like 'm%')
  2. 中文释义:选取满足商品ID第1位为字母m的商品信息,从结果看,没有区分大小写
  3. 这样的%表示0或者任意字符,有点像*的作用

Part 4:延伸

  1. _代表单一字符,searchC = "商品ID like '____'"四个下划线,结果如下

4.png

  1. []指定范围,searchC = "商品ID like '[0-9]%'",表示0-9开头的字符串,结果如下

5.png

  1. [ ]指定范围,searchC = "商品ID like '[a-z]%'",表示a-z开头的字符串,依然没有区分大小写,结果如下

6.png

  1. [!]指定范围之外,searchC = "商品ID like '[!a-z]%'",表示不以a-z开头,结果如下
    8.png

  2. not like取反,searchC = "商品ID not like '[a-z]%'",表示a-z开头的字符串,依然没有区分大小写,结果如下

7.png


本文为原创作品,如需转载,可加小编微信号learningBin

以上为本次的学习内容,下回见

如发现有错误,欢迎留言指出


更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值