Office中国论坛/Access中国论坛

标题: 这些代码如何在Access2007中运行? [打印本页]

作者: xyz66z    时间: 2012-11-27 16:39
标题: 这些代码如何在Access2007中运行?
本帖最后由 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

作者: tmtony    时间: 2012-11-27 16:53
只要引用ADO 即可(2.1 2.5 2.7 2.8均可)
作者: xyz66z    时间: 2012-11-27 17:15
谢谢你对我第二个问题的解答。
还想麻烦你们帮我解答第一个问题:
把代码中的“strConn = CurrentProject.Path & "\autoNum.mdb"”改成:
“strConn = CurrentProject.Path & "\autoNum.accdb"”,即出现“不可识别的数据库类型”的提示。
如何更改才能在Access2007中运行?
作者: yodong    时间: 2012-11-27 19:39
autoNum.accdb
数据库不用改名
作者: yodong    时间: 2012-11-27 19:39
除非你用2007打开.另存为ACCdb格式
作者: xyz66z    时间: 2012-11-28 10:11
本帖最后由 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中运行。
作者: xyz66z    时间: 2012-11-28 10:24
现在的问题是,下面的语句还不够完善:
cn.Open strConn
因为时常出现“运行时错误'-2147467259(80004005)':数据库被用户设置为锁定或不能打开的状态”。
再次请求各位老师指点,谢谢!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3