需求内容描述:
为了帮助客户更好地管理样本,快速地了解样本信息的存储情况,使用情况,能够方便地进行样本信息的登记、使用、(多条件下的组合)查询(样本信息、出库信息)、修改、删除、打印、导出(可选择导出至Excel中)等功能,另外需具备软件使用授权(通过登录、权限管理)。
样本的仓储结构:设备级(一级,即顶级),设备下可以进行分区(二级,譬如:A设备分为1,2,3,4区),分区下可以多个提桶(三级,譬如:1分区下有1,2,3号提桶),提桶下又可以进行分层(四级,譬如:1号提桶分为1,2,3,4,5,6,7,8,9层),分层下划分为很多格子(五级,譬如1层下分为“1”号,“2”号,“3”号,“4”号,“5”号,“6”号,“7”号,“8”号,“9”号,“10”号,“11”号,“12”号,“13”号,“14”号,“15”号,“16”号,“17”号,“18”号,“19”号,“20”号的格子),样本最终是存放在格子中的。
样本出库界面截图如下,
出库的MSSQL使用事务处理的存储过程的代码如下:
CREATE PROCEDURE [dbo].[usp_出库_增] -- Add the parameters for the stored procedure here @出库编号 varchar(12), @使用量 int, @剩余量 int, @使用时间 datetime, @使用用途 varchar(100), @备注 varchar(200), @样本ID int, @操作者ID int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here BEGIN TRANSACTION------------------开始事务 DECLARE @ErrorSum int,@SampleTakeID int,@格子ID int SET @ErrorSum=0 insert 出库(出库编号,使用量,剩余量,使用时间,使用用途,备注,样本ID,操作者ID) values(@出库编号,@使用量,@剩余量,@使用时间,@使用用途,@备注,@样本ID,@操作者ID) SET @ErrorSum = @ErrorSum + @@ERROR --累计是否有错误 select @SampleTakeID=@@IDENTITY; select @格子ID=分层格子ID from 样本 where ID=@样本ID if @剩余量>0 begin update 样本 set 剩余量=@剩余量 where ID=@样本ID SET @ErrorSum = @ErrorSum + @@ERROR --累计是否有错误 end else begin update 样本 set 剩余量=@剩余量,使用中=0 where ID=@样本ID SET @ErrorSum = @ErrorSum + @@ERROR --累计是否有错误 update 分层格子 set 使用标记=0 where ID=@格子ID SET @ErrorSum = @ErrorSum + @@ERROR --累计是否有错误 end IF @errorSum<>0 --如果SQL语句执行出错 BEGIN SET @SampleTakeID=-1 ROLLBACK TRANSACTION END ELSE BEGIN COMMIT TRANSACTION END select @SampleTakeID ID END GO
也可以使用下面的一种事务处理方式,代码如下:
CREATE PROCEDURE [dbo].[usp_出库_增] -- Add the parameters for the stored procedure here @出库编号 varchar(12), @使用量 int, @剩余量 int, @使用时间 datetime, @使用用途 varchar(100), @备注 varchar(200), @样本ID int, @操作者ID int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Insert statements for procedure here BEGIN TRANSACTION------------------开始事务 ---------事务处理的第二种方法------------ BEGIN TRY---------------------开始捕捉异常 BEGIN TRAN------------------开始事务 DECLARE @SampleTakeID int,@格子ID int insert 出库(出库编号,使用量,剩余量,使用时间,使用用途,备注,样本ID,操作者ID) values(@出库编号,@使用量,@剩余量,@使用时间,@使用用途,@备注,@样本ID,@操作者ID) select @SampleTakeID=@@IDENTITY; select @格子ID=分层格子ID from 样本 where ID=@样本ID if @剩余量>0 begin update 样本 set 剩余量=@剩余量 where ID=@样本ID end else begin update 样本 set 剩余量=@剩余量,使用中=0 where ID=@样本ID update 分层格子 set 使用标记=0 where ID=@格子ID end select @SampleTakeID ID COMMIT TRAN -------提交事务 END TRY-----------结束捕捉异常 BEGIN CATCH------------有异常被捕获 IF @@TRANCOUNT > 0---------------判断有没有事务 BEGIN ROLLBACK TRAN----------回滚事务 END EXEC 'YourLogErrorProcedure'-----------记录存储过程执行时的错误信息,自定义 END CATCH--------结束异常处理 END