我继承了一个Access程序,该程序读取目录中的Excel文件,并使用DoCmd.TransferSpreadsheet acLink
和Set rs1=db.openrecordset
将它们带入For / Each Ofile循环中的Access。
然后进入循环:Do While not rs1.EOF
。
在循环中,它会立即检查前两个字段(ID和ID2)的格式是否正确。
如果格式化中存在任何错误,并且跳到For / Each循环的顶部并阅读下一个电子表格,则前一个代码将取消整个循环。
我想测试这两个字段但是如果没有错误则跳到Do While循环的顶部。我似乎无法做到这一点。所以我想跳过出错的记录集,但要阅读下一个记录集。
我的代码如下。我已经跳过了For / Each循环,因为它只是读取下一个Excel文件。以下代码位于For / Each循环中。
set rs2 = db.openrecordset("tblIn_Access")
source="C:\Documents\Test_for_import\" & oFile.name
doCMD.TransferSpreadsheet acLink, 10, ofile.name, source, true
Set rs1=db.openrecordset("Select * from " & ofile.name & " ;")
Do While not rs1.eof
IDVal=rs1.fields(0).value
ID2Val=rs1.fields(1).value
if len(idVal) < 9 then
'Here is where I want to stop and read the next record in the spreadsheet.
' I don't want any more processing to occur
if left(id2Val) = "H" then
'This is another case when I want to stop and read the next record
' and not do any more processing on the record
'If these two errors do not occur then I want to continue with the next record
'There is a lot of data manipulation here to get fields in the right format.
' Once they are correct I add the values to a table in Access
rs2.AddNew
rs2.("MBR_ID")=idval
rs2.("ORD_ID")=id2val
rs2.("DATE_IN")=dateinval
rs2.("DATE_OUT")=dateoutval
rs2.Update
rs2.movenext
rs1.movenext
Loop
我无法在前两个字段上停止处理,如果格式不正确,则返回并读取下一条记录。我唯一能做的就是代码最初做了什么,在下一个Excel工作表中停下来阅读。在检查ID和ID后,代码中有很多操作。 ID2,但我只希望在两个字段格式正确的情况下运行该代码。
答案 0 :(得分:0)
这是其他未使用的&#39; GOTO命令的时间。
set rs2 = db.openrecordset("tblIn_Access")
source="C:\Documents\Test_for_import\" & oFile.name
doCMD.TransferSpreadsheet acLink, 10, ofile.name, source, true
Set rs1=db.openrecordset("Select * from " & ofile.name & " ;")
Do While not rs1.eof
IDVal=rs1.fields(0).value
ID2Val=rs1.fields(1).value
if len(idVal) < 9 then GOTO SkipRecord
if left(id2Val) = "H" then GOTO SkipRecord
rs2.AddNew
rs2.("MBR_ID")=idval
rs2.("ORD_ID")=id2val
rs2.("DATE_IN")=dateinval
rs2.("DATE_OUT")=dateoutval
rs2.Update
SkipRecord:
rs2.movenext
rs1.movenext
Loop