1 use hrmis 2 set ANSI_NULLS ON 3 set QUOTED_IDENTIFIER ON 4 GO 5 Alter Trigger [ dbo ] . [ Tg_k20_month ] on [ dbo ] . [ k20 ] 6 FOR insert , update 7 AS 8 if ( update (k2006)) or ( update (k2007)) 9 BEGIN 10 declare @msg nvarchar ( 80 ), @begTIme datetime , @endTime datetime ; 11 declare @Year int , @Month int ; 12 -- 獲取請假的年份及月份 13 select @Year = Year (k2006), 14 @Month = Case 15 When Day (k2006) > 25 Then Month (k2006) + 1 16 else Month (k2006) 17 End 18 From Inserted; 19 -- 計算請假單據的開始時間所在的月份 20 Select @endTime = Case 21 When @Month < 10 Then Convert ( varchar ( 4 ), @Year ) + ' 0 ' + Convert ( varchar ( 1 ), @Month ) + ' 25 ' 22 else Convert ( datetime , Convert ( varchar ( 4 ), @Year ) + Convert ( varchar ( 1 ), @Month ) + ' 25 ' ) 23 End 24 -- ,@begTime = Case 25 -- When @Month < 11 Then Convert(varchar(4),@Year)+'0'+Convert(varchar(1),@Month-1)+'26' 26 -- else Convert(varchar(4),@Year)+Convert(varchar(1),@Month-1)+'26' 27 -- End 28 if exists ( Select A0188 From Inserted Where k2007 > @endTime ) 29 Begin 30 Select @msg = Convert ( varchar ( 5 ),k2006, 110 ) + ' 到 ' + Convert ( varchar ( 5 ),k2007, 110 ) + 31 ' 此段時間內有跨月現象,請按月份重新錄入! ' from Inserted 32 raiserror ( @msg , 16 , 1 ) 33 rollback transaction 34 return 35 End 36 End 37 return
有一個問題,是后來發現的,上面SQL語句中有一段:
1 if exists ( Select A0188 From Inserted Where k2007 > @endTime ) 2 Begin 3 Select @msg = Convert ( varchar ( 5 ),k2006, 110 ) + ' 到 ' + Convert ( varchar ( 5 ),k2007, 110 ) + 4 ' 此段時間內有跨月現象,請按月份重新錄入! ' from Inserted 5 raiserror ( @msg , 16 , 1 ) 6 rollback transaction 7 return 8 End
其中raiserror(@msg,16,1)
是拋出一個錯誤級別為16的異常信息,這個信息能否被C#里的catch語句捕足?具體怎么捕捉?由于今天是在轉我QQ空間的資料,所以暫時寫一點,日后我看到的話,回來再補回。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
