表示层
try
{
if (string.IsNullOrEmpty(txtFPNum.Text))
{
MessageBox.Show("请输入发票号!", "有情提示!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtFPNum.Focus();
}
else
{
if (HisCommonTools.CommonTools.ToolHelper.QuestionMsg("是否入库存盘?"))
{
//----------------------添加进销存------------------
List<Model_Us_ypjxc> modellist = new List<Model_Us_ypjxc>();
for (int i = 0; i < dataGridView1.RowCount - 1; i++)
{
//存DGV外数据
model_Us_ypjxc.Djh = txtBillCode.Text.Trim();
model_Us_ypjxc.Czlb = comboType.SelectedValue.ToString();
model_Us_ypjxc.Basecode = comboDep.SelectedValue.ToString();//主部门
model_Us_ypjxc.Offcode = comUnits.SelectedValue.ToString();
model_Us_ypjxc.Fph = txtFPNum.Text;
model_Us_ypjxc.Czrq = dateTimeInStore.Value;
model_Us_ypjxc.Bz = txtSummary.Text;
model_Us_ypjxc.Inout = 1; //
model_Us_ypjxc.Czy = Lname;
//存DGV数据
model_Us_ypjxc.medicode = dataGridView1[0, i].Value.ToString();
model_Us_ypjxc.Sccj = dataGridView1[2, i].Value.ToString();
model_Us_ypjxc.Jj = Convert.ToDecimal(dataGridView1[3, i].Value.ToString());
model_Us_ypjxc.Pfj = Convert.ToDecimal(dataGridView1[4, i].Value.ToString());
model_Us_ypjxc.Lsj = Convert.ToDecimal(dataGridView1[5, i].Value.ToString());
model_Us_ypjxc.Crsl = Convert.ToDecimal(dataGridView1[6, i].Value.ToString());
model_Us_ypjxc.Crje = Convert.ToDecimal(dataGridView1[7, i].Value.ToString());
model_Us_ypjxc.Bzs = Convert.ToInt32(dataGridView1[8, i].Value.ToString());
model_Us_ypjxc.Pch = dataGridView1[9, i].Value.ToString();
model_Us_ypjxc.OverData = dataGridView1[10, i].Value.ToString();
modellist.Add(model_Us_ypjxc);
}
//事务添加批量数据
int sucess = bll_Us_ypjxc.Add(modellist);
if (sucess < 1)
{
MessageBox.Show("入库存盘失败!", "有情提示!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else
{
MessageBox.Show("入库存盘成功!", "有情提示!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
dataGridView1.Rows.Clear();
}
}
txtBillCode.Text = this.GetDJH();//生成单据号
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, CommonMessage.InputDateErr()); ;
}
逻辑层
public int Add(List<Model_Us_ypjxc> modellist)
{
return dal.Add(modellist);
}
数据层
public int Add(List<Model_Us_ypjxc> modellist)
{
Hashtable SQLStringList = new Hashtable();
for (int i = 0; i < modellist.Count; i++)
{
SqlParameter[] parameters = {
new SqlParameter(string.Format("@Basecode{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@Offcode{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@Djh{0}",i),SqlDbType.VarChar,30),
new SqlParameter(string.Format("@Czlb{0}",i),SqlDbType.VarChar,6),
new SqlParameter(string.Format("@Inout{0}",i),SqlDbType.Int),
new SqlParameter(string.Format("@Czrq{0}",i),SqlDbType.DateTime),
new SqlParameter(string.Format("@Czy{0}",i),SqlDbType.VarChar,6),
new SqlParameter(string.Format("@Hdr{0}",i),SqlDbType.VarChar,6),
new SqlParameter(string.Format("@Hdrq{0}",i),SqlDbType.DateTime),
new SqlParameter(string.Format("@Stage{0}",i),SqlDbType.VarChar,50),
new SqlParameter(string.Format("@medicode{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@Sccj{0}",i),SqlDbType.VarChar,200),
new SqlParameter(string.Format("@Jj{0}",i),SqlDbType.Decimal,9),
new SqlParameter(string.Format("@Pfj{0}",i),SqlDbType.Decimal,9),
new SqlParameter(string.Format("@Lsj{0}",i),SqlDbType.Decimal,9),
new SqlParameter(string.Format("@Crsl{0}",i),SqlDbType.Decimal,9),
new SqlParameter(string.Format("@Crje{0}",i),SqlDbType.Decimal,9),
new SqlParameter(string.Format("@Pch{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@Bzs{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@Fph{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@OverData{0}",i),SqlDbType.VarChar,20),
new SqlParameter(string.Format("@Bz{0}",i),SqlDbType.VarChar,200)};
parameters[0].Value = modellist[i].Basecode;
parameters[1].Value = modellist[i].Offcode;
parameters[2].Value = modellist[i].Djh;
parameters[3].Value = modellist[i].Czlb;
parameters[4].Value = modellist[i].Inout;
parameters[5].Value = modellist[i].Czrq;
parameters[6].Value = modellist[i].Czy;
parameters[7].Value = modellist[i].Hdr;
parameters[8].Value = modellist[i].Hdrq;
parameters[9].Value = modellist[i].Stage;
parameters[10].Value = modellist[i].medicode;
parameters[11].Value = modellist[i].Sccj;
parameters[12].Value = modellist[i].Jj;
parameters[13].Value = modellist[i].Pfj;
parameters[14].Value = modellist[i].Lsj;
parameters[15].Value = modellist[i].Crsl;
parameters[16].Value = modellist[i].Crje;
parameters[17].Value = modellist[i].Pch;
parameters[18].Value = modellist[i].Bzs;
parameters[19].Value = modellist[i].Fph;
parameters[20].Value = modellist[i].OverData;
parameters[21].Value = modellist[i].Bz;
SQLStringList.Add(string.Format("insert into Us_ypjxc (Basecode,Offcode,Djh,Czlb,Inout,Czrq,Czy,Hdr,Hdrq,Stage,medicode,Sccj,Jj,Pfj,Lsj,Crsl,Crje,Pch,Bzs,Fph,OverData,Bz) values (@Basecode{0},@Offcode{0},@Djh{0},@Czlb{0},@Inout{0},@Czrq{0},@Czy{0},@Hdr{0},@Hdrq{0},@Stage{0},@medicode{0},@Sccj{0},@Jj{0},@Pfj{0},@Lsj{0},@Crsl{0},@Crje{0},@Pch{0},@Bzs{0},@Fph{0},@OverData{0},@Bz{0})", i), parameters);
}
return DbHelperSQL.ExecuteSqlTran(SQLStringList);
}
方法
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public static int ExecuteSqlTran(Hashtable SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
{
SqlCommand cmd = new SqlCommand();
try
{
//循环
foreach (DictionaryEntry myDE in SQLStringList)
{
string cmdText = myDE.Key.ToString();
SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
trans.Commit();
return 1;
}
catch
{
trans.Rollback();
return 0;
throw;
}
}
}
}