我在程序中使用了如下代码:
Option Explicit
Dim myws As Workspace
Dim mydb As Database
Dim myrs As Recordset
————————————————
Private Sub Form_Load()
    Set myws = DBEngine.Workspaces(0)
    Set mydb = myws.OpenDatabase(App.Path + "\gongwen.mdb")
    Set myrs = mydb.OpenRecordset("select * from 电子公文表", dbOpenDynaset)
End Sub这段程序在我的另一个工程中运行正常,而在现在的新工程中却提示:实时错误‘13’
类型不匹配
请问为什么?我已经引用了
visual basic for application
visual basic runtime objects and procedures
visual basic objects and procedures
OEL automation
microsoft scriping runtime
microsoft activex data objects 2.0 library
microsoft Dao 3.51 obdect library
microsoft data binding collection
是否还需要引用其他?

解决方案 »

  1.   

    补充:
    错误提示指向
    Set myrs = mydb.OpenRecordset("select * from 电子公文表", dbOpenDynaset)
      

  2.   

    你的引用够了引用
    microsoft Dao 3.6 obdect library
    试试
      

  3.   

    不知道你先后两次运行是否在同一个系统里面,如果不在的话,查看一下你在能运行的那个工程里面所引用的ADO的版本,你上面说的ADO引用的是2.0的,不知道你原来能运行的那个版本是否引用了较高版本的ADO?
      

  4.   

    很久没有DAO了,找了找access帮助文件,这是在access中有关DAO编程的示例
    Dim db as Database
    Dim rs as DAO.Recordset
    Set db = CurrentDB()
    Set rs = db.OpenRecordset(“Employees”)是不是你在声明时没有声明正确,
    Dim myws As Workspace
    Dim mydb As Database
    Dim myrs As Recordset//改成DAO.recordset?
    建议没有必要再用DAO了,直接学习ADO
      

  5.   

    我想
    microsoft activex data objects 2.0 library
    microsoft Dao 3.51 obdect library
    这两个库里面都可能有RecordSet和Database得对象类,所以你定义的时候必须制定是那个库里面的对象
    比如dim myrs as ADO.RecordSet或者dim myrs as Dao.RecordSet 
    这两种是不一样的,具体用哪个,就看
    myws.OpenDatabase(App.Path + "\gongwen.mdb")返回的Database对象是哪个库里定义的了。
      

  6.   

    检查你的dao的版本和mdb文件的版本,dao 3.51好象对access 2000的数据库不支持
      

  7.   

    另外,DemonXHunter(恶魔猎手) 说的也很有道理,你应该这么定义:
    Dim myws As DAO.Workspace
    Dim mydb As DAO.Database
    Dim myrs As DAO.Recordset
    以避免冲突
      

  8.   

    http://expert.csdn.net/Expert/topic/2009/2009932.xml?temp=.625271ado的