Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 45620|回复: 61

[分享] 我们一起学习DAO

[复制链接]
发表于 2009-12-1 20:58 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2012-7-17 10:39 编辑

 学EXCEL到现在 发现如果一直放EXCEL要是放满了怎么办呢  见别人可以把数据放在access里 理论上可以无限放进去然后看了 篮板的VBA技巧 发现DAO代码最简单 于是我开始学习DAO

一、手工新建数据库,打开和关闭数据库

       ACCESS数据库用代码可以建但是我觉得没那个必要  我是用他来放东西的 无所谓了 于是我手工右键建一个ACCESS文件 重命名为数据库.mdb 然后创建表1 然后添加字段名称姓名和成绩. 好手工新建完毕 关闭退出.

EXCEL要想用DAO先要引用一下,方法是打开VBE编辑器 引用 找到DAO 3.6

  S7CBwb2W.rar (21.99 KB, 下载次数: 320)

[分享]学习DAO的一些经验

[分享]学习DAO的一些经验

KnEL3AHB.rar

18.88 KB, 下载次数: 238

[分享]学习DAO的一些经验

评分

参与人数 1 +3 收起 理由
lslly + 3 赞一个

查看全部评分

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2009-12-1 21:01 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2009-12-1 21:38 | 显示全部楼层

主要是查询

我用的方法是1.几个find包括(FindFirst(查找第一个), FindLast(查找最后一个),findNext (查找下一个) ,FindPrevious(查找上一个)

方法2是用move内边也是分上边几种MOVEFirst(指针移到开始), MOVELast(移到最后),findNext (下一个) ,FindPrevious(上一个)就是浏览的意思 然后加上判断就是查询的意思了.

一、查找单个记录

     Sub 查找记录()
    Dim db1 As Database    '声明数据库变量
    Dim rs1 As Recordset    '声明指针
    Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")
    Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)
    rs1.FindFirst "姓名='A3'"        '找到A4
    If rs1.NoMatch = False Then '通过这个函数返回真就是没找打 返回假就是找到了
        MsgBox rs1.Fields("成绩") '弹出成绩
    End If
    rs1.Close
    db1.Close
End Sub

用MOVE也行 就是复杂一点

   Sub 查找记录MOVE()
    Dim db1 As Database    '声明数据库变量
    Dim rs1 As Recordset    '声明指针
    Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")
    Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)
    Do
        '按个浏览
        If rs1.Fields("姓名") = "A3" Then '判断
            MsgBox rs1.Fields("成绩")
            Exit Do '跳出DO
        End If
        rs1.MoveNext
    Loop Until rs1.EOF 'EOF就是最后一条记录的时候返回真
    rs1.Close
    db1.Close
End Sub

二、查找带变量的

Sub 查找变量字段文本() '看姓名字段是文本
    Dim db1 As Database    '声明数据库变量
    Dim rs1 As Recordset    '声明指针
    Dim a As String
    Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")
    Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)
    a = "A3"
    rs1.FindFirst "姓名='" & a & "'"        '找到A3
    If rs1.NoMatch = False Then '通过这个函数返回真就是没找打 返回假就是找到了
        MsgBox rs1.Fields("成绩") '弹出成绩
    End If
    rs1.Close
    db1.Close
End Sub
Sub 查找变量字段数字() '看ID字段是数字
   Dim db1 As Database    '声明数据库变量
    Dim rs1 As Recordset    '声明指针
    Dim x As Integer
    Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")
    Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)
    x = 3
    rs1.FindFirst "ID =" & x     '找到A3
    If rs1.NoMatch = False Then '通过这个函数返回真就是没找打 返回假就是找到了
        MsgBox rs1.Fields("成绩") '弹出成绩
    End If
    rs1.Close
    db1.Close
End Sub

这里注意 文本变量和数字变量的写法不同

三、查找多个记录

    这里我就不一条记录一条记录的放在单元格了 我直接N=N+1 从返回的N来看几条记录

Sub 查找多条记录()
    Dim n As Long
    Dim db1 As Database    '声明数据库变量
    Dim rs1 As Recordset    '声明指针
    Set db1 = OpenDatabase(ThisWorkbook.Path & "\数据库.mdb")
    Set rs1 = db1.OpenRecordset(Name:="表1", Type:=dbOpenDynaset)
    Do
        rs1.FindNext "姓名='A3'"         '找到A3
        If rs1.NoMatch = False Then
            n = n + 1
        End If
    Loop Until rs1.NoMatch
    MsgBox n
    rs1.Close
    db1.Close
End Sub
这里的MOVE就不再写了 其实就是循环+判断

上边的DO LOOP 有人喜欢用这个 有人喜欢用FOR 循环都一样的

如果计算的时候 ACCESS提取出来的是文本数字要加VAL() 还有如果是空的他会是NULL这时如果判断还有VAL会错误 要先用ISNULL判断

可以通过这个完成IIf(IsNull(rs1.Fields("成绩")), 0, val(rs1.Fields("成绩")&"")) 通过连接""来避免VAL(NULL)出现的错误(这还是篮板提醒的)

[此贴子已经被作者于2009-12-2 9:28:42编辑过]
回复

使用道具 举报

发表于 2009-12-1 21:41 | 显示全部楼层

所谓的Recordset就是一个个记录,为何称他叫指针?
回复

使用道具 举报

 楼主| 发表于 2009-12-1 21:44 | 显示全部楼层

指针我感觉比较形象[em04] 他会一条一条移动 还会一下跳到你需要的位置

[em04]
回复

使用道具 举报

发表于 2009-12-1 21:50 | 显示全部楼层

跟着学习,支持一下[em01][em01][em01]
回复

使用道具 举报

发表于 2009-12-1 22:00 | 显示全部楼层

[em05][em05][em05]

搁浅辛苦了

回复

使用道具 举报

发表于 2009-12-1 22:20 | 显示全部楼层

从不会到会,即使只会基本的,也是极具性价比,支持搁浅!

问句外行话,这个有啥好处呀[em11]

PS:实用,才让我燃起兴趣[em04]

回复

使用道具 举报

 楼主| 发表于 2009-12-1 22:29 | 显示全部楼层

就像货物来一个堆这里了 来一个又堆这里了 出去一个减掉一个   现在好了 来一个放仓库 再来再放仓库 想取就取想存就存 数据整个脱离开EXCEL存在了 ACCESS就是我的仓库[em04]

[此贴子已经被作者于2009-12-1 22:32:30编辑过]
回复

使用道具 举报

发表于 2009-12-1 23:56 | 显示全部楼层

太好太好的资料了,必需收藏好好向老师学习[em01]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 23:10 , Processed in 0.492251 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表