表thdpurbackm  update trigger如下:  
IF @@ERROR <> 0
begin
rollback
raiserror('更新库存失败!库存不能为负数。',16,1)
end
前端代码如下:
        lcmd.CommandText = "  UPDATE thdpurbackm  " & _
                            " SET fstate = 'C' ,fcheckman='" & Pub_username & "', fcheckdate = '" &  GetDateTime() & "'" & _
                            " WHERE ( fhdshopno = '" & ls_fhdshopno & "' ) AND  " & _
                            "       ( fbackno = '" & ls_fbackno & "' )  "        Try
            lcmd.ExecuteNonQuery()
        Catch sqlerr As SqlException
            MessageBox.Show(sqlerr.Message)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
问题点:
资料没有更新成功,单怎么捕获不到任何异常。
如改为如下无条件执行就可以么捕获到异常,但这不是我要的效果.
IF @@ERROR <> 0
rollback
raiserror('更新库存失败!库存不能为负数。',16,1)

解决方案 »

  1.   

      lcmd.CommandText = "  UPDATE thdpurbackm  " & _ 
                                " SET fstate =  'C ' ,fcheckman= '" & Pub_username & " ', fcheckdate =  '" &  GetDateTime() & " '" & _ 
                                " WHERE ( fhdshopno =  '" & ls_fhdshopno & " ' ) AND  " & _ 
                                "       ( fbackno =  '" & ls_fbackno & " ' )  " 
    把你这个语句的结果发出来看看
      

  2.   

    " WHERE ( fhdshopno =   '" & ls_fhdshopno & "  ' ) AND  " & _ 红色那里好像有个空格哦.... 
      

  3.   

    错了..是这里..好大一个空格...
     " WHERE ( fhdshopno =   '" & ls_fhdshopno & "  ' ) AND  " & _