⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stocktable.cs

📁 订单处理、生产计划、物料需求、原材料采购、库存控制、车间管理直到产品销售的整个生产管理过程以及相关的成本核算,为企业提供高效的管理工具。 1.适用对象: 企业生产管理系统是专门针对中小型生产制造类企业
💻 CS
📖 第 1 页 / 共 3 页
字号:
			if (this.dgrd_StockTable.CurrentCell.ColumnNumber == 0)
			{
				this.dgrd_StockTable[dgrd_StockTable.CurrentCell.RowNumber,3]  = "";
				WareDataManage newFrm = new WareDataManage(false);
				newFrm.setDataGridReadOnly(false);
				newFrm.ShowDialog();
				setWareData();
				SendKeys.Send("{Tab}");//向活动应用程序发送Tab键,跳到下一控件(此处为下一格)
			}
		}

		private void dgrd_StockTable_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			DataGrid myGrid   = (DataGrid)sender;
			System.Windows.Forms.DataGrid.HitTestInfo myHitTest;

			myHitTest = this.dgrd_StockTable.HitTest(e.X,e.Y);
			if ( myHitTest.Type == System.Windows.Forms.DataGrid.HitTestType.Cell )
				gridMouseDownTime = DateTime.Now;
		}
		
		//----------计算税率,总金额等信息----------
		private void dgrd_StockTable_CurrentCellChanged(object sender, System.EventArgs e)
		{
			this.selectWareMessage();
			this.controlCalculate();
		}

		//------------处理鼠标在dataGrid中的双击事件---------
		private void TextBoxMouseDownHandler(object sender, MouseEventArgs e )
		{
			//第一个判断条件:在单元格的textbox中的双击(即单击DataCell,使它获得焦点后,然后再响应该Cell中的双击事件)
			//第二个判断条件:DataGrid 的 DoubleClick(直接双击Cell就响应双击事件,无须先单击Cell,使它获得焦点,然后再响应双击事件)
			                                                      //判断时间间隔是否小于控制面板中所定义的双击间隔时间
			if( e.Button == MouseButtons.Left && e.Clicks == 2 || DateTime.Now < gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))
			{
				if (this.dgrd_StockTable.CurrentCell.ColumnNumber == 0)
				{
					this.dgrd_StockTable[dgrd_StockTable.CurrentCell.RowNumber,3]  = "";
					WareDataManage newFrm = new WareDataManage(false);
					newFrm.setDataGridReadOnly(false);
					newFrm.ShowDialog();
					setWareData();
					SendKeys.Send("{Tab}");//向活动应用程序发送Tab键,跳到下一控件(此处为下一格)
				}
			}
		}

		//---------提交修改--------
		private void clickedSaveIcon()
		{
			try
			{
				//注意:必须先删除进货单明细表中的数据,然后才能再删除进货单中的数据
				string sendSQL = "delete 进货单明细";
				this.link.UpdateDataBase(sendSQL); //删除进货单明细中的数据
				sendSQL = "delete 进货单";
				this.link.UpdateDataBase(sendSQL); //删除进货单中的数据


				//向进货单中写入数据
				int intMaxStockNumberID= 0;
				sendSQL = "select 编号 from 进货单历史";
				//从进货单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
				DataTable intNumberTable = this.link.SelectDataBase(sendSQL);
				for (int i=0;i<intNumberTable.Rows.Count;i++)
				{
					if (intMaxStockNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
					{
						intMaxStockNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
					}
				}
				sendSQL = "select 编号 from 进货单";
				//从进货单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
				intNumberTable = this.link.SelectDataBase(sendSQL);
				for (int i=0;i<intNumberTable.Rows.Count;i++)
				{
					if (intMaxStockNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
					{
						intMaxStockNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
					}
				}
				intMaxStockNumberID++;
				string strStokerID =this.cmb_StokerID.Items[0].ToString().Trim();
				string strStockDate =this.txt_StockDate.Text.Trim();
				string strOperator =this.cmb_Oprater.SelectedItem.ToString().Trim();
				string strMaker =this.txt_Maker.Text.Trim();
				decimal decTotalCount = Decimal.Parse(this.txt_TotalCount.Text.Trim());
				decimal decNoTax = Decimal.Parse(this.txt_NoTax.Text.Trim());
				decimal decTax = Decimal.Parse(this.txt_Tax.Text.Trim());
				string sendValues = "('" + intMaxStockNumberID +"','"+ strStokerID +"','"+ strStockDate +"','"+ strOperator +"','"+
					strMaker +"','"+ decTotalCount +"','"+ decNoTax +"','"+ decTax + "')";
				sendSQL = "insert 进货单 (编号,供货商号,进货日期,业务员,制单人,税价合计,不含税价,税额) values " + sendValues;
				this.link.UpdateDataBase(sendSQL);

				//向进货单明细中写入数据
				int intMaxNumberID = 0; 
				sendSQL = "select 编号 from 进货单明细历史";
				//从进货单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
				intNumberTable = this.link.SelectDataBase(sendSQL);
				for (int i=0;i<intNumberTable.Rows.Count;i++)
				{
					if (intMaxNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
					{
						intMaxNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
					}
				}
				sendSQL = "select 编号 from 进货单明细";
				//从进货单明细中读取"编号"列,取它的最大值,以便为新添加的数据编号
				intNumberTable = this.link.SelectDataBase(sendSQL);
				for (int i=0;i<intNumberTable.Rows.Count;i++)
				{
					if (intMaxNumberID < System.Int32.Parse(intNumberTable.Rows[i][0].ToString()))
					{
						intMaxNumberID = System.Int32.Parse(intNumberTable.Rows[i][0].ToString());
					}
				}
				for (int row=0;row<this.newTable.Rows.Count;row++)
				{
					//首先判断表中的下一行数据是否为空,如果是则返回,以免因向数据库中写入空行而出错
					if(this.newTable.Rows[row][0].ToString() == "")
					{
						sendSQL = "delete from 进货单 where 编号 = '" + intMaxStockNumberID + "'";
						this.link.UpdateDataBase(sendSQL); //首先删除这次在进货单中加入的数据
						break;
					}
					else
					{
						intMaxNumberID++;
						string strWareID = this.dgrd_StockTable[row,0].ToString().Trim();
						string strWareCount = this.dgrd_StockTable[row,1].ToString().Trim();
						string strWarePrice = this.dgrd_StockTable[row,2].ToString().Trim();
						string strStorageID = this.dgrd_StockTable[row,3].ToString().Trim();
						decTotalCount = Decimal.Parse(this.dgrd_StockTable[row,6].ToString().Trim());
						decTax = Decimal.Parse(this.dgrd_StockTable[row,8].ToString().Trim());
						decNoTax = Decimal.Parse(this.dgrd_StockTable[row,9].ToString().Trim());
						sendValues = "('" + intMaxNumberID +"','"+intMaxStockNumberID +"','"+ strWareID +"','"+ strWareCount +"','"+ strWarePrice +"','"+
							decTotalCount +"','"+ 17 +"','"+ decNoTax +"','"+ decTax +"','"+ strStorageID + "')";
						sendSQL = "insert 进货单明细 (编号,进货单号,货号,进货数量,进价,税价合计,税率,不含税价,税额,仓库) values " + sendValues;
						this.link.UpdateDataBase(sendSQL); 
					}
				}
				MessageBox.Show("数据保存成功!","信息");
			}
			catch
			{
				MessageBox.Show("数据保存失败,请确认所有信息输入完整且正确!","提示");
				return;
			}
		}

		//----------打印报表----------
		private void clickedPrintIcon()
		{
			CrystalReport newCrystalReport_Stock = new CrystalReport();
			newCrystalReport_Stock.ShowDialog();
			Trash();
		}

		//----------保存历史记录并清除原数据----------
		private void Trash()
		{
			try
			{
				if (MessageBox.Show("要保存为历史记录吗?","询问",MessageBoxButtons.YesNo) == DialogResult.Yes)
				{
					this.link.UpdateDataBase("exec sf_进货单"); //调用存储过程
					//清除供货商信息
					this.cmb_StokerID.Items[0] = "";
					this.txt_StokerName.Text = "";
					//清除底部金额及税款信息
					this.txt_TotalCount.Text = "0.00";
					this.txt_NoTax.Text = "0.00";
					this.txt_Tax.Text = "0.00";
					//清除当前DataGrid中的所有数据
					newTable.Clear();
					//加入空行保证newTable中不为空,否则删除所有数据行后保存数据和MouseUp函数将引发异常出错
					newTable.Rows.Add(newTable.NewRow());
					MessageBox.Show("数据成功存入历史表!","信息");
				}
			}
			catch
			{
				MessageBox.Show("数据存入历史表时出错,请检查数据库!","提示");
			}
		}

		//-------------将所选择的货物信息填入表格中---------------
		private void selectWareMessage()
		{
			int intCurrentRowNumber = this.dgrd_StockTable.CurrentCell.RowNumber;
			//判断何时需要检索数据库的商品清单,读取商品信息(以免操作数据库次数过多,影响程序性能)
			if (this.dgrd_StockTable[intCurrentRowNumber,0].ToString() != "")
			{
				string strSearchWord = this.dgrd_StockTable[intCurrentRowNumber,0].ToString().Trim();
				string sendSQL = "select 货号,品名,单位 from 商品清单 where 货号 = '" + strSearchWord + "'";
				DataTable tempDataTable = this.link.SelectDataBase(sendSQL);
				if (tempDataTable.Rows.Count>0)
				{
					inputDataGridArray[0] = tempDataTable.Rows[0][0].ToString().Trim();
					inputDataGridArray[1] = tempDataTable.Rows[0][1].ToString().Trim();
					inputDataGridArray[2] = tempDataTable.Rows[0][2].ToString().Trim();
					this.setWareData();
				}
				//如果从数据库中没有检索出任何数据
				else
				{
					//inputDataGridArray[0]赋值为当前输入的值,方便用户再次修改输入
					inputDataGridArray[0] = this.dgrd_StockTable[intCurrentRowNumber,0].ToString().Trim();
					inputDataGridArray[1] = "";
					inputDataGridArray[2] = "";
					this.setWareData();
				}
			}
		}

		//--------------总金额,税率等的计算------------
		private void controlCalculate()
		{
			int intCurrentRowNumber = this.dgrd_StockTable.CurrentCell.RowNumber;
			string strWareCount = this.dgrd_StockTable[intCurrentRowNumber,1].ToString();
			string strWarePrice = this.dgrd_StockTable[intCurrentRowNumber,2].ToString();
			string strTotalCounter = this.dgrd_StockTable[intCurrentRowNumber,6].ToString();
			//当销售价和销售数量不为空时则将当前光标移到下一行的开始处,以便DataTable依据表达式自动计算DataColumn的值
			if (strWareCount != "" && strWarePrice != "" && strTotalCounter=="")
			{
				this.dgrd_StockTable.CurrentCell = new DataGridCell(intCurrentRowNumber+1,0); 
			}
			//为底部三个文本框计算总金额
			decimal intTotalCount = 0;
			decimal intNoTax = 0;
			decimal intTax = 0;

			//首先判断列是否为空
			object obj = newTable.Compute("SUM (金额)","");
			if (obj.GetType().ToString() != "System.DBNull")
			{
				intTotalCount = (decimal)this.newTable.Compute("SUM (金额)","");
				intNoTax = (decimal)this.newTable.Compute("SUM (不含税额)","");
				intTax = (decimal)this.newTable.Compute("SUM (税额)","");
			}


			this.txt_TotalCount.Text = intTotalCount.ToString("N");
			this.txt_NoTax.Text = intNoTax.ToString("N");
			this.txt_Tax.Text = intTax.ToString("N");
		}

		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -