タイトル : エラーになっても処理を続行させたい 投稿日 : 2008/07/26(Sat) 11:47 投稿者 : eco
お世話になります。 VB6.0で開発しています。 質問ですが、わかる方いらっしゃいましたら教えてください。 Public Sub insert_tableC() Dim sSQL As String Dim SQL As String Dim objRst As Object Dim objRst2 As Object Dim count As Long Dim count2 As Long Dim fileNo As Integer Dim errmsg As String 'オラクル接続 Call set_ora 'tableAより該当データSELECT sSQL = "" sSQL = sSQL & " SELECT ABC " sSQL = sSQL & " FROM tableA " & vbCrLf Set objRst = OraDatabase.DbCreateDynaset(sSQL, 0&) Do Until objRst.EOF With OraDatabase 'バインド変数の定義 .Parameters.Add "ABC", 0, ORAPARM_INPUT .Parameters("ABC").ServerType = ORATYPE_DATE .Parameters.Add "DEF", 0, ORAPARM_INPUT .Parameters("DEF").ServerType = ORATYPE_DATE .Parameters("ABC").Value = objRst.fields("ABC").Value 'tableBより該当データSELECT sSQL = "" sSQL = sSQL & " SELECT DEF " sSQL = sSQL & " FROM tableB " & vbCrLf Set objRst2 = OraDatabase.DbCreateDynaset(sSQL, 0&) if objRst2.EOF then count1 = 1 else count1 = 0 .Parameters("DEF").Value = objRst2.fields("DEF").Value end if If count1 = 0 Then OraSession.begintrans '***INSERT処理*** sSQL = "" sSQL = sSQL & " INSERT INTO tableC(" sSQL = sSQL & " ABC" sSQL = sSQL & " ,DEF" sSQL = sSQL & " ,TMSP" sSQL = sSQL & " VALUES(" & vbCrLf sSQL = sSQL & " ,:ABC " sSQL = sSQL & " ,:DEF " sSQL = sSQL & " ,SYSDATE)" .executeSQL (sSQL) OraSession.committrans End If 'バインド変数の解放 .Parameters.Remove "ABC" .Parameters.Remove "DEF" End With objRst.movenext Loop 'tableCよりデータ件数を取得 sSQL = "" sSQL = sSQL & " SELECT ABC " sSQL = sSQL & " FROM tableC " & vbCrLf Set objRst = OraDatabase.DbCreateDynaset(sSQL, 0&) count = objRst.RecordCount '***オラクル切断*** Call Close_Session End Sub この際に、ループ内でエラーが発生したら、そのときのデータのINSERTはロールバックするが、 処理を続行し次のデータの処理へ進むためには 「On Error GoTo err_C」 と 「err_C: ' OraSession.rollback errmsg = "データの登録に失敗しました。<< エラー内容 >>" & Err.Description fileNo = FreeFile 'ファイル番号の取得 Open "ERRLOG.TXT" For Append As #fileNo 'ファイルを追加モードで開く Print #fileNo, errmsg & vbCrLf 'ファイルへ書き込む Close #fileNo」 をどこに記述したらよいでしょうか? それ以前にOn ERROR Go Toで私がやりたいことを実行するのは可能でしょうか? よろしくお願い致します。 |