ms access vba error 3021没有当前记录

时间:2017-09-25 15:08:44

标签: vba ms-access

我正在使用MS Access VBA从iSeries表导入。有时IBM表可以为空,这没关系。但是,当发生这种情况时,我收到VBA错误3021 - 我是否需要更改我的代码,或者我可以只是抑制错误消息。这是我的代码:

Set rs = New ADODB.Recordset
rs.Open sSQL, cn, adOpenDynamic, adLockOptimistic

'Open recordset to local table
Set rsL = New ADODB.Recordset
rsL.Open sTBL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

rs.MoveFirst
Debug.Print "AS400"
Do Until rs.EOF
  Debug.Print rs.Fields("DROP"), rs.Fields("STDATE"), rs.Fields("ENDATE")
  rsL.AddNew
  rsL.Fields("DROP") = rs.Fields("DROP")
  rsL.Fields("STDATE") = rs.Fields("STDATE")
    rsL.Fields("ENDATE") = rs.Fields("ENDATE")
  rsL.Update
  rs.MoveNext
Loop

'Test to check if above code actually worked
rsL.MoveFirst
Debug.Print "Local"
Do Until rsL.EOF
  Debug.Print rsL.Fields("DROP"), rsL.Fields("STDATE"), rsL.Fields("ENDATE")
  rsL.MoveNext
Loop

'Clear memory
Set rs = Nothing
Set rsL = Nothing
Set cn = Nothing

2 个答案:

答案 0 :(得分:0)

解决了 - 只需将代码更改为以下内容:

'rs.MoveFirst
Debug.Print "AS400"
Do Until rs.EOF
rs.MoveFirst

答案 1 :(得分:0)

在使用rsL.MoveFirst之前,您需要检查记录集是否为空。 如果 rsL.RecordCount <> 0 ,则     rsL.MoveFirst  如果结束