公布部分C#编写库存管理软件代码供所有.Net开发爱好者共同学习。
代码网友可直接引用,如转载请注明出处。
http://spaces.msn.com/zhihongf/
第三部分提交入库单,写入入库数据。
代码编写:方志洪
E-mail:zhihongf@Gmail.com
2006年2月6日。
#region 提交入库单,写入数据库。
/// <summary>
/// 提交入库单,写入数据库
/// </summary>
/// <returns>返回是否完成数据库写入操作</returns>
private bool PutInMainWriteData()
{
if(this.texSupplier.Text.Length > 0)
{
//判断ListView控件是否有数据
if(this.livPutInMessage.Items.Count > 0)
{
System.Windows.Forms.DialogResult dialog;
dialog=MessageBox.Show(this,"您是否确认提交编号:"+this.txtPutInID.Text+" 入库单 \n\n入库记录:"+this.livPutInMessage.Items.Count.ToString()+"条","入库确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);
if(dialog==System.Windows.Forms.DialogResult.Yes)
{
#region 入库数据库操作
//判断当前入库单号是否有效。
if(this.txtPutInID.Text != this.GetPutInID(this.dtpPutInDate.Value))
{
//已有其他人提交入库单,占用但前入库单号。获取新入库单号。
this.txtPutInID.Text = this.GetPutInID(this.dtpPutInDate.Value);
MessageBox.Show("您当前提交的入库单号已被使用,新入库单号为:"+this.txtPutInID.Text);
}
//=============================================================================================================
//使用数据库事务将数据写入 【入库明细】,【入库记录】表,并修改【产品清单】表中的【上次进价】,【目前库存量】。
//=============================================================================================================
//数据库链接定义
System.Data.SqlClient.SqlConnection sqlconnection=new System.Data.SqlClient.SqlConnection();
System.Data.SqlClient.SqlCommand sqlcommandPutIn=new System.Data.SqlClient.SqlCommand();//入库记录
System.Data.SqlClient.SqlCommand sqlcommandList=new System.Data.SqlClient.SqlCommand();//入库明细
System.Data.SqlClient.SqlCommand sqlcommandProduct=new System.Data.SqlClient.SqlCommand();//产品清单
sqlconnection.ConnectionString=AppConfig.ClassDataLinkString.DataConnection;
sqlcommandPutIn.Connection=sqlconnection;
sqlcommandPutIn.CommandType=System.Data.CommandType.Text;
sqlcommandList.Connection=sqlconnection;
sqlcommandList.CommandType=System.Data.CommandType.Text;
sqlcommandProduct.Connection=sqlconnection;
sqlcommandProduct.CommandType=System.Data.CommandType.Text;
//获取产品名称的拼音简码。
ZhihongFang.ChineseSpell chineseSpell=new ChineseSpell();
try
{
sqlconnection.Open();
//数据库SQL命令
//入库明细
string SQLPutIn="INSERT INTO [入库明细]([入库单号],[产品编号],[本次进价],[进货数量],[产品名称],[规格],[包装单位],[上次进价],[进价参考],[名称编码]) ";
SQLPutIn += "VALUES(@PutInID,@ProductID,@NowPrice,@Quantity,@ProductName,@ProductSpecs,@Nuti,@LastTimePrice,@PutInPrice,@NameCode)";
sqlcommandPutIn.CommandText=SQLPutIn;
sqlcommandPutIn.Parameters.Add("@PutInID",System.Data.SqlDbType.Char,14,"入库单号");
sqlcommandPutIn.Parameters.Add("@ProductID",System.Data.SqlDbType.Char,15,"产品编号");
System.Data.SqlClient.SqlParameter parameterNowPrice=new System.Data.SqlClient.SqlParameter("@NowPrice",System.Data.SqlDbType.Decimal);
parameterNowPrice.Precision=9;
parameterNowPrice.Scale=2;
sqlcommandPutIn.Parameters.Add(parameterNowPrice);
sqlcommandPutIn.Parameters.Add("@Quantity",System.Data.SqlDbType.Float);
sqlcommandPutIn.Parameters.Add("@ProductName",System.Data.SqlDbType.NVarChar,50,"产品名称");
sqlcommandPutIn.Parameters.Add("@ProductSpecs",System.Data.SqlDbType.NVarChar,50,"规格");
sqlcommandPutIn.Parameters.Add("@Nuti",System.Data.SqlDbType.NVarChar,20,"包装单位");
System.Data.SqlClient.SqlParameter parameterLastTimePrice=new System.Data.SqlClient.SqlParameter("@LastTimePrice",System.Data.SqlDbType.Decimal);
parameterLastTimePrice.Precision=9;
parameterLastTimePrice.Scale=2;
sqlcommandPutIn.Parameters.Add(parameterLastTimePrice);
System.Data.SqlClient.SqlParameter parameterPutInPrice=new System.Data.SqlClient.SqlParameter("@PutInPrice",System.Data.SqlDbType.Decimal);
parameterPutInPrice.Precision=9;
parameterPutInPrice.Scale=2;
sqlcommandPutIn.Parameters.Add(parameterPutInPrice);
sqlcommandPutIn.Parameters.Add("@NameCode",System.Data.SqlDbType.NVarChar,50,"名称编码");
sqlcommandPutIn.Prepare();
//入库记录
string SQLList="INSERT INTO [入库记录]([入库单号],[入库时间],[经办人],[供货商编号],[入库备注]) ";
SQLList +="VALUES(@PutInID,@PutInDate,@Manager,@SupplierID,@PutInNode)";
sqlcommandList.CommandText=SQLList;
sqlcommandList.Parameters.Add("@PutInID",System.Data.SqlDbType.Char,14,"入库单号");
sqlcommandList.Parameters.Add("@PutInDate",System.Data.SqlDbType.DateTime);
sqlcommandList.Parameters.Add("@Manager",System.Data.SqlDbType.NVarChar,4,"经办人");
sqlcommandList.Parameters.Add("@SupplierID",System.Data.SqlDbType.Char,15,"供货商编号");
sqlcommandList.Parameters.Add("@PutInNode",System.Data.SqlDbType.Text,500,"入库备注");
sqlcommandList.Prepare();
//事务开始.;
System.Data.SqlClient.SqlTransaction sqltransaction=sqlconnection.BeginTransaction();
try
{
sqlcommandPutIn.Transaction=sqltransaction;//事务
sqlcommandList.Transaction=sqltransaction;
sqlcommandProduct.Transaction=sqltransaction;
//执行添加入库记录
sqlcommandList.Parameters["@PutInID"].Value=this.txtPutInID.Text.Trim();
sqlcommandList.Parameters["@PutInDate"].Value=this.dtpPutInDate.Value.ToString("yyyy-MM-dd");
sqlcommandList.Parameters["@Manager"].Value=this.txtManager.Text.Trim();
sqlcommandList.Parameters["@SupplierID"].Value=this.texSupplier.Text.Substring(0,15);
sqlcommandList.Parameters["@PutInNode"].Value=this.txtNode.Text;
sqlcommandList.ExecuteNonQuery();
//执行添加入库明细
//循环读取ListView控件;
foreach(System.Windows.Forms.ListViewItem lvi in this.livPutInMessage.Items)
{
sqlcommandPutIn.Parameters["@PutInID"].Value=this.txtPutInID.Text.Trim();
sqlcommandPutIn.Parameters["@ProductID"].Value=lvi.Text.Trim();
sqlcommandPutIn.Parameters["@NowPrice"].Value=lvi.SubItems[7].Text.Trim();
sqlcommandPutIn.Parameters["@Quantity"].Value=lvi.SubItems[3].Text.Trim();
sqlcommandPutIn.Parameters["@ProductName"].Value=lvi.SubItems[1].Text.Trim();
sqlcommandPutIn.Parameters["@ProductSpecs"].Value=@lvi.SubItems[2].Text.Trim();
sqlcommandPutIn.Parameters["@Nuti"].Value=lvi.SubItems[4].Text.Trim();
sqlcommandPutIn.Parameters["@LastTimePrice"].Value=lvi.SubItems[6].Text.Trim();
sqlcommandPutIn.Parameters["@PutInPrice"].Value=lvi.SubItems[5].Text.Trim();
sqlcommandPutIn.Parameters["@NameCode"].Value=chineseSpell.GetChineseSpell(lvi.SubItems[1].Text.Trim());
sqlcommandPutIn.ExecuteNonQuery();
//==================================================
//修改【产品清单】表中的【目前库存量】,【上次进价】
//==================================================
sqlcommandProduct.CommandText="UPDATE [产品清单] SET [上次进价]="+lvi.SubItems[7].Text.Trim()+",[目前库存量]=[目前库存量]+"+lvi.SubItems[3].Text.Trim()+" WHERE [产品编号] LIKE '"+lvi.Text.Trim()+"'";
sqlcommandProduct.ExecuteNonQuery();
}
sqltransaction.Commit();//提交事务
//=============================================================================
// 查看记录单
//=============================================================================
//打开记录单显示窗体
ReportWindows.frmPutInSingleReport frm=new ZhihongFang.ReportWindows.frmPutInSingleReport(this.txtPutInID.Text.Trim());
frm.ShowDialog(this);
//初始化入库单
this.InitializePutIn();
return true;
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
sqltransaction.Rollback();//回滚事务
return false;
}
finally
{
}
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
finally
{
sqlconnection.Close();
}
#endregion
}
else
{
return false;
}
}
else
{
//入库单ListView控件没有数据,无须提交入库记录
MessageBox.Show(this,"未添加入库信息,请先点击【添加入库产品信息】填写入库单","未添加入库信息",MessageBoxButtons.OK,MessageBoxIcon.Exclamation );
return false;
}
}
else
{
//未选择供货商
MessageBox.Show(this,"您未选择入库产品供货商,请点击【供货商信息】选择。","未选择供货商",MessageBoxButtons.OK,MessageBoxIcon.Exclamation );
return false;
}
}
#endregion
=======================================================
对以上代码网友如有建议或更好的实现方法可与我联系。
方志洪
E-mail:zhihongf@gmail.com
2006年2月6日。
代码网友可直接引用,如转载请注明出处。
http://spaces.msn.com/zhihongf/
第三部分提交入库单,写入入库数据。
代码编写:方志洪
E-mail:zhihongf@Gmail.com
2006年2月6日。
#region 提交入库单,写入数据库。
/// <summary>
/// 提交入库单,写入数据库
/// </summary>
/// <returns>返回是否完成数据库写入操作</returns>
private bool PutInMainWriteData()
{
if(this.texSupplier.Text.Length > 0)
{
//判断ListView控件是否有数据
if(this.livPutInMessage.Items.Count > 0)
{
System.Windows.Forms.DialogResult dialog;
dialog=MessageBox.Show(this,"您是否确认提交编号:"+this.txtPutInID.Text+" 入库单 \n\n入库记录:"+this.livPutInMessage.Items.Count.ToString()+"条","入库确认",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);
if(dialog==System.Windows.Forms.DialogResult.Yes)
{
#region 入库数据库操作
//判断当前入库单号是否有效。
if(this.txtPutInID.Text != this.GetPutInID(this.dtpPutInDate.Value))
{
//已有其他人提交入库单,占用但前入库单号。获取新入库单号。
this.txtPutInID.Text = this.GetPutInID(this.dtpPutInDate.Value);
MessageBox.Show("您当前提交的入库单号已被使用,新入库单号为:"+this.txtPutInID.Text);
}
//=============================================================================================================
//使用数据库事务将数据写入 【入库明细】,【入库记录】表,并修改【产品清单】表中的【上次进价】,【目前库存量】。
//=============================================================================================================
//数据库链接定义
System.Data.SqlClient.SqlConnection sqlconnection=new System.Data.SqlClient.SqlConnection();
System.Data.SqlClient.SqlCommand sqlcommandPutIn=new System.Data.SqlClient.SqlCommand();//入库记录
System.Data.SqlClient.SqlCommand sqlcommandList=new System.Data.SqlClient.SqlCommand();//入库明细
System.Data.SqlClient.SqlCommand sqlcommandProduct=new System.Data.SqlClient.SqlCommand();//产品清单
sqlconnection.ConnectionString=AppConfig.ClassDataLinkString.DataConnection;
sqlcommandPutIn.Connection=sqlconnection;
sqlcommandPutIn.CommandType=System.Data.CommandType.Text;
sqlcommandList.Connection=sqlconnection;
sqlcommandList.CommandType=System.Data.CommandType.Text;
sqlcommandProduct.Connection=sqlconnection;
sqlcommandProduct.CommandType=System.Data.CommandType.Text;
//获取产品名称的拼音简码。
ZhihongFang.ChineseSpell chineseSpell=new ChineseSpell();
try
{
sqlconnection.Open();
//数据库SQL命令
//入库明细
string SQLPutIn="INSERT INTO [入库明细]([入库单号],[产品编号],[本次进价],[进货数量],[产品名称],[规格],[包装单位],[上次进价],[进价参考],[名称编码]) ";
SQLPutIn += "VALUES(@PutInID,@ProductID,@NowPrice,@Quantity,@ProductName,@ProductSpecs,@Nuti,@LastTimePrice,@PutInPrice,@NameCode)";
sqlcommandPutIn.CommandText=SQLPutIn;
sqlcommandPutIn.Parameters.Add("@PutInID",System.Data.SqlDbType.Char,14,"入库单号");
sqlcommandPutIn.Parameters.Add("@ProductID",System.Data.SqlDbType.Char,15,"产品编号");
System.Data.SqlClient.SqlParameter parameterNowPrice=new System.Data.SqlClient.SqlParameter("@NowPrice",System.Data.SqlDbType.Decimal);
parameterNowPrice.Precision=9;
parameterNowPrice.Scale=2;
sqlcommandPutIn.Parameters.Add(parameterNowPrice);
sqlcommandPutIn.Parameters.Add("@Quantity",System.Data.SqlDbType.Float);
sqlcommandPutIn.Parameters.Add("@ProductName",System.Data.SqlDbType.NVarChar,50,"产品名称");
sqlcommandPutIn.Parameters.Add("@ProductSpecs",System.Data.SqlDbType.NVarChar,50,"规格");
sqlcommandPutIn.Parameters.Add("@Nuti",System.Data.SqlDbType.NVarChar,20,"包装单位");
System.Data.SqlClient.SqlParameter parameterLastTimePrice=new System.Data.SqlClient.SqlParameter("@LastTimePrice",System.Data.SqlDbType.Decimal);
parameterLastTimePrice.Precision=9;
parameterLastTimePrice.Scale=2;
sqlcommandPutIn.Parameters.Add(parameterLastTimePrice);
System.Data.SqlClient.SqlParameter parameterPutInPrice=new System.Data.SqlClient.SqlParameter("@PutInPrice",System.Data.SqlDbType.Decimal);
parameterPutInPrice.Precision=9;
parameterPutInPrice.Scale=2;
sqlcommandPutIn.Parameters.Add(parameterPutInPrice);
sqlcommandPutIn.Parameters.Add("@NameCode",System.Data.SqlDbType.NVarChar,50,"名称编码");
sqlcommandPutIn.Prepare();
//入库记录
string SQLList="INSERT INTO [入库记录]([入库单号],[入库时间],[经办人],[供货商编号],[入库备注]) ";
SQLList +="VALUES(@PutInID,@PutInDate,@Manager,@SupplierID,@PutInNode)";
sqlcommandList.CommandText=SQLList;
sqlcommandList.Parameters.Add("@PutInID",System.Data.SqlDbType.Char,14,"入库单号");
sqlcommandList.Parameters.Add("@PutInDate",System.Data.SqlDbType.DateTime);
sqlcommandList.Parameters.Add("@Manager",System.Data.SqlDbType.NVarChar,4,"经办人");
sqlcommandList.Parameters.Add("@SupplierID",System.Data.SqlDbType.Char,15,"供货商编号");
sqlcommandList.Parameters.Add("@PutInNode",System.Data.SqlDbType.Text,500,"入库备注");
sqlcommandList.Prepare();
//事务开始.;
System.Data.SqlClient.SqlTransaction sqltransaction=sqlconnection.BeginTransaction();
try
{
sqlcommandPutIn.Transaction=sqltransaction;//事务
sqlcommandList.Transaction=sqltransaction;
sqlcommandProduct.Transaction=sqltransaction;
//执行添加入库记录
sqlcommandList.Parameters["@PutInID"].Value=this.txtPutInID.Text.Trim();
sqlcommandList.Parameters["@PutInDate"].Value=this.dtpPutInDate.Value.ToString("yyyy-MM-dd");
sqlcommandList.Parameters["@Manager"].Value=this.txtManager.Text.Trim();
sqlcommandList.Parameters["@SupplierID"].Value=this.texSupplier.Text.Substring(0,15);
sqlcommandList.Parameters["@PutInNode"].Value=this.txtNode.Text;
sqlcommandList.ExecuteNonQuery();
//执行添加入库明细
//循环读取ListView控件;
foreach(System.Windows.Forms.ListViewItem lvi in this.livPutInMessage.Items)
{
sqlcommandPutIn.Parameters["@PutInID"].Value=this.txtPutInID.Text.Trim();
sqlcommandPutIn.Parameters["@ProductID"].Value=lvi.Text.Trim();
sqlcommandPutIn.Parameters["@NowPrice"].Value=lvi.SubItems[7].Text.Trim();
sqlcommandPutIn.Parameters["@Quantity"].Value=lvi.SubItems[3].Text.Trim();
sqlcommandPutIn.Parameters["@ProductName"].Value=lvi.SubItems[1].Text.Trim();
sqlcommandPutIn.Parameters["@ProductSpecs"].Value=@lvi.SubItems[2].Text.Trim();
sqlcommandPutIn.Parameters["@Nuti"].Value=lvi.SubItems[4].Text.Trim();
sqlcommandPutIn.Parameters["@LastTimePrice"].Value=lvi.SubItems[6].Text.Trim();
sqlcommandPutIn.Parameters["@PutInPrice"].Value=lvi.SubItems[5].Text.Trim();
sqlcommandPutIn.Parameters["@NameCode"].Value=chineseSpell.GetChineseSpell(lvi.SubItems[1].Text.Trim());
sqlcommandPutIn.ExecuteNonQuery();
//==================================================
//修改【产品清单】表中的【目前库存量】,【上次进价】
//==================================================
sqlcommandProduct.CommandText="UPDATE [产品清单] SET [上次进价]="+lvi.SubItems[7].Text.Trim()+",[目前库存量]=[目前库存量]+"+lvi.SubItems[3].Text.Trim()+" WHERE [产品编号] LIKE '"+lvi.Text.Trim()+"'";
sqlcommandProduct.ExecuteNonQuery();
}
sqltransaction.Commit();//提交事务
//=============================================================================
// 查看记录单
//=============================================================================
//打开记录单显示窗体
ReportWindows.frmPutInSingleReport frm=new ZhihongFang.ReportWindows.frmPutInSingleReport(this.txtPutInID.Text.Trim());
frm.ShowDialog(this);
//初始化入库单
this.InitializePutIn();
return true;
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
sqltransaction.Rollback();//回滚事务
return false;
}
finally
{
}
}
catch(System.Exception ex)
{
MessageBox.Show(ex.ToString());
return false;
}
finally
{
sqlconnection.Close();
}
#endregion
}
else
{
return false;
}
}
else
{
//入库单ListView控件没有数据,无须提交入库记录
MessageBox.Show(this,"未添加入库信息,请先点击【添加入库产品信息】填写入库单","未添加入库信息",MessageBoxButtons.OK,MessageBoxIcon.Exclamation );
return false;
}
}
else
{
//未选择供货商
MessageBox.Show(this,"您未选择入库产品供货商,请点击【供货商信息】选择。","未选择供货商",MessageBoxButtons.OK,MessageBoxIcon.Exclamation );
return false;
}
}
#endregion
=======================================================
对以上代码网友如有建议或更好的实现方法可与我联系。
方志洪
E-mail:zhihongf@gmail.com
2006年2月6日。