Example #1
0
 private void toolStripButtonUndo_Click(object sender, EventArgs e)
 {
     try
     {
         ObjectUndo ob = (ObjectUndo)st.Pop();
         if (ob.getType() == 1)
         {
             MessageBox.Show("Khôi phục sau khi thêm " + ob.getLenh());
             Program.ExecSqlDataReader(ob.getLenh());
             this.tACGIATableAdapter.FillByTinhTrang(this.qL_THUVIENDataSet.TACGIA);
             return;
         }
         if (ob.getType() == 2)
         {
             MessageBox.Show("Khôi phục sau khi xóa " + ob.getLenh());
             Program.ExecSqlDataReader(ob.getLenh());
             this.tACGIATableAdapter.FillByTinhTrang(this.qL_THUVIENDataSet.TACGIA);
             return;
         }
         if (ob.getType() == 3)
         {
             MessageBox.Show("Khôi phục sau khi sửa " + ob.getLenh());
             Program.ExecSqlDataReader(ob.getLenh());
             this.tACGIATableAdapter.FillByTinhTrang(this.qL_THUVIENDataSet.TACGIA);
             return;
         }
     }
     catch (Exception r)
     {
         MessageBox.Show("Không có gì để Undo", "THÔNG BÁO", MessageBoxButtons.OK);
     }
 }
Example #2
0
 public int xoaSinhVien(String maSV)
 {
     if (Program.conn.State == ConnectionState.Closed)
     {
         Program.conn.Open();
     }
     try
     {
         int    type      = 2;//XÓA
         int    checkPhai = checkboxPhai.Checked ? 1 : 0;
         int    checkNghi = checkboxNghiHoc.Checked ? 1 : 0;
         String strSP     = "SP_DeleteSinhVien";
         String lenh      = "exec SP_UndoDeleteSinhVien '" + txtMaSV.Text.Trim() + "', N'" + txtHo.Text.Trim()
                            + "', N'" + txtTen.Text.Trim() + "', '" + txtMaLop.Text.Trim() + "', '" + checkPhai +
                            "', '" + comboNgaySinh.Text.Trim() + "', N'" + txtNoiSinh.Text.Trim() + "', N'" + txtDiaChi.Text.Trim()
                            + "', '" + checkNghi + "'";
         Program.sqlcmd             = Program.conn.CreateCommand();
         Program.sqlcmd.CommandType = CommandType.StoredProcedure;
         Program.sqlcmd.CommandText = strSP;
         Program.sqlcmd.Parameters.Add("@MASV", SqlDbType.NChar).Value = maSV;
         Program.sqlcmd.ExecuteNonQuery();
         this.sINHVIENBindingSource.RemoveCurrent();
         this.sINHVIENBindingSource.EndEdit();
         Program.conn.Close();
         ObjectUndo ob = new ObjectUndo(type, lenh);
         st.Push(ob);
         return(1);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Xóa sinh viên thất bai." + ex.Message, "", MessageBoxButtons.OK);
         return(0);
     }
 }
Example #3
0
 private void btnSua_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("Bạn có chắc muốn sửa nó không?", "Sửa sinh viên", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         Boolean checkValidation = validationSinhVien();
         if (!checkValidation)
         {
             return;
         }
         int checkMaSV = kiemTraSinhVienTonTai(txtMaSV.Text);
         if (checkMaSV == 0)
         {
             MessageBox.Show("Sinh viên không tồn tại.\n", "", MessageBoxButtons.OK);
         }
         else if (checkMaSV == 2)
         {
             MessageBox.Show("Tồn tại mã sinh viên trong site khác.\n", "", MessageBoxButtons.OK);
         }
         else
         {
             if (Program.conn.State == ConnectionState.Closed)
             {
                 Program.conn.Open();
             }
             try
             {
                 handleSinhVienTable();
                 String lenh = "exec SP_UndoUpdateSinhVien N'" + ho
                               + "', N'" + ten + "', '" + maLop + "', '" + phai +
                               "', '" + ngaySinh + "', N'" + noiSinh + "', N'" + diaChi
                               + "', '" + nghiHoc + "', '" + maSV + "'";
                 String updateSinhVien = "SP_UpdateSinhVien";
                 Program.sqlcmd             = Program.conn.CreateCommand();
                 Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                 Program.sqlcmd.CommandText = updateSinhVien;
                 cmdSinhVien(txtMaSV.Text, txtHo.Text, txtTen.Text, txtMaLop.Text, checkboxPhai.Checked,
                             comboNgaySinh.Text, txtNoiSinh.Text, txtDiaChi.Text, checkboxNghiHoc.Checked);
                 Program.sqlcmd.ExecuteNonQuery();
                 Program.conn.Close();
                 MessageBox.Show("Sửa sinh viên thành công!", "", MessageBoxButtons.OK);
                 this.sINHVIENBindingSource.EndEdit();
                 //    this.refresh();
                 int        type = 3;//chỉnh sửa
                 ObjectUndo ob   = new ObjectUndo(type, lenh);
                 st.Push(ob);
                 this.btnThem.Enabled = false;
             }
             catch (Exception ex)
             {
                 MessageBox.Show("Sửa sinh viên thất bại.\n" + ex.Message, "", MessageBoxButtons.OK);
                 return;
             }
         }
     }
 }
Example #4
0
        //kiem tra Ma Lop tồn tại sinh viên

        private void btnLopXoa_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc muốn xóa nó không?", "Xóa lớp", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (Program.conn.State == ConnectionState.Closed)
                {
                    Program.conn.Open();
                }
                try
                {
                    String check = "SP_KiemTraMaLopTonTaiSinhVien";
                    Program.sqlcmd             = Program.conn.CreateCommand();
                    Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                    Program.sqlcmd.CommandText = check;
                    Program.sqlcmd.Parameters.Add("@MALOP", SqlDbType.NChar).Value = txtMaLop.Text;
                    Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                    Program.sqlcmd.ExecuteNonQuery();
                    String ret = Program.sqlcmd.Parameters["@Ret"].Value.ToString();
                    if (ret == "1")
                    {
                        MessageBox.Show("Lớp có sinh viên!\nKhông thể xóa!", "THÔNG BÁO LỖI", MessageBoxButtons.OK);
                    }
                    if (ret == "2")
                    {
                        MessageBox.Show("Tồn tại mã lớp trong sinh viên ở site khác.\n", "", MessageBoxButtons.OK);
                        return;
                    }
                    if (ret == "0")
                    {
                        String lenhstr = "SP_DeleteMaLop";
                        Program.sqlcmd             = Program.conn.CreateCommand();
                        Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                        Program.sqlcmd.CommandText = lenhstr;
                        Program.sqlcmd.Parameters.Add("@MALOP", SqlDbType.NChar).Value = txtMaLop.Text;
                        Program.sqlcmd.ExecuteNonQuery();
                        //  this.lOPTableAdapter.Connection.ConnectionString = Program.connstr;
                        MessageBox.Show("Xóa thành công!", "Thành công", MessageBoxButtons.OK);
                        int        type = 2;//XÓA
                        String     lenh = "exec SP_UndoDeleteLop '" + txtMaLop.Text + "', '" + txtTenLop.Text + "', '" + txtMaKhoa.Text + "'";
                        ObjectUndo ob   = new ObjectUndo(type, lenh);
                        st.Push(ob);
                        this.lOPBindingSource.RemoveCurrent();
                        this.lOPBindingSource.EndEdit();
                        Program.conn.Close();
                        txtMaKhoa.Focus();
                        this.btnLopThem.Enabled = false;
                        return;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Lỗi xóa lớp.\n" + ex.Message, "", MessageBoxButtons.OK);
                }
            }
        }
Example #5
0
        private void btnLopThem_Click(object sender, EventArgs e)
        {
            if (Program.conn.State == ConnectionState.Closed)
            {
                Program.conn.Open();
            }
            Boolean checkValidation = validationSinhVien();

            if (!checkValidation)
            {
                return;
            }
            int checkMaSV = kiemTraSinhVienTonTai(txtMaSV.Text);

            if (checkMaSV == 1)
            {
                MessageBox.Show("Tồn tại mã sinh viên.\n", "", MessageBoxButtons.OK);
            }
            else if (checkMaSV == 2)
            {
                MessageBox.Show("Tồn tại mã sinh viên trong site khác.\n", "", MessageBoxButtons.OK);
            }
            else
            {
                try
                {
                    String strLenh = "dbo.SP_InsertSinhVien";
                    Program.sqlcmd             = Program.conn.CreateCommand();
                    Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                    Program.sqlcmd.CommandText = strLenh;
                    cmdSinhVien(txtMaSV.Text, txtHo.Text, txtTen.Text, txtMaLop.Text, checkboxPhai.Checked,
                                comboNgaySinh.Text, txtNoiSinh.Text, txtDiaChi.Text, checkboxNghiHoc.Checked);
                    Program.sqlcmd.ExecuteNonQuery();
                    Program.conn.Close();
                    this.btnThem.Enabled = false;
                    this.sINHVIENBindingSource.EndEdit();
                    sINHVIENBindingSource.ResetAllowNew();
                    Program.conn.Close();
                    MessageBox.Show("Thêm sinh viên thành công", "THÔNG BÁO", MessageBoxButtons.OK);
                    this.btnThem.Enabled = false;
                    int        type = 1;//Thêm
                    String     lenh = "exec SP_UndoThemSinhVien '" + txtMaSV.Text + "'";
                    ObjectUndo ob   = new ObjectUndo(type, lenh);
                    st.Push(ob);
                    return;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Lỗi ghi sinh viên.\n" + ex.Message, "", MessageBoxButtons.OK);
                    return;
                }
            }
        }
Example #6
0
 private void btnPhucHoiSV_Click(object sender, EventArgs e)
 {
     try
     {
         ObjectUndo ob = (ObjectUndo)st.Pop();
         if (ob.getType() == 1)
         {
             if (Program.conn.State == ConnectionState.Closed)
             {
                 Program.conn.Open();
             }
             MessageBox.Show("Khôi phục sau khi thêm " + ob.getLenh());
             Program.ExecSqlDataReader(ob.getLenh());
             this.sINHVIENTableAdapter.Fill(this.qLDSVROOT.SINHVIEN);
             Program.conn.Close();
         }
         if (ob.getType() == 2)
         {
             if (Program.conn.State == ConnectionState.Closed)
             {
                 Program.conn.Open();
             }
             MessageBox.Show("Khôi phục sau khi xóa " + ob.getLenh());
             Program.ExecSqlDataReader(ob.getLenh());
             this.sINHVIENTableAdapter.Fill(this.qLDSVROOT.SINHVIEN);
             Program.conn.Close();
         }
         if (ob.getType() == 3)
         {
             if (Program.conn.State == ConnectionState.Closed)
             {
                 Program.conn.Open();
             }
             MessageBox.Show("Khôi phục sau khi sữa " + ob.getLenh());
             Program.ExecSqlDataReader(ob.getLenh());
             this.sINHVIENTableAdapter.Fill(this.qLDSVROOT.SINHVIEN);
             Program.conn.Close();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("Không có gì để Undo", "THÔNG BÁO", MessageBoxButtons.OK);
     }
 }
Example #7
0
        private void toolStripButtonXoa_Click(object sender, EventArgs e)
        {
            if (DialogResult.Yes == MessageBox.Show("Bạn có muốn xóa hay không ?", "THÔNG BÁO", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                if (Program.conn.State == ConnectionState.Closed)
                {
                    Program.conn.Open();
                }
                String strLenh = "dbo.SP_KiemTraMaTacGia";
                Program.sqlcmd             = Program.conn.CreateCommand();
                Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                Program.sqlcmd.CommandText = strLenh;
                Program.sqlcmd.Parameters.Add("@MATACGIA", SqlDbType.VarChar).Value = mATACGIASpinEdit.Text;
                Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction      = ParameterDirection.ReturnValue;
                Program.sqlcmd.ExecuteNonQuery();
                Program.conn.Close();
                String Ret      = Program.sqlcmd.Parameters["@Ret"].Value.ToString();
                String maTacGia = "";
                if (Ret != "0")
                {
                    MessageBox.Show("Không thể xóa !", "THÔNG BÁO LỖI", MessageBoxButtons.OK);
                    return;
                }

                maTacGia = gridView1.GetRowCellValue(gridView1.FocusedRowHandle, "MATACGIA").ToString();
                int    type         = 2;
                String mATacGiaUndo = mATACGIASpinEdit.Text;
                String tenTacGia    = hOTENTGTextEdit.Text;
                String diaChi       = dIACHITGTextEdit.Text;
                String soDienThoai  = dIENTHOAITGTextEdit.Text;

                String     strlenUndo = "exec SP_UndoDeleteTacGia '" + mATacGiaUndo + "'";
                ObjectUndo ob         = new ObjectUndo(type, strlenUndo);
                st.Push(ob);

                String strlen = "exec SP_UndoThemTacGia '" + maTacGia + "'";
                Program.ExecSqlNonQuery(strlen);
                this.tACGIATableAdapter.FillByTinhTrang(this.qL_THUVIENDataSet.TACGIA);
            }

            buttonChucNang();
            return;
        }
 private void BtnPhucHoiMonHoc_Click(object sender, EventArgs e)
 {
     try
     {
         ObjectUndo ob = (ObjectUndo)st.Pop();
         if (ob.getType() == 1)
         {
             undo("Khôi phục sau khi thêm?", ob.getLenh());
         }
         if (ob.getType() == 2)
         {
             undo("Khôi phục sau khi xóa?", ob.getLenh());
         }
         if (ob.getType() == 3)
         {
             undo("Khôi phục sau khi sửa?", ob.getLenh());
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("Không có gì để Undo", "THÔNG BÁO", MessageBoxButtons.OK);
     }
 }
Example #9
0
        private void toolStripButtonLuu_Click(object sender, EventArgs e)
        {
            if (choose == 0)
            {
                string hoTenTacGia  = this.hOTENTGTextEdit.Text;
                string diaChiTacGia = this.dIACHITGTextEdit.Text;
                string soDienThoai  = this.dIENTHOAITGTextEdit.Text;

                if (hoTenTacGia == "")
                {
                    MessageBox.Show("Vui lòng nhập họ tên tác giả ! ", "Thông báo", MessageBoxButtons.OK);
                    return;
                }

                if (diaChiTacGia == "")
                {
                    MessageBox.Show("Vui lòng nhập địa chỉ tác giả ! ", "Thông báo", MessageBoxButtons.OK);
                    return;
                }
                if (soDienThoai == "")
                {
                    MessageBox.Show("Vui lòng nhập số điện thoại !", "Thông báo", MessageBoxButtons.OK);
                    return;
                }


                this.Validate();
                this.tACGIABindingSource.EndEdit(); // kết thúc quá trình hiệu chỉnh dữ liệu trên 1 dòng trong Dataset
                this.tACGIATableAdapter.Update(this.qL_THUVIENDataSet);
                //String exec = "Exec SP_ThemTacGia '" + hoTenTacGia + "','" + diaChiTacGia + "','" + soDienThoai + "'";
                //Program.ExecSqlDataReader(exec);

                MessageBox.Show("Thêm Tác giả Thành Công ! ", "THÔNG BÁO", MessageBoxButtons.OK);

                int        type        = 1; // XOA
                String     strlenhUndo = "exec SP_UndoThemTacGia '" + mATACGIASpinEdit.Text + "'";
                ObjectUndo ob          = new ObjectUndo(type, strlenhUndo);
                st.Push(ob);

                textBoxThongTin(false);
                buttonChucNang();
                this.tACGIATableAdapter.FillByTinhTrang(this.qL_THUVIENDataSet.TACGIA);
                return;
            }
            if (choose == 1)
            {
                //public string hoTenTacGia;
                //public string diaChiTacGia;
                //public string soDienThoai;
                String     maTacGia   = mATACGIASpinEdit.Text;
                int        type       = 3;
                String     strlenUndo = "exec SP_UndoChinhSuaTacGia '" + maTacGia + "','" + hoTenTacGia + "','" + diaChiTacGia + "','" + soDienThoai + "'";
                ObjectUndo ob         = new ObjectUndo(type, strlenUndo);
                st.Push(ob);

                this.Validate();
                this.tACGIABindingSource.EndEdit();
                this.tableAdapterManager.UpdateAll(qL_THUVIENDataSet);
                MessageBox.Show("Chỉnh Sửa Tác Giả Thành công", "THÔNG BÁO", MessageBoxButtons.OK);
                textBoxThongTin(false);
                buttonChucNang();
                return;
            }
        }
Example #10
0
        private void btnLopSua_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc muốn sửa nó không?", "Sửa lớp", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                if (txtMaLop.Text.Trim() == "")
                {
                    MessageBox.Show("Mã lớp không được thiếu!", "", MessageBoxButtons.OK);
                    txtMaLop.Focus();
                    return;
                }
                if (txtTenLop.Text.Trim() == "")
                {
                    MessageBox.Show("Tên lớp không được thiếu!", "", MessageBoxButtons.OK);
                    txtTenLop.Focus();
                    return;
                }
                if (txtMaKhoa.Text.Trim() == "")
                {
                    MessageBox.Show("Mã khoa không được thiếu!", "", MessageBoxButtons.OK);
                    txtMaKhoa.Focus();
                    return;
                }
                try
                {
                    if (Program.conn.State == ConnectionState.Closed)
                    {
                        Program.conn.Open();
                    }
                    String strLenh = "dbo.SP_KiemTraLopTonTai";
                    Program.sqlcmd             = Program.conn.CreateCommand();
                    Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                    Program.sqlcmd.CommandText = strLenh;
                    Program.sqlcmd.Parameters.Add("@MALOP", SqlDbType.NChar).Value = txtMaLop.Text;
                    Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                    Program.sqlcmd.ExecuteNonQuery();
                    Program.conn.Close();
                    String Ret = Program.sqlcmd.Parameters["@Ret"].Value.ToString();
                    if (Ret == "0")
                    {
                        MessageBox.Show(" nhân viên không tồn tại !", "THÔNG BÁO LỖI", MessageBoxButtons.OK);
                        return;
                    }

                    if (Ret == "2")
                    {
                        MessageBox.Show("Tồn tại mã lớp ở site khác.\n", "", MessageBoxButtons.OK);
                        return;
                    }
                    if (Ret == "1")
                    {
                        if (Program.conn.State == ConnectionState.Closed)
                        {
                            Program.conn.Open();
                        }
                        handleDuLieuFocus();
                        String lenh      = "exec SP_UndoUpdateLop '" + maL + "', N'" + tenL + "', '" + maK + "'";
                        String upDateLop = "SP_UpdateMaLop";
                        Program.sqlcmd             = Program.conn.CreateCommand();
                        Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                        Program.sqlcmd.CommandText = upDateLop;
                        Program.sqlcmd.Parameters.Add("@MALOP", SqlDbType.NChar).Value     = txtMaLop.Text;
                        Program.sqlcmd.Parameters.Add("@TENLOP", SqlDbType.NVarChar).Value = txtTenLop.Text;
                        Program.sqlcmd.Parameters.Add("@MAKH", SqlDbType.NChar).Value      = txtMaKhoa.Text;
                        Program.sqlcmd.ExecuteNonQuery();
                        Program.conn.Close();
                        MessageBox.Show("Sửa lớp thành công!", "", MessageBoxButtons.OK);
                        this.lOPBindingSource.EndEdit();
                        int        type = 3;//chỉnh sửa
                        ObjectUndo ob   = new ObjectUndo(type, lenh);
                        st.Push(ob);
                        this.btnLopThem.Enabled = false;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Lỗi ghi lớp.\n" + ex.Message, "", MessageBoxButtons.OK);
                    return;
                }
            }
        }
Example #11
0
        private void btnLopThem_Click(object sender, EventArgs e)
        {
            if (Program.conn.State == ConnectionState.Closed)
            {
                Program.conn.Open();
            }

            if (txtMaLop.Text.Trim() == "")
            {
                MessageBox.Show("Mã lớp không được thiếu!", "", MessageBoxButtons.OK);
                txtMaLop.Focus();
                return;
            }
            if (txtTenLop.Text.Trim() == "")
            {
                MessageBox.Show("Tên lớp không được thiếu!", "", MessageBoxButtons.OK);
                txtTenLop.Focus();
                return;
            }
            if (txtMaKhoa.Text.Trim() == "")
            {
                MessageBox.Show("Mã khoa không được thiếu!", "", MessageBoxButtons.OK);
                txtMaKhoa.Focus();
                return;
            }

            int checkMaLop = checkMaLopTonTai();

            if (checkMaLop == 0 || checkMaLop == 1 || checkMaLop == 2)
            {
                return;
            }
            ///thêm lớp
            try
            {
                if (Program.conn.State == ConnectionState.Closed)
                {
                    Program.conn.Open();
                }
                String strLenh = "dbo.SP_InsertLop";
                Program.sqlcmd             = Program.conn.CreateCommand();
                Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                Program.sqlcmd.CommandText = strLenh;
                Program.sqlcmd.Parameters.Add("@MALOP", SqlDbType.NChar).Value     = txtMaLop.Text;
                Program.sqlcmd.Parameters.Add("@TENLOP", SqlDbType.NVarChar).Value = txtTenLop.Text;
                Program.sqlcmd.Parameters.Add("@MAKH", SqlDbType.NChar).Value      = txtMaKhoa.Text;
                Program.sqlcmd.ExecuteNonQuery();
                Program.conn.Close();
                this.btnLopThem.Enabled = false;
                int        type = 1;//Thêm
                String     lenh = "exec SP_UndoThemLop '" + txtMaLop.Text + "'";
                ObjectUndo ob   = new ObjectUndo(type, lenh);
                st.Push(ob);
                this.lOPBindingSource.EndEdit();
                lOPBindingSource.ResetAllowNew();
                Program.conn.Close();
                MessageBox.Show("Thêm Lớp Thành công", "THÔNG BÁO", MessageBoxButtons.OK);
                st.Push(ob);
                return;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi ghi lớp.\n" + ex.Message, "", MessageBoxButtons.OK);
                return;
            }
        }
        private void BtnSuaMonHoc_Click(object sender, EventArgs e)
        {
            if (txtMaMH.Text.Trim() == "")
            {
                MessageBox.Show("Mã môn học không để trống!", "", MessageBoxButtons.OK);
                txtMaMH.Focus();
                return;
            }
            if (txtMaMH.Text.Trim().Length > 8)
            {
                MessageBox.Show("Mã môn học tối đa 8 ký tự!", "", MessageBoxButtons.OK);
                txtMaMH.Focus();
                return;
            }
            if (txtTenMH.Text.Trim() == "")
            {
                MessageBox.Show("Tên môn học không để trống!", "", MessageBoxButtons.OK);
                txtTenMH.Focus();
                return;
            }
            if (txtTenMH.Text.Trim().Length > 40)
            {
                MessageBox.Show("Tên môn học tối đa 40 ký tự!", "", MessageBoxButtons.OK);
                txtTenMH.Focus();
                return;
            }
            try
            {
                // Check if MaMH exists
                if (Program.conn.State == ConnectionState.Closed)
                {
                    Program.conn.Open();
                }
                String spName = "SP_KiemMaMHTonTai";
                Program.sqlcmd             = Program.conn.CreateCommand();
                Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                Program.sqlcmd.CommandText = spName;

                // SP Variables
                Program.sqlcmd.Parameters.Add("@MAMH", SqlDbType.NChar).Value     = txtMaMH.Text;
                Program.sqlcmd.Parameters.Add("@TENMH", SqlDbType.NVarChar).Value = txtTenMH.Text;
                Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction    = ParameterDirection.ReturnValue;
                Program.sqlcmd.ExecuteNonQuery();
                String result = Program.sqlcmd.Parameters["@Ret"].Value.ToString();

                // If maMH exists
                if (result == "2")
                {
                    MessageBox.Show("Tên môn học đã tồn tại.\n", "", MessageBoxButtons.OK);
                    Program.conn.Close();
                    return;
                }
                else if (result == "0")
                {
                    MessageBox.Show("Mã môn học không tồn tại.\n", "", MessageBoxButtons.OK);
                    Program.conn.Close();
                    return;
                }
                else
                {
                    if (MessageBox.Show("Bạn có chắc muốn sửa không?", "Sửa môn học", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        // Get the row on focus contain data
                        handleDuLieuFocus();

                        // Save action update Monhoc into Stack
                        int        type = 3;
                        String     lenh = "exec SP_UndoUpdateMonHoc '" + maMH + "', N'" + tenMH + "'";
                        ObjectUndo ob   = new ObjectUndo(type, lenh);
                        st.Push(ob);

                        // Run sp Update monHoc
                        if (Program.conn.State == ConnectionState.Closed)
                        {
                            Program.conn.Open();
                        }
                        ExcuteSP_Update_Insert_MonHoc("SP_UpdateMonHoc", "Sửa môn học thành công");
                        Program.conn.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi kiểm tra mã môn học.\n" + ex.Message, "", MessageBoxButtons.OK);
                Program.conn.Close();
                return;
            }
        }
        private void BtnXoaMonHoc_Click(object sender, EventArgs e)
        {
            // Delete on MAMH
            try
            {
                // Check if MaMH exists
                if (Program.conn.State == ConnectionState.Closed)
                {
                    Program.conn.Open();
                }
                String spName = "SP_KiemMaMHTonTai";
                Program.sqlcmd             = Program.conn.CreateCommand();
                Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                Program.sqlcmd.CommandText = spName;

                // SP Variables
                Program.sqlcmd.Parameters.Add("@MAMH", SqlDbType.NChar).Value     = txtMaMH.Text;
                Program.sqlcmd.Parameters.Add("@TENMH", SqlDbType.NVarChar).Value = txtTenMH.Text;
                Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction    = ParameterDirection.ReturnValue;
                Program.sqlcmd.ExecuteNonQuery();
                String result = Program.sqlcmd.Parameters["@Ret"].Value.ToString();

                // If maMH exists
                if (result == "1")
                {
                    try
                    {
                        // SP return
                        // 1: exist
                        // 0: not exist
                        // Check if MonHoc had Diem => cant delete
                        String spName1 = "SP_KiemMHTonTaiDiem";
                        Program.sqlcmd             = Program.conn.CreateCommand();
                        Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                        Program.sqlcmd.CommandText = spName1;

                        // SP Variables
                        Program.sqlcmd.Parameters.Add("@MAMH", SqlDbType.NChar).Value  = txtMaMH.Text;
                        Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
                        Program.sqlcmd.ExecuteNonQuery();
                        String ret = Program.sqlcmd.Parameters["@Ret"].Value.ToString();

                        // If MonHoc had Diem
                        if (ret == "1")
                        {
                            MessageBox.Show("Mã môn này đã có điểm!", "THÔNG BÁO", MessageBoxButtons.OK);
                        }
                        if (ret == "0")
                        {
                            if (MessageBox.Show("Bạn có chắc muốn xóa nó không?", "Xóa môn học", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                            {
                                // Save action delete Monhoc into Stack
                                int        type = 2;
                                String     lenh = "exec SP_UndoDeleteMonHoc '" + txtMaMH.Text + "', N'" + txtTenMH.Text + "'";
                                ObjectUndo ob   = new ObjectUndo(type, lenh);
                                st.Push(ob);

                                // Delete Monhoc
                                this.mONHOCBindingSource.RemoveCurrent();
                                MessageBox.Show("Xóa thành công!", "Thành công", MessageBoxButtons.OK);
                                this.mONHOCTableAdapter.Update(this.qLDSVROOT.MONHOC);
                                Program.conn.Close();
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Lỗi xóa môn học.\n" + ex.Message, "", MessageBoxButtons.OK);
                        Program.conn.Close();
                        return;
                    }
                }
                else
                {
                    MessageBox.Show("Mã môn học không tồn tại.\n", "THÔNG BÁO", MessageBoxButtons.OK);
                    Program.conn.Close();
                    return;
                }
            }
            catch (Exception ex)
            {
                // Can be if did not pick the Department
                MessageBox.Show("Lỗi kiểm tra mã môn học.\n" + ex.Message, "", MessageBoxButtons.OK);
                Program.conn.Close();
                return;
            }
        }
        private void BtnThemMonHoc_Click(object sender, EventArgs e)
        {
            // Checking error
            if (txtMaMH.Text.Trim() == "")
            {
                MessageBox.Show("Mã môn học không được để trống!", "", MessageBoxButtons.OK);
                txtMaMH.Focus();
                return;
            }
            if (txtMaMH.Text.Trim().Length > 8)
            {
                MessageBox.Show("Mã môn học tối đa 8 ký tự!", "", MessageBoxButtons.OK);
                txtMaMH.Focus();
                return;
            }
            if (txtTenMH.Text.Trim() == "")
            {
                MessageBox.Show("Tên môn học không được để trống!", "", MessageBoxButtons.OK);
                txtTenMH.Focus();
                return;
            }
            if (txtTenMH.Text.Trim().Length > 40)
            {
                MessageBox.Show("Tên môn học tối đa 40 ký tự!", "", MessageBoxButtons.OK);
                txtTenMH.Focus();
                return;
            }

            try
            {
                // SP return
                // 1: exist
                // 0: not exist
                // String strLenh = spName;
                if (Program.conn.State == ConnectionState.Closed)
                {
                    Program.conn.Open();
                }
                String spName = "SP_KiemMaMHTonTai";
                Program.sqlcmd             = Program.conn.CreateCommand();
                Program.sqlcmd.CommandType = CommandType.StoredProcedure;
                Program.sqlcmd.CommandText = spName;
                // SP Variables
                Program.sqlcmd.Parameters.Add("@MAMH", SqlDbType.NChar).Value     = txtMaMH.Text;
                Program.sqlcmd.Parameters.Add("@TENMH", SqlDbType.NVarChar).Value = txtTenMH.Text;
                Program.sqlcmd.Parameters.Add("@Ret", SqlDbType.Int).Direction    = ParameterDirection.ReturnValue;
                Program.sqlcmd.ExecuteNonQuery();
                String result = Program.sqlcmd.Parameters["@Ret"].Value.ToString();

                if (result == "1")
                {
                    MessageBox.Show("Mã môn học đã tồn tại.\n", "", MessageBoxButtons.OK);
                    Program.conn.Close();
                    return;
                }
                else if (result == "2")
                {
                    MessageBox.Show("Tên môn học đã tồn tại.\n", "", MessageBoxButtons.OK);
                    Program.conn.Close();
                    return;
                }
                else
                {
                    try
                    {
                        // Save action add Monhoc into Stack
                        int        type = 1;
                        String     lenh = "exec SP_UndoThemMonHoc '" + txtMaMH.Text + "'";
                        ObjectUndo ob   = new ObjectUndo(type, lenh);
                        st.Push(ob);
                        // Excute SP
                        ExcuteSP_Update_Insert_MonHoc("SP_InsertMonHoc", "Thêm môn học thành công");

                        isCleared = false;
                        // Do not allow user to edit MaMH
                        txtMaMH.ReadOnly = true;

                        // Close connection
                        Program.conn.Close();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Lỗi thêm môn học.\n" + ex.Message, "", MessageBoxButtons.OK);
                        Program.conn.Close();
                        return;
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Lỗi kiểm tra mã môn học.\n" + ex.Message, "", MessageBoxButtons.OK);
                Program.conn.Close();
                return;
            }
        }