我用vb编写一段读文件的代码(是把.data文件登录到表里)如果读的文件字段类型有错误让他们进到错误处理里写错误log,然后再读下一条,现在遇到的问题的是,如果.data文件只有一行是错误的,可以进到错误处理,如果有一行以上的错误数据,就不进到错误处理。请各位帮帮忙。部分代码如下。fno指的是文件 Do While Not EOF(fno)
i = i + 1
On Error GoTo updateerr
gOraSession.DbBeginTrans Line Input #fno, eiajdata
a = Trim(Mid(eiajdata, 1, 5))
b = Trim(Mid(eiajdata, 48, 12))
c = Trim(Mid(eiajdata, 101, 10)) & "." & Trim(Mid(eiajdata, 111, 3))
e = Trim(Mid(eiajdata, 224, 16))
f = Trim(Mid(eiajdata, 271, 6)) On Error GoTo updateerrjyutyuu sq = "insert into testTbl "
sq = sq & "(no,a,b,c,d,e,f)"
sq = sq & " values ( "
sq = sq & "'" & i & "',"
sq = sq & '" & a & "',"
sq = sq & '" & b & "',"
sq = sq & '" & c & "',"
sq = sq & '" & d & "',"
sq = sq & '" & e & "',"
sq = sq & '" & f & "')"
gOraDatabase.ExecuteSQL (sq)
' 正常Log
readlog 1
GoTo nxtupdateerrjyutyuu:
' 异常Log
readlog -1
GoTo nxt
updateerr:
' 异常Log
readlog -2
nxt:
gOraSession.DbCommitTrans
' gOraSession.DbRollback
I = I + 1
DoEvents
Loop上边是部分的代码,如果第一次有错误的话,可以从 gOraDatabase.ExecuteSQL (sq)跳到updateerrjyutyuu:处进行错误处理,当第二次出错的时候,直接抛出oracle内部的错误了,就进不到updateerrjyutyuu:这个地方了,请帮忙!
i = i + 1
On Error GoTo updateerr
gOraSession.DbBeginTrans Line Input #fno, eiajdata
a = Trim(Mid(eiajdata, 1, 5))
b = Trim(Mid(eiajdata, 48, 12))
c = Trim(Mid(eiajdata, 101, 10)) & "." & Trim(Mid(eiajdata, 111, 3))
e = Trim(Mid(eiajdata, 224, 16))
f = Trim(Mid(eiajdata, 271, 6)) On Error GoTo updateerrjyutyuu sq = "insert into testTbl "
sq = sq & "(no,a,b,c,d,e,f)"
sq = sq & " values ( "
sq = sq & "'" & i & "',"
sq = sq & '" & a & "',"
sq = sq & '" & b & "',"
sq = sq & '" & c & "',"
sq = sq & '" & d & "',"
sq = sq & '" & e & "',"
sq = sq & '" & f & "')"
gOraDatabase.ExecuteSQL (sq)
' 正常Log
readlog 1
GoTo nxtupdateerrjyutyuu:
' 异常Log
readlog -1
GoTo nxt
updateerr:
' 异常Log
readlog -2
nxt:
gOraSession.DbCommitTrans
' gOraSession.DbRollback
I = I + 1
DoEvents
Loop上边是部分的代码,如果第一次有错误的话,可以从 gOraDatabase.ExecuteSQL (sq)跳到updateerrjyutyuu:处进行错误处理,当第二次出错的时候,直接抛出oracle内部的错误了,就进不到updateerrjyutyuu:这个地方了,请帮忙!
on error resume next循环开始
读入一行数据
写入数据库
判断错误是否发生(看错误号就可以)
是就写LOG
循环结束
操作数据库没有错误则生效
conn.committrans反之则取消全部操作
conn.rollbacktrans
updateerrjyutyuu: (在写数据库后的错误处理.....)
' 异常Log
readlog -1
GoTo nxt
nxt:
gOraSession.DbCommitTrans ????
I = I + 1
DoEvents
Loop