我正在使用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
答案 0 :(得分:0)
解决了 - 只需将代码更改为以下内容:
'rs.MoveFirst
Debug.Print "AS400"
Do Until rs.EOF
rs.MoveFirst
答案 1 :(得分:0)
在使用rsL.MoveFirst之前,您需要检查记录集是否为空。 如果 rsL.RecordCount <> 0 ,则 rsL.MoveFirst 如果结束