private void button1_Click(object sender, System.EventArgs e) { DataTable tbsl = (DataTable)this.myDataGrid1.DataSource; if (tbsl.Rows.Count > 0) { MessageBox.Show("当有数量误差时不能作账务调整,必须先解决数量误差,请和管理员联系!"); return; } DataTable tbje = (DataTable)this.myDataGrid2.DataSource; if (tbje.Rows.Count == 0) { MessageBox.Show("没有需要作调整的数据"); return; } if (MessageBox.Show("您确定要将金额误差数据作账务处理行吗 ?", "询问窗", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) { return; } decimal sumlsje = 0; decimal sumpfje = 0; for (int i = 0; i <= tbje.Rows.Count - 1; i++) { sumlsje = sumlsje + Convert.ToDecimal(tbje.Rows[i]["零售金额差值"]); sumpfje = sumpfje + Convert.ToDecimal(tbje.Rows[i]["批发金额差值"]); } if (sumlsje >= 100 || sumpfje >= 100) { MessageBox.Show("调整金额太大了,系统数据可能存在问题!请和管理员联系"); return; } long djh = 0; //单据号 long djid = 0; //主表ID int err_code = 0; //错误号 string err_text = ""; //借误文本 string sDate = XcDate.ServerDateTime.ToString(); //登记时间 this.button1.Enabled = false; OleDbTransaction myTrans; myTrans = DB.sConnect.BeginTransaction(); try { System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(); cmd.Connection = DB.sConnect; cmd.Transaction = myTrans; //产生单据号 djh = BaseFun.SeekNewDjh(_ywlx.Trim(), _deptID, cmd); //保存单据表头 YK_DJ_DJMX.SaveDJ(0, djh, _deptID, _ywlx.Trim(), 0, Convert.ToInt32(_deptID), 0, Convert.ToDateTime(sDate).ToShortDateString(), _employeeID, Convert.ToDateTime(sDate).ToShortDateString(), Convert.ToDateTime(sDate).ToLongTimeString(), "", "", "", "", 0, 0, 0, sumpfje, sumlsje, out djid, out err_code, out err_text, cmd); if (err_code != 0) { throw new System.Exception(err_text); } //保存单据明细 DataTable tb = (DataTable)this.myDataGrid2.DataSource; if (tb.Rows.Count == 0) { MessageBox.Show("没有可保存的记录"); return; } ; cmd.Parameters.Clear(); for (int i = 0; i <= tb.Rows.Count - 1; i++) { YK_DJ_DJMX.SaveDJMX(0, djid, Convert.ToInt32(tb.Rows[i]["cjid"]), 0, "", "", 0, 0, 0, Convert.ToString(tb.Rows[i]["单位"]), BaseFun.SeekYpdw(Convert.ToString(tb.Rows[i]["单位"])), Convert.ToInt32(tb.Rows[i]["dwbl"]), 0, 0, 0, 0, Convert.ToDecimal(tb.Rows[i]["批发金额差值"]) * (-1), Convert.ToDecimal(tb.Rows[i]["零售金额差值"]) * (-1), djh, _deptID, _ywlx.Trim(), "", "", out err_code, out err_text, cmd); cmd.Parameters.Clear(); if (err_code != 0) { throw new System.Exception(err_text); } } //审核单据 YK_DJ_DJMX.Shdj(djh, _deptID, _employeeID, sDate, _ywlx.Trim(), cmd); //提交事务 myTrans.Commit(); DB.Colse(); MessageBox.Show(err_text); } catch (System.Exception err) { myTrans.Rollback(); DB.Colse(); this.button1.Enabled = true; MessageBox.Show(err.Message + err.Source); } }