Lập trình Visual Basic 2Chương 1: TỔNG QUAN VỀ LẬP TRÌNH CSDL VỚI VB CÁC KỸ THUẬT LIÊN KẾT CSDL CÁC ĐỐI TƯỢNG LẬP TRÌNH CƠ SỞ ĐIỀU KHIỂN ADO DATA... CÁC ĐỐI TƯỢNG LẬP TRÌNH ADO CƠ SỞLập
Trang 1Lương Văn Vân
BÀI GIẢNG VISUAL BASIC 2
Trang 2MỘT SỐ TIÊU ĐIỂM CỦA MÔN HỌC
Hệ quản trị CSDL (Access hoặc SQL Server)
Câu lệnh SQL để truy vấn dữ liệu
Thi kết thúc môn học bằng hình thức thi viết hoặc thi thực hành.
Lập trình Visual Basic 2
Trang 3TÀI LIỆU THAM KHẢO
1 Đặng Thế Khoa, Giáo trình lập trình ứng dụng Visual Basic, Trung tâm tin học, ĐH Khoa học tự nhiên - Đại học Quốc gia TP.Hồ Chí Minh.
2 VN-Guide, Giáo trình học và thực hành Visual Basic căn bản, Nhà xuất bản thống kê.
3 TS Võ Trung Hùng, Bài giảng Lập trình Visual Basic, Đại Học Bách Khoa Đà nẵng, 2008.
4 Giáo trình Visual Basic 6.0, Đại học FPT 2007.
Lập trình Visual Basic 2
Trang 5Lập trình Visual Basic 2
Chương 1: TỔNG QUAN VỀ LẬP TRÌNH CSDL VỚI VB
CÁC KỸ THUẬT LIÊN KẾT CSDL CÁC ĐỐI TƯỢNG LẬP TRÌNH CƠ SỞ
ĐIỀU KHIỂN ADO DATA
Trang 7CÁC KỸ THUẬT LIÊN KẾT CSDL (tt)
Kỹ thuật DAO
DAO ( Data Access Object ) là lớp giao tiếp cấp cao gồm các đối tượng cho phép chương trình liên kết trực tiếp đến CSDL Access thông qua một cơ chế truy xuất dữ liệu Microsoft Jet.
Lập trình Visual Basic 2
Trang 8CÁC KỸ THUẬT LIÊN KẾT CSDL (tt)
Kỹ thuật OLE DB
OLE DB là kỹ thuật truy cập dữ liệu cấp thấp, được phát triển từ kỹ thuật ODBC, cung cấp bộ giao tiếp API chung cho các ứng dụng cho phép truy xuất các CSDL có cấu trúc và không cấu trúc thông qua một trình giao tiếp OLE DB Provider.
Lập trình Visual Basic 2
Trang 10CÁC ĐỐI TƯỢNG LẬP TRÌNH ADO CƠ SỞ
Lập trình Visual Basic 2
Connection : Là đối tượng được sử dụng dùng để tạo liên kết chương trình với CSDL
Provider : Tên của chương trình giao tiếp dữ liệu (OLE DB Provider)
Data source : Tên đầy đủ của tập tin CSDL cần liên kết
Username : Là thông tin tùy chọn quy định tên của người dùng được tổ chức bên trong CSDL
Password : Chuỗi mật khẩu tương ứng với Username truy cập CSDL
Trang 11CÁC ĐỐI TƯỢNG LẬP TRÌNH ADO CƠ SỞ
Là đối tượng dùng để nhận và trả về giá trị khi đối tượng Command gọi một thủ tục.
Đối với CSDL Access các truy vấn đã được xây dựng sẵn trong tập tin MDB (bao gồm các truy vấn chọn, thêm, xóa, sửa…) có thể được xem như thủ tục.
Trang 12CÁC ĐỐI TƯỢNG LẬP TRÌNH ADO CƠ SỞ
Trang 13CÁC ĐỐI TƯỢNG LẬP TRÌNH ADO CƠ SỞLập trình Visual Basic 2
Mô hình các đối tượng :
Trang 14ĐIỀU KHIỂN ADO DATA
Lập trình Visual Basic 2
Microsoft ADO Data Control :
Cho phép liên kết và truy xuất CSDL theo kỹ thuật ADO
Bình thường, khi ta mới khởi động một project VB6 mới,
Control Data ADO không có sẵn trong IDE Muốn có nó, bạn
hãy dùng Menu Command Project | Components , rồi chọn Microsoft ADO Data Control 6.0 (OLEDB) từ giao diện Components như dưới đây:
Trang 15ĐIỀU KHIỂN ADO DATA (tt)
Lập trình Visual Basic 2
Trang 16Lập trình Visual Basic 2
Chương 2: CÁC ĐT CƠ SỞ TRONG MÔ HÌNH LT CSDL
CONNECTION
RECORDSET
Trang 17Lập trình Visual Basic 2
Tạo đối tượng Connection dùng lệnh:
Public cn As ADODB Connection
Set cn = New ADODB Connection
adStateClosed: không kết nối
adStateOpen: kết nối
Thuộc tính Open:
Dùng để mở kết nối
Trang 18Lập trình Visual Basic 2
ADO, đối tượng được dùng để hiển thị và cập nhật dữ liệu trong lập trình ứng dụng CSDL.
Mỗi một dòng dữ liệu có trong bộ mẩu tin được gọi là mẩu tin Tuy bộ mẫu tin có thể chứa nhiều mẩu tin nhưng tại một thời điểm, chúng ta chỉ có thể làm việc với đúng một mẩu tin gọi là mẩu tin hiện hành Mỗi cột dữ liệu có trong bộ mẩu tin được gọi là trường dữ liệu ( Field ).
Trang 19RECORDSET (TT)
Lập trình Visual Basic 2
Khai báo biến bộ mẩu tin (Recordset)
Dim <tên biến Recordset> as <tên ADO data control>.Recordset
Cấp phát vùng nhớ cho biến Recordset
Set <tên biến Recordset> = New <tên ADO data control>.Recordset
Khởi tạo các giá trị cho biến bộ mẩu tin (Recordset)
<tên biến Recordset>.Open [Source],[Connection],[Type],[Lock], [Option]
Trong đó:
• Source: là chuỗi xác định nguồn dữ liệu của bộ mẩu tin là tên một
bảng hay chuỗi câu lệnh SQL.
• Connection: là chuỗi chứa thông tin kết nối CSDL.
Trang 20RECORDSET (TT)
Lập trình Visual Basic 2
• Type: là các hằng số chỉ ra loại của Recordset Thông thường khi
viết ứng dụng chạy trên máy đơn chúng ta thường dùng loại adOpenStatic
• Lock: là thuộc tính xác định trạng thái cho phép khóa dữ liệu khi cập nhật trên bộ mẫu tin
• Option: là thuộc tính xác định kiểu nguồn dữ liệu Source
adCmdTable Khi Source là tên bảng trên Access 2 adCmdText Khi Source là truy vấn SQL 1 adCmdStoreProc Khi Source là Stored Procedure trong
Trang 21 Đóng mở bộ mẩu tin (Recordset)
<tên biến recordset>.Close
<tên biến recordset>.Open
VD: if <tên biến recordset>.State = adStateClosed then <tên biến recordset>.Open
Trang 23RECORDSET (TT)
Lập trình Visual Basic 2
Liên kết bộ mẫu tin với các điều khiển dữ liệu:
Set <tên điều khiển>.Datasource= <tên biến recordset>
<tên điều khiển>.DataField= <chuỗi tên trường liên kết> Trong đó:
Tên điều khiển: TextBox, Label, ComboBox….
Trang 24RECORDSET (TT)
Lập trình Visual Basic 2
Liên kết bộ mẫu tin với các điều khiển dữ liệu:
Set <tên biến Recordset> = New ADODB.Recordset
<tên biến Recordset>.Source = " select <tên trường> from <tên bảng>
"
<tên biến Recordset>.ActiveConnection = <tên chuỗi kết nối>
<tên biến Recordset> Open
Ví dụ:
• Set rs = New ADODB.Recordset
• rs.Source = " select mssv, hoten from sinhvien “
• rs.ActiveConnection = cn
• rs.Open
Trang 25RECORDSET (TT)
Lập trình Visual Basic 2
Các thuộc tính mẫu tin thường dùng
RecordCount (trị Long Integer): số lượng mẩu tin
BOF: Trước mẩu tin đầu
EOF: Sau mẩu tin cuối
EditMode: chỉ trình trạng của mẩu tin hiện hành, có các giá trị sau
• adEditNone 0 Bình thường
• adEditInProgress 1 Đang sửa đổi chưa cập nhật
• adEditAdd 2 Đang thêm mới chưa cập nhật
• adEditDelete 3 Đánh dấu hủy chưa cập nhật
Trang 26RECORDSET (TT)
Lập trình Visual Basic 2
Di chuyển mẩu tin hiện hành
<tên biến Recordset>.MoveFirst
<tên biến Recordset>.MoveLast
<tên biến Recordset>.MoveNext
<tên biến Recordset>.MovePrevious
<tên biến Recordset>.Move numRec [, startPos]
• numRec: Là số mẩu tin sẽ nhảy qua tính từ vị trí startPos
• startPos: Lấy vị trí hiện hành
Trang 27RECORDSET (TT)
Lập trình Visual Basic 2
Duyệt qua các mẩu tin của một bộ mẩu tin (Recordset)
<tên biến Recordset>.MoveFirst
Do While Not <tên biến Recordset>.EOF các xử lý trên mẩu tin hiện hành
<tên biến Recordset>.MoveNext Loop
Trang 28RECORDSET (TT)
Lập trình Visual Basic 2
Thêm mới một mẩu tin (AddNew):
“Insert into TenTable values ('" & gtri1 & "‘, '" & gtri2 & "‘ '" & gtri_n &
"')“
ví dụ:
Dim <tên biến Recordset> as <tên ADO data control>.Recordset
Set <tên biến Recordset> = New ADODB.Recordset
rs.Source = “Insert into TenTable values ('" & gtri1 & "‘,…& gtri_n &
"‘)“
rs.ActiveConnection = cn
Trang 29RECORDSET (TT)
Lập trình Visual Basic 2
Sửa mẩu tin (Update):
“Update TenTable set TenField1 ='" & gtr1 & "', TenField2 ='" & gtr2 & "‘,
TenField_n ='" & gtri_n& "' where TenField chứa điều kiện sửa = '" & giá trị điều kiện cần sửa & “’ “
Ví dụ:
Dim <tên biến Recordset> as <tên ADO data control>.Recordset
Set <tên biến Recordset> = New ADODB.Recordset
rs.Source = “Update TenTable set TenField1 ='" & gtr1 & "',
TenField2 ='" & gtr2 & "‘, TenField_n ='" & gtri_n& "' where
TenField chứa điều kiện sửa = '" & giá trị điều kiện cần sửa & "‘ “ rs.ActiveConnection = cn
rs.Open
Trang 30RECORDSET (TT)
Lập trình Visual Basic 2
Xóa mẩu tin (Delete):
“Delete * from TênTable where TenField chứa điều kiện xóa = '" & giá trị điều kiện cần xóa & “’ “
Trang 31Chương 3: CÁC ĐIỀU KHIỂN DỮ LIỆU
Lập trình Visual Basic 2
DATACOMBO VÀ DATALIST:
Mục đích sử dụng:
combo Datalist
Trang 32CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Khởi tạo DataCombo và DataList:
Trang 33CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Các thuộc tính của DataCombo và DataList:
• Với Bookmark của RecordSet có chức năng lưu trữ thông tin vị trí của
mẩu tin hiện hành.
RowSource Nguồn dữ liệu để các điều khiển (DataCombo và DataList) hiển thị,
Trang 34CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Code minh họa tạo DataCombo:
Dim <tênbiếnRecordset> as <tên ADO DataControl>.Recordset Set <tênbiếnRecordset> = New <tênADO DataControl>.Recordset
<tênbiếnRecordset>.Open [Source],[Connection],[Type],[Lock], [Option]
Set <Tên_Điều_Khiển>.RowSource = <tênbiếnRecordset>.
<Tên_Điều_Khiển>.ListField = “Tên trường“
Code hiển thị thông tin trường khác tương ứng trên một bộ mẩu tin lên TextBox khi ta chọn một trường từ DataCombo:
Viết code ở sự kiện Click vào vùng hiển thị của điền khiển nếu <Tên_Điều_Khiển>.SelectedItem > 0 thì
Trang 35Chương 3: CÁC ĐIỀU KHIỂN DỮ LIỆU
Lập trình Visual Basic 2
COMBOBOX:
Mục đích sử dụng:
Trang 36CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Viết Code cho Combobox:
Set rs = New ADODB.Recordset rs.Source = "select * from Tên_Table “ rs.ActiveConnection = cn
rs.Open
Do While Not rs EOF
Tên_Combobox AddItem ( rs !Tên_Field)
………
rs MoveNext Loop
Trang 37CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
LISTVIEW:
Mục đích sử dụng:
Trang 38CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Cách tạo ListView:
• Bước 1:
Trang 39CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
• Bước 2:
Trang 40CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
• Bước 3: Thiết lập các thuộc tính cho ListView
Trang 41CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
• Bước 4: Tạo các cột và định dạng
Trang 42CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Viết Code cho ListView:
Set rs = New ADODB.Recordset
rs.Source = "select * from Tên_Table “
rs.ActiveConnection = cn
rs.Open
Dim Tên biến LV As ListItem
Tên_Điều_Khiển_ListView.ListItems.Clear
Do While Not rs.EOF
Set Tên_biến_LV = Tên_Điều_Khiển_ListView i.ListItems Add(, , rs ! Tên_Field)
Tên_biến_LV SubItems(1) = rs !Tên_Field
………
rs MoveNext
Trang 43CÁC ĐIỀU KHIỂN DỮ LIỆU (TT)
Lập trình Visual Basic 2
Sự kiện ItemClick của ListView:
Tên_điều_Khiển (TextBox…)= Item.Text
KIỀM TRA LỖI NHẬP LiỆU:
On Error GoTo THOAT
Exit Sub
THOAT:
MsgBox “Thông báo”
Trang 44CÁC KỸ THUẬT LẬP TRÌNH CSDL
Lập trình Visual Basic 2
Đối tượng ProgressBar
Sử dụng trong bộ định thời gian (Timer )
Trang 45CÁC KỸ THUẬT LẬP TRÌNH CSDL (TT)
Lập trình Visual Basic 2
Đối tượng Timer
Kỹ Thuật Form Login
Trang 46Lập trình Visual Basic 2
Chương 4: XÂY DỰNG CÁC ỨNG DỤNG
CÁCH TỔ CHỨC MỘT ỨNG DỤNG
XỬ LÝ CÁC LỖI THIẾT KẾ GIAO DIỆN
Trang 47CÁCH TỔ CHỨC MỘT ỨNG DỤNG
Lập trình Visual Basic 2
Để thuận tiện việc theo dõi, tìm kiếm:
DATA FORMS REPORTS GRAPHICS MODULES ỨNG DỤNG
Trang 48CÁCH TỔ CHỨC MỘT ỨNG DỤNG (TT)
Lập trình Visual Basic 2
DATA chứa các tập tin CSDL (đối với nguồn Access)
FORMS chứa các form trong ứng dụng
REPORTS chứa các báo biểu của ứng dụng
GRAPHICS chứa các tập tin đồ họa
MODULES chứa các tập tin module
Tập tin ứng dụng (*.vbp) được trong thư mục ỨNG DỤNG
Trang 49XỬ LÝ CÁC LỖI (BẪY LỖI)
Lập trình Visual Basic 2
Lỗi khóa chính nhận giá trị Null :
Trước khi thêm một mẩu tin mới ta phải kiểm tra trường khóa chính không nhận giá trị giá trịn rỗng
Code:
If giá_trị_ = “” then thông_báo “giá trị khóa chính phải khác rỗng”
End If
Trang 50Set rs = New ADODB.Recordset
rs Source= "select * from Table where khoa='" & giá_trị_khóa_mới & "'“
Trang 51XỬ LÝ CÁC LỖI (TT)
Lập trình Visual Basic 2
Lỗi không tồn tại khóa ngoại:
Khi ta thêm một mẫu tin mới thì giá trị khoá ngoại của mẩu tin mới không tồn tại ở bảng 1 trong CSDL
Kỹ thuật:
Set rs = New ADODB.Recordset
rs Source= "select * from Table where khoa='" & giá_trị_khóa_mới & "'“
rs ActiveConnection = cn
rs Open
If rs EOF() Then “không tồn tại khóa ngoại ở bảng 1”
End If
Trang 53THIẾT KẾ GIAO DIỆN
Lập trình Visual Basic 2
Khi thiết kế giao diện màn hình cho các ứng dụng chúng ta cần chú ý đến 3 yếu tố sau:
Giao diện thân thiện
Giao diện hài hòa
Thao tác thuận tiện
Trang 54THIẾT KẾ GIAO DIỆN
Trang 55THIẾT KẾ GIAO DIỆN
Lập trình Visual Basic 2
Thiết kế form đơn
Trang 56THIẾT KẾ GIAO DIỆN
Lập trình Visual Basic 2
Thiết kế form đơn kép
Trang 57Lập trình Visual Basic 2
Chương 5: BÁO BIỂU (REPORT)
DATAREPORT DESIGNER
MỘT SỐ KỸ THUẬT KHÁC
Trang 58DATAREPORT DESIGNER
Lập trình Visual Basic 2
Report header: Phần tiêu đề đầu của báo biểu
Report footer: Phần tiêu đề cuối của báo biểu
Page header: Tiêu đề đầu trang
Page footer: Tiêu đề cuối trang
Group header: Tiêu đề đầu của nhóm
Group footer: Tiêu đề cuối của nhóm
Details: Chứa nội dung chi tiết của báo biểu
Trang 59DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Cấu trúc của báo biểu
Trang 60DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Các đối tượng của báo biểu
Trang 61DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Các thuộc tính chính của báo biểu
Name: Tên báo biểu
Caption: Tiêu đề của cửa sổ báo biểu
DataSource: Nguồn dữ liệu (tên của DataEnvironment)
Datamember: Tên của command tạo cho báo biểu
Trang 62DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Tạo một command trên DataEnvironment chứa các trường
Các thuộc tính của Command
• ConnectionName: Tên đối tượng kết nối CSDL
• CommandType: Gồm 3 tham số sau.
– abCmdText: Chứa câu truy vấn SQL…
– abCmdTable: Chứa table
Trang 63DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Tạo dữ liệu cho báo biểu
Để tạo số liệu cho báo biều thì phải DataEnvironment
• Đối tượng Connection:
– ConnectionSource: tên CSDL cần kết nối
Trang 64DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Tạo nhóm trên báo biểu
Trang 65DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Đưa trường tính toán vào cùng GroupHeader và Footer
Dùng đối tượng RptFunction để đưa trường tính toán
Các thuộc tính chính của đối tượng RptFunction
• Name: Tên đối tượng
• Datamember: Tên của Command chứa trường cần tính toán
• Datafield: Tên trường muốn tính toán
• FunctionType: Loại hàm tính toán
Trang 66DATAREPORT DESIGNER (TT)
Lập trình Visual Basic 2
Các FunctionType của đối tượng RptFunction
rptFuncSum Tổng các Datafield kiểu số
rptFuncAve Giá trị trung bình các Datafield kiểu số
rptFuncMin Giá trị nhỏ nhất của Datafield kiểu số
rptFuncMax Giá trị lớn nhất của Datafield kiểu số
rptFunRcnt Đếm số mẩu tin
rptFunVcnt Đếm số mẩu tin trong vùng không chứa
trị
Trang 67MỘT SỐ KỸ THUẬT KHÁC
Lập trình Visual Basic 2
Đưa số trang và ngày tháng vào báo biểu
Nhất chuột phải vào báo biểu\ chọn Insert Control
Trang 68MỘT SỐ KỸ THUẬT KHÁC (TT)
Lập trình Visual Basic 2
Ý nghĩa của các điều khiển trên
Current Page Number Số trang hiện hành %p
Current Data (Short Format) Ngày hiện hành (dạng ngắn) %dCurrent Data (Long Format) Ngày hiện hành (dạng đầy đủ) %DCurrent Time (Short Format) Giờ hiện hành (dạng ngắn) %tCurrent Time (Long Format) Giờ hiện hành (dạng đầy đủ) %T
Trang 69MỘT SỐ KỸ THUẬT KHÁC (TT)
Lập trình Visual Basic 2
Thi hành một báo biểu:
Tên_báo_biểu Show ()