/// <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; } }
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(); }