protected void btnCalculate_Click(object sender, EventArgs e) { //执行计算结存数据 //当前输入的月份 var yearMonth = txtCalculateYearMonth.Text; DateTime dtStart, dtEnd; //检测输入 if (yearMonth.Length != 6 || !DateTime.TryParse(yearMonth.Insert(4, "/") + "/01", out dtStart)) { throw new Exception("您输入的年月不符合规则!"); } //结束日期 dtEnd = dtStart.AddMonths(1).AddDays(-1); //当月 var iYearMonth = int.Parse(yearMonth); //上月 var iYearMonthPrev = int.Parse(dtStart.AddMonths(-1).ToString("yyyyMM")); //数据适配器 using (var da = new t_material_stocktakingTableAdapter()) using (var conn = da.Connection) { //打开数据连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction()) { try { //设置事务 da.Transaction = tran; //删除原来月底结存数据 da.DeleteByYearMonth(iYearMonth); //写入数据到月底结存 da.InsertFromInOutLoseBack( iYearMonth, Session["user_name"].ToString(), iYearMonthPrev, dtStart, dtEnd ); //提交事务 tran.Commit(); } catch (Exception ex) { //回滚事务 tran.Rollback(); //抛出错误 throw ex; } } } //设置查询条件 Session["material_stocktaking_where_content"] = " where [year_month]='" + iYearMonth + "'"; //重新绑定数据 lvMaterialStocktaking.DataBind(); }