tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル エラーになっても処理を続行させたい
投稿日: 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で私がやりたいことを実行するのは可能でしょうか?

よろしくお願い致します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。