Dim db As Database
Dim rs As Recordset
Dim dbname As String
Dim qdef As QueryDef
dbname = App.Path& "data.mdb"
Set db = OpenDatabase(dbname)
Set qdef = db.CreateQueryDef("", "select year,value from yearlyvalues")
Set rs = qdef.OpenRecordset(dbOpenSnapshot)
为什么一运行就提示“类型不匹配”!而且调试指向Set rs = qdef.OpenRecordset(dbOpenSnapshot)
不知什么原因?望高人指点一二!小弟谢过了!

解决方案 »

  1.   

    Set db = OpenDatabase(App.Path& "data.mdb", False, False)
     
      sql = "select year,value from yearlyvalues"
      Set rs = db.OpenRecordset(sql)
      

  2.   

    用ADO吧,可以写为:
    dim cnn as adodb.connection
    dim rs as adodb.recordset
    dim sql as string access2000下数据库:
    set cnn=new adodb.connection
    cnn.open "provider=microsoft.jet.oledb.4.0;data source= " & App.Path & "\data.mdb"
    sql="select year,value from yearlyvalues"
    set rs=new adodb.recordset
    rs.open sql,cnn,3,3
    rs.close
    set rs=nothing
    cnn.close
    set cnn=nothing
      

  3.   

    可能你同时引用了ADO与DAO,所以应把
    Dim db As Database
    Dim rs As Recordset
    Dim dbname As String
    Dim qdef As QueryDef
    更改为
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim dbname As String
    Dim qdef As DAO.QueryDef
    就可以了
    Recordset对象为DAO和ADO共有