// Переместить игры в другую папку: private void m_btn2_Click(object sender, EventArgs e) { if (m_combo1.SelectedIndex == -1) { MessageBox.Show("Начальная папка не выбрана!"); return; } if (m_combo2.SelectedIndex == -1) { MessageBox.Show("Конечная папка не выбрана!"); return; } int id1 = ((comboitem_id_name)m_combo1.Items[m_combo1.SelectedIndex]).GetId(); int id2 = ((comboitem_id_name)m_combo2.Items[m_combo2.SelectedIndex]).GetId(); if (id1 == id2) { MessageBox.Show("Начальная и конечная папки совпадают!"); return; } if (MessageBox.Show("Переместить игры из [" + GetFolderName(id1) + "] в [" + GetFolderName(id2) + "]?", "Уверены?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) != DialogResult.Yes) { return; } System.Data.SqlServerCe.SqlCeCommand sqlQuery = DB.CreateQuery(); sqlQuery.CommandText = "UPDATE Games SET fk_Folder_id = " + (id2 == -1 ? "NULL" : id2.ToString()) + " WHERE fk_Folder_id" + (id1 == -1 ? " IS NULL" : "=" + id1); int rows_affected = DB.ExecuteNonQuery(sqlQuery, true); // ОБНОВИТЬ КОМБЫ LoadFoldersToCombo(m_combo1); LoadFoldersToCombo(m_combo2); MessageBox.Show("Перемещено " + rows_affected + " игр из [" + GetFolderName(id1) + "] в [" + GetFolderName(id2) + "]!"); return; }
// Редактирование игры void ContextMenu_OnClickEdit(object sender, EventArgs e) { ListViewItem lvi = m_listview_Games.Items[m_listview_Games.SelectedIndices[0]]; int gameId = (int)lvi.Tag; // Открыть окно редактирования GameOptionsForm_Common form = new GameOptionsForm_Common(true, gameId); if (form.ShowDialog() == DialogResult.OK && form.done2steps == true) { // Конечные id папки и игроков (-1 для NULL, если нет то создать) int folder_id = DB.DB_GetAttributeId(form.Folder_Id, form.Folder_Name, "Folders", "id", "Name"); int n_id = DB.DB_GetAttributeId(form.N_Id, form.N_Name, "Players", "id", "Name"); int s_id = DB.DB_GetAttributeId(form.S_Id, form.S_Name, "Players", "id", "Name"); int e_id = DB.DB_GetAttributeId(form.E_Id, form.E_Name, "Players", "id", "Name"); int w_id = DB.DB_GetAttributeId(form.W_Id, form.W_Name, "Players", "id", "Name"); // Обрезанные строки места и комментария string place__cut = DB.DB_GetCuttedString(form.Place, "Games", "Place"); string comment__cut = DB.DB_GetCuttedString(form.Comment, "Games", "Comment"); // Редактировать в БД System.Data.SqlServerCe.SqlCeCommand sqlQuery = DB.CreateQuery(); sqlQuery.CommandText = "UPDATE Games SET fk_Folder_id = @folder, fk_N = @n, fk_S = @s, fk_E = @e, fk_W = @w, Place = @place, Comment = @comment WHERE id=" + gameId; sqlQuery.Parameters.Add("folder", (folder_id != -1 ? (object)folder_id : (object)DBNull.Value)); sqlQuery.Parameters.Add("n", (n_id != -1 ? (object)n_id : (object)DBNull.Value)); sqlQuery.Parameters.Add("s", (s_id != -1 ? (object)s_id : (object)DBNull.Value)); sqlQuery.Parameters.Add("e", (e_id != -1 ? (object)e_id : (object)DBNull.Value)); sqlQuery.Parameters.Add("w", (w_id != -1 ? (object)w_id : (object)DBNull.Value)); sqlQuery.Parameters.Add("place", (place__cut.Length > 0 ? (object)place__cut : (object)DBNull.Value)); sqlQuery.Parameters.Add("comment", (comment__cut.Length > 0 ? (object)comment__cut : (object)DBNull.Value)); sqlQuery.Prepare(); while (DB.ExecuteNonQuery(sqlQuery, true) == 0) { if (MessageBox.Show("Игра " + gameId + " не была изменена!", "db error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Retry) { DB.sqlConnection.Close(); DB.sqlConnection.Open(); } else { return; } } // Если изменилась папка, убрать из списка; иначе обновить запись об игре в списке if (SELECTOR_FOLDER__is_enabled && folder_id != SELECTOR_FOLDER) { // Убрать из списка m_listview_Games.Items.RemoveAt(m_listview_Games.SelectedIndices[0]); // Перезагрузить список папок LoadFoldersToCombo(true); } else { // Обновить запись об игре в списке sqlQuery = DB.CreateQuery(); sqlQuery.CommandText = "SELECT g.id, g.StartDate, g.Place, g.Comment, g.Type, g.DealsInMatch, g.GameOptions, n.Name as N, s.Name as S, e.Name as E, w.Name as W FROM Games g LEFT JOIN Players n ON g.fk_N = n.id LEFT JOIN Players s ON g.fk_S = s.id LEFT JOIN Players e ON g.fk_E = e.id LEFT JOIN Players w ON g.fk_W = w.id WHERE g.id=" + gameId; System.Data.SqlServerCe.SqlCeDataReader sqlReader = DB.ExecuteReader(sqlQuery); if (sqlReader.Read()) { Load1Game(lvi, sqlReader); } sqlReader.Close(); } } }