2008-11-28 143 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