//Отображение доходов пользователя, вошедшего в систему private void LoadIncomes() { Add_btn.Enabled = true; Save_changes_btn.Enabled = true; Delete_btn.Enabled = true; Export_btn.Enabled = true; Print_btn.Enabled = true; SqlServer sql = new SqlServer(); if (CurrentUser.GetLogin() == "admin") { //Вывод информации обо всех пользователях if (Name_comboBox.SelectedIndex.ToString() == "0") { string sqlQuery = "SELECT inc.Id AS 'Номер', usr.Name AS 'Имя', inc.Date AS 'Дата', " + "cat.Name AS 'Категория', inc.Value AS 'Сумма', inc.Description AS 'Описание' " + "FROM [Users] AS usr INNER JOIN [Incomes] AS inc ON usr.Id = inc.User_id " + " INNER JOIN [Categories] AS cat ON cat.Id = inc.Category_id"; Incomes_dgv.DataSource = sql.ExcuteData(sqlQuery); //Вывод статистики по доходам Stat1_label.Text = "Доходы за выбанный период: статистика недоступна."; Stat2_label.Text = "Доходы за месяц: статистика недоступна."; Stat3_label.Text = "Доходы за неделю: статистика недоступна."; From_dateTimePicker.Enabled = false; To_dateTimePicker.Enabled = false; Save_changes_btn.Enabled = false; //Вывод статистики по планированию Message_richTextBox.Text = string.Empty; } //Вывод информациии о выбраном пользователе в Name_comboBox else { string sqlQuery = string.Format("SELECT inc.Id AS 'Номер', usr.Name AS 'Имя', inc.Date AS 'Дата', " + "cat.Name AS 'Категория', inc.Value AS 'Сумма', inc.Description AS 'Описание' " + "FROM [Users] AS usr INNER JOIN [Incomes] AS inc ON usr.Id = inc.User_id " + " INNER JOIN [Categories] AS cat ON cat.Id = inc.Category_id WHERE usr.Id = '{0}'", Name_comboBox.SelectedValue); Incomes_dgv.DataSource = sql.ExcuteData(sqlQuery); //Вывод статистики по доходам Stat1_label.Text = "Доходы за выбранный период: " + StatIncomes(From_dateTimePicker.Value.Date.ToString("yyyy-MM-dd"), To_dateTimePicker.Value.Date.ToString("yyyy-MM-dd")) + " рублей."; Stat2_label.Text = "Доходы за месяц: " + StatIncomes(DateTime.Now.Date.AddMonths(-1).ToString("yyyy-MM-dd"), DateTime.Now.Date.ToString("yyyy-MM-dd")) + " рублей."; Stat3_label.Text = "Доходы за неделю: " + StatIncomes(DateTime.Now.Date.AddDays(-7).ToString("yyyy-MM-dd"), DateTime.Now.Date.ToString("yyyy-MM-dd")) + " рублей."; From_dateTimePicker.Enabled = true; To_dateTimePicker.Enabled = true; Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } } //Вывод информации о текущем пользователе else { string sqlQuery = string.Format("SELECT inc.Id AS 'Номер', usr.Name AS 'Имя', inc.Date AS 'Дата', " + "cat.Name AS 'Категория', inc.Value AS 'Сумма', inc.Description AS 'Описание' " + "FROM [Users] AS usr INNER JOIN [Incomes] AS inc ON usr.Id = inc.User_id " + " INNER JOIN [Categories] AS cat ON cat.Id = inc.Category_id WHERE usr.Login = '******'", CurrentUser.GetLogin()); Incomes_dgv.DataSource = sql.ExcuteData(sqlQuery); //Скрытие имени пользователя для неадминистратора Incomes_dgv.Columns[1].Visible = false; //Вывод статистики по доходам Stat1_label.Text = "Доходы за выбранный период: " + StatIncomes(From_dateTimePicker.Value.Date.ToString("yyyy-MM-dd"), To_dateTimePicker.Value.Date.ToString("yyyy-MM-dd")) + " рублей."; Stat2_label.Text = "Доходы за месяц: " + StatIncomes(DateTime.Now.Date.AddMonths(-1).ToString("yyyy-MM-dd"), DateTime.Now.Date.ToString("yyyy-MM-dd")) + " рублей."; Stat3_label.Text = "Доходы за неделю: " + StatIncomes(DateTime.Now.Date.AddDays(-7).ToString("yyyy-MM-dd"), DateTime.Now.Date.ToString("yyyy-MM-dd")) + " рублей."; From_dateTimePicker.Enabled = true; To_dateTimePicker.Enabled = true; Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } Incomes_dgv.Columns[0].Visible = false; //Нельзя редактировать имя пользователя Incomes_dgv.Columns[1].ReadOnly = true; //Формат столбца с суммой (2 знака после запятой) DataGridViewCellStyle dec = new DataGridViewCellStyle(); dec.Format = "N2"; Incomes_dgv.Columns["Сумма"].DefaultCellStyle = dec; }
//Отображение планирования private void LoadPlaning() { Add_btn.Enabled = true; Save_changes_btn.Enabled = true; Delete_btn.Enabled = true; Export_btn.Enabled = true; Print_btn.Enabled = true; SqlServer sql = new SqlServer(); if (CurrentUser.GetLogin() == "admin") { //Вывод информации обо всех пользователях if (Name_comboBox.SelectedIndex.ToString() == "0") { string sqlQuery = "SELECT pln.Id AS 'Номер', usr.Name AS 'Имя', cat.Name AS 'Наименование категории', " + "pln.Month AS 'Месяц', pln.Year AS 'Год', pln.Value AS 'Сумма' " + "FROM [Planings] AS pln INNER JOIN [Users] AS usr ON pln.User_id = usr.Id " + "INNER JOIN [Categories] AS cat ON pln.Category_id = cat.Id"; Planing_dgv.DataSource = sql.ExcuteData(sqlQuery); //Акстивность кнопки "Сохранить изменения" Save_changes_btn.Enabled = false; //Вывод статистики по планированию Message_richTextBox.Text = string.Empty; } //Вывод информациии о выбраном пользователе в Name_comboBox else { string sqlQuery = string.Format("SELECT pln.Id AS 'Номер', usr.Name AS 'Имя', cat.Name AS 'Наименование категории', " + "pln.Month AS 'Месяц', pln.Year AS 'Год', pln.Value AS 'Сумма' " + "FROM [Planings] AS pln INNER JOIN [Users] AS usr ON pln.User_id = usr.Id " + "INNER JOIN [Categories] AS cat ON pln.Category_id = cat.Id WHERE usr.Id = '{0}'", Name_comboBox.SelectedValue); Planing_dgv.DataSource = sql.ExcuteData(sqlQuery); //Акстивность кнопки "Сохранить изменения" Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } } //Вывод информации о текущем пользователе else { string sqlQuery = string.Format("SELECT pln.Id AS 'Номер', usr.Name AS 'Имя', cat.Name AS 'Наименование категории', " + "pln.Month AS 'Месяц', pln.Year AS 'Год', pln.Value AS 'Сумма' " + "FROM [Planings] AS pln INNER JOIN [Users] AS usr ON pln.User_id = usr.Id " + "INNER JOIN [Categories] AS cat ON pln.Category_id = cat.Id WHERE usr.Login = '******'", CurrentUser.GetLogin()); Planing_dgv.DataSource = sql.ExcuteData(sqlQuery); //Скрытие имени пользователя для неадминистратора Planing_dgv.Columns[1].Visible = false; //Акстивность кнопки "Сохранить изменения" Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } Planing_dgv.Columns[0].Visible = false; //Нельзя редактировать имя пользователя Planing_dgv.Columns[1].ReadOnly = true; //Статистика Stat1_label.Text = "Статистика за выбранный период: недоступно."; Stat2_label.Text = "Статистика за месяц: недоступно."; Stat3_label.Text = "Статистика за неделю: недоступно."; From_dateTimePicker.Enabled = false; To_dateTimePicker.Enabled = false; //Формат столбца с суммой (2 знака после запятой) DataGridViewCellStyle dec = new DataGridViewCellStyle(); dec.Format = "N2"; Planing_dgv.Columns["Сумма"].DefaultCellStyle = dec; }
//Отображение категорий private void LoadCategories() { Add_btn.Enabled = true; Save_changes_btn.Enabled = true; Delete_btn.Enabled = true; Export_btn.Enabled = true; Print_btn.Enabled = true; SqlServer sql = new SqlServer(); if (CurrentUser.GetLogin() == "admin") { //Вывод информации обо всех пользователях if (Name_comboBox.SelectedIndex.ToString() == "0") { string sqlQuery = "SELECT cat.Id AS 'Номер', usr.Name AS 'Имя пользователя', cat.Name AS 'Наименование категории' " + "FROM [Categories] AS cat INNER JOIN [Users] AS usr ON cat.User_id = usr.Id"; Categories_dgv.DataSource = sql.ExcuteData(sqlQuery); //Акстивность кнопки "Сохранить изменения" Save_changes_btn.Enabled = false; //Вывод статистики по планированию Message_richTextBox.Text = string.Empty; } //Вывод информациии о выбраном пользователе в Name_comboBox else { string sqlQuery = string.Format("SELECT cat.Id AS 'Номер', usr.Name AS 'Имя пользователя', cat.Name AS 'Наименование категории' " + "FROM [Categories] AS cat INNER JOIN [Users] AS usr ON cat.User_id = usr.Id " + "WHERE usr.Id = '{0}'", Name_comboBox.SelectedValue); Categories_dgv.DataSource = sql.ExcuteData(sqlQuery); //Акстивность кнопки "Сохранить изменения" Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } } //Вывод информации о текущем пользователе else { string sqlQuery = string.Format("SELECT cat.Id AS 'Номер', usr.Name AS 'Имя пользователя', cat.Name AS 'Наименование категории' " + "FROM [Categories] AS cat INNER JOIN [Users] AS usr ON cat.User_id = usr.Id " + "WHERE usr.Login = '******'", CurrentUser.GetLogin()); Categories_dgv.DataSource = sql.ExcuteData(sqlQuery); //Скрытие имени пользователя для неадминистратора Categories_dgv.Columns[1].Visible = false; //Акстивность кнопки "Сохранить изменения" Save_changes_btn.Enabled = true; } Categories_dgv.Columns[0].Visible = false; //Нельзя редактировать имя пользователя Categories_dgv.Columns[1].ReadOnly = true; //Статистика Stat1_label.Text = "Статистика за выбранный период: недоступно."; Stat2_label.Text = "Статистика за месяц: недоступно."; Stat3_label.Text = "Статистика за неделю: недоступно."; From_dateTimePicker.Enabled = false; To_dateTimePicker.Enabled = false; //Вывод статистики по планированию StatPlaning(); }
//Отображение долгов private void LoadDebts() { Add_btn.Enabled = true; Save_changes_btn.Enabled = true; Delete_btn.Enabled = true; Export_btn.Enabled = true; Print_btn.Enabled = true; SqlServer sql = new SqlServer(); if (CurrentUser.GetLogin() == "admin") { //Вывод информации обо всех пользователях if (Name_comboBox.SelectedIndex.ToString() == "0") { string sqlQuery = "SELECT dbt.Id AS 'Номер', usr.Name AS 'Имя', dbt.Date AS 'Дата', " + " dbt.Value AS 'Сумма', dbt.Description AS 'Описание'," + " dbt.Return_value AS 'Сумма возврата', dbt.Return_date AS 'Дата возврата' " + "FROM [Users] AS usr INNER JOIN [Debts] AS dbt ON usr.Id = dbt.User_id"; Debts_dgv.DataSource = sql.ExcuteData(sqlQuery); //Вывод статистики по длогам Stat1_label.Text = "Долги за выбранный период: статистика недоступна."; Stat2_label.Text = "Долги за месяц: статистика недоступна."; Stat3_label.Text = "Долги за неделю: статистика недоступна."; From_dateTimePicker.Enabled = false; To_dateTimePicker.Enabled = false; Save_changes_btn.Enabled = false; //Вывод статистики по планированию Message_richTextBox.Text = string.Empty; } //Вывод информациии о выбраном пользователе в Name_comboBox else { string sqlQuery = string.Format("SELECT dbt.Id AS 'Номер', usr.Name AS 'Имя', dbt.Date AS 'Дата', " + " dbt.Value AS 'Сумма', dbt.Description AS 'Описание'," + " dbt.Return_value AS 'Сумма возврата', dbt.Return_date AS 'Дата возврата' " + "FROM [Users] AS usr INNER JOIN [Debts] AS dbt ON usr.Id = dbt.User_id " + "WHERE usr.Id = '{0}'", Name_comboBox.SelectedValue); Debts_dgv.DataSource = sql.ExcuteData(sqlQuery); //Вывод статистики по долгам Stat1_label.Text = "Долги за выбранный период: статистика недоступна."; Stat2_label.Text = "Долги за месяц: статистика недоступна."; Stat3_label.Text = "Долги за неделю: статистика недоступна."; From_dateTimePicker.Enabled = true; To_dateTimePicker.Enabled = true; Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } } //Вывод информации о текущем пользователе else { string sqlQuery = string.Format("SELECT dbt.Id AS 'Номер', usr.Name AS 'Имя', dbt.Date AS 'Дата', " + " dbt.Value AS 'Сумма', dbt.Description AS 'Описание'," + " dbt.Return_value AS 'Сумма возврата', dbt.Return_date AS 'Дата возврата' " + "FROM [Users] AS usr INNER JOIN [Debts] AS dbt ON usr.Id = dbt.User_id " + "WHERE usr.Login = '******'", CurrentUser.GetLogin()); Debts_dgv.DataSource = sql.ExcuteData(sqlQuery); //Скрытие имени пользователя для неадминистратора Debts_dgv.Columns[1].Visible = false; //Вывод статистики по долгам Stat1_label.Text = "Долги за выбранный период: статистика недоступна."; Stat2_label.Text = "Долги за месяц: статистика недоступна."; Stat3_label.Text = "Долги за неделю: статистика недоступна."; From_dateTimePicker.Enabled = true; To_dateTimePicker.Enabled = true; Save_changes_btn.Enabled = true; //Вывод статистики по планированию StatPlaning(); } //Нельзя редактировать имя пользователя Debts_dgv.Columns[1].ReadOnly = true; Debts_dgv.Columns[0].Visible = false; //Формат столбца с суммой (2 знака после запятой) DataGridViewCellStyle dec = new DataGridViewCellStyle(); dec.Format = "N2"; Debts_dgv.Columns["Сумма"].DefaultCellStyle = dec; Debts_dgv.Columns["Сумма возврата"].DefaultCellStyle = dec; }
//Редактирование планирования private void EditPlaning() { SqlServer sql = new SqlServer(); string upd_pln_id = string.Empty; int upd_pln_index = -1; try { //Id дохода выбранной строки upd_pln_id = Planing_dgv.CurrentRow.Cells["Номер"].Value.ToString(); //Номер выбранной строки upd_pln_index = Planing_dgv.CurrentRow.Index; } catch { MessageBox.Show("Не удалось отредактировать данные!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Номер ячейки int cell = 2; //Поиск категории у пользователя string sqlQuery = string.Format("SELECT cat.Id FROM [Categories] AS cat WHERE cat.Name = N'{0}' AND cat.User_id = {1}", Planing_dgv.Rows[upd_pln_index].Cells[cell].Value.ToString(), Name_comboBox.SelectedValue); var cat_id = sql.ExcuteData(sqlQuery); //Если категория найдена у текущего пользователя if (cat_id.Rows.Count != 0) { string Month = Planing_dgv.Rows[upd_pln_index].Cells[cell + 1].Value.ToString(); string Year = Planing_dgv.Rows[upd_pln_index].Cells[cell + 2].Value.ToString(); string Value = Planing_dgv.Rows[upd_pln_index].Cells[cell + 3].Value.ToString().Replace(",", "."); //Поиск уже существующего планирования у пользователя sqlQuery = string.Format("SELECT * FROM [Planings] WHERE Category_id = '{0}' AND Month = '{1}' AND Year = '{2}' AND User_id = '{3}'", cat_id.Rows[0][0], Month, Year, Name_comboBox.SelectedValue); var plan = sql.ExcuteData(sqlQuery); //Если планирование уже задано, выводим сообщение об ошибке if (plan.Rows.Count != 0) { MessageBox.Show("У выбранного пользователя такое планирование уже задано!" + Environment.NewLine + "Строка " + (upd_pln_index + 1).ToString() + " не обновлена!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } //Иначе обновляем строку в БД else { sqlQuery = string.Format("UPDATE [Planings] SET Category_id = '{0}', Month = '{1}', Year = '{2}', Value = '{3}' " + "WHERE Id = '{4}'", cat_id.Rows[0][0], Month, Year, Value, Planing_dgv.Rows[upd_pln_index].Cells[0].Value.ToString()); sql.ExcuteDataNonQuery(sqlQuery); MessageBox.Show("Строка " + (upd_pln_index + 1).ToString() + " обновлена!", "Строка обновлена", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } //Иначе показываем MessageBox с ошибкой else { MessageBox.Show("У выбранного пользователя " + "категория " + Planing_dgv.Rows[upd_pln_index].Cells[cell].Value.ToString() + " не найдена!" + Environment.NewLine + "Строка " + (upd_pln_index + 1).ToString() + " не обновлена!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } }
//Редактирование доходов private void EditIncomes() { SqlServer sql = new SqlServer(); string upd_inc_id = string.Empty; int upd_inc_index = -1; try { //Id дохода выбранной строки upd_inc_id = Incomes_dgv.CurrentRow.Cells["Номер"].Value.ToString(); //Номер выбранной строки upd_inc_index = Incomes_dgv.CurrentRow.Index; } catch { MessageBox.Show("Не удалось отредактировать данные!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Номер ячейки int cell = 2; //Поиск категории у пользователя string sqlQuery = string.Format("SELECT cat.Id FROM [Categories] AS cat WHERE cat.Name = N'{0}' AND cat.User_id = {1}", Incomes_dgv.Rows[upd_inc_index].Cells[cell + 1].Value.ToString(), Name_comboBox.SelectedValue); var cat_id = sql.ExcuteData(sqlQuery); //Если категория найдена у текущего пользователя, обновляем строку в БД if (cat_id.Rows.Count != 0) { DateTime Date = Convert.ToDateTime(Incomes_dgv.Rows[upd_inc_index].Cells[cell].Value.ToString()); string Value = Incomes_dgv.Rows[upd_inc_index].Cells[cell + 2].Value.ToString().Replace(",", "."); sqlQuery = string.Format("UPDATE [Incomes] SET Date = N'{0}', Category_id = '{1}', Value = '{2}', Description = N'{3}' " + "WHERE Id = '{4}'", Date.ToString("yyyy-MM-dd"), cat_id.Rows[0][0], Value, Incomes_dgv.Rows[upd_inc_index].Cells[cell + 3].Value.ToString(), upd_inc_id); sql.ExcuteDataNonQuery(sqlQuery); MessageBox.Show("Строка " + (upd_inc_index + 1).ToString() + " обновлена!", "Строка обновлена", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } //Иначе показываем MessageBox с ошибкой else { MessageBox.Show("У выбранного пользователя " + "категория " + Incomes_dgv.Rows[upd_inc_index].Cells[cell + 1].Value.ToString() + " не найдена!" + Environment.NewLine + "Строка " + (upd_inc_index + 1).ToString() + " не обновлена!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } }
//Редактирование категорий private void EditCategories() { SqlServer sql = new SqlServer(); string upd_cat_id = string.Empty; int upd_cat_index = -1; try { //Id расхода выбранной строки upd_cat_id = Categories_dgv.CurrentRow.Cells["Номер"].Value.ToString(); //Номер выбранной строки upd_cat_index = Categories_dgv.CurrentRow.Index; } catch { MessageBox.Show("Не удалось отредактировать данные!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (Categories_dgv.Rows[upd_cat_index].Cells[2].Value.ToString() == string.Empty) { MessageBox.Show("Имя категории не может быть пустым!", "Ошибка сохранения изменений", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } else { //Поиск категории пользователя с заданным именем string sqlQuery = string.Format("SELECT Id, Name FROM [Categories] WHERE User_id = {0} AND Name = N'{1}'", Name_comboBox.SelectedValue, Categories_dgv.Rows[upd_cat_index].Cells[2].Value.ToString()); DataTable FindCategoryTbl = sql.ExcuteData(sqlQuery); //Если категория найдена if (FindCategoryTbl.Rows.Count != 0) { MessageBox.Show("Такая категория уже существует у пользователя!", "Ошибка редактирования", MessageBoxButtons.OK); return; } else { //Номер ячейки int cell = 2; sqlQuery = string.Format("UPDATE [Categories] SET Name = N'{0}' WHERE Id = {1}", Categories_dgv.Rows[upd_cat_index].Cells[cell].Value.ToString(), upd_cat_id); sql.ExcuteDataNonQuery(sqlQuery); MessageBox.Show("Строка " + (upd_cat_index + 1).ToString() + " обновлена!", "Строка обновлена", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } }
//Статистика по планированию private void StatPlaning() { SqlServer sql = new SqlServer(); string sqlQuery = string.Format("SELECT cat.Id, cat.Name, pln.Value " + "FROM Planings AS pln INNER JOIN Categories AS cat ON cat.Id = pln.Category_id " + "WHERE pln.User_id = '{0}' AND pln.Month = '{1}' AND pln.Year = '{2}' GROUP BY cat.Id, cat.Name, pln.Value, pln.Month, pln.Year ORDER BY cat.Id", Name_comboBox.SelectedValue, DateTime.Now.Date.Month, DateTime.Now.Date.Year); DataTable PlnCst = sql.ExcuteData(sqlQuery); sqlQuery = string.Format("SELECT cat.Id, cat.Name, SUM(cst.Value) FROM Costs AS cst INNER JOIN Categories AS cat ON cat.Id = cst.Category_id " + "WHERE cst.Date >= '{0}' AND cst.Date <= '{1}' AND cst.User_id = '{2}' GROUP BY cat.Id, cat.Name ORDER BY cat.Id", DateTime.Now.AddDays(-DateTime.Now.Day).Date.ToString("yyyy-MM-dd"), DateTime.Now.Date.ToString("yyyy-MM-dd"), Name_comboBox.SelectedValue); DataTable RealCst = sql.ExcuteData(sqlQuery); Message_richTextBox.Text = string.Empty; for (int r = 0; r <= PlnCst.Rows.Count - 1; r++) { for (int c = 0; c <= RealCst.Rows.Count - 1; c++) { if (Convert.ToInt32(RealCst.Rows[c][0]) == Convert.ToInt32(PlnCst.Rows[r][0])) { if (Convert.ToDecimal(RealCst.Rows[c][2]) > Convert.ToDecimal(PlnCst.Rows[r][2])) Message_richTextBox.Text += "Расходы в категории \"" + Convert.ToString(PlnCst.Rows[r][1]) + "\" превышены на " + Convert.ToString(Convert.ToDecimal(RealCst.Rows[r][2]) - Convert.ToDecimal(PlnCst.Rows[r][2])) + " рублей." + Environment.NewLine + Environment.NewLine; } } } }
//Статистика по доходам private string StatIncomes(string StartDate, string EndDate) { SqlServer sql = new SqlServer(); decimal sum = 0; string sqlQuery = string.Format("SELECT inc.Value AS 'Сумма' " + "FROM [Incomes] AS inc WHERE (inc.User_id = '{0}') AND (inc.Date >= '{1}') AND (inc.Date <= '{2}')", Name_comboBox.SelectedValue, StartDate, EndDate); //Расчет суммы доходов DataTable dtbl = sql.ExcuteData(sqlQuery); for (int r = 0; r <= dtbl.Rows.Count - 1; r++) { for (int c = 0; c <= dtbl.Columns.Count - 1; c++) { sum = sum + Convert.ToDecimal(dtbl.Rows[r][c]); } } return Convert.ToString(sum); }