Ejemplo n.º 1
0
        /// <summary>
        /// 标准件编码生成
        /// </summary>
        private void StandardCodingBuilds()
        {
            DataTable dt = (DataTable)myDataGridView1.DataSource;
            Dictionary <string, int> dict = sql.GetNumber();

            DataKeep.Serialize(configPath, false, ref param);
            string     ClassName  = "";
            string     CodingName = "";
            string     cInvName   = "";
            string     cInvStd    = "";
            List <int> redlist    = new List <int>();

            foreach (Map map in param.Maps)
            {
                Console.WriteLine(map.Name);
                if (map.Name.Equals("存货大类编码"))
                {
                    ClassName = map.Value;
                }
                else if (map.Name.Equals("存货编码"))
                {
                    CodingName = map.Value;
                }
                else if (map.Name.Equals("规格型号"))
                {
                    cInvStd = map.Value;
                }
                else if (map.Name.Equals("存货名称"))
                {
                    cInvName = map.Value;
                }
            }
            Console.WriteLine(ClassName + "," + CodingName);
            if (dt.Columns.Contains(ClassName) && dt.Columns.Contains(CodingName) && dt.Columns.Contains(cInvStd) && dt.Columns.Contains(cInvName))
            {
                foreach (DataRow row in dt.Rows)
                {
                    if (row[ClassName] != DBNull.Value)
                    {
                        string    name  = row[cInvName].ToString().Trim();
                        string    std   = row[cInvStd].ToString().Trim();
                        DataTable dtnew = sql.AccurateQuery_AND_Like(name, "cInvName", std, "cInvStd");

                        if (dtnew == null || dtnew.Rows.Count > 0)
                        {
                            redlist.Add(row.Table.Rows.IndexOf(row));
                            continue;
                        }
                        string value = row[ClassName].ToString().Trim();
                        int    num;
                        if (dict.ContainsKey(value))
                        {
                            num = dict[value];
                        }
                        else
                        {
                            MessageBox.Show(value + "分类编码错误");
                            continue;
                        }
                        string numstr = string.Format("{0:D5}", num + 1);
                        try
                        {
                            string Classstr = value.Substring(0, 4) + "." + value.Substring(4, 2);
                            row[CodingName] = Classstr + "." + numstr;
                            dict[value]     = num + 1;
                        }
                        catch (Exception e1)
                        {
                            MessageBox.Show(e1.Message);
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show(string.Format("表没有{0}列或{1}列", ClassName, CodingName));
            }
            dt.AcceptChanges();
            LookForDuplicates();
            foreach (var i in redlist)
            {
                myDataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Red;
            }
        }
Ejemplo n.º 2
0
        private void Matches_NameAndModel(ProgressBarForm progressBarForm)
        {
            DataTable      dt        = (DataTable)myDataGridView1.DataSource;
            string         cInvStd   = dictparam["cInvStd"];
            string         cInvName  = dictparam["cInvName"];
            List <DataRow> rowlist   = new List <DataRow>();
            List <int>     indexlist = new List <int>();
            DataTable      dtData    = new DataTable();

            foreach (DataColumn col in dt.Columns)
            {
                dtData.Columns.Add(col.ColumnName);
            }
            try
            {
                for (int index = 0; index < dt.Rows.Count; index++)
                {
                    if (progressBarForm.Stop == true)
                    {
                        return;
                    }
                    progressBarForm.Value = index + 1;
                    //progressBarForm.AddProgress(index);
                    //Console.WriteLine(index);
                    DataRow row  = dt.Rows[index];
                    string  str1 = row[cInvName].ToString().Trim();
                    string  str2 = row[cInvStd].ToString().Trim();

                    DataRow newRow = null;
                    if (str1 != "" || str2 != "")
                    {
                        DataTable data = sqlProcessor.AccurateQuery_AND_Like(str1, "cInvName", str2, "cInvStd");
                        if (data.Rows.Count > 0)
                        {
                            if (data.Rows.Count == 1)
                            {
                                newRow = data.Rows[0];
                                rowlist.Add(data.Rows[0]);
                                indexlist.Add(index);
                            }
                            else if (data.Rows.Count > 1)
                            {
                                dtData.Clear();
                                dtData.Rows.Add(dt.Rows[index].ItemArray);

                                DataForm form2 = new DataForm(sqlProcessor, data, dtData);
                                if (form2.ShowDialog() == DialogResult.OK)
                                {
                                    DataRow rowf = form2._row;
                                    newRow = rowf;
                                    rowlist.Add(rowf);
                                    indexlist.Add(index);
                                }
                            }
                        }
                    }
                    row.BeginEdit();
                    //progressBarForm.AddProgress(40);
                    if (newRow != null)
                    {
                        foreach (var map in param.Maps)
                        {
                            if (row.Table.Columns.Contains(map.Value) && newRow.Table.Columns.Contains(map.Name))
                            {
                                row[map.Value] = newRow[map.Name].ToString();
                            }
                            else if (row.Table.Columns.Contains(map.Value) && newRow.Table.Columns.Contains(map.Value))
                            {
                                row[map.Value] = newRow[map.Value].ToString();
                            }
                        }
                    }
                    row.EndEdit();
                }
            }
            catch (Exception e1)
            {
                MessageBox.Show(e1.Message);
            }

            dt.AcceptChanges();
        }