📄 stocktable.cs
字号:
private void setTextData()
{
this.cmb_StokerID.IntegralHeight = false;
this.cmb_StokerID.DroppedDown = false;
this.cmb_StokerID.Items[0] = inputTextDataArray[0];
this.cmb_StokerID.SelectedIndex = 0;
this.txt_StokerName.Text = inputTextDataArray[1];
this.cmb_StokerID.IntegralHeight = true;
}
//设置业务员下拉列表框下拉选项
private void selectDataBase()
{
this.txt_StockDate.Text = System.DateTime.Today.ToShortDateString();
string tempStrSQL = "select distinct 姓名 from 用户清单 ";
DataTable tempDataTable = link.SelectDataBase(tempStrSQL);
for (int i=0;i<tempDataTable.Rows.Count;i++)
this.cmb_Oprater.Items.Add(tempDataTable.Rows[i][0]);
this.cmb_Oprater.SelectedIndex = 0;
}
//绑定数据并设置表格各列的属性
private void DataGridStateControl()
{
newTable = new DataTable();
newTable.Columns.Add("货号(双击)",typeof(string));
newTable.Columns.Add("数量",typeof(decimal));
newTable.Columns.Add("单价",typeof(decimal));
newTable.Columns.Add("仓库",typeof(string));
newTable.Columns.Add("品名",typeof(string));
newTable.Columns.Add("单位",typeof(string));
newTable.Columns.Add("金额",typeof(decimal),"数量*单价");
newTable.Columns.Add("税率",typeof(decimal));
newTable.Columns.Add("不含税额",typeof(decimal),"金额/1.17");
newTable.Columns.Add("税额",typeof(decimal),"金额-不含税额");
this.dgrd_StockTable.DataSource = newTable;
newTable.Rows.Add(newTable.NewRow());
//设置表格模式
DataGridTableStyle ts = new DataGridTableStyle();
DataGridTextBoxColumn aColumnTextColumn;
ts.AllowSorting = false;
ts.AlternatingBackColor = Color.SkyBlue;
ts.HeaderBackColor = Color.SkyBlue;
ts.MappingName = newTable.TableName;
int numCols = newTable.Columns.Count;
for (int i = 0;i< numCols;i++)
{
aColumnTextColumn = new DataGridTextBoxColumn();
if( i!=0 && i!=1 && i!=2 && i!=3)
{
aColumnTextColumn.ReadOnly=true;
}
if ( i == 0 )//当鼠标单击首列时允许响应
{
aColumnTextColumn.TextBox.MouseDown += new MouseEventHandler(TextBoxMouseDownHandler);
}
if ( i == 4 )
{
aColumnTextColumn.Width = 160;
}
if ( i == 3 )//设置仓库下拉列表框
{
string sendStrSQL = "select distinct 仓库 from 库存库 order by 仓库 ASC";
DataTable tempTable = this.link.SelectDataBase(sendStrSQL);
DataGridComboBoxColumn aComboBoxColumn = new DataGridComboBoxColumn(tempTable,0,0);
aComboBoxColumn.MappingName = newTable.Columns[i].ColumnName;
aComboBoxColumn.HeaderText = newTable.Columns[i].ColumnName;
aComboBoxColumn.NullText = "";
ts.GridColumnStyles.Add(aComboBoxColumn);
}
else
{
aColumnTextColumn.MappingName = newTable.Columns[i].ColumnName;
aColumnTextColumn.HeaderText = newTable.Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
aColumnTextColumn.Format = "N";//设置为数字格式显示
ts.GridColumnStyles.Add(aColumnTextColumn);
}
}
this.dgrd_StockTable.TableStyles.Add(ts);
}
//创建窗体,共用户选择供货商
private void cmb_Stoker_DropDown(object sender, System.EventArgs e)
{
StokerDataManage newFrm = new StokerDataManage(false);
newFrm.setDataGridReadOnly();
newFrm.ShowDialog();
setTextData();
SendKeys.Send("{Tab}");
}
//将所选供货商的相关数据读入窗体
private void cmb_StokerID_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
this.txt_StokerName.Text = "";
string strSearchWord = this.cmb_StokerID.Text;
string sendSQL = "select 供货商号,名称 from 供货商清单 where 供货商号 = '" + strSearchWord + "'";
DataTable tempDataTable = this.link.SelectDataBase(sendSQL);
if (tempDataTable.Rows.Count>0)
{
inputTextDataArray[0] = tempDataTable.Rows[0][0].ToString().Trim();
inputTextDataArray[1] = tempDataTable.Rows[0][1].ToString().Trim();
this.setTextData();
SendKeys.Send("{Tab}");
}
}
//在表格中双击,创建窗体以供选择货物
private void dgrd_StockTable_DoubleClick(object sender, System.EventArgs e)
{
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}");
}
}
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 )
{
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}");
}
}
}
//提交修改
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 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] = 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();
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");
}
private void btnSave_Click(object sender, System.EventArgs e)
{
clickedSaveIcon();
}
private void btnDel_Click(object sender, System.EventArgs e)
{
try
{
if (newTable.Rows.Count > 0)
{
this.newTable.Rows.RemoveAt(this.dgrd_StockTable.CurrentCell.RowNumber);
this.controlCalculate();
}
if (newTable.Rows.Count-1 <= 0)
newTable.Rows.Add(newTable.NewRow());
}
catch
{
return;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -