/// <summary> /// Проверка корректности вставляемых данных /// </summary> /// <param name="dtp">Данные, уже имеющиеся в таблице</param> /// <param name="row">Вставляемые данные</param> /// <returns>Возвращает True если строка уже есть, иначе False</returns> private bool CheckCorrect(DataTable dtp, PlanProductsRow row) { bool flag = false; for (int i = 0; i < dtp.Rows.Count; i++) { if (dtp.Rows[i].Field<long>(0) == row.ProductCode && Convert.ToInt32(dtp.Rows[i].ItemArray[2]) == row.Month && Convert.ToInt32(dtp.Rows[i].ItemArray[3]) == row.Year) { flag = true; break; } } return flag; }
public AddPlanProductsRowForm(FormType ftype, PlanProductsRow data) { InitializeComponent(); switch (ftype) { case FormType.ADDFORM: this.Text = "Добавление записи в таблицу"; break; case FormType.EDITFORM: this.Text = "Редактирование записи"; break; } FType = ftype; InitializeData(); LoadDataToControls(data); }
public static DatabaseLib.ParametersCollection ConvertPlanProductsRowToParameters(PlanProductsRow row) { DatabaseLib.ParametersCollection par = new DatabaseLib.ParametersCollection(); par.Add("ProductCode", row.ProductCode, DbType.UInt64); par.Add("PlanCount", row.PlanCount, DbType.UInt64); par.Add("Month", row.Month, DbType.Single); par.Add("Year", row.Year, DbType.Single); return par; }
public static PlanProductsRow[] ConvertDataTableToPlanProductsRow(DataTable dt) { PlanProductsRow[] res = new PlanProductsRow[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { res[i].ProductCode = dt.Rows[i].Field<long>(0); res[i].PlanCount = Convert.ToInt32(dt.Rows[i].ItemArray[1]); res[i].Month = Convert.ToInt32(dt.Rows[i].ItemArray[2]); res[i].Year = Convert.ToInt32(dt.Rows[i].ItemArray[3]); } return res; }
public static void CreateAndFillPlanProductsTable(PlanProductsRow[] data) { CreatePlanProductsTable(); FillPlanProductsTable(data); }
/// <summary> /// Загрузка данных из файла для таблицы "План выпуска изделий" /// </summary> /// <param name="fname">Полный путь к файлу, содержащим данные для таблицы</param> /// <returns>Возвращает массив структур PlanProductsRow</returns> public static PlanProductsRow[] LoadDataForPlanProducts(string fname) { StreamReader file = new StreamReader(fname); int count = 0; string[] mas = new string[0]; while (!file.EndOfStream) { string str = file.ReadLine(); count++; Array.Resize(ref mas, count); mas[count - 1] = str; } file.Close(); PlanProductsRow[] prod = new PlanProductsRow[count]; for (int i = 0; i < count; i++) { string[] tmp = mas[i].Split('\t'); prod[i].ProductCode = Convert.ToInt64(tmp[0]); prod[i].PlanCount = Convert.ToInt32(tmp[1]); prod[i].Month = Convert.ToInt32(tmp[2]); prod[i].Year = Convert.ToInt32(tmp[3]); } return prod; }
public static void FillPlanProductsTable(PlanProductsRow[] data) { DatabaseLib.ParametersCollection[] pars = new DatabaseLib.ParametersCollection[data.Length]; for (int i = 0; i < data.Length; i++) pars[i] = Converter.ConvertPlanProductsRowToParameters(data[i]); dbf.InsertMany("PlanProducts", pars); }
// кнопка ОК private void okButton_Click(object sender, EventArgs e) { // проверка полей на пустоту if (radMultiColumnComboBox1.SelectedIndex >= 0 || radTextBox1.Text != "" || radTextBox2.Text != "" || radDropDownList1.SelectedIndex >= 0) { PlanProductsRow row = new PlanProductsRow(); int ind = radMultiColumnComboBox1.SelectedIndex; row.ProductCode = dtp.Rows[ind].Field<long>(0); row.PlanCount = Convert.ToInt32(radTextBox1.Text); row.Month = Convert.ToInt32(radDropDownList1.SelectedIndex + 1); row.Year = Convert.ToInt32(radTextBox2.Text); switch (FType) { case FormType.ADDFORM: // проверка корректности вставки данных if (!CheckCorrect(dtp, row)) { // вставка данных в таблицу DBWorker.InsertDataRowToTable("ПВИ", row); } else MessageBox.Show("Вставляемые данные должны быть уникальными! Уже есть строка в таблице с такими данными!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); break; case FormType.EDITFORM: DatabaseLib.ParametersCollection par = Converter.ConvertPlanProductsRowToParameters(row); string where = String.Format("(ProductCode = {0}) and (PlanCount = {1}) and (Month = {2}) and (Year = {3})", Row.ProductCode, Row.PlanCount, Row.Month, Row.Year); DBWorker.UpdateRow("PlanProducts", where, par); break; } this.DialogResult = DialogResult.OK; this.Close(); } else MessageBox.Show("Не заданы значения для новой записи!", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); }
// загрузка данных в контролы для редактирования private void LoadDataToControls(PlanProductsRow data) { for (int i = 0; i < radMultiColumnComboBox1.EditorControl.Rows.Count; i++) if ((long)radMultiColumnComboBox1.EditorControl.Rows[i].Cells[0].Value == data.ProductCode) { radMultiColumnComboBox1.SelectedIndex = i; break; } radTextBox1.Text = data.PlanCount.ToString(); radDropDownList1.SelectedIndex = data.Month - 1; radTextBox2.Text = data.Year.ToString(); Row = data; }