设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2359|回复: 6
打印 上一主题 下一主题

[ADO/DAO] 这些代码如何在Access2007中运行?

[复制链接]
跳转到指定楼层
1#
发表于 2012-11-27 16:39:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xyz66z 于 2012-11-27 16:42 编辑

下面的代码在Access2003中运行正常。
目的是把名为“autoNum.mdb”的数据库中一个叫“商品单价”的表的“单价”全部九折计算。
然而用Access2007,数据库文件名为:“autoNum.accdb”,其他数据表、窗体等相同,
只是把下面的代码中的“strConn = CurrentProject.Path & "\autoNum.mdb"”改成:
“strConn = CurrentProject.Path & "\autoNum.accdb"”,即出现“不可识别的数据库类型”提示。
因此,特请教各位老师:
一、下面的代码如何更改才能在Access2007中运行?
二、执行这些代码,要在VB编辑界面——“工具”——“引用”中选择哪些内容?
谢谢

        ' 声明1个事件过程,当命令按钮单击时执行
Private Sub Command0_Click()
        ' 声明1个Connection对象变量,用来连接数据库
    Dim cn As New ADODB.Connection
        ' 声明1个Recordset对象变量,用来获取数据库数据
    Dim rs As New ADODB.Recordset
        ' 声明1个Field对象变量,用来读取表字段
    Dim fd As ADODB.Field
        ' 声明1个字符串变量,用来存储数据库文件路径
    Dim strConn As String
        ' 声明1个字符串变量,用来存储SQL语句
    Dim strSql As String
        ' 读取数据库路径,CurrentProject.Path表示当前路径
    strConn = CurrentProject.Path & "\autoNum.mdb"
        ' 引用调用数据库方法
    cn.Provider = "Microsoft.Jet.OLEDB.4.0"
        ' 打开数据库连接
    cn.Open strConn
        ' 赋予SQL语句
    strSql = "select 单价 from 商品单价"
        ' 从Recordset对象中打开数据库
    rs.Open strSql, cn, adOpenDynamic, adLockOptimistic, adCmdText
        ' 读取Recordset对象中的“单价”字段
    Set fd = rs.Fields("单价")
        ' 循环读取“单价”字段所有的值
    Do While Not rs.EOF
        ' 修改“单价”字段所有的值
        fd = fd * 0.9
        ' 修改成功
        rs.Update
        ' 读取下一条记录
        rs.MoveNext
    Loop
        ' 关闭Recordset对象
    rs.Close
        ' 关闭Connection对象
    cn.Close
End Sub
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2012-11-27 16:53:52 | 只看该作者
只要引用ADO 即可(2.1 2.5 2.7 2.8均可)
3#
 楼主| 发表于 2012-11-27 17:15:22 | 只看该作者
谢谢你对我第二个问题的解答。
还想麻烦你们帮我解答第一个问题:
把代码中的“strConn = CurrentProject.Path & "\autoNum.mdb"”改成:
“strConn = CurrentProject.Path & "\autoNum.accdb"”,即出现“不可识别的数据库类型”的提示。
如何更改才能在Access2007中运行?
4#
发表于 2012-11-27 19:39:01 | 只看该作者
autoNum.accdb
数据库不用改名
5#
发表于 2012-11-27 19:39:44 | 只看该作者
除非你用2007打开.另存为ACCdb格式
6#
 楼主| 发表于 2012-11-28 10:11:55 | 只看该作者
本帖最后由 xyz66z 于 2012-11-28 10:15 编辑

有老师提出把:cn.Provider = "Microsoft.Jet.OLEDB.4.0"
更改为:cn.Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=..\\db.accdbersist Security Info=False;"
经测试,更改后,可以在access2007中运行。
7#
 楼主| 发表于 2012-11-28 10:24:34 | 只看该作者
现在的问题是,下面的语句还不够完善:
cn.Open strConn
因为时常出现“运行时错误'-2147467259(80004005)':数据库被用户设置为锁定或不能打开的状态”。
再次请求各位老师指点,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-6 10:57 , Processed in 0.116989 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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