private void dataGridViewP_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (dataGridViewP.Rows[e.RowIndex].IsNewRow) { return; } int intOut = 0; ClassIm.ClearDataGridViewErrorText(dataGridViewP); switch (e.ColumnIndex) { case 10: if (e.FormattedValue.ToString() == "") { break; } if (int.TryParse(e.FormattedValue.ToString(), out intOut)) { if (intOut < 0) { dataGridViewP.Rows[e.RowIndex].Cells[10].ErrorText = "data error"; e.Cancel = true; } } else { dataGridViewP.Rows[e.RowIndex].Cells[10].ErrorText = "data error"; e.Cancel = true; } break; default: break; } //dataGridViewP.EndEdit(); }
private bool countAmount(int iRows) { bool bCheck = true; bool bFirst = true; int i, j, k; int iStartYear = 0, iStartWeek = 0; int iEndYear = 0, iEndWeek = 0; int iStartNo = 0, iEndNo = 0; int iRStart = 0, iRend = 0; int iAcquireNO = 0; int iTemp = 0; bool bTrue = true; int iSurplus = 0; manageArrayList(); //重置用户输入 this.dataGridViewP.CellValidating -= dataGridViewP_CellValidating; ClassIm.ClearDataGridViewErrorText(dataGridViewP); if (iRows < 0) { iRStart = 0; iRend = dataGridViewP.Rows.Count; } else { iRStart = iRows; iRend = iRows + 1; } for (i = iRStart; i < iRend; i++) { if (dataGridViewP.Rows[i].IsNewRow) { continue; } iSurplus = 0; for (j = ICOLUMNS; j < dataGridViewP.ColumnCount; j++) { if (dataGridViewP.Rows[i].Cells[j].Value.ToString() == "") { dataGridViewP.Rows[i].Cells[j].ErrorText = "please input number"; bCheck = false; } } if (!bCheck) { continue; } //整理 string[] sT = dataGridViewP.Rows[i].Cells[11].Value.ToString().Split('-'); iStartYear = int.Parse(sT[0]); iStartWeek = int.Parse(sT[1]); iStartNo = int.Parse(dataGridViewP.Rows[i].Cells[10].Value.ToString()); if (iStartNo != 0) { iStartNo++; //起始号 } //本周计算,backlog iEndWeek = iStartWeek; iEndYear = iStartYear; var alQuery1 = from cIme cime in alIme where (cime.sPCode == dataGridViewP.Rows[i].Cells[1].Value.ToString()) && (cime.sICode == dataGridViewP.Rows[i].Cells[5].Value.ToString()) && (cime.iYear == iEndYear) && (cime.iWeek == iEndWeek) select cime; foreach (cIme s in alQuery1) { iAcquireNO = 0; bTrue = true; while (bTrue) { //找到开始号区间 var q3 = from dt1 in dSet.Tables["acquire"].AsEnumerable() //查询最后 where (dt1.Field <string>("Product Code") == s.sPCode) && (dt1.Field <string>("Indentor Code") == s.sICode) && (dt1.Field <int>("Start Number") <= iStartNo) && (dt1.Field <int>("End Number") >= iStartNo) //条件 orderby dt1.Field <int>("End Number") select dt1; if (q3.Count() < 1) //没有区间 { s.iAcquire = 0; break; } bFirst = true; s.iAcquire = 0; foreach (var item in q3) { if (!bFirst) //第二次循环,以此次申请的第一位数为起始数 { iStartNo = item.Field <int>("Start Number"); } iEndNo = iStartNo + (int)Math.Ceiling((double)s.iBacklog * (double)s.iNum * ((double)s.dFailureRate / 100.0 + 1.0)) - 1; if (iEndNo <= item.Field <int>("End Number")) //找到区间 { s.iAcquire = item.Field <int>("ID"); s.iAcStart = item.Field <int>("Start Number"); s.iAcEnd = item.Field <int>("End Number"); s.iStart = iStartNo; s.iEnd = iEndNo; iStartNo = iEndNo + 1; s.iSurpLus = getSurplus(s.sPCode, s.sICode, iEndNo); bTrue = false; break; } else //区间不够,跳到下一区间 { //得到下一个申请区间 bFirst = false; } break; } } //while //得到预计计数 if (s.iAcquire == 0) { s.iOrderStart = iStartNo; s.iOrderEnd = iStartNo + (int)Math.Ceiling((double)s.iBacklog * (double)s.iNum * ((double)s.dFailureRate / 100.0 + 1.0)) - 1; iSurplus = -1 * (int)Math.Ceiling((double)s.iBacklog * (double)s.iNum * ((double)s.dFailureRate / 100.0 + 1.0)); s.iSurpLus = iSurplus; iStartNo = s.iOrderEnd + 1; } break; }//s //计算以后周 k = 1; while (true) { //从制造下一周开始 iEndWeek = int.Parse(ClassIm.GetWeek(iStartYear, iStartWeek, k)); iEndYear = int.Parse(ClassIm.sYear); k++; var alQuery = from cIme cime in alIme where (cime.sPCode == dataGridViewP.Rows[i].Cells[1].Value.ToString()) && (cime.sICode == dataGridViewP.Rows[i].Cells[5].Value.ToString()) && (cime.iYear == iEndYear) && (cime.iWeek == iEndWeek) select cime; if (alQuery.Count() < 1) //没有记录 { break; } foreach (cIme s in alQuery) { iAcquireNO = 0; bTrue = true; while (bTrue) { //找到开始号区间 var q3 = from dt1 in dSet.Tables["acquire"].AsEnumerable() //查询最后 where (dt1.Field <string>("Product Code") == s.sPCode) && (dt1.Field <string>("Indentor Code") == s.sICode) && (dt1.Field <int>("Start Number") <= iStartNo) && (dt1.Field <int>("End Number") >= iStartNo) //条件 orderby dt1.Field <int>("End Number") select dt1; if (q3.Count() < 1) //没有区间 { s.iAcquire = 0; break; } bFirst = true; s.iAcquire = 0; foreach (var item in q3) { if (!bFirst) //第二次循环,以此次申请的第一位数为起始数 { iStartNo = item.Field <int>("Start Number"); } iEndNo = iStartNo + (int)Math.Ceiling((double)s.iCount * (double)s.iNum * ((double)s.dFailureRate / 100.0 + 1.0)) - 1; if (iEndNo <= item.Field <int>("End Number")) //找到区间 { s.iAcquire = item.Field <int>("ID"); s.iAcStart = item.Field <int>("Start Number"); s.iAcEnd = item.Field <int>("End Number"); s.iStart = iStartNo; s.iEnd = iEndNo; iStartNo = iEndNo + 1; s.iSurpLus = getSurplus(s.sPCode, s.sICode, iEndNo); bTrue = false; break; } else //区间不够,跳到下一区间 { bFirst = false; } } break; } //while //得到预计计数 if (s.iAcquire == 0) { s.iOrderStart = iStartNo; s.iOrderEnd = iStartNo + (int)Math.Ceiling((double)s.iCount * (double)s.iNum * ((double)s.dFailureRate / 100.0 + 1.0)) - 1; iSurplus += -1 * ((int)Math.Ceiling((double)s.iCount * (double)s.iNum * ((double)s.dFailureRate / 100.0 + 1.0))); s.iSurpLus = iSurplus; iStartNo = s.iOrderEnd + 1; } break; }//s } //if (!bCheck1) // dataGridViewP.Rows[i].DefaultCellStyle.BackColor = Color.Pink; //else // dataGridViewP.Rows[i].DefaultCellStyle.BackColor = Color.Gray; //dataGridViewP.Rows[i].DefaultCellStyle.BackColor = Color.Red; } //for //changeViewColor(); changeViewText(); this.dataGridViewP.CellValidating += dataGridViewP_CellValidating; //dataGridViewP.EndEdit(); return(bCheck); }
private bool countAmount() { bool bCheck = true; int itemp = 0, itemp1 = 0; int iR = 0; bool bFirst = true; this.dataGridViewP.CellValidating -= dataGridViewP_CellValidating; ClassIm.ClearDataGridViewErrorText(dataGridViewP); for (int i = 0; i < dtAcquire.Rows.Count; i++) { dtAcquire.Rows[i][11] = 0; if (dtAcquire.Rows[i][10].ToString() == "") { dtAcquire.Rows[i][11] = 1; } if (int.Parse(dtAcquire.Rows[i][10].ToString()) < 0) { dtAcquire.Rows[i][11] = 1; } //取值大于跳转 if (int.Parse(dtAcquire.Rows[i][10].ToString()) > iRange) { dtAcquire.Rows[i][11] = 3; } if (int.Parse(dtAcquire.Rows[i][11].ToString()) != 0) { continue; } dtAcquire.Rows[i][11] = 0; //判断区间 itemp = int.Parse(dtAcquire.Rows[i][5].ToString()); itemp1 = itemp + int.Parse(dtAcquire.Rows[i][10].ToString()) * int.Parse(dtAcquire.Rows[i][2].ToString()) - 1; if (!checkBoxCon.Checked) //不连续计算 { iR = itemp / iRange; iR = iR * iRange; bFirst = true; while (true) { if (itemp >= iR && itemp1 <= iR + iRange) //找到区间 { dtAcquire.Rows[i][11] = 0; dtAcquire.Rows[i][6] = itemp; dtAcquire.Rows[i][7] = itemp1; dtAcquire.Rows[i][8] = 0; dtAcquire.Rows[i][9] = ""; var q2 = from dt2 in dSet.Tables["TAC"].AsEnumerable() //查询TAC区间 where (dt2.Field <string>("Product Code") == dtAcquire.Rows[i][1].ToString()) && (dt2.Field <string>("Indentor Code") == dtAcquire.Rows[i][4].ToString()) && (dt2.Field <int>("Init Number") == iR) //条件 select dt2; foreach (var item in q2)//显示查询结果 { dtAcquire.Rows[i][8] = item.Field <int>("ID"); dtAcquire.Rows[i][9] = item.Field <string>("TAC Code"); break; } break; } else { iR += iRange; itemp = iR; itemp1 = itemp + int.Parse(dtAcquire.Rows[i][10].ToString()) * int.Parse(dtAcquire.Rows[i][2].ToString()); } } } else //连续计算 { dtAcquire.Rows[i][11] = 0; dtAcquire.Rows[i][6] = itemp; dtAcquire.Rows[i][7] = itemp1; dtAcquire.Rows[i][8] = 0; dtAcquire.Rows[i][9] = ""; var q2 = from dt2 in dSet.Tables["TAC"].AsEnumerable() //查询TAC区间 where (dt2.Field <string>("Product Code") == dtAcquire.Rows[i][1].ToString()) && (dt2.Field <string>("Indentor Code") == dtAcquire.Rows[i][4].ToString()) && (dt2.Field <int>("Init Number") == iR) //条件 select dt2; foreach (var item in q2)//显示查询结果 { dtAcquire.Rows[i][8] = item.Field <int>("ID"); dtAcquire.Rows[i][9] = item.Field <string>("TAC Code"); break; } } } for (int i = 0; i < dataGridViewP.RowCount; i++) { switch (dataGridViewP.Rows[i].Cells[11].Value.ToString()) { case "1": dataGridViewP.Rows[i].Cells[10].ErrorText = "please input number"; break; //case "2": // dataGridViewP.Rows[i].Cells[10].ErrorText = "NO TAC Define"; // break; case "3": dataGridViewP.Rows[i].Cells[10].ErrorText = "OUT OF TAC Define"; break; default: break; } } this.dataGridViewP.CellValidating += dataGridViewP_CellValidating; //dataGridViewP.EndEdit(); return(bCheck); }
private bool countAmount() { bool bCheck = true; this.dataGridViewP.CellValidating -= dataGridViewP_CellValidating; ClassIm.ClearDataGridViewErrorText(dataGridViewP); for (int i = 0; i < dtManu.Rows.Count; i++) { dtManu.Rows[i][11] = 0; //TAC 检验 if (dtManu.Rows[i][6].ToString() == "") { dtManu.Rows[i][11] = 1; } var q2 = from dt2 in dSet.Tables["TAC"].AsEnumerable() //查询TAC区间 where (dt2.Field <string>("Product Code") == dtManu.Rows[i][1].ToString()) && (dt2.Field <string>("Indentor Code") == dtManu.Rows[i][4].ToString()) && (dt2.Field <string>("TAC Code") == dtManu.Rows[i][6].ToString()) //条件 select dt2; if (q2.Count() <= 0) { dtManu.Rows[i][11] = 1; dtManu.Rows[i][5] = 0; dtManu.Rows[i][6] = ""; dtManu.Rows[i][7] = 0; } else { foreach (var item in q2)//显示查询结果 { dtManu.Rows[i][5] = item.Field <int>("ID"); dtManu.Rows[i][6] = item.Field <string>("TAC Code"); dtManu.Rows[i][7] = item.Field <int>("Init Number"); break; } } if (int.Parse(dtManu.Rows[i][11].ToString()) != 0) { continue; } //结束号检验 if (int.Parse(dtManu.Rows[i][9].ToString()) > iRange || int.Parse(dtManu.Rows[i][9].ToString()) <= 0 || int.Parse(dtManu.Rows[i][9].ToString()) <= int.Parse(dtManu.Rows[i][8].ToString())) { dtManu.Rows[i][11] = 2; } if (dtManu.Rows[i][12].ToString() == "") { dtManu.Rows[i][11] = 2; } if (int.Parse(dtManu.Rows[i][12].ToString()) < 0) { dtManu.Rows[i][12] = 2; } //取值大于跳转 if (int.Parse(dtManu.Rows[i][12].ToString()) > iRange) { dtManu.Rows[i][12] = 2; } if (int.Parse(dtManu.Rows[i][11].ToString()) != 0) { continue; } dtManu.Rows[i][10] = int.Parse(dtManu.Rows[i][9].ToString()) + int.Parse(dtManu.Rows[i][7].ToString()); } for (int i = 0; i < dataGridViewP.RowCount; i++) { switch (dataGridViewP.Rows[i].Cells[11].Value.ToString()) { case "1": dataGridViewP.Rows[i].Cells[6].ErrorText = "TAC Code Error"; break; //case "2": // dataGridViewP.Rows[i].Cells[10].ErrorText = "NO TAC Define"; // break; case "2": dataGridViewP.Rows[i].Cells[9].ErrorText = "number error"; break; default: break; } } this.dataGridViewP.CellValidating += dataGridViewP_CellValidating; //dataGridViewP.EndEdit(); return(bCheck); }
private void dataGridViewP_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { int intOut = 0; if (dataGridViewP.Rows[e.RowIndex].IsNewRow) { return; } ClassIm.ClearDataGridViewErrorText(dataGridViewP); switch (e.ColumnIndex) { case 6: if (e.FormattedValue.ToString() == "") { break; } //取得TAC var q2 = from dt2 in dSet.Tables["TAC"].AsEnumerable() //查询TAC区间 where (dt2.Field <string>("Product Code") == dataGridViewP.Rows[e.RowIndex].Cells[1].Value.ToString()) && (dt2.Field <string>("Indentor Code") == dataGridViewP.Rows[e.RowIndex].Cells[4].Value.ToString()) && (dt2.Field <string>("TAC Code") == e.FormattedValue.ToString()) //条件 select dt2; if (q2.Count() <= 0) { dataGridViewP.Rows[e.RowIndex].Cells[6].ErrorText = "TAC Code error"; e.Cancel = true; } break; case 9: if (e.FormattedValue.ToString() == "") { break; } if (int.TryParse(e.FormattedValue.ToString(), out intOut)) { if (intOut < 0) { dataGridViewP.Rows[e.RowIndex].Cells[9].ErrorText = "data error"; e.Cancel = true; } if (intOut > iRange) { dataGridViewP.Rows[e.RowIndex].Cells[9].ErrorText = "data error"; e.Cancel = true; } } else { dataGridViewP.Rows[e.RowIndex].Cells[9].ErrorText = "data error"; e.Cancel = true; } break; case 12: if (e.FormattedValue.ToString() == "") { break; } if (int.TryParse(e.FormattedValue.ToString(), out intOut)) { if (intOut < 0) { dataGridViewP.Rows[e.RowIndex].Cells[12].ErrorText = "data error"; e.Cancel = true; } if (intOut > iRange) { dataGridViewP.Rows[e.RowIndex].Cells[12].ErrorText = "data error"; e.Cancel = true; } } else { dataGridViewP.Rows[e.RowIndex].Cells[12].ErrorText = "data error"; e.Cancel = true; } break; default: break; } //dataGridViewP.EndEdit(); }