Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài 7. Xử lý trên form Nhập liệu và form Tìm kiếm Mục đích Trong bài thực hành này, bạn sẽ làm quen với control Microsoft Hierachical FlexGrid để hiển thị kết quả tra cứu trên form Tìm kiếm. Sau đó, bạn sẽ làm quen với việc xử lý nhập dữ liệu mới vào CSDL đối với các form Nhập liệu Yêu cầu Đã nắm được các khái niệm cơ bản về xây dựng ứng dụng bằng VB Sử dụng được hệ quản trị CSDL Access Vấn đề liên quan Làm việc với control Microsoft Hierachical FlexGrid Xử lý câu lệnh SQL Insert Thời gian để hoàn tất bài thực hành: 90 phút 1 Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7.1. Đọc- hiểu thiết kế Mục đích: Tìm hiểu thiết kế và mã nguồn của 1 ứng dụng đã xây dựng sẵn 1. Mở Microsoft Access 2. Mở CSDL HOCSINH.MDB, tìm hiểu cấu trúc và relationship giữa các bảng của CSDL này 3. Mở Microsoft Visual Basic 4. Mở lại ứng dụng đã xây dựng ở bài tập trước, tìm hiểu và nhớ lại những bước đã làm, kèm theo lí do tại sao làm như vậy. 2 Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7.2. Thiết kế giao diện Mục đích: Thiết kế form với control nâng cao 1. Thêm 1 form vào project và đặt tên là frmTimkiem với giao diện như sau: 3 txHoTen cmdTimkiemTrovecmdTiepnhan cmdBaocao gridKetqua (chọn Project- >Components- >Microsoft Hierachical FlexGrid Control 6.0 (OLEDB) để thêm control này vào ToolBox, rồi kéo thả control này từ ToolBox vào form Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7.3. Thực thi câu lệnh để hiển thị form Tìm kiếm Mục đích: Nhắc lại các lệnh gọi hiển thị form trong ứng dụng 1. Viết hàm sau đây với mục đích hiển thị form Tìm kiếm mới tạo ra thêm Private Sub HienthiTimkiem() Dim dlgTimkiem As New frmTimkiem dlgTimkiem.Show End Sub 2. Viết hàm xử lý sự kiện Click cho nút Tìm kiếm 3. Chạy thử chương trình xem form Tìm kiếm đã được hiển thị khi người dùng click vào button Tìm kiếm hay chưa 4 'Hien thi Dialog Tim kiem khi nguoi dung click vao button Tim kiem Private Sub cmdTimkiem_Click() HienthiTimkiem End Sub Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7.4. Xử lý form Tìmkiếm Mục đích: Làm quen với Microsoft Hierachical FlexGrid Control Ta sẽ cho phép người dùng nhập vào thông tin, và sau đó tìm kíếm học sinh thỏa yêu cầu bằng các bước sau Ghi chú: Tất cả các thao tác sau được làm tại frmTimkiem! 1. Kết nối CSDL a. Chọn công nghệ kết nối sử dụng là ADO (bước cơ bản thứ 1 trong kết nối CSDL) b. Khai báo biến connection là biến toàn cục Dim Cn As ADODB.Connection c. Mở kết nối tới CSDL trong hàm Form_Load (bước cơ bản thứ 2 trong kết nối CSDL) Private Sub Form_Load() ‘Khoi tao moi mot doi tuong Connection Set Cn = new ADODB.Connection Cn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source = Hocsinh.mdb” Cn.Open End Sub 2. Tìm kiếm học sinh thỏa yêu cầu a. Sử dụng lại hàm đã được viết sẵn HienthiKQLenGrid 'Ham nay dung de hien thi du lieu tra ra tu 1 cau lenh Select len FlexGrid 'Tham so: ' strSQL: cau truy van SQL ' Cn: connection ket noi toi CSDL (da duoc mo san) Private Sub HienthiKQLenGrid(ByVal strSQL As String, ByVal Cn As ADODB.Connection) Dim Rs As New ADODB.Recordset Rs.Open strSQL, Cn, adOpenStatic, adLockOptimistic If (Not Rs.BOF) Then 'Di chuyen con tro ve dau RecordSet Rs.MoveFirst 'So dong va so cot cua grid gridKetqua.Rows = Rs.RecordCount + 1 gridKetqua.Cols = Rs.Fields.Count + 1 'Hai bien tam Dim iMaxRow As Integer, iMaxCol As Integer iMaxRow = Rs.RecordCount iMaxCol = Rs.Fields.Count - 1 'Khai bao 2 bien dem luu giu gia tri dong va cot hien thoi Dim iCurRow As Integer, iCurCol As Integer 5 Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM 'Add thanh tieu de For iCurCol = 1 To iMaxCol gridKetqua.TextMatrix(0, iCurCol) = Rs(iCurCol - 1).Name Next 'Add du lieu tu RecordSet vao Grid For iCurRow = 1 To iMaxRow For iCurCol = 1 To iMaxCol gridKetqua.TextMatrix(iCurRow, iCurCol) = Rs(iCurCol - 1) Next Rs.MoveNext Next Else MsgBox "Khong tim thay du lieu nao thoa dieu kien" gridKetqua.Clear End If Rs.Close End Sub b. Viết hàm xử lý sự kiện Click cho nút Tìm kiếm Private Sub cmdTimkiem_Click() Dim strSQL As String 'Thuc thi cau lenh SQL de lay tat ca CAC HOC SINH THOA DK strSQL = "Select * from HOCSINH where HOTEN LIKE '%" & txtHotenTimkiem.Text & "%'" 'Hien thi ket qua HienthiKQLenGrid strSQL, cn End Sub 3. Chạy thử chương trình 6 Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7.5. Xử lý trên form Nhập liệu đơn giản Mục đích: Làm quen với việc thao tác với các form Nhập liệu Ta sẽ cho phép người dùng nhập vào thông tin, và sau đó thêm mới học sinh này vào CSDL. (Mặc định là học sinh này học tại trường Đại học An Giang với mã trường là T1. Các bạn có thể nâng cấp để thêm một comboBox cho phép người dùng chọn trường) Ghi chú: Tất cả các thao tác sau được làm tại frmTiepnhan! 1. Viết các hàm xử lý theo đoạn code mẫu sau: ‘Khai bao 1 connection toan cuc Dim cn As ADODB.Connection ‘Ham xu ly su kien Load Private Sub Form_Load() 'Khoi tao moi mot doi tuong Connection Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = Hocsinh.mdb" cn.Open End Sub 7 Bài 7.BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM ‘Ham xu ly su kien UnLoad Private Sub Form_Unload(Cancel As Integer) cn.Close End Sub ‘Ham xu ly su kien Click cua nut Tiepnhan Private Sub cmdTiepnhan_Click() If (txtMaHS.Text = "" Or (txtHoten.Text = "") Or _ (txtNgaysinh.Text = "") Or (txtDiachi.Text = "")) Then MsgBox "Chua nhap du thong tin" Exit Sub End If Dim strSQL As String ''Thuc thi cau lenh SQL de cap nhat moi du lieu dua vao CSDL strSQL = "Insert into HOCSINH Values ('" & txtMaHS.Text & "','" & txtHoten.Text & "','" & txtNgaysinh.Text & "','" & txtDiachi.Text & "'," & optionNam.Value & ",'T1')" cn.Execute strSQL MsgBox "Da them du lieu" End Sub 2. Save project, chạy thử chương trình 8 . Bài 7. BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài 7. Xử lý trên form Nhập liệu và form Tìm kiếm Mục đích Trong bài thực hành này, bạn sẽ làm quen. chương trình 6 Bài 7. BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7. 5. Xử lý trên form Nhập liệu đơn giản Mục đích: Làm quen với việc thao tác với các form Nhập liệu Ta sẽ cho. Sub Bài 7. BÀI GIẢNG THỰC HÀNH MÔN NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Bài tập 7. 4. Xử lý form Tìmkiếm Mục đích: Làm quen với Microsoft Hierachical FlexGrid Control Ta sẽ cho phép người dùng nhập vào