暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

多条件提取数据Between用法

VBA语言専攻 2022-07-24
128
【分享成果,随喜正能量】 缘来天注定,缘去人自夺。种如是因,收如是果,一切唯心造。笑着面对,不去埋怨。悠然,随心,随性,随缘。注定让一生改变的,只在百年后,那一朵花开的时间。 。
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:多条件提取数据Between用法

第五十讲  数据表多条件提取数据时Between的用法

大家好今日继续VBA数据库解决方案的学习,今日讲解第50讲,多条件提取数据时Between的用法。为什么要提出这个问题呢?这个语法是在多条件数据库查询中经常用到的,但是应用的过程中,如果语法不对,会经常通不过,这里把这个语法单独的拿出来,给大家分享讲解一下。还是以实例来说明,大家可以看到,在数据库解决方案的讲解中,不同于《VBA代码解决方案》的讲解,那里的讲解有必要给大家把每个知识点讲到,而这里的讲解侧重于实际的操作,侧重于对问题的解决的对策。所以要求大家要先结合《VBA代码解决方案》的内容把VBA的各个知识点了解一下,然后再开始数据库的学习。

1  应用场景的具体分析

今日的实例.仍是我们之前的数据库数据资料,如下:
我要把“出生日期”为1999/6/6和1999/6/12两者之间的人员提取出来(含两个开始和结束时间),其他的条件是:“部门”为“一厂” “ 职务”为“班长”,我们如何写代码呢?

2  从数据库多条件提取数据的代码及代码解读

下面看我给出的代码:
Sub mynzRecords_50() '第50讲  从数据库多条件提取数据中between的用法
    Dim cnADO, rsADO As Object
    Dim strPath, strSQL, strTable As String
    Set cnADO = CreateObject("ADODB.Connection")
    Set rsADO = CreateObject("ADODB.Recordset")
    strPath = ThisWorkbook.Path & "\mydata2.accdb"
    strTable = "员工信息"
    cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath
    'strSQL = "SELECT * FROM " & strTable
    strSQL = "select * from " & strTable _
     & " where 部门='一厂' and 职务='班长' and 出生日期 between #1999/6/6# and #1999/6/12#" & " ORDER BY 员工编号 DESC"
    rsADO.Open strSQL, cnADO, 1, 3
    Worksheets("50").Select
    Cells.ClearContents
    For i = 0 To rsADO.Fields.Count - 1
        ActiveSheet.Cells(1, i + 1) = rsADO.Fields(i).Name
    Next i
   For i = 1 To rsADO.RecordCount
    For j = 0 To rsADO.Fields.Count - 1
     ActiveSheet.Cells(i + 1, j + 1) = rsADO.Fields(j)
   Next j
    rsADO.MoveNext
   Next i
   Range("A2").CopyFromRecordset rsADO
   ActiveSheet.Columns(rsADO.Fields.Count).NumberFormat = "yyyy-mm-dd"
   ActiveSheet.Columns.AutoFit
    rsADO.Close
    cnADO.Close
    Set cnADO = Nothing
    Set rsADO = Nothing
End Sub

代码截图:
代码解读:
1)  strSQL = "select * from " & strTable _
     & " where 部门='一厂' and 职务='班长' and 出生日期 between #1999/6/6# and #1999/6/12#" & " ORDER BY 员工编号 DESC"
上述代码是关于本讲的多条件设置的SQL语句写法。其中重点是and 出生日期 between #1999/6/6# and #1999/6/12#" 在写between 时后面一定要有一个and 并且两边要留空格,这个and 和前面的and 意义不同,前者表示是多条件, 这里表示的是连接的是两个值。其他的条件就不再一一讲解了,和上一讲的内容一样。

下面看代码的运行:
大家可以看看上面的结果,完全符合我们的预期。


今日内容回向:
1  between 在条件查询中如何表示?
2  上述的between 条件是否有其他的实现办法呢?


本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm





我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】赞美入耳,批评入心,择其善者而从之,其不善者而改之。。


文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论