none
有關 On Error 問題 RRS feed

  • 問題

  • 請問 以下程式碼:
    為何 無實際上沒ERROR
    但他還是會去跑一次 ERROR 內的程式嗎了

    之前 試著想去 控制 改為FUNCTAION deleteX() AS BOOLEN
    當刪除沒問題時,回傳 TRUE
    無法刪除時,回傳 FALSE


        Sub deleteX()    '刪除
           
           
            Application.DisplayAlerts = flase


            Dim myCon As ADODB.Connection
            Dim myCommand As ADODB.Command
           
       
            Set myCon = New ADODB.Connection
       
      
            myCon.Open "Provider=IBMDA400.DataSource.1;Persist Security Info=False;Data Source=s "  'DB 連線
            Set myCommand = New ADODB.Command
       
           
       
        On Error GoTo Tran_Err_
        myCon.BeginTrans
       
       
            myCommand.ActiveConnection = myCon '指定連線目標
           
                       
            sql = "delete from  SQL"
                       
            Debug.Print i & "--->" & sql
            myCommand.CommandText = sql
            myCommand.Execute
           
        myCon.CommitTrans
       
            Set myCommand = Nothing
            myCon.Close
            Set myCon = Nothing
       
           
            Application.DisplayAlerts = True
       
       

    Tran_Err_
      
               msgbox "--無法刪除--"
            myCon.RollbackTrans
           
             Set myCommand = Nothing
            myCon.Close
            Set myCon = Nothing
       
       
    End Sub
    2006年12月5日 上午 07:18

解答

  • 好久沒寫 VB6 程式了 .
    但我記得正常的程式要在跑到 On Error 指定的程式前,要用 Exit Sub Exit Function 離開程式,不然會執行到錯誤處理的程式碼 .
    2006年12月5日 上午 07:24
    版主
  • 你沒在 Tran_err_ 前有離開副程式的方法,當然會去跑這段。

    在邏輯上來說,你只是發生錯誤時,跳到這個標籤,所以只是跳過中間的程式碼不執行。比如說玩大富翁時,前進到自由路,是你 goto 的結果,其他使用者慢慢走還是能走到自由路。

    2006年12月5日 上午 07:24
    版主

所有回覆

  • 好久沒寫 VB6 程式了 .
    但我記得正常的程式要在跑到 On Error 指定的程式前,要用 Exit Sub Exit Function 離開程式,不然會執行到錯誤處理的程式碼 .
    2006年12月5日 上午 07:24
    版主
  • 你沒在 Tran_err_ 前有離開副程式的方法,當然會去跑這段。

    在邏輯上來說,你只是發生錯誤時,跳到這個標籤,所以只是跳過中間的程式碼不執行。比如說玩大富翁時,前進到自由路,是你 goto 的結果,其他使用者慢慢走還是能走到自由路。

    2006年12月5日 上午 07:24
    版主
  • 收到

    謝謝各位

    2006年12月5日 上午 11:56