Пример #1
0
        // Создание новой игры
        private void menuItem1_Click(object sender, EventArgs e)
        {
            //brandnew!
            GameOptionsForm_Common form = new GameOptionsForm_Common(false, -1);

            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 = "INSERT INTO Games(Type, GameOptions, DealsInMatch, FirstDealer, ZoneSwims, fk_Folder_id, fk_N, fk_S, fk_E, fk_W, Place, Comment, StartDate) VALUES(@type, @options, @dealscount, @firstdealer, @zoneswims, @folder, @n, @s, @e, @w, @place, @comment, GETDATE())";
                sqlQuery.Parameters.Add("type", form.GameTip);
                sqlQuery.Parameters.Add("options", form.GameOptions);
                sqlQuery.Parameters.Add("dealscount", form.DealsCount);
                sqlQuery.Parameters.Add("zoneswims", form.ZoneSwims);
                sqlQuery.Parameters.Add("firstdealer", form.FirstDealer);

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

                int new_game_id;
                while (DB.ExecuteNonQuery(sqlQuery, true, out new_game_id) == 0)
                {
                    if (MessageBox.Show("Новая игра не была добавлена!", "db error", MessageBoxButtons.RetryCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Retry)
                    {
                        DB.sqlConnection.Close();
                        DB.sqlConnection.Open();
                    }
                    else
                    {
                        return;
                    }
                }

                // Записать id новой игры:
                this.m_selected_GameId = new_game_id;

                this.DialogResult = DialogResult.OK;
            }
        }
Пример #2
0
        // Редактирование игры
        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();
                }
            }
        }