private void btnSearch_Click(object sender, EventArgs e) { if (tbCode.Text.Length < 4 & btnSearch.Visible) { searchResult = new FrmSearchResult(tbNames.Text, SearchBy.Name); } else { searchResult = new FrmSearchResult(tbCode.Text, SearchBy.Code); } if (searchResult.ShowDialog() == DialogResult.Yes) { tbCode.Text = searchResult.SelectedCode; tbNames.Text = searchResult.SelectedName; tbPriceDC.Text = searchResult.SelectedPriceDC; tbPricePC.Text = searchResult.SelectedPricePC; cbDiscont.Checked = searchResult.SelectedDiscont; // Устанавливаем в ComboBox с периодами каталога выбранное значение. Если такового нет в БД - добавляем if (CatalogPeriod.SearchSuchCatalog(searchResult.SelectedPeriodText)) { cbCatalog.Text = searchResult.SelectedPeriodText; } else { // добавляем каталожный период в БД (без проверки на его существование) SkladBase.AddCatalogPeriod(searchResult.selectedPeriod, searchResult.selectedYear); cbCatalog.DataSource = CatalogPeriod.catalogPeriod; cbCatalog.Text = searchResult.SelectedPeriodText; } } }
private void btAddCategory_Click(object sender, EventArgs e) { foreach (CategoryOne item in Category.category) { if (item.Name.ToLower().Trim() == (cbCategory.Text.ToLower().Trim())) { MessageBox.Show($"Категория \"{cbCategory.Text}\" уже существует." + Environment.NewLine + Environment.NewLine + "Введите новую категорию.", "Ошибка"); return; } } if (string.IsNullOrEmpty(cbCategory.Text)) { MessageBox.Show("Введите новую категорию.", "Ошибка"); return; } if (cbCategory.Text.Length > 25) { MessageBox.Show("До 25 символов", "Ошибка"); return; } SkladBase.AddCategory(cbCategory.Text.Trim()); MessageBox.Show($"Категория \"{cbCategory.Text.Trim()}\" добавлена", "Добавлено"); string categoryAdded = cbCategory.Text.Trim(); Category.MakeList(); cbCategory.DataSource = Category.category; cbCategory.Text = categoryAdded; }
// обновляем грид после ввода каждого символа private void tbCode_TextChanged(object sender, EventArgs e) { int input; if ((tbCode.Text.Length >= 4 && int.TryParse(tbCode.Text, out input) && input >= 1000) | tbNames.Text.Length > 0) { btnSearch.Enabled = true; //btnSearch.Visible != true && } else { btnSearch.Enabled = false; } DataTable res = SkladBase.SearchProdByCode(tbCode.Text); dgvMain.DataSource = res; //заполняем грид if (res.Rows.Count == 0) // если после поиска введенного кода выборка пуста, очищаем грид Details { DataTable dt = dgvDetails.DataSource as DataTable; if (dt != null) { dt.Clear(); } } }
private void btnAdd_Click(object sender, EventArgs e) { frmAdd = new FrmAdd(tbCode.Text, tbNames.Text); if (frmAdd.ShowDialog() == DialogResult.OK) { dgvMain.DataSource = SkladBase.SearchProdByCode(""); } }
// отрабатывает изменения выделения в основном гриде (мышью или клавишами) private void dgvMain_SelectionChanged(object sender, EventArgs e) { if (dgvMain.CurrentRow != null) { currentCode = dgvMain.CurrentRow.Cells["Code"].Value.ToString(); } dgvDetails.DataSource = SkladBase.FilldgvDetails(currentCode); }
public FrmSearchResult(string fieldSearch, SearchBy searchBy) : this() { dgvDB.DataSource = SkladBase.SearchForAdd(fieldSearch, searchBy); dgvPrice.DataSource = ExcelSearch.Search(fieldSearch, searchBy); this.Text += string.Format($" ({fieldSearch})"); gbBD.Text += " (" + (dgvDB.DataSource as DataTable).Rows.Count.ToString() + ")"; gbPrices.Text += " (" + (dgvPrice.DataSource as DataTable).Rows.Count.ToString() + ")"; }
private void btnAddCatalog_Click(object sender, EventArgs e) { frmAddPeriod = new FrmAddPeriod(); DialogResult dRes = frmAddPeriod.ShowDialog(); if (dRes == DialogResult.OK) { // добавляем каталожный период в БД (без проверки на его существование) SkladBase.AddCatalogPeriod(frmAddPeriod.Period, frmAddPeriod.Year); cbCatalog.DataSource = CatalogPeriod.catalogPeriod; cbCatalog.Text = frmAddPeriod.InputedPeriodText; } }
private void tsmImport_Click(object sender, EventArgs e) { openfdImport.Filter = "Excel (*.xlsx)|*.xlsx"; openfdImport.DefaultExt = "xlsx"; if (openfdImport.ShowDialog() == DialogResult.OK && File.Exists(openfdImport.FileName)) { ImportExport.Import(openfdImport.FileName); CatalogType.MakeList(); Category.MakeList(); CatalogPeriod.MakeList(); Catalog.MakeList(); dgvMain.DataSource = SkladBase.SearchProdByCode(tbCode.Text); } }
// Обрабатываем нажатие кнопки 'X' в гриде private void dgvMain_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex != 0) { return; } SkladBase.DeleteProdFromPrice(Int32.Parse(currentCode)); SkladBase.DeleteProdFromProductTable(Int32.Parse(currentCode)); dgvMain.Rows.Remove(dgvMain.CurrentRow); if (dgvMain.RowCount > 0) { dgvMain.CurrentRow.Selected = true; } }
// обрабатываем нажатие на +/- в грид Detail private void dgvDetails_CellContentClick(object sender, DataGridViewCellEventArgs e) { // если грид Detail пуст, не обрабатывать нажатие на кнопку +/-, т.к. генерируется исключение if (((sender as DataGridView).DataSource as DataTable) == null || ((sender as DataGridView).DataSource as DataTable).Rows.Count == 0) { return; } if (e.RowIndex == -1) { return; } int quant = (int)dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value; //текущ. знач. Quantity int code = (int)dgvDetails.Rows[e.RowIndex].Cells["CodeDetails"].Value; //текущ. зна. code decimal pc = (decimal)dgvDetails.Rows[e.RowIndex].Cells["PC"].Value; decimal dc = (decimal)dgvDetails.Rows[e.RowIndex].Cells["DC"].Value; bool discont = (bool)dgvDetails.Rows[e.RowIndex].Cells["Disc"].Value; switch (e.ColumnIndex) { case 0: // если нажали на кнопку "-1" if (quant > 1) { SkladBase.UpDownQtyPrice(code, quant, dc, pc, discont, UpDownOperation.Down); // вызываем метод уменьшения кол-ва продукта в DB // Обновляем кол-во в ячейках обоих гридов dgvMain.SelectedRows[0].Cells["Quantity"].Value = (int)dgvMain.SelectedRows[0].Cells["Quantity"].Value - 1; // = Total quant - 1; dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value = (int)dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value - 1; // = Total quant - 1; } break; case 1: // если нажали на кнопку "+1" SkladBase.UpDownQtyPrice(code, quant, dc, pc, discont, UpDownOperation.Up); // вызываем метод уменьшения кол-ва продукта в DB dgvMain.SelectedRows[0].Cells["Quantity"].Value = (int)dgvMain.SelectedRows[0].Cells["Quantity"].Value + 1; // = Total quant + 1; dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value = (int)dgvDetails.Rows[e.RowIndex].Cells["Quant"].Value + 1; // = Total quant + 1; break; case 2: // если нажали "Х" во грид Detail DeleteProdFromPrice(code, quant, dc, pc, discont, e.RowIndex); break; } }
private void frmMain_Load(object sender, EventArgs e) { if (DataBase.CheckConnection()) { if (!DataBase.CheckExistDB()) { DataBase.CreateDB(); DataBase.CreateAllTabels(); DataBase.FillTestData(); } // ! используются только во время разработки #if DEVELOP CatalogPeriod.FillDBCatalog(); Catalog.FillDBCatalog(); #endif CatalogType.MakeList(); Category.MakeList(); CatalogPeriod.MakeList(); Catalog.MakeList(); } else { MessageBox.Show("Невозможно установить соединение с базой данных" + Environment.NewLine + "Проверьте строку подключения (connectionString) к вашему MS SQL Server" + Environment.NewLine + "в файле \"" + System.Reflection.Assembly.GetExecutingAssembly().Location + ".config\"", "Ошибка соединения"); Environment.Exit(2); } // заполняем грид при загрузке всеми продуктами dgvMain.DataSource = SkladBase.SearchProdByCode(tbCode.Text); dgvMain.SelectionChanged += new System.EventHandler(dgvMain_SelectionChanged); // если грид заполнен, получаем код первого продукта и заполняем грид Details if (dgvMain.CurrentRow != null) { currentCode = dgvMain.CurrentRow.Cells["Code"].Value.ToString(); dgvDetails.DataSource = SkladBase.FilldgvDetails(currentCode); } tbCode.Select(); }
private void btnSearch_Click(object sender, EventArgs e) { if (tbCode.Text.Length < 4 & btnSearch.Visible) { searchResult = new FrmSearchResult(tbNames.Text, SearchBy.Name); } else { searchResult = new FrmSearchResult(tbCode.Text, SearchBy.Code); } if (searchResult.ShowDialog() == DialogResult.Yes) { frmAdd = new FrmAdd(searchResult.SelectedCode, searchResult.SelectedName, searchResult.SelectedPriceDC, searchResult.SelectedPricePC, searchResult.SelectedDiscont, searchResult.SelectedPeriodText, searchResult.selectedPeriod, searchResult.selectedYear); frmAdd.ShowDialog(); } dgvMain.DataSource = SkladBase.SearchProdByName(""); }
private void btnAdd_Click(object sender, EventArgs e) { if (CheckInputData()) // Проверяем введенные данные в форме { // Проверяем есть ли такой период и тип в БД.Если есть, получаем id(табл Catalog), если нет - создаём и получаем id int catalogId = SkladBase.AddCatalog((int)cbCatalog.SelectedValue, cbTypeCatalog.SelectedIndex + 1); // Проверяем есть ли такой продукт в БД. Если есть, получаем id (табл Product), если нет - создаём и получаем id SkladBase.AddProduct(tbCode.Text, tbNames.Text, (int)cbCategory.SelectedValue); // проверяем наличие такого продукта в БД. int quantityInBD; int idProductInPrice = SkladBase.CheckExistProductFull(out quantityInBD, tbCode.Text, Convert.ToDecimal(tbPricePC.Text), Convert.ToDecimal(tbPriceDC.Text), catalogId, cbDiscont.Checked); if (0 == idProductInPrice) // если нет, то добавляем { SkladBase.AddProductToPrice(tbCode.Text, Convert.ToDecimal(tbPricePC.Text), Convert.ToDecimal(tbPriceDC.Text), catalogId, (int)numQuantity.Value, cbDiscont.Checked, tbDescription.Text); } else // если есть, добавляем количество { SkladBase.UpdateProductQuantInPrice(idProductInPrice, quantityInBD + (int)numQuantity.Value); } this.DialogResult = DialogResult.OK; } ///проверяем все поля на валидность ///проверяем на существование каталога (период+тип) табл Catalog ///если есть, берем id ///если нет - создаём, берём id созданного ///обновляем коллекцию catalog ///проверяем на существование такого продукта в табл Product, берем его id ///если нет - то создаём, берем id /// ///создаём продукт в прайсе ///устанавливаем dialogresult = OK; /// /// в frmMain ///обновляем колекцию и датагриды /// /// }
public FrmAdd(string code, string name, string priceDC, string pricePC, bool discont, string periodText, int period, int year) : this() { tbCode.Text = code; tbNames.Text = name; tbPriceDC.Text = priceDC; tbPricePC.Text = pricePC; cbDiscont.Checked = discont; // Устанавливаем в ComboBox с периодами каталога выбранное значение. Если такового нет в БД - добавляем if (CatalogPeriod.SearchSuchCatalog(periodText)) { cbCatalog.Text = periodText; } else { // добавляем каталожный период в БД (без проверки на его существование) SkladBase.AddCatalogPeriod(period, year); cbCatalog.DataSource = CatalogPeriod.catalogPeriod; cbCatalog.Text = periodText; } }
private void frmMain_Load(object sender, EventArgs e) { // File.Delete(DataBase.dbFile); if (!DataBase.CheckExistDB()) { DataBase.CreateDB(); DataBase.CreateAllTabels(); // DataBase.FillTestData(); // Используется для тестового заполнения БД } CatalogType.MakeList(); #if DEVELOP // ! используются только во время разработки CatalogPeriod.FillDBCatalog(); Catalog.FillDBCatalog(); #endif Category.MakeList(); CatalogPeriod.MakeList(); Catalog.MakeList(); // заполняем грид при загрузке всеми продуктами dgvMain.DataSource = SkladBase.SearchProdByCode(tbCode.Text); dgvMain.SelectionChanged += new System.EventHandler(dgvMain_SelectionChanged); //если грид заполнен, получаем код первого продукта и заполняем грид Details if (dgvMain.CurrentRow != null) { currentCode = dgvMain.CurrentRow.Cells["Code"].Value.ToString(); dgvDetails.DataSource = SkladBase.FilldgvDetails(currentCode); } tbCode.Select(); }
private void DeleteProdFromPrice(int code, int quant, decimal dc, decimal pc, bool discont, int rowIndex) { SkladBase.DeleteProdFromPrice(code, quant, dc, pc, discont); dgvDetails.Rows.RemoveAt(rowIndex); //удаляем строку из грид Detail // Корректируем кол-во в основном гриде if (dgvDetails.Rows.Count > 0) { dgvMain.SelectedRows[0].Cells["Quantity"].Value = (int)dgvMain.SelectedRows[0].Cells["Quantity"].Value - quant; } else { SkladBase.DeleteProdFromProductTable(code); // удаляем продукт из табл Product dgvMain.Rows.Remove(dgvMain.CurrentRow); if (dgvMain.RowCount > 0) { dgvMain.CurrentRow.Selected = true; } } }
private void tbNames_TextChanged(object sender, EventArgs e) { if (tbNames.Text.Length > 0 || tbCode.Text.Length >= 4) { btnSearch.Enabled = true; } else { btnSearch.Enabled = false; } DataTable res = SkladBase.SearchProdByName(tbNames.Text); dgvMain.DataSource = res; //заполняем грид if (res.Rows.Count == 0) // если после поиска введенного кода выборка пуста, очищаем грид Details { DataTable dt = dgvDetails.DataSource as DataTable; if (dt != null) { dt.Clear(); } } }