Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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();
        }