2008-11-28 140 views
1

我下面的代码的最后得到一个运行时错误13:在设置RS2 = CurrentDb.OpenRecordset(strsql2)发生访问:运行时错误13类型不匹配

Sub plausibilitaet_check() 

Dim rs As DAO.Recordset 
Dim rs2 As ADODB.Recordset 
Dim db As database 
Dim strsql As String 
Dim strsql2 As String 
Dim tdf As TableDef 




Set db = opendatabase("C:\Codebook.mdb") 
Set rs = db.OpenRecordset("plausen1") 

Set rs2 = CreateObject("ADODB.Recordset") 
rs2.ActiveConnection = CurrentProject.Connection 


For Each tdf In CurrentDb.TableDefs 

    If Left(tdf.Name, 4) <> "MSys" Then 
     rs.MoveFirst 
     strsql = "SELECT * From [" & tdf.Name & "] WHERE " 



     Do While Not rs.EOF 
      On Error Resume Next 

      strsql2 = "select * from table where GHds <> 0" 
      Set rs2 = CurrentDb.OpenRecordset(strsql2) 

错误

灿有人看到我要去哪里错了?

回答

2

你混合了ADO和DAO。在这种情况下,rs2应该是一个DAO记录集。

Sub plausibilitaet_check() 

Dim rs As DAO.Recordset 
Dim rs2 As DAO.Recordset 
Dim db As database 
Dim strsql As String 
Dim strsql2 As String 
Dim tdf As TableDef 

Set db = opendatabase("C:\Codebook.mdb") 
Set rs = db.OpenRecordset("plausen1") 


For Each tdf In CurrentDb.TableDefs 

    If Left(tdf.Name, 4) <> "MSys" Then 
     rs.MoveFirst 
     strsql = "SELECT * From [" & tdf.Name & "] WHERE " 

     Do While Not rs.EOF 
      On Error Resume Next 

      strsql2 = "select * from table where GHds <> 0" 
      Set rs2 = CurrentDb.OpenRecordset(strsql2) 
+0

其实我想修改,在格兰线程“如何在Access运行查询的循环”,所以我会通过像 rs2.Open STRSQL&“”&RS的条件按照这个鳕E中给出的代码![查询] 我认为只能用ado来完成 – tksy 2008-11-28 10:10:17

3

CurrentDB.OpenRecordset返回DAO.Recordset的一个实例。您试图将结果赋予ADODB.Recordset

更改RS2定义

dim rs2 as DAO.Recordset