/// <summary> /// 按合同单号执行删除 /// </summary> /// <param name="billNum"></param> /// <returns></returns> private bool DeleteBillByBillNum(string billNum) { if (!HasRight()) { throw new Exception("您没有删除记录权限!"); } //数据适配器 using (var daHead = new t_market_contract_headTableAdapter()) using (var daContent = new t_market_contract_contentTableAdapter()) using (var daAppendix = new t_market_contract_appendixTableAdapter()) { var conn = daHead.Connection; daContent.Connection = conn; daAppendix.Connection = conn; //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction(System.Data.IsolationLevel.RepeatableRead)) { try { //绑定事务到适配 daHead.Transaction = tran; daContent.Transaction = tran; daAppendix.Transaction = tran; if (Convert.ToInt32(daContent.CountByBillNum(billNum)) <= 0) { throw new Exception(string.Format("当前单据:\n单号:{0}\n行号:{1}\n已经被其他用户删除!", billNum)); } //删除内容 if (daContent.DeleteByBillNum(billNum) <= 0) { throw new Exception("根据单号删除内容记录失败!"); } //删除数据表头 if (daHead.Delete(billNum) <= 0) { throw new Exception("根据单号删除表头记录失败!"); } //删除合同附件 if (daAppendix.DeleteByBillNum(billNum) <= 0) { throw new Exception("根据单号删除合同附件记录失败!"); } //提交事务 tran.Commit(); } catch (Exception ex) { //事务回滚 tran.Rollback(); throw ex; } finally { //关闭数据库连接 conn.Close(); } } } return true; }
/// <summary> /// 删除指定合同单号和行序号的一行数据 /// </summary> /// <param name="e">事件参数</param> /// <returns></returns> private bool DeleteData(ListViewDeleteEventArgs e) { //数据适配器 using (var da = new v_market_contractTableAdapter()) using (var daContent = new t_market_contract_contentTableAdapter()) using (var daHead = new t_market_contract_headTableAdapter()) using (var daAppendix = new t_market_contract_appendixTableAdapter()) { //数据库连接对象 var conn = da.Connection; daContent.Connection = conn; daHead.Connection = conn; daAppendix.Connection = conn; //打开数据库连接 conn.Open(); //开启事务 using (var tran = conn.BeginTransaction(System.Data.IsolationLevel.RepeatableRead)) { try { //绑定事务 da.Transaction = tran; daContent.Transaction = tran; daHead.Transaction = tran; daAppendix.Transaction = tran; //合同单号 string billNum = e.Keys[0].ToString(); //行号 byte rowId = byte.Parse(e.Keys[1].ToString()); //取指定单号和行序号的数据 var tab = da.GetDataByBillNumAndRowId(billNum, rowId); if (tab.Rows.Count == 0) { throw new Exception(string.Format("当前单据:\n单号:{0}\n行号:{1}\n已经被其他用户删除!", billNum, rowId)); } //删除数据行 if (daContent.Delete(billNum, rowId) <= 0) { throw new Exception("根据单号和行号删除合同内容失败!"); } //删除数据表头 if (daHead.Delete(billNum) <= 0) { throw new Exception("根据单号和行号删除合同表头记录失败!"); } //删除合同附件 if (daAppendix.Delete(billNum, rowId) <= 0) { throw new Exception("根据单号和行号删除合同附件记录失败!"); } //提交事务 tran.Commit(); } catch (Exception ex) { //事务回滚 tran.Rollback(); throw ex; } finally { conn.Close(); } } } return true; }