V. Form Giảng viên – frmGiangVien
2. Xử lý các sự kiện trong frmGiangVien:
- Sau khi kết nối csdl bằng câu lệnh thì ta sẽ lần lượt xử lý các sự kiện
cho từng button và combobox, datagridview:
OleDbConnection dbConn = new OleDbConnection("Provider
= Microsoft.JET.OLEDB.4.0; Data Source = " +
Application.StartupPath + "\\QLSVTT.mdb");
Xử lý sự kiện cho nút btnThemGV:
- Khi muốn thêm giảng viên mới và các thông tin liên quan đến giảng viên đó thì bạn chỉ cần nhấn nút thêm, các ô textbox và combobox, datatimepicker ..sẽ tự động nhập trắng lại. Bạn nhập thông tin về giảng viên đó vào đó rùi nhấn lưu. Thông tin về giảng viên vừa thêm sẽ có
mặt trong datagridview.
- Để làm được điều đó, bạn phải thêm đoạn mã sau vào phương thức
btnThemGV:
//Nhập trắng lại các ô textbox và combobox để thêm dữ liệu vào csdl
private void btnThemGV_Click(object sender, EventArgs e) { txtMaGV.Text = ""; txtTenGV.Text = ""; dtPickerNgaySinh.Text = ""; txtSDT.Text = ""; txtEmail.Text = ""; txtDiaChi.Text = ""; txtMaBM.Text = ""; btnLuuGV.Text = "Lưu"; }
Xử lý sự kiện cho nút btnLuuGV:
- Đây là button hỗ trợ cho việc thêm và sửa thông tin giảng viên. Sau khi
thay đổi thông tin thì thông tin về giảng viên đó phải được lưu lại trong
datagridview. Khi nhấn nút thêm thì btnLuuGV vẫn là Lưu, còn khi nhấn nút sửa thì btnLuuGV sẽ chuyển đổi lại thành Cập nhật
-
//cập nhật thông tin về giảng viên
private void btnLuuGV_Click(object sender, EventArgs e) {
dbConn.Open();
if (btnLuuGV.Text == "Cập Nhật") {
//dbConn.Open();
string strUpdate = "Update GiangVienHDTT Set MaGV = '" + txtMaGV.Text + "', TenGV = '" + txtTenGV.Text + "',
GioiTinhGV= " + rdNam.Checked + ", NgaySinhGV = '" + dtPickerNgaySinh.Text + "',SDT = '" + txtSDT.Text + "',EMailGV = '" + txtEmail.Text + "',DiaChiGV = '" + txtDiaChi.Text + "' Where MaGV = '" + txtMaGV.Text + "'";
OleDbCommand dbCmd = new OleDbCommand(strUpdate, dbConn); dbCmd.ExecuteNonQuery(); btnLuuGV.Text = "Lưu"; HienThi(); txtMaGV.ReadOnly = false; } else {
DataSet dbSet = new DataSet();
string mstr = "Select * From GiangVienHDTT";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(mstr, dbConn); dbAdpt.Fill(dbSet);
if (txtMaGV.Text !=
dbSet.Tables[0].Rows[0]["MaGV"].ToString()) {
if ((txtMaGV.Text != "") && (txtTenGV.Text != "")) {
//dbConn.Open();
string strInsert = "Insert Into GiangVienHDTT Values('" + txtMaGV.Text + "','"
+ txtTenGV.Text + "'," + rdNam.Checked + ",'" + dtPickerNgaySinh.Text + "'," + txtSDT.Text + ",'" + txtEmail.Text + "','" + txtDiaChi.Text + "','" + txtMaBM.Text + "')";
OleDbCommand mdbComd = new
OleDbCommand(strInsert, dbConn);
mdbComd.ExecuteNonQuery(); dbConn.Close(); HienThi(); txtMaGV.ReadOnly = false; txtTenGV.ReadOnly = false; txtMaBM.ReadOnly = false; } else {
MessageBox.Show("Chưa nhập mã giảng viên và tên giảng viên. Hãy kiểm tra lại", "Thông báo",
MessageBoxButtons.OK, MessageBoxIcon.Exclamation); }
} else
MessageBox.Show("Đã trùng mã giảng viên. Mời bạn nhập lại", "Thông báo", MessageBoxButtons.OK,
MessageBoxIcon.Exclamation); txtMaGV.Focus(); txtMaGV.SelectAll(); } } }
Xử lý sự kiện cho nút btnSuaGV:
- Khi các thông tin về giảng viên đã được thay đổi, thông tin trong hệ
thống đã không còn phù hớp với thực tế. Hệ thống phải cập nhật lại thông tin cho chính xác và người quản lý hệ thống sẽ làm công việc
này.
- Để sửa thông tin về bất kỳ giảng viên nào đó, bạn chọn 1 row trong
datagridview có chứa đầy đủ các thông tin về giảng viên cần sửa rồi
nhấn nút sửa, nút lưu chuyển thành cập nhật. Thông tin đó sẽ được hiển
thị lên các ô textbox, combobox, datatimepicker, radio…tương ứng.
Bán sẽ chỉnh sửa thông tin trong đó rồi nhấn nút cập nhật. Thông tín sẽ được chỉnh sửa lại và lưu lại trong lưới.
- Dưới đây là đoạn mã của phương thức btnSuaGV: //Sửa thông tin về giảng viên
private void btnSuaGV_Click(object sender, EventArgs e) {
if (dgvTTGV.SelectedRows.Count > 0) {
dbConn.Open();
DataSet dbSet = new DataSet();
string str = "SELECT BoMon.TenBM, GiangVienHDTT.MaGV, GiangVienHDTT.TenGV, GiangVienHDTT.GioiTinhGV,
GiangVienHDTT.NgaySinhGV, GiangVienHDTT.SDT,
GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, GiangVienHDTT.MaBM FROM BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM =
GiangVienHDTT.MaBM Where MaGV = '" +
dgvTTGV.SelectedRows[0].Cells[0].Value + "'";
OleDbDataAdapter dbAdpt = new
OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close();
txtMaBM.Text =
dbSet.Tables[0].Rows[0]["MaBM"].ToString();
txtMaGV.Text =
txtTenGV.Text = dbSet.Tables[0].Rows[0]["TenGV"].ToString();
dtPickerNgaySinh.Text =
dbSet.Tables[0].Rows[0]["NgaySinhGV"].ToString(); if
(dbSet.Tables[0].Rows[0]["GioitinhGV"].ToString().Equals("True")) { rdNam.Checked = true; } else { rdNu.Checked = true; } txtSDT.Text = dbSet.Tables[0].Rows[0]["SDT"].ToString(); txtDiaChi.Text =
dbSet.Tables[0].Rows[0]["DiaChiGV"].ToString();
txtEmail.Text =
dbSet.Tables[0].Rows[0]["EmailGV"].ToString(); } btnLuuGV.Text = "Cập Nhật"; txtMaBM.Visible = true; }
Xử lý sự kiện cho nút btnXoaGV:
- Tương tự như sinh viên, để xóa thông tin của một giảng viên nào đó,
bạn chỉ cần chọn 1 row trong dtgridview có chứa thông tin của giảng viên đó và nhấn nút xóa. Một hộp thoại thông báo sẽ hiện ra hỏi “Bạn
có muốn xóa hay không?”. Nếu đồng ý xóa thì chọn Yes, row đó sẽ
biến mất khỏi dtgridview. Còn không muốn tiếp tục xóa thì chọn No,
dữ liệu vẫn được toàn vẹn như cũ. - Đoạn mã của btnXoaGV:
//xóa thông tin về giảng viên
private void btnXoaGV_Click(object sender, EventArgs e) {
if (MessageBox.Show("Bạn có muốn xóa hay không?",
"Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) ==
DialogResult.Yes) {
dbConn.Open();
string str = "Delete from GiangVienHDTT Where MaGV = '" + dgvTTGV.SelectedRows[0].Cells[0].Value + "'";
OleDbCommand dbDelete = new OleDbCommand(str, dbConn);
dbConn.Close(); HienThi(); }
}
Xử lý sự kiện cho nút btnThoat:
- Xử lý nút thoát khỏi form chỉ với 1 câu lệnh:
//đóng form lại
private void btnThoat_Click(object sender, EventArgs e) {
this.Close(); }
Xem thông tin giảng viên theo từng bộ môn:
- Để xem thông tin giảng viên theo từng bộ môn bạn chỉ cần chọn bộ
môn trong cbTenBoMon mà nó sổ xuống.
- Thêm phương thức mới private void
cbTenBM_SelectedIndexChanged(object sender,
EventArgs e):
//hiển thị thông tin giảng viên từ cbTenBM
private void cbTenBM_SelectedIndexChanged(object sender,
EventArgs e) {
dbConn.Open();
string str = "SELECT GiangVienHDTT.MaGV,
GiangVienHDTT.TenGV, GiangVienHDTT.GioiTinhGV,
GiangVienHDTT.GioiTinhGV, GiangVienHDTT.NgaySinhGV,
GiangVienHDTT.SDT, GiangVienHDTT.EmailGV, GiangVienHDTT.DiaChiGV, BoMon.MaBM FROM BoMon INNER JOIN GiangVienHDTT ON BoMon.MaBM = GiangVienHDTT.MaBM WHERE BoMon.TenBM ='" + cbTenBM.Text + "'"; OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdpt.Fill(dbSet);
dbConn.Close();
dgvTTGV.DataSource = dbSet.Tables[0]; }
Đưa dữ liệu cho dgvTTGV và cboTenBM:
- Đưa dữ liệu vào dgvTTGV để hiển thị tất cả các thông tin về giảng viên. Đồng thời giúp cho việc sửa lại thông tin bằng cách chọn row ở lưới rồi đưa lên textbox, combobox và datatimepicker..
//private hiển thị thông tin lên lưới
private void HienThi() {
//dbConn.Open();
string str = "Select * From GiangVienHDTT";
OleDbDataAdapter dbAdapt = new OleDbDataAdapter(str, dbConn);
DataSet dbSet = new DataSet(); dbAdapt.Fill(dbSet);
dbConn.Close();
dgvTTGV.DataSource = dbSet.Tables[0]; }
//câu lệnh hiển thị thông tin về giảng viên và lấy dữ liệu
vào cbTenBM
private void frmGiangVien_Load(object sender, EventArgs e) {
HienThi(); dbConn.Open();
DataSet dbSet = new DataSet();
string str = "Select MaBM, TenBM From BoMon";
OleDbDataAdapter dbAdpt = new OleDbDataAdapter(str, dbConn); dbAdpt.Fill(dbSet); dbConn.Close(); cbTenBM.DataSource = dbSet.Tables[0]; cbTenBM.DisplayMember = "TenBM"; }