LẬP TRÌNH CƠ SỞ DỮ LIỆU VỚI ADO
Bài 1: Tạo 1 form dùng để quản lý Khóa học trong CSDL SinhVien.mdb, có các
chức năng: duyệt các mẫu tin, thêm mới, sửa dữ liệu, lưu, xóa và thoát.
CÁCH 1: DÙNG CONTROL ADODC1 (không viết dòng cod nào) -> frmKhoa
CÁCH 2: DÙNG CONTROL ADODC1 VÀ ĐỐI TƯỢNG RECORDSET (giao diện
không dùng control ADODC, mà thiết kế lại) -> frmKhoaTest
Option Explicit
Dim rs As New ADODB.Recordset
Private Sub cmdCuoi_Click()
rs.MoveLast
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdDau_Click()
rs.MoveFirst
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdLuu_Click()
'kiem tra cac text box da nhap
If txtMaKhoa.Text = vbNullString Then
MsgBox "Phao nhap Ma khoa", vbInformation, "Loi nhap lieu"
txtMaKhoa.SetFocus
Exit Sub
End If
If txtTenKhoa.Text = vbNullString Then
MsgBox "Phao nhap Ten khoa", vbInformation, "Loi nhap lieu"
txtTenKhoa.SetFocus
Exit Sub
End If
'cap nhat vao bang
rs.Update
'cap nhat lai text dem
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
'cap nhat lai text box
txtTenKhoa.Locked = True
txtDienThoai.Locked = True
'cap nhat lai button
cmdLuu.Enabled = False
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
End Sub
Private Sub cmdSau_Click()
rs.MoveNext
If rs.EOF = True Then rs.MoveLast
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdSua_Click()
'cho text box sua
Dieu_Khien_TextBox False
'dieu kien cac button
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
End Sub
Private Sub cmdThem_Click()
rs.AddNew
txtMaKhoa.Locked = False
txtDienThoai.Locked = False
txtTenKhoa.Locked = False
txtMaKhoa.SetFocus
'dieu kien cac button
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTruoc_Click()
rs.MovePrevious
If rs.BOF = True Then rs.MoveFirst
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdXoa_Click()
'hoi xac nhan tu user
Dim n As Integer
n = MsgBox("Ban muon xoa khong?", vbCritical + vbYesNo, "Xoa du lieu")
If n = vbNo Then
rs.MoveFirst
Else
'xoa record
rs.Delete
MsgBox "Ban da xoa thanh cong", vbInformation, "Xac nhan xoa"
'cap nhat lai button
rs.MoveLast
cmdLuu.Enabled = False
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
End If
'cap nhat text box dem
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub Form_Load()
'khoi tao gia tri
Set rs = Adodc1.Recordset
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
'dieu khien text box va button
Dieu_Khien_TextBox True
cmdLuu.Enabled = False
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'giai phong cac tai nguyen (record set)
rs.Close
Set rs = Nothing
End Sub
Private Sub Dieu_Khien_TextBox(khoa As Boolean)
'dieu khien text box
txtTenKhoa.Locked = khoa
txtDienThoai.Locked = khoa
End Sub
CÁCH 3: KHÔNG DÙNG CONTROL ADODC1, DÙNG ĐỐI TƯỢNG
CONNECTION VÀ RECORDSET (thiết kế lại màn hình) -> frmKhoaAdv
Option Explicit
Dim rs As New ADODB.Recordset
Dim cnn As New ADODB.Connection
Dim fThem As Boolean
Private Sub cmdCuoi_Click()
rs.MoveLast
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdDau_Click()
rs.MoveFirst
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdLuu_Click()
'kiem tra cac text box da nhap
If txtMaKhoa.Text = vbNullString Then
MsgBox "Phao nhap Ma khoa", vbInformation, "Loi nhap lieu"
txtMaKhoa.SetFocus
Exit Sub
End If
If txtTenKhoa.Text = vbNullString Then
MsgBox "Phao nhap Ten khoa", vbInformation, "Loi nhap lieu"
txtTenKhoa.SetFocus
Exit Sub
End If
'cap nhat vao bang
'neu la them moi
If fThem = True Then rs.AddNew
'ghi len bang
rs("makhoa") = txtMaKhoa.Text
rs("tenKhoa") = txtTenKhoa.Text
rs("dienthoai") = txtDienThoai.Text
rs.Update
'cap nhat lai text dem
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
'cap nhat lai text box
txtTenKhoa.Locked = True
txtDienThoai.Locked = True
'cap nhat lai button
cmdLuu.Enabled = False
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
End Sub
Private Sub cmdSau_Click()
rs.MoveNext
If rs.EOF = True Then rs.MoveLast
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdSua_Click()
'cho text box sua
Dieu_Khien_TextBox False
txtTenKhoa.SetFocus
'dieu kien cac button
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
'cap nhat lai co them
fThem = False
End Sub
Private Sub cmdThem_Click()
txtMaKhoa.Locked = False
txtMaKhoa.Text = vbNullString
txtDienThoai.Locked = False
txtDienThoai.Text = vbNullString
txtTenKhoa.Locked = False
txtTenKhoa.Text = vbNullString
txtMaKhoa.SetFocus
'dieu kien cac button
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
'cap nhat lai co them
fThem = True
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTruoc_Click()
rs.MovePrevious
If rs.BOF = True Then rs.MoveFirst
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdXoa_Click()
'hoi xac nhan tu user
Dim n As Integer
n = MsgBox("Ban muon xoa khong?", vbCritical + vbYesNo, "Xoa du lieu")
If n = vbNo Then
rs.MoveFirst
Else
'xoa record
rs.Delete
MsgBox "Ban da xoa thanh cong", vbInformation, "Xac nhan xoa"
'cap nhat lai button
rs.MoveLast
cmdLuu.Enabled = False
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
End If
'cap nhat text box dem
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
Lien_Ket_Du_Lieu_Khoa
End Sub
Private Sub Form_Load()
'ket noi voi co so du lieu
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Tan\DAYHOC\KTLT2(VB2)\Practice\Quan ly Sinh
vien\SinhVien.mdb;"
cnn.CursorLocation = adUseClient
If cnn.State = adStateClosed Then cnn.Open
rs.Open "KHOA", cnn, adOpenDynamic, adLockOptimistic, adCmdTable
'khoi tao gia tri
rs.MoveFirst
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
fThem = False
'dieu khien text box va button
Dieu_Khien_TextBox True
cmdLuu.Enabled = False
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'giai phong cac tai nguyen (record set,connection)
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
If cnn.State = adStateOpen Then cnn.Close
Set cnn = Nothing
End Sub
Private Sub Dieu_Khien_TextBox(khoa As Boolean)
'dieu khien text box
txtTenKhoa.Locked = khoa
txtDienThoai.Locked = khoa
End Sub
Private Sub Lien_Ket_Du_Lieu_Khoa()
txtMaKhoa.Text = rs("makhoa")
txtTenKhoa.Text = rs("tenKhoa")
txtDienThoai.Text = rs("DienThoai")
End Sub
CÁCH 4: CÁCH 3 + DÙNG LƯỚI DATAGRID ĐỂ HIỂN THỊ -> frmKhoaAdv2b
Option Explicit
Dim rs As New ADODB.Recordset
Dim cnn As New ADODB.Connection
Dim fThem As Boolean
Private Sub cmdCuoi_Click()
rs.MoveLast
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdDau_Click()
rs.MoveFirst
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdLuu_Click()
'kiem tra cac text box da nhap
If txtMaKhoa.Text = vbNullString Then
MsgBox "Phao nhap Ma khoa", vbInformation, "Loi nhap lieu"
txtMaKhoa.SetFocus
Exit Sub
End If
If txtTenKhoa.Text = vbNullString Then
MsgBox "Phao nhap Ten khoa", vbInformation, "Loi nhap lieu"
txtTenKhoa.SetFocus
Exit Sub
End If
'cap nhat vao bang
'neu la them moi
If fThem = True Then
rs.AddNew
End If
'ghi len bang
rs("makhoa") = txtMaKhoa.Text
rs("tenKhoa") = txtTenKhoa.Text
rs("dienthoai") = txtDienThoai.Text
rs.Update
'cap nhat lai text dem
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
'cap nhat lai text box
txtTenKhoa.Locked = True
txtDienThoai.Locked = True
'cap nhat lai button
cmdLuu.Enabled = False
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
End Sub
Private Sub cmdSau_Click()
rs.MoveNext
If rs.EOF = True Then rs.MoveLast
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdSua_Click()
'cho text box sua
Dieu_Khien_TextBox False
txtTenKhoa.SetFocus
'dieu kien cac button
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
'cap nhat lai co them
fThem = False
End Sub
Private Sub cmdThem_Click()
txtMaKhoa.Locked = False
txtMaKhoa.Text = vbNullString
txtDienThoai.Locked = False
txtDienThoai.Text = vbNullString
txtTenKhoa.Locked = False
txtTenKhoa.Text = vbNullString
txtMaKhoa.SetFocus
'dieu kien cac button
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
'cap nhat lai co them
fThem = True
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTruoc_Click()
rs.MovePrevious
If rs.BOF = True Then rs.MoveFirst
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
End Sub
Private Sub cmdXoa_Click()
'hoi xac nhan tu user
Dim n As Integer
n = MsgBox("Ban muon xoa khong?", vbCritical + vbYesNo, "Xoa du lieu")
If n = vbNo Then
rs.MoveFirst
Else
'xoa record
rs.Delete
MsgBox "Ban da xoa thanh cong", vbInformation, "Xac nhan xoa"
'cap nhat lai button
rs.MoveLast
cmdLuu.Enabled = False
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
End If
'cap nhat text box dem
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
Lien_Ket_Du_Lieu_Khoa
End Sub
Private Sub DataGrid1_Click()
Dim n As Integer
'n = DataGrid1.r
txtMaKhoa.Text = DataGrid1.Columns(0)
txtTenKhoa.Text = DataGrid1.Columns(1)
txtDienThoai.Text = DataGrid1.Columns(2)
End Sub
Private Sub Form_Load()
'ket noi voi co so du lieu
cnn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=D:\Tan\DAYHOC\KTLT2(VB2)\Practice\Quan ly Sinh
vien\SinhVien.mdb;"
cnn.CursorLocation = adUseClient
If cnn.State = adStateClosed Then cnn.Open
rs.Open "KHOA", cnn, adOpenDynamic, adLockOptimistic, adCmdTable
'khoi tao luoi data grid
Set DataGrid1.DataSource = rs
'khoi tao gia tri
rs.MoveFirst
Lien_Ket_Du_Lieu_Khoa
txtDem.Text = rs.AbsolutePosition & "/" & rs.RecordCount
fThem = False
'dieu khien text box va button
Dieu_Khien_TextBox True
cmdLuu.Enabled = False
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'giai phong cac tai nguyen (record set,connection)
If rs.State = adStateOpen Then rs.Close
Set rs = Nothing
If cnn.State = adStateOpen Then cnn.Close
Set cnn = Nothing
End Sub
Private Sub Dieu_Khien_TextBox(khoa As Boolean)
'dieu khien text box
txtTenKhoa.Locked = khoa
txtDienThoai.Locked = khoa
End Sub
Private Sub Lien_Ket_Du_Lieu_Khoa()
txtMaKhoa.Text = rs("makhoa")
txtTenKhoa.Text = rs("tenKhoa")
txtDienThoai.Text = rs("DienThoai")
End Sub