text:
1
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET
Mụctiêu
-Vậndụng bộ công cụ lậptrìnhVisual
Basic.NET để xây dựng ứng dụng (từđơn
giản đếnphứctạp).
-Cókhả năng tìm hiểusâuhơncáckỹ thuật
lập trình Visual Basic.NET nâng cao (hệ
thống, mạng…).
Cán bộ phụ trách
Lâm Hoài Bảo (lhbao@cit.ctu.edu.vn)
2
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET
Nộidung chủ yếu
- .NET Framework & Visual Basic.NET
-Lậptrìnhhướng đốitượng.
-Windows Form
-Cơ sở dữ liệuvớiADO.NET.
- Crystal Reports
3
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET
Kiếnthức liên quan
Kỹ năng sử dụng máy tính (Windows),
Lậptrìnhcănbản.
Kỹ năng lập trình tốt Lập trình cănbản
Sử dụng HĐH Windows. Kỹ năng sử dụng máy tính
4
Tài liệuthamkhảo
- Developing Windows-Based Applications
with Visual Basic .NET and Visual C Sharp
.NET; Microsoft Press A Division of Microsoft
Corporation One Microsoft Way Redmond; 2002.
- Programming Visual Basic .NET; Dave
Grundgeiger; Publisher: O'Reilly, First Edition
January; 2002.
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET5
Chương 1: .Net Framework
& Visual Basic.NET
.NET Framework & Common Language
Runtime
Ngôn ngữ Visual Basic.Net
6
Bài 1: Giớithiệuvề .NET &
VISUAL BASIC.NET
Khái niệm và các thành phầncủa.Net
Framework.
Cấutrúc1 ứng dụng .NET
Giớithiệuvề Visual Basic.NET
Chương trình Visual Basic.Net đầutiên.
7
.NET FRAMEWORK
Là mộtmôitrường an toàn cho việc
quảnlývấn đề phát triểnvàthựcthi
ứng dụng.
Gồm2 phần:
- Common Language Runtime (CLR):
quảnlýviệcthựcthimãlệnh.
-Thư việnlớp .NET Framework: tập
hợpcáckiểucủaCLR.
8
CÁC THÀNH PHẦN CỦA .NET
FRAMEWORK9
NGÔN NGỮ & .NET
FRAMEWORK
Tương thích giữa các ngôn ngữ với
nhau (do CLR).
App
(VB.NET,
C#)
VB.NET (C#)
compiler
Microsoft
Intermediate
Language
(MSIL hay IL)
CLR
đọc&
thựcthi
Common Language
Specification (CLS)
10
VISUAL BASIC.NET
Mộtphầncủa Visual Studio.NET
Thuầnhướng đốitượng.
Ngôn ngữ duy nhất trong VS.NET hỗ trợ
chếđộ dịch nền.
Không phân biệtchữ hoa và chữ
thường.
11
ỨNG DỤNG .NET ĐẦU TIÊN
Dịch: vbc <Tên tậptin>
Sau khi dịch xong, ta nhận đượctậptin thực thi (exe).
Thựchiệntậptin này.
TD: Tập tin HelloWorld.vb:
Public Module Hello
Public Sub Main()
System.Console.WriteLine("hello world")
End Sub
End Module
Dịch tập tin: vbc HelloWorld.vb
Thựcthitập tin HelloWorld.exe
12
Bài 2: Ngôn ngữ lậptrình
VISUAL BASIC.NET
Kiểudữ liệu, biến& hằng trong VB.NET.
Câu lệnh đơn trong VB.NET
Các lệnh có cấu trúc củaVB.NET13
KIỂU DỮ LIỆU & ĐỊNH DANH
Kiểugiátrị (cấu trúc): Boolean, Char, Byte, Date,
Decimal, Double, Integer, Long, Short, Single,
Structure.
Kiểu tham chiếu(lớp): Object, String.
Định danh (danh biểu): là tên dùng để đặtchobiến,
hằng, kiểu, lớp, phương thức… theo quy tắc:
-Bắt đầulà1 kýtự từ A-Z.
- Theo sau là các ký tự, hoặckýsố (0-9) hay dấu
gạch dưới.
-Têncó độ dài tối đalà40.
- Không phân biệtchữ hoa và chữ thường.
TD tên: TH_K32, Dt_k33
14
BIẾN (VARIABLE)
Là đạilượng dùng để chứadữ liệu
trong quá trình tính toán.
Cú pháp khai báo biến:
Dim <Tên biến> [As <Kiểu>] [= <Biểuthức>]
15
BIẾN (VARIABLE)
Biếncụcbộ: là biến đượckhaibáo
trong mộtkhốilệnh (Dim)
TD: Tìm giá trị nghịch đảocủax
If x <> 0 Then
Dim rec As Double
rec = 1/x
Console.Writeline(CStr(rec))
End If
16
BIẾN (VARIABLE)
Biếncấp module: là biến đượckhaibáotrong
phầnkhaibáotoàncụccủamộtmodule
(Public, Friend, Private).
Private: là biếnchỉ có hiệulựctrongmodule
đó(mặc định).
Friend: là biếnchỉ có hiệulựctrongdự án
đó.
Public: biếncóhiệulựckhôngchỉ trong dự
án nó được khai báo mà còn trong các dự án
khác có tham chiếu đếndự án này.17
BIẾN (VARIABLE)
Giả sử Project1, ta có Module sau:
Public Module Module1
Public iModulePublic As Integer
Friend iModuleFriend As Integer
End Module
Nếu Project2 tham chiếu đến Project1, ta viết:
Project1.Module1.iModulePublic = 100
Nhưng Lỗi "not accessible" khi:
Project1.Module1.iModuleFriend = 100
18
THÍ DỤ VỀ KHAI BÁO BIẾN
Dim x As Integer
Khi muốn khai báo nhiềubiếncùngkiểu, sử
dụng dấuphẩy (,) phân cách:
Dim x As Long, i, j, k As Integer, _
s As String
Vừakhaibáovừakhởitạogiátrị:
Dim x As Integer = 5
Dim x As Integer = 6, _
y As Integer = 9
19
HẰNG (CONSTANT)
Là đạilượng có giá trị không đổitrong
quá trình tính toán.
Private|Public|Friend|Protected Const _
<Tên hằng> [As <Kiểu>]= <Biểuthức>
TD:
Public Const Pi = 3.14
Private Const g As Single = 9.8
20
BIỂU THỨC
Các phép toán số học (+, -, *, /, Mod,
\, ^).
Các phép toán quan hệ: And, Not, Or.
Các phép toán so sánh: =, >=, <=, <,
>, <>.
Ngoài ra, ta có thể sử dụng cặpdấu
ngoặc đơn để tăng độ ưutiên.21
CHUYỂN ĐỔI KIỂU
Tùy chọn Option Strict: xác định cách thức
trìnhbiêndịch xác định sự tương thích kiểu
trong biểuthức(On: BT phảitương thích
kiểu, Off: VB tựđộng chuyển đổikiểu).
TD: Dim A as Long=6
Dim b As Integer=A
sẽ có lỗixuấthiệnnếu đặt Option Strict On
Mộtsố hàm chuyển đổikiểu: CBool, CChar,
CDate, CDbl, CDec, CInt, CLng, CObj, CSng,
CStr.
22
CÂU LỆNH OPTION
Tác động đếnquátrìnhthựcthicủatrình
biên dịch.
Option Compare [Binary | Text]: cách
thứcso sánhchuỗi.
Option Explicit [On | Off]: xác định các
biếnsử dụng bắtbuộcphải khai báo hay
không?
Option Strict [On | Off]: tựđộng chuyển
đổikiểutrongbiểuthức.
23
CÂU LỆNH GÁN
Cú pháp: <Tên biến> = <Biểuthức>
TD: Tính diệntíchhìnhtrònbiếtbánkínhlà5.
Imports System
Public Module Hello
Public Sub Main( )
Const Pi = 3.14
Dim R As Single = 5, S As Single
S = Pi*R*R ‘ Gán trị tính diệntích
Console.WriteLine("Dien tich " & _
CStr(S))
End Sub
End Module
24
CÂU LỆNH IF
Có 3 dạng chính:
- If đơngiản.
- If có phầnElse
- If và ElseIf nhiều
lần.
If expression Then
statements
ElseIf expression Then
statements
ElseIf expression Then
statements
[Else
statements]
End If
If expression Then
statements
Else
statements
End If
If expression Then
statements
End If25
THÍ DỤ VỀ IF
If m=1 Or m=3 Or m=5 Or m=7 Or m=8 Or m=10 Or m=12 Then
System.Console.WriteLine(“31 days“)
ElseIf m=4 Or m=6 Or m=9 Or m=11 Then
System.Console.WriteLine(“30 days“)
Else
System.Console.WriteLine(“28 or 29 days”)
End If
26
CÂU LỆNH SELECT CASE
Select Case <biểuthứckiểmtra>
Case <Danh sách kếtquả biểuthức1>
[Khốilệnh 1]
Case <Danh sách kếtquả biểuthức2>
[Khốilệnh 2]
……
[Case Else
[Khốilệnh n]]
End Select
Từ khóa Is: So sánh <biểuthứckiểmtra> với1 giá
trị
Từ khóa To: Xác lậpmiềngiátrị của<biểuthức
kiểmtra>
27
THÍ DỤ SELECT CASE
Select Case Tuoi
Case Is <18
System.Console.WriteLine(“Vi thanh nien”)
Case 18 To 30
System.Console.WriteLine(“Ban da truong thanh, lap gia dinh di”)
Case 31 To 60
System.Console.WriteLine(“Ban dang o lua tuoi trung nien”)
Case Else
System.Console.WriteLine(“Ban da lon tuoi, nghi huu duoc roi!”)
End Select
Lưuý: Trong thí dụ trên, không thể viết Case Tuoi<18
28
VÒNG LẶP DO…LOOP
TD: Tìm USLN của2 số a & b
Do Until (a Mod b=0)
r = a Mod b
a =b
b= r
Loop
UCLN = b
TD: Tìm USLN của2 số a & b
Do While (a Mod b <>0)
r = a Mod b
a = b
b = r
Loop
UCLN = b
Do Until <Expression>
<Statements>
Loop
Thựcthi Staments cho
đếnkhi Expression đúng
thì dừng lại
Do While <Expression>
<Statements>
Loop
Thựcthi Staments trong
khi Expression đúng29
VÒNG LẶP FOR
Lặpxác định chính xác số lầnlặp.
For variable = expression1 To expression2 [Step expression ]
Statements
Next [ variable_list ]
TD: Tính n!
Dim i As Integer, K As Long = 1
For i = 1 To n
K = K * i
Next
30
VÒNG LẶP FOR EACH
Lặpqua mộttậphợpcácgiátrị.
For Each variable In expression
Statements
Next [ variable ]
TD: Dùng For Each đi qua toàn bộ các phầntử của1 mảng.
Dim a( ) As Integer = {1, 2, 3, 4, 5}
Dim b As Integer
For Each b In a
System.Console.WriteLine(b)
Next
31
Bài 3: Thư viện lớp cơ sở .NET
-Mô tả về thư việnlớpcơ sở .NET.
-Thiết lập một tham chiếu đến không gian
tên.
-Tạo một thể hiện của 1 lớp của .NET
Framework hay của1 kiểu giá trị.
32
KHÔNG GIAN TÊN
(NAMESPACE)
Các thư việnlớp đượctổ chức trong không gian tên;
đây là mộtnhómcáclớp có liên quan với nhau.
TD: System.Windows.Forms là kgt chứa các lớptạo
nên cửasổ và các thành phầntrêncửasổ củatrình
ứng dụng.
Kgt của.NET Framework đượctổ chứcphâncấpvới
gốclàkgtSystem.
Mộtsố kgt trong .NET Framework: System,
System.Collections, System.ComponentModel,
System.Data, System.Drawing, System.IO,
System.Math, System.Reflection, System.Security,
System.Threading, System.Windows.Forms…33
KHAI BÁO BIẾN KIỂU THAM
CHIẾU
Gồm2 bước: khai báo và khởitạo đốitượng
TD: Khai báo biến đốitượng thuộclớpForm
trong System.Windows.Forms
Dim f As System.Windows.Forms.Form
f = New System.Windows.Forms.Form()
Dim f As New System.Windows.Forms.Form
34
CÂU LỆNH IMPORTS
Dùng để tham chiếu đến namespace nào đó.
Đặt ởđầumodule chương trình.
Làm viếtgọntrongviệc truy xuất đến1 lớpcủa
namespace.
TD: Giả sửđầu module nào đótaviết:
Imports System.Windows.Forms
ta chỉ cầnkhaibáobiến đốitượng Form trong
module đó
Dim f As Form
f = New Form()
35
CÁC KIỂU CỦA .NET
Chia làm các loại: số nguyên, số thực,
luận lý, ký tự.
Kiểusố nguyên:
-263..263-1 Long System.Int64
-231..231-1 Integer System.Int32
-32768..32767 Short System.Int16
0..255 Byte System.Byte
Miềng. trị Kiểu VB.NET Kiểu.NET
36
Kiểusố thực
CÁC KIỂU CỦA .NET
128 bit
64 bit
32 bit
Mô tả
+/-1.0*10-28.. +/-
7.9*1028
28 ký số Decimal System.
Decimal
+/-5.0*10-324.. +/-
1.7*10308
15-16 ký
số
Double System.
Double
+/-1.4*10-45.. +/-
3.4*1038
7 ký số Single System.
Single
Miềng. trị Độ chính
xác
Kiểu
VB.NET
Kiểu
.NET37
Kiểuluậnlý: Kiểucủa .NET là System.Boolean ứng
vớikiểu Boolean củaVB.NET với2 giátrị là True và
False.
Kiểukýtự: Kiểucủa.NET làSystem.Char ứng với
kiểuChar của VB.NET (16 bit - Unicode).
Trong VB.NET mộthằng ký tựđược đặt trong cặp
dấungoặcképvớikýtự c đằng sau.
TD: Dim a As Char
a = “B”c
CÁC KIỂU CỦA .NET
38
Kiểuchuỗikýtự: Kiểu .NET là System.String ứng
với String trong VB.NET.
Trong VB.NET, hằng chuỗi được đặttrongcặpdấu
ngoặckép.
TD: Dim s As String
s = “Tin Học K30”
Kiểu đốitượng: Kiểu.NET làSystem.Objecttương
ứng với Object trong VB.NET. Đây là kiểugốcchotất
cả các kiểutrongVB.NET.
TD: Dim o As Object
o = 5
o = New System.Windows.Forms.Form()
CÁC KIỂU CỦA .NET
39
KIỂU DỮ LIỆU - HÀM THÀNH VIÊN
Parse: hàm có ở các kiểugiátrị. Hàm này cho phép
tạoramộtgiátrị số từ mộtchuỗi.
TD: Dim d As Integer
d = Integer.Parse(“12345”) ‘ d là 12345
System.Console.WriteLine(CStr(d))
ToString: chuyển đổigiátrị sang dạng chuỗi.
TD: Dim a As Integer, s As String
a = 1234
s = a.ToString()
System.Console.WriteLine(s)
40
Các hàm xử lý chuỗi
KIỂU DỮ LIỆU - HÀM THÀNH VIÊN
Loạibỏ những ký tự không cầnthiếttrongchuỗi Trim
Chuyểnchuỗisang chữ thường (hoa) ToLower,
ToUpper
Trả về mộtchuỗicon từ chuỗichotrước SubString
Thay thế chuỗicon trongchuỗigốcbằng mộtchuỗi
khác
Replace
Xóa mộtsố ký tựđượcchỉđịnh. Remove
Chèn chuỗichotrướcvàochuỗihiệnhành Insert
Ý nghĩa Hàm41
CÁC HÀM XỬ LÝ CHUỖI
Imports System.Console
Module Module1
Sub Main()
Dim s1 As String
s1 = "Khoa CNTT - Dai Hoc Can Tho"
WriteLine(s1) ‘1
s1 = s1.Insert(12, "Khu 3 - ")
WriteLine(s1) ‘2
Dim s As String = s1.Substring(12)
WriteLine(s) ‘3
s = s1.Substring(12, 5)
WriteLine(s) ‘4
ReadLine()
End Sub
End Module 42
KIỂU LIỆT KÊ
Cho phép định nghĩamộttậpgiátrị hằng để gợinhớ.
Nếukhôngchỉ ra giá trị củaEnum, giátrịđầutiênlà0.
Public Enum Numbers
zero ' = 0
one ' = 1
two ‘ = 2
End Enum
Dim a As Numbers
WriteLine((a.two*2))
Enum Week
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
Sunday = 7
End Enum
TD2: Không chỉ ra giá trị của
Enum
TD1: Khai báo kiểuliệtkê
cho các ngày trong tuần.
43
MẢNG
Mảng: tậphợpcácphầntử có cùng kiểu.
Khai báo mảng 1 chiều:
Dim <Tên biến>(<Kích thước>) As <Kiểuphầntử>
TD: Khai báo mảng có 31 số nguyên từ 0 đến30
Dim a(30) As Integer
Ta có thể không chỉ ra kích thướcmảng, nhưng sau đó
ta phảikhởitạomảng.
TD: Dim a() As Integer
a = New Integer() {1,2,3,4}
Dim f As Integer
For Each f In a
Write(f)
Next
44
Khai báo tương tự mảng 1 chiềunhưng có thêm kích
thướccủa các chiềucònlại.
TD:
‘ Khai báo ma trận3 dòng5 cột
Dim m(2, 4) As Single
‘ Khai báo và khởitạoma trận
Dim intArrays(,) As Integer = {{1, 2, 3}, {4, 5, 6}}
‘ Hiển thị theo dạng ma trận
Dim f As Integer, c As Integer = 0
For Each f In intArrays
If c Mod 3 = 0 Then WriteLine()
Write(" ")
Write(f)
c = c + 1
Next
MẢNG NHIỀU CHIỀU45
TẬP HỢP (COLLECTION)
Là mộtlớp đặcbiệtchứamột nhóm các đốitượng nào
đó.
Kgt System.Collections định nghĩa nhiềulớp thành viên:
ArrayList, Stack, HashTable, BitArray, Queue…
Lớp ArrayList: cung cấp các chứcnăng cơ bảncủa1
tậphợp, có thểđượcsử dụng cho nhiềumục đích khác
nhau.
Khai báo & khởitạo đốitượng ArrayList
Dim myList As New System.Collections.ArrayList()
‘Khởitạo đốitượng myList có 5 phầntử
Dim myList As New System.Collections.ArrayList(5)
46
Phương thức
- Add: Thêm phầntử vào tậphợp
-Remove: Xóaphầntử khỏitậphợp.
-RemoveAt: Xóatạivị trí xác định trong tậphợp
TD:
Dim f As Integer, r As New System.Collections.ArrayList
For f = 1 To 5
r.Add(f)
Next
r.Remove(3) ‘ Xóa 3
For Each f In r
WriteLine(f)
Next
ARRAY LIST
47
ArrayList có thể chứa các phầntử thuộc các kiểukhác
nhau.
TD:
Dim f As Integer, r As New System.Collections.ArrayList
For f = 1 To 5
r.Add(f)
Next
r.Add(“Khoa Công Nghệ Thông Tin")
r.Add(“Khoa Kinh Tế & QTKD")
Dim f1 As Object
For Each f1 In r
If TypeOf f1 Is String Then
WriteLine(f1) ‘ Hiểnthị giá trị là chuỗi
End If
Next
ARRAY LIST
48
Bài 4: Xử lý lỗitrongVB.NET
Phân loạicáclỗitrong ứng dụng.
Bẫycáclỗithực thi (runtime error).49
PHÂN LOẠI LỖI
Có 3 loạilỗi(error)
-Lỗi cú pháp (syntax error)
-Lỗithực thi (runtime error)
-Lỗi logic (logic error)
Ngoạilệ (Exception): là lỗixảyralúcthựcthichương
trình (thuộcloại runtime error).
Khi có ngoạilệ xảy ra, nếu không có hành động thích
hợpchương trình sẽ bị ngắt.
Cầnphảicócơ chế xử lý ngoạilệ
50
EXCEPTION
Mộtsố ngoạilệ: ArithmeticException,
InvalidOperationException, OverflowException,
TypeLoadException, IndexOutOfRangeException,
InvalidCastException, NullReferenceException,
SecurityException…
Ngoài ra, ngườidùngcóthểđịnh nghĩangoạilệ cho
riêng mình (phảikế thừatừ những lớptrên).
ThuộctínhcủaException:
-Message: Chuỗimôtả thông tin về ngoạilệ.
- Source: tên ứng dụng hay đốitượng gây ra lỗi.
51
XỬ LÝ NGOẠI LỆ
Ngoạilệ có thểđượcxử lý nhờ vào các từ
khóa: Try, Throw, Catch, Finally.
Cấutrúcmôhìnhxử lý ngoạilệ
Try
‘ Đoạnmãlệnh có thể gây lỗi
Catch e1 As Exception
‘Nếulỗithuộcloạie1, đoạnmãnàythựcthi
‘Ngượclại, khối Catch kếđượcthựcthi
Catch en As Exception
‘Nếulỗithuộcloạien, đoạnmãnàythựcthi
Finally
‘ Đoạnmãnàyluônthựcthi, dùngoạilệ có
‘xảyrahay không? Phần này không bắtbuộc
End Try 52
XỬ LÝ NGOẠI LỆ -THÍDỤ
TD: Ngoạilệ không thểđổitừ chuỗisang số
Module Module1
Sub Main()
Try
Dim r As Integer, s As String
Write("Nhap r= “)
s = ReadLine()
r = Integer.Parse(s)
WriteLine(1 / r)
Catch e As System.Exception
WriteLine(e.Message + " Xu ly ngoai le")
Finally
WriteLine("Khoi Finally")
End Try
End Sub
End Module53
XỬ LÝ NGOẠI LỆ -THÍDỤ
54
Chương 2: Lậptrìnhhướng đối
tượng với Visual Basic.NET
Nội dung chính:
Lớp& đốitượng
Phương thức
Thuộctính
Nạpchồng
Thừakế
55
LỚP
Những thuộc tính và hành động chung củacác
thựcthể được nhóm lại để tạonên1 đơnvị duy
nhấtlàlớp.
TD: LớpCon người có các thuộctínhvàhành động
sau:
-Tên
-Chiều cao
-Màutóc.
-Nóinăng
-Viết
….
Những thuộctínhvàhành động chung gọi là thành
viên (member) 56
ĐỐI TƯỢNG
Một đốitượng là mộttrường hợpcụ thể củamộtlớp.
TD: Đốitượng 1 con ngườithựctế củalớpCon
người:
- Tên: VănCường
-Tuổi: 29
-Trọng lượng: 60 kg
Hành động:
- Đi
-Nói
- Suy nghĩ57
TẠO MỘT LỚP MỚI
Sử dụng từ khóa Class
Class <Tên lớp>
<Các thành viên củalớp>
End Class
TD: Khai báo lớpPerson
Class Person
Public Name As String
Public Age As Integer
Public Weight As Single
End Class
58
TẠO ĐỐI TƯỢNG TỪ LỚP
Việctạo1 đốitượng chính là khai báo
và khởitạo biến đốitượng từ lớp.
TD: Tạo đốitượng p thuộclớpPerson
Dim p As Person
p = New Person()
Dim p As New Person()
59
PHƯƠNG THỨC (METHOD)
Các hành động củalớp đượcthể hiệnqua phương
thức(chương trình con).
Trong VB.NET, phương thứccó2 loại: hàm
(Function) và thủ tục(Sub).
Khai báo hàm:
[Public | Private | Friend | Protected] Function _
<Tên hàm>(<Khai báo các tham số>) _
As <Kiểutrả về>
<Các khai báo và câu lệnh định nghĩahàm>
End Function
<Khai báo các tham số>: giống như khai báo biến.
Lờigọihàmthực thi là 1 biểuthức:
<Tên hàm>(Danh sách tham số thựctế)
60
PHƯƠNG THỨC (METHOD)
Khai báo thủ tục:
[Public | Private | Friend | Protected] Sub _
<Tên thủ tục> (<Khaibáocácthamsố>)
<Các khai báo và câu lệnh định nghĩathủ tục>
End Sub
Gọithựcthithủ tục
<Tên thủ tục> (<Danh sách tham số thựctế>)
TD:
Public Sub MySub()
MessageBox.Show(“Thi du ve Sub")
End Sub
Function Add(ByVal first As Integer, ByVal second As _
Integer) As Integer
Add = first + second
End Function 61
TRUYỀN THAM SỐ CHO
PHƯƠNG THỨC
2 cách truyềnthamsố:
Truyềntheogiátrị: mặc định hay từ
khóa ByVal.
Truyềntheo địachỉ: từ khóa ByRef.
62
THÍ DỤ TRUYỀN THAM SỐ
Public Sub Demo1()
Dim x, y As Integer
x = 15
y = 20
' Gọi phương thức Demo2
Demo2(x, y)
' x=? y= ?
MessageBox.Show("X = " & x.ToString & "Y = " & _
y.ToString)
End Sub
Public Sub Demo2(ByVal p1 As Integer, ByRef p2 As _
Integer)
p1 = p1 + p2
p2 = p2 + p1
End Sub
63
PHƯƠNG THỨC XÂY DỰNG
Là phương thức đượcgọithựchiện đầutiênmỗikhi1 đốitượng
của1 lớp đượctạora.
Trong VB.NET, phương thứcxâydựng luôn là Sub New()
TD:
Class Person
Public Name As String
Public Age As Integer
Public Weight As Single
Public Sub New() ‘ Phương thứcxâydựng
Name =“”
Age = 0
Weight = 0
End Sub
End Class 64
PHƯƠNG THỨC HỦY
Là phương thức đượcgọithựchiệncuối cùng khi đối
tượng bị thu hồi.
Phương thức này có nhiệmvụ giải phóng tài nguyên được
dùng cho đốitượng.
Trong VB.NET, phương thứcnàyphảilà Overrides Sub
Finalize()
TD:
Class Person
…
Protected Overrides Sub Finalize()
‘ Thu hồi các thuộc tính
Name = “”
End Sub
End Class65
THUỘC TÍNH (PROPERTIES)
Thuộctínhlànhững đặctrưng của các đốitượng của1
lớp.
Thuộctínhcóthểđượctạonhờ:
-Từ khóa Public.
-Phương thứcProperty.
TD: LớpCon người(Person)
Class Person
Public strName As String
Public iAge As Integer
Public iWeight As Integer
End Class
Với cách truy cập Public, thuộctínhcóthểđượctruy
xuấtkhônggiớihạn. 66
Nếutamuốnhạnchế truy cập, ta có thể sử dụng từ
khóa Private (data hiding).
Trong TD trên, ta có thểđịnh nghĩathuộctínhName:
Private strName As String
Public Property Name() As String
Set
strName = Value
End Set
Get
Name = strName
End Get
End Property
THUỘC TÍNH (PROPERTIES)
67
KhốiSet: gántrị cho thuộctính.
KhốiGet: lấygiátrị củathuộctính.
Thuộctínhchỉđọc(ReadOnly): khai báo khốiGet
(không có khốiSet) hay cóthể khai báo cách tường
minh trong khốiGet nhờ từ khóa ReadOnly.
TD: ThuộctínhtuổicủalớpCon ngườilàchỉđọc.
Private iAge As Integer
Public ReadOnly Property Age() As Integer
Get
Age = iAge
End Get
End Property
THUỘC TÍNH (PROPERTIES)
68
Thuộctínhchỉ ghi (WriteOnly): khai báo khốiSet
(không có khốiGet) hay cóthể khai báo cách tường
minh trong khốiSet nhờ từ khóa WriteOnly.
TD: Trọng lượng củalớpCon ngườilàchỉ ghi.
Private iWeight As Integer
Public WriteOnly Property Weight () As Integer
Set
iWeight = Value
End Set
End Property
THUỘC TÍNH (PROPERTIES)69
ĐA HÌNH (POLYMORPHISM)
Đahình: Khả năng các phương thứccócùngmộttên
nhưng các tham số của chúng là khác nhau.
Nạpchồng phương thức (method overload): khai báo nhiều
phương thức có cùng một tên (khác tham số) trong mộtlớp.
TD: Tạolớp Điểmtrongkhônggian2 chiềugồm2 thuộc
tính là tọa độ X & tọa độ Y.
-2 phương thức xây dựng: một không có tham số (gán X, Y,
là 0), mộtcóthamsố (cặp(X1,Y1) cósẵn để gán cho X,Y).
-Phương thứchiểnthị tọa độ của điểm lên màn hình.
-2 phương thứctínhkhoảng cách từđiểmhiệnthời đến1
điểmkhác, mộtkhôngthamsố (tính kc đếngốctọa độ),
mộtcóthamsố là một điểmkhác(tínhkc đến điểmnày).
70
Public Sub New()
Me.X = 0
Me.Y = 0
End Sub
Public Sub New(ByVal X1 As _
Integer, ByVal Y1 As Integer)
Me.X = X1
Me.Y = Y1
End Sub
Public Sub Display()
WriteLine("({0},{1})", Me.X, Me.Y)
End Sub
Public Function _
Distance() As Single
Return Sqrt(Me.X ^ 2 + Me.Y ^ 2)
End Function
Class Point
Private iX As Integer
Private iY As Integer
Public Property X() As Integer
Get
X = iX
End Get
Set(ByVal Value As Integer)
iX = Value
End Set
End Property
Public Property Y() As Integer
Get
Y = iY
End Get
Set(ByVal Value As Integer)
iY = Value
End Set
End Property
71
WriteLine("Khoang cach p1 & p2: _
{0}", p1.Distance(p2))
WriteLine("Khoang cach p1 & goc _
toa do: {0}", p1.Distance())
ReadLine()
End Sub
Lưuý:
- Sử dụng không gian tên:
System.Console &
System.Math.
Public Function _
Distance(ByVal p As Point) As Single
Return Sqrt((Me.X - p.X) ^ 2 + _
(Me.Y - p.Y) ^ 2)
End Function
End Class ‘ Kếtthúc ĐN lớpPoint
‘Hàmmain
Sub Main()
Dim p1, p2 As Point
p1 = New Point(2, 2)
p2 = New Point
WriteLine("Toa do p1 la ({0},{1})", _
p1.X, p1.Y)
WriteLine("Toa do p2 la ({0},{1})", _
p2.X, p2.Y)
p1.Display()
p2.Display()
72
THỪA KẾ (INHERITANCE)
Thừakế là khả năng mộtlớp(lớpcon) thừahưởng những thuộc
tính & các hành động từ 1 lớp đãcó(lớp cha).
VB.NET không hỗ trợđathừakế.
Sử dụng từ khóa Inherits khi định nghĩalớpcon.
TD: Thiếtkế lớp điểm trong không gian 3 chiềuthừakế từ lớp
điểm trong kg 2 chiều.
Class Point3D
Inherits Point ' Thừakế từ lớpPoint
Private iZ As Integer
Public Property Z() As Integer
Get
Z = iZ
End Get
Set(ByVal Value As Integer)
iZ = Value
End Set
End Property
End Class73
THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC
Lớpcon cóthể ghi đècácphương thứccủalớp cha.
Phương thứccủalớp cha phảisử dụng từ khóa Overridable,
phương thứccủalớpcon sử dụng từ khóa Overrides.
Từ khóa MyBase: truy xuấtcácthuộc tính hay phương thứccủalớp
cha từ lớpcon.
TD: Lớp điểm trong kg 3 chiềucầnghi đèphương thứchiểnthị tọa
độ điểmlênmànhình.
MyBase.New(X1, Y1)
Me.Z = z1
End Sub
Public Overrides Sub Display()
WriteLine("Toa do p1 la _
({0},{1},{2})", Me.X, Me.Y, Me.Z)
End Sub
Public Sub New()
MyBase.New()
Me.Z = 0
End Sub
Public Sub New(ByVal x1 As _
Integer, ByVal y1 As Integer, _
ByVal z1 As Integer)
74
Sub Main()
Dim p1, p2 As Point3D
p1 = New Point3D(1, 2, 3)
p1.Display()
p2 = New Point3D
p2.Display()
End Sub
Kếtquả chương trình
THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC
75
GIAO DIỆN - INTERFACE
Nếumộtlớpcầnthể hiệntính đathừakế, ta sử dụng
giao diện(Interface).
Giao diện có các thuộctính& cácphương thứcriêng,
tuy nhiên chúng không có mã lệnh để cài đặt.
Lớpsử dụng giao diệncầnphảicài đặt(Implements)
các phương thức đã định nghĩa trong giao diện.
TD:
Class Tool
Implements Interface1
Public Sub A() Implements Interface1.A
‘Cài đặtA
End Sub
…
End Class
Public Interface Interface1
Sub A()
Function B(ByVal C As _
Integer) As Integer
End Interface
76
Chương 3: Thiếtkế giao
diệnvàxử lý sự kiện
Lập trình hướng sự kiện(Event
Programming).
Sử dụng cửasổ (form, Form).
Sử dụng các Controls để thiếtkế giao
diện.77
Bài 1: Lậptrìnhsự kiện
(Event Programming)
Các tậptin của1 ứng dụng VB.NET.
Sự kiện& lập trình hướng sự kiện
78
CÁC TẬP TIN CỦA 1 ỨNG
DỤNG WINDOWS FORM
Ứng dụng thiếtkế & lập trình đượcquảnlýtrong
VB.NET bằng Solution.
1 Solution có thể chứa nhiềudự án (Project).
Các tậptin khitạo1 ứng dụng VB.NET:
Các tậptin khác …
Tậptin dự án *.vbproj
Tậptin tàinguyên *.resx
Tậptin chứa định nghĩavề form &
mã lệnh bên trong đó
*.vb
Tập tin Solution (vănbản) *.sln
79
TẠO ỨNG DỤNG
WINDOWS FORM
8081 82
LẬP TRÌNH SỰ KIỆN
(EVENT PROGRAMMING)
Sự kiện(event): làhành động củangười
dùng tác động vào ứng dụng đang thựcthi.
TD: Nhấnphímbấtkỳ trên bàn phím.
Nhấpchuột.
Khả năng đáp ứng lạisự kiệncủa ứng dụng
phụ thuộcngườilậptrình.
Ngườilậptrìnhphảiviết đoạnmãlệnh, đoạn
lệnh này sẽ thựcthikhisự kiệntương ứng
xảyra.
TD: Máy tính Calculator, trình vẽ Paint.
83
Mã lệnh cho sự kiệnClick củaGhi đĩa
……………………………………
Mã lệnh cho sự kiệnClick củaIn giấy
……………………………………
……………………………………
Vấn đề gì xảyranếu:
-Ngườidùngkhôngtác động gì vào ứng dụng?
-Ngườidùngnhậpdữ liệu vào các ô nhập?
-Ngườidùngnhấpchọn Ghi đĩa?
-Ngườidùngnhấpchọn In giấy?
84
Bài 2: Form
Khái niệmform
Thêm form vào ứng dụng.
Thiếtlập startup form & vị trí form lúc
startup.
Các thuộctính, phương thức, sự kiện
củaform.85
FORM - Khái niệm
Là cửasổđượclậptrình để hiểnthị dữ liệu
& nhận thông tin phía ngườidùng.
Thêm form vào dự án (khi thiếtkế):
-Trênmục menu Project, chọn Add
Windows Form. Hộpthoại Add New Item
bậtra.
-Chọn Windows Form, nhấpOpen.
Thêm form bằng mã lệnh: Khai báo và khởi
tạo đốitượng form.
TD: Dim f As DialogForm
f = New DialogForm()
86
INHERITED FORM
Là form đượctạoravàkế thừacácthuộc tính, phương
thức, sự kiệncủaform cha.
Thêm form thừakế vào ứng dụng (bằng mã lệnh):
-Thêm1 form vào ứng dụng.
- Cho form này thừakế 1 form cha nào đóbằng cách sử
dụng từ khóa Inherits trongkhaibáolớp.
TD: Tạoform myFormthừakế từ form MainForm:
Public Class myForm
Inherits MainForm
‘ Cài đặt của lớp myForm
End Class
87
FORM - THUỘC TÍNH
Thuộctính: đặctínhtạonênvẻ bề ngoài của
control.
-BackColor: màunền.
- ForeColor: màu chữ.
-Text: Tiêu đề form.
-Font: Font chữ củaform.
-Name: tênlớpcủaform
……………..
Ta có thể thiếtlậpcácthuộctínhnàybằng
mã lệnh hay nhờ vào cửasổ thuộctính.
TD: Me.BackColor =
System Drawing Color Red
88
THIẾT LẬP THUỘC TÍNH
BẰNG CỬA SỔ THUỘC TÍNH89
FORM – PHƯƠNG THỨC
Form.Show : thể hiện form lên màn hình.
Form.ShowDialog : thể hiện form lên màn hình hình dạng
Dialog.
Form.Activate : form đượckíchhoạt(active)
Form.Hide : ẩnform đi.
Form.Close : đóng lạiform vàgiảiphóngtàinguyên.
TD:
Dim myForm As New DialogForm()
myForm.Show() ‘ Thể hiện Form trạng thái bình thường
myForm.ShowDialog() ‘ Thể hiện Form dạng Dialog
myForm.Activate()
myForm.Hide()
myForm.Close()
90
FORM - SỰ KIỆN (EVENT)
Tạo đoạnmãxử lý sự kiệntrongVB.NET:
91
FORM - SỰ KIỆN (EVENT)
Load : Xảyrakhithể hiện đầutiêncủaForm đượcLoad
lên màn hình.
Activated : XảyrakhiForm đượckíchhoạt.
Deactivated: XảyrakhiForm mấtkíchhoạt.
VisibleChanged : XảyrakhiForm cóthay đổitrạng thái
(ẩn/hiện).
Closing: XảyrakhiForm đang trong quá trình đóng lại.
Lưuý:
-Sự kiện Load đượcsử dụng để khởitạogiátrị củacác
thành phần trong Form.
-Sự kiện Closing & Closed thường đượcsử dụng để thu
hồi tài nguyên đượccấpphátchoForm.
92
THÍ DỤ XỬ LÝ SỰ KIỆN
CỦA FORM
Giả sử ta muốnngănthaotác đóng
Form củangười dùng:
Sự kiện Form_Closing(), ta thiếtlập:
CancelEventArgs.Cancel = True
Private Sub myForm_Closing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles MyBase.Closing
e.Cancel = True
End Sub93
Bài 3: Các control trong
VB.NET
Khái niệmcontrol.
Mộtsố thao tác với các control khi thiết
kếứng dụng.
Mộtsố control thường sử dụng.
94
CONTROL – KHÁI NIỆM
Control: Các thành phầncósẵn để tạogiao
diệntương tác vớingườidùng.
Mộtsố control: Label, TextBox, Button,
ListBox, ComboBox, RadioButton, CheckBox,
PictureBox…
95
LABEL
Dùng để hiểnthị dữ liệuchongườidùng.
Thuộctính:
-Name: TêncủaLabel
- Text: Chuỗihiểnthị trên Label.
- BorderStyle: KiểuviềncủaLabel (None,
FixedSingle, Fixed3D)
- Image: hình ảnh củaLabel
TD: Thay đổiText củaLabel
có Name là lblTest1 thành ‘None’:
lblTest1.Text = “None”
96
TEXT BOX
Dùng để nhận/hiểnthị dữ liệuvề phía người dùng.
Thuộctính:
- Name: Tên củaô nhậpliệuTextBox.
- Text: Chuỗihiểnthị trên ô nhậpliệuTextBox.
- Multiline: TextBox có nhận nhiềudòngvănbản
hay không? (Mặc định giá trị này là False).
- CharacterCasing: tựđộng chuyển đổidữ liệu
nhậpcủa TextBox thành dạng tương ứng (Normal,
Upper, Lower).
- PasswordChar: Ký tự hiểnthị thay thế khi nhập.
- Font: Font chữ củaTextBox97
Sự kiện:
- KeyPress: Xảy ra khi người dùng nhấn phím có mã Ascii
từ bàn phím.
Để kiểmchứng ký tự người dùng nhậptừ bàn phím
ngườitasử dụng 1 số hàm Char.IsDigit, Char.IsLetter,
Char.IsLetterOrDigit, Char.IsPunctuation , Char.IsLower ,
Char.IsUpper.
TD: Sự kiện KeyPress
Private Sub TextBox1_KeyPress (ByVal sender As Object, ByVal e As _
System.Windows.Forms.KeyPressEventArgs) Handles _
TextBox1.KeyPress
If Char.IsDigit(e.KeyChar) = True Then
MessageBox.Show("You pressed a number key")
End If
End Sub
TEXT BOX
98
Sự kiện Validating:
-XảyratrướckhiTextBoxmấtkíchhoạt, dùng để kiểmtra
dữ liệunhậpcóhợplệ hay không?
-Chỉ thựchiện khi ngườilậptrìnhthiếtlậpthuộctính
CausesValidation của Text Box là True.
TD:
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As _
System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
' Kiểm tra giá trị của TextBox
If TextBox1.Text = "" Then
' Bắt buộc TextBox phải nhập lại, TextBox phải được kích hoạt
e.Cancel = True
End If
End Sub
TEXT BOX
99
BUTTON
Dùng để xác nhận 1 hành động hay thao tác của
người dùng.
Thuộc tính:
-Name: Têncủa Button.
- Text: Chuỗihiểnthị trên Button.
- Image: Hình ảnh trên Button.
- FlatStyle: Hình dạng củaButton (Flat, Popup,
Standard, and System.)
-Font: Xáclập Font chữ cho Button.
100
Sự kiện
- Click: Xảy ra khi người dùng nhấpchuộtvàoButton.
TD: Tính N! vớiN nhậptừ bản phím.
BUTTON
Sự kiệnButton_Click()
Private Sub btnTinh_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnTinh.Click
Dim N, i As Integer, K As Long = 1
N = CInt(txtN.Text)
For i = 1 To N
K = K * i
Next
lblKQ.Text = CStr(K)
End Sub101
LISTBOXES
Sử dụng để hiểnthị một danh sách cho
ngườidùnglựachọn.
WinForms hỗ trợ 2 loại list box:
-ListBox
-CheckedListBox
Sự khác biệt chính là những phầntử của
CheckedListBox đượchiểnthị có dấucheck
trước đó.
102
LISTBOX
Thuộctính
-Items: tậpcácphầntử trong ListBox.
- SelectedIndex: xác định chỉ số củamục đang hiệnthời
đượcchọn trong ListBox, phầntửđầutiêncóchỉ số 0.
- SelectedItems: tậpcácmục đang đượcchọn.
- SelectedValue: giá trị củamục đang đượcchọn.
-Text: chuỗitrênmục đượcchọn.
Phương thức
-ClearSelected: xóahếtcáclựachọntrênListBox.
- FindString: tìm mục đầu tiên trong danh sách mà phần
tửđócógiátrị bắt đầulàmộtchuỗichotrước.
103
LISTBOX
Sự kiện
- SelectedIndexChanged: xảyra
khi giá trị củathuộctính
SelectedIndex thay đổi.
- SelectedValueChanged: xảyra
khi giá trị củathuộctính
SelectedValue thay đổi.
TD: Sử dụng thuộctính đối
tượng Items để thêm các mục
vào ListBox. Xử lý sự kiệnLoad
củaForm để viếtmãlệnh xử lý.
104
LISTBOX
Private Sub myForm_Load(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Me.lstTen.Items.Add("NguyễnVănCường")
Me.lstTen.Items.Add("Lâm Quang Hà")
Me.lstTen.Items.Add("Trần Trung Trực")
Me.lstTen.Items.Add("Lê Quang Trãi")
End Sub
Ngoài ra thuộctính đốitượng Items còn có mộtsố
thuộctính& phương thức khác: Count, Clear,
Insert, RemoveAt, Item…105
CHECKEDLISTBOX
CheckedListBox cũng hỗ trợ các thuộc tính, phương thức,
sự kiệngiống như ListBox; bên cạnh đó control này còn có
những đặc điểmriêng:
Thuộctính
- CheckedIndies: tậpcácchỉ số củacácphầntửđượclựa
chọn(checked).
- CheckedItems: tậphợpcácphầntửđượcchọn
(checked).
TD: Cho hình bên, ta có:
- CheckedIndies={1,2}
- CheckedItems={Lâm Quang Hà,
Trần Trung Trực}
106
CHECKEDLISTBOX
Phương thức
- SetItemChecked: thiếtlậpmụccóchỉ số xác định được
chọn(checked).
- SetItemCheckState: xác lậptrạng thái checked của1
mục xác định.
TD: Sử dụng phương thức SetItemCheckState
Sự kiện Click của Button Trạng thái
Me.lstNuoc.SetItemCheckState(1, _
CheckState.Checked)
Me.lstNuoc.SetItemCheckState(2, _
CheckState.Indeterminate)
Me.lstNuoc.SetItemCheckState(3, _
CheckState.Unchecked)
107
COMBOBOX
Là control kếthợpgiữa TextBox & ListBox. Control
này hỗ trợ các tính năng như ListBox; tuy nhiên
chúng vẫncóphầnmở rộng so vớiListBox.
Thuộctính
- DropDownStyle: kiểucủaComboBox, gồmcó
Simple, DropDownList & DropDown.
Simple DropDown DropDownList 108
LISTVIEW
Cho phép hiểnthị một danh sách các phầntửở dạng thức
đặcbiệt. ListView có 4 kiểusau:
-Text only: mặc định.
- Text with small icon.
- Text with large icon.
- Detail view: các phầntử hiểnthị nhiềucột.
ListView kế thừacáctínhnăng của CheckedListBox.
Thuộctính
-CheckBoxes: mỗiphầntử trong ds có 1 checkbox đứng
trước.
-Items: tậpcácphầntử trong ds.
- MultiSelect: ds có nhiềulựachọnkhông?109
LISTVIEW - THÍ DỤ
110
LISTVIEW - THÍ DỤ
Dim lsvTen As New ListView
lsvTen.Width = 300
lsvTen.Height = 200
' Hiểnthị chi tiết
lsvTen.View = View.Details
' Sửagiátrị củaText
lsvTen.LabelEdit = True
lsvTen.FullRowSelect = True
' Hiểnthị lưới
lsvTen.GridLines = True
Dim item1 As New ListViewItem("NguyễnVănAn", 0)
item1.SubItems.Add("1")
item1.SubItems.Add("2")
item1.SubItems.Add("3")
111
Dim item2 As New ListViewItem("Lê Chí Công", 1)
item2.SubItems.Add("4")
item2.SubItems.Add("5")
item2.SubItems.Add("6")
Dim item3 As New ListViewItem("Huỳnh VănHảo", 0)
item3.SubItems.Add("7")
item3.SubItems.Add("8")
item3.SubItems.Add("9")
' Tạocáccộtchocácmục
lsvTen.Columns.Add("Họ tên", -2, HorizontalAlignment.Left)
lsvTen.Columns.Add("Toán", -2, HorizontalAlignment.Left)
lsvTen.Columns.Add("Lý", -2, HorizontalAlignment.Left)
lsvTen.Columns.Add("Hóa", -2, HorizontalAlignment.Center)
‘Thêmcácmục vào ListView
lsvTen.Items.AddRange(New ListViewItem() _
{item1, item2, item3})
112
TREEVIEW
Cho phép hiểnthị dữ liệu ở dạng phân cấp.
TreeView hỗ trợ hầuhếtcácthuộc tính, phương thức& sự
kiệncủa ListView.
Thuộctính
- ImageList: ds các ảnh đượchiểnthịở mỗi nút.
- Nodes: ds các nút.
- SeletedNode: nút hiệnthời đượclựachọn.
Phương thức
-GetNodeAt: truyxuất1 nút ở vị trí xác định trong TreeView.
- GetNodeCount: tổng số nút.
Sự kiện
- BeforeSelect, AfterSelect: xảyratrước/sau khi 1 nút đượcchọn.
- BeforeCollapse, AfterCollapse: xảyratrước/sau khi thu hẹp1
nút.
- BeforeExpand, AfterExpand: xảyratrước/sau khi 1 mở rộng 1
nút.113
TREEVIEW - THÍ DỤ
Hiểnthị 10 khách
hàng, mỗikhách
hàng có 5 đơn đặt
hàng.
Thiếtkế các lớp
Khách hàng & Đặt
hàng.
Tạo TreeView như
hình
114
Public Class Customer
Public CustomerName As String
Public CustomerOrder As _
ArrayList
Public Sub New(ByVal Name _
As String)
CustomerName = Name
CustomerOrder = New _
ArrayList(0)
End Sub
End Class
Public Class Orders
Public OrderID As String
Public Sub New(ByVal _
id As String)
OrderID = id
End Sub
End Class
Sự kiệnLoad củaForm đượcxử lý
Dim customerArray As New ArrayList
' Thêm khách hàng
Dim x As Integer
For x = 0 To 9
customerArray.Add(New Customer("Customer " + x.ToString()))
Next x
115
‘Thêm đơn đặthàng
Dim customer1 As Customer
For Each customer1 In customerArray
Dim y As Integer
For y = 0 To 4
customer1.CustomerOrder.Add(New Orders("Order" + y.ToString()))
Next y
Next customer1
' Xóa TreeView
TreeView1.Nodes.Clear()
' Tạo các nút cha là các khách hàng
For Each customer1 In customerArray
TreeView1.Nodes.Add(New TreeNode(customer1.CustomerName))
' Các nút con là các đơn đặthàng
Dim order1 As Orders
For Each order1 In customer1.CustomerOrder
TreeView1.Nodes(customerArray.IndexOf(customer1)).Nodes.Add( _
New TreeNode(customer1.CustomerName + ".“ + order1.OrderID))
Next order1
Next customer1
116
CHECKEDBOX
Đượcsử dụng để nhận thông tin dạng Yes/No.
Thuộctính
-Checked: Xác định control đang ở trạng thái nào (True/False).
Sự kiện
-CheckedChanged: Xảy ra khi giá trị củathuộctínhChecked bị
thay đổi.
Private Sub chkDam_CheckedChanged(ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles chkDam.CheckedChanged
If Me.chkDam.Checked Then
Me.txtTen.Font = New Font("Arial", 9.0!, _
System.Drawing.FontStyle.Bold)
Else
Me.txtTen.Font = New Font("Arial", 9.0!, _
System.Drawing.FontStyle.Regular)
End If
End Sub117
RADIO BUTTON
- Là control cho phép nhậndữ liệuYes/No,
nhưng các radio button cùng 1 nhóm thì không
thể chọn đồng thời.
-Cácthuộctính, phương thức, sự kiệntương tự
CheckBox.
118
GROUPBOX
Là control đượcdùng để
nhóm các điềukhiển
khác.
Thuộc tính:
-Text: Chuỗitrêntiêu đề
củaGroupBox.
TD (hình bên)
119
PICTURE BOX
Đượcsử dụng để hiểnthị hình ảnh.
Thuộctính
-Image: Xác định hình ảnh cầnhiểnthị.
- SizeMode: xác định cách thức ảnh đượchiểnthị
(AutoSize, CenterImage, Normal, StretchImage)
Sự kiện
-SizeModeChange: xảyrakhithuộctínhSizeMode
thay đổigiátrị.
120
IMAGELIST
Dùng để lưucáchình ảnhvàchophépchúng
hiểnthịở các control khác nhau.
Thuộctính
-Images: tậphợpcác ảnh củaImageList.
- ImageSize: kích thướccủacác ảnh có trong
ImageList.
Phương thức
-Draw: vẽ một ảnh xác định.121
TIMER
Là control đáp ứng lạisự trôi đicủathờigian.
Thuộctính
- Enabled: cho phép control thờigianthựcthi.
-Interval: Khoảng thờigiangiữa2 sự kiện.
Phương thức
-Start: khởi động control thờigian.
-Stop: ngưng control thờigian.
Sự kiện
-Tick: Xảyrasau1 khoảng thờigian đượcchỉ trong
Interval
122
TIMER - Thí dụ
Thiếtkếứng dụng cho phép hiểnthịđồng hồ số.
Thuộc tính: Enable = True
Interval=1000
Xử lý sự kiệnTick
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Me.lblTG.Text = CStr(Now) ‘ Now: hàm lấythờigian
End SubBài 4
Mụctiêu
Sử dụng hộp thông điệp
Sự hợplệ củadữ liệunhập
Ứng dụng SDI, MDI
Menu và xử lý sự kiện
Sự liên kếtgiữacácform
Tạomột đốitượng form
Thể hiệnform lênmànhình
Dim [forminstance] as Form
[forminstance] = New [calledform]
[forminstance].Show()
Thí dụ:
Dim NewForm As Form
NewForm = new ImageForm()
NewForm.Show()
Hộpthoại - Dialog
Sử dụng
Các loại
Hiểnthị thông điệp đếnngười dùng
Nhận thông tin từ phía người dùngCác loạihộpthoại
•OpenFileDialog
•PageSetUpDialog
•FontDialog
•ColorDialog
•SaveFileDialog
•PrintPreviewDialog
•PrintDialog
Custom dialog boxes
Common dialog boxes
OpenFileDialog
FontDialog ColorDialogHộp thông điệp - MessageBox [1]
Hộp thông điệp
Đoạnmãthể hiệnhộpthông điệp:
MessageBox.Show(“[Message]”)
Phương thứcShow có12 kiểukhácnhau(được
nạpchồng)
MessageBox (2)
Public Shared DialogResult Show(String, String, MessageBoxButtons, _
MessageBoxIcon)
Public Shared DialogResult Show(String, String, MessageBoxButtons)
Public Shared DialogResult Show(IWin32Window, String, String)
Public Shared DialogResult Show(IWin32Window, String)
Public Shared DialogResult Show(String, String)
Public Shared DialogResult Show(IWin32Window, String String, _
MessageBoxButtons)
Public Shared DialogResult Show(String)
Nạpchồng - Overloads
MessageBox (3)
Public Shared DialogResult Show(String, String, MessageBoxButtons, _
MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions)
Public Shared DialogResult Show(IWin32Window, String, String, _
MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton)
Public Shared DialogResult Show(IWin32Window, String, String, String, _
MessageBoxButtons, MessageBoxIcon)
Public Shared DialogResult Show(String, String, MessageBoxButtons, _
MessageBoxIcon, MessageBoxDefaultButton)
Public Shared DialogResult Show(IWin32Window, String, String, _
MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions)
Nạpchồng
Sự hợplệ củadữ liệu
Sự hợplệở mứcform
Sự hợplệở mứctrường
Mộtsố sự kiện được dùng:
Enter
Leave
Validating
Validated
Các loạikiểmtra:Thứ tự các sự kiện Sự hợplệ mứctrường
KeyPress
KeyDown
KeyUp
Sự kiện KeyPress
Theo dõi dữ liệunhậpcủangườidùng ở từng byte
Thí dụ:
Private Sub TextBox1_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress
End Sub
Có mộtthamsốđặcbiệtkiểu
System.Windows.Forms.KeyPressEventArgs
Sự kiện KeyDown and KeyUp
Có mộtthamsố kiểu
System.Windows.Forms.KeyEventArgs
Thí dụ:
Private Sub TextBox1_KeyUp(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyUp
Private Sub TextBox1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyDownThuộctính
•Mộtsố thuộctính:
•MaxLength
•PasswordChar
•Readonly
Mộtsố phương thức
For i=0 To TextBox4.Text.Length - 1
If Not(Char.IsNumber(TextBox4.Text,i)) Then
MessageBox.Show("Phone Number must “ & _
be a numeric value")
TextBox1.Focus()
Next
Sự hợplệ mứcform
Kiểmtradữ liệucóhợplệở tấtcả các trường?
Cho phép kích hoạt hay không kích hoạtmột thành phần nào đó.
Thí dụ:
Private Sub Test()
Dim o As Object
For Each o In Me.Controls
If TypeOf o Is System.Windows.Forms.TextBox Then
Dim t As TextBox = CType(o, TextBox)
If t.Text = "" Then
MessageBox.Show("It cannot be empty")
t.Focus()
Return
End If
End If
Next
End Sub
Error Provider Control
Sử dụng để hiểnthị icon lỗikhingườidùngthaotáclỗi
trên một control nào đótrênform.
Thuộctính
- BlinkRate: xác định tốc độ nhấp nháy củaicon lỗi.
- BlinkStyle: xác định cách thứcmàicon nhấp nháy
trên control(AlwaysBlink, BlinkDifferentError, &
NeverBlink).
- Icon: đường dẫnchỉđếnicon lỗi.
Phương thức
- GetError: nhậnvề chuỗi thông báo lỗi.
- SetError: xác lậpchuỗithôngbáolỗitrênmột control
xác định.Xử lý ngoạilệ khi ngườidùngnhậpkhôngphảisố.
Dim N, i As Integer, K As Long = 1
Try
N = Integer.Parse(txtN.Text)
For i = 1 To N
K = K * i
Next
lblKQ.Text = CStr(K)
Catch
err1.SetError(txtN, "Đây phải là giá trị số")
End Try
Error Provider - Thí dụ SDI (1)
New
Document
Ứng dụng SDI
chỉ có mộtcửa
sổ tạimộtthời
điểm
SDI [2]
Không thể mở nhiềuform tạithời điểm
nào đó.
Nếumuốnmở nhiềuform thìtacầntạo
nhiềuthể hiệncủa ứng dụng.
MDI (1)
Nhiềutàiliệu Ứng dụng MDI nhóm
nhiềutàiliệutrongmột
đơnvị duy nhất.
Ứng dụng MDI có thể thao tác với nhiềucửasổMDI (2)
Cửasổ con
Cửasổ cha
Designing an MDI application
IsMdiContainer= true
Thêm form con vào ứng dụng MDI:
Chọn Solution Explorer->Solution Name -> nhấpchuộtphải->
Add Windows Form
Thêm đoạnmã để gọithực thi form con
Đặc điểmcủa ứng dụng MDI (1)
Đặc điểmform cha:
• Hiểnthị khi ứng dụng khởi động
• Là khung chứa cho các cửasổ khác
• Hiểnthị menu của các form con
• Chỉ có duy nhấtmột form cha
• Có thể mở nhiều form con tạimộtthời điểm
Đặc điểmcủa ứng dụng MDI (2)
Form con không thể di chuyểnkhỏivùnghiểnthị của
form cha.
Đóng form cha thì tấtcả các form con đềubịđóng lại
Mở form conCửasổ Activating and Deactivating
Cửasổ con
Deactivate
Cửasổ
con Active
Cửasổ nằm trên cùng là cửasổ Active.
Màu của thanh tiêu đề củacửasổ active giống màu
của thanh tiêu đề củaform cha.
Sắpxếpcửasổ con
Tile
Cascade
Menus (1)
Sub Menu Option Main Menu Option
Menu bar
Menus (2)
Trong hộp
công cụ Trong ứng dụng
MDI khi thiếtkế
Trong hộp
công cụ
Lúc thựcthi ứng
dụngMenu [3]
Menu là mộtloại control trong đóngườidùngcóthể
lựachọn các mục để thựcthitừ mộtdanhsáchcho
trước.
Phân loại
- Menu thả xuống (Drop-Down Menu): là dạng
menu thông dụng nhất.
-Menu bậtra(Pop-Up Menu, ContextMenu):
thường hiểnthị khi ta ấnnútphảichuột.
Dropdown Menu
Tạo menu nhờ vào control MainMenu.
Các bướctạo menu:
- Tạo menu mớivàmenu bar.
-Thêmcácmục menu con vào menu đãcó.
-Sửa đổilạicácthuộctínhcủamenu vàcác
mục menu.
-Xử lý sự kiện Click củacácmục menu con.
Dropdown Menu - Thí dụ Main Menu
MainMenu: hiểnthị 1 menu khi ứng dụng
đượcthực thi. Các menu con củaMainMenugl
Menu.
MenuItem: mụccụ thể của1 Menu xác định.
Thuộctính
-IsParent: True nếumục menu này là cha của
các mục menu con nào đó.
- MenuItems: tậphợpcácmục menu con.
Phương thức
- MergeMenu: ghép các mục menu con của1
menu xác định vào menu hiệnhành.MenuItem
Thuộctính
-Checked: là True nếucódấu 9 trướcmục
menu con.
-Index: vị trí của menu con trong 1 menu xác
định.
-Shortcut: xáclậpphímtắt.
-Parent: tên(Name) của menu cha.
-Text: chuỗihiểnthị trên mụcmenu.
Sự kiện
- Click: Xảy ra khi người dùng Click chọnmục
menu.
Private Sub MenuItem4_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem4.Click
MessageBox.Show("Bạnchọn File/Save", "Thông báo")
End Sub
Private Sub MenuItem5_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem5.Click
End
End Sub
Context Menu
Là control cho phép người dùng truy cậpcácmụctrên
menu nhờ thao tác nhấpchuộtphải.
Sau khi ContextMenu đượctạo ra, chúng sẽđượcgắn
vớimột control khác nhờ vào thuộctínhContextMenu
của control đó.
TD tạo ContextMenu & thiếtlậpthuộc tính ContextMenu
củaForm
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles _
MyBase.Load
Me.ContextMenu = ContextMenu1
End Sub
TạoMenu bằng mã lệnh
Ta có thể thêm hay xóa đimộtmục menu (MenuItem) của1
menu nào đónhờ vào các phương thứcAdd & Remove.
TD: Xử lý sự kiệnLoad củaForm bằng đoạnmãlệnh tạo menu:
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
Dim myMainMenu As New MainMenu
Dim FileMenu As New MenuItem
Dim NewItem As New MenuItem
Dim OpenItem As New MenuItem
NewItem.Text = "&New"
OpenItem.Text = "&Open..."
FileMenu.Text = "&File"
FileMenu.MenuItems.Add(NewItem)
FileMenu.MenuItems.Add(OpenItem)
myMainMenu.MenuItems.Add(FileMenu)
Me.Menu = myMainMenu
End Sub TD xóa 1 mụcmenu
Dim kq As New DialogResult
kq = MessageBox.Show("Bạnmuốnxóamục New không?", "Xóa", _
MessageBoxButtons.YesNo)
If kq = DialogResult.Yes Then
FileMenu.MenuItems.RemoveAt(0)
End If
Kếtquả thí dụ1
Chương 4:
VB.NET VÀ CƠ SỞ DỮ LIỆU
Nội dung
- Các khái niệm
- Các thành phần truy cập dữ liệu
- ADO.NET
2
Bài 1: Một số khái niệm về cơ
sở dữ liệu
Cơ sở dữ liệu (Database)
Bảng (table) & trường (field)
Khóa
Mối kết hợp (relationship)
3
Cơ sở dữ liệu [1]
Cơ sở dữ liệu là một kho chứa thông tin.
Flat files: tất cả dữ liệu chứa trong 1 tập tin duy nhất. TD:
Bảng tính Excel:
02 LTT Trần Văn Ba 5000 10 (gói) Trà chanh IceTea 03/03/06 1001
01 THĐ NV Cường 10000 10 (hộp) Kem đánh răng P/S 02/03/06 1000
02 LTT Trần Văn Ba 15000 15 (kg) Bột giặt Omo 03/03/06 1001
01 THĐ NV Cường 10000 10 (chai) Dầu gội Clear 02/03/06 1000
01 THĐ NV Cường 15000 5 (kg) Bột giặt Omo 02/03/06 1000
Địa chỉ KH Tên KH Đơn
giá
Số lượng Hàng hóa Ngày đặt Đặt
hàng
4
Bất lợi:
- Lãng phí không gian lưu trữ.
-Cónhiều thông tin trùng.
-Rắc rối trong bảo trì.
Cơ sở dữ liệu quan hệ (relational database): tập hợp các
nhóm thông tin khác nhau gl bảng (table) được kết hợp lại
theo cách thức nào đó.
TD: Trong TD trên cơ sở dữ liệu có thể gồm 3 bảng:
- KhachHang(MaKH, TenKH, DiachiKH)
- HangHoa(MaHang, TenHang, Dongia, Ghichu)
- DatHang(STTDH, MaKH, MaHang, Soluong)
Cơ sở dữ liệu [2]5
Bảng (table): chứa các mẩu tin là các mẩu dữ liệu riêng rẽ
trong phân nhóm dữ liệu.
Mẩu tin (record): chứa các trường (field), mỗi trường thể
hiện một bộ phận dữ liệu của mẩu tin.
TD bảng KhachHang:
Cơ sở dữ liệu [3]
Trường 3 Trường 2 Trường 1
02 LTT Trần Văn Ba KH02 Mẩu tin 2
01 THĐ NV Cường KH01 Mẩu tin 1
Diachi TenKH MaKH
6
Khóa chính (primary key): là một hay nhiều trường mà chúng
xác định duy nhất mỗi mẩu tin trong bảng.
TD Khóa chính bảng KhachHang là MaKH.
HangHoa là MaHang.
DatHang là STTDH, MaKH, MaHang
Khóa ngoại (foreign key): là một hay nhiều trường ở một
bảng nhưng chúng là khóa chính ở một bảng khác.
TD trong bảng DatHang ta có các khóa ngoại là MaKH (là
khóa chính của KhachHang), MaHang (khóa chính của
HangHoa).
Cơ sở dữ liệu [4]
7
Mối kết hợp (relationship): sự liên kết giữa các bảng.
1-1: một mẩu tin trong 1 bảng xác định 1 mẩu tin trong bảng
khác.
1-n: mỗi mẩu tin trong 1 bảng xác định nhiều mẩu tin trong
bảng khác.
TD:
Cơ sở dữ liệu [5]
8
n-n: nhiều mẩu tin trong 1 bảng liên kết với nhiều mẩu tin
trong bảng khác.
Mối kết hợp này cần thêm bảng thứ 3 lưu các quan hệ giữa 2
bảng.
TD: CSDL về
người sử dụng:
Cơ sở dữ liệu [6]9
Toàn vẹn tham chiếu (referential integrity): xác định mỗi
khi dữ liệu trong các bảng bị thay đổi (thêm, sửa, xóa) các
mối kết hợp vẫn không bịảnh hưởng.
- Cascade update: Nếu có sự thay đổi giá trị của 1 khóa, giá
trị của khóa đó ở các bảng khác cũng thay đổi theo.
- Cascade delete: Nếu một mẩu tin bị xóa, tất cả các mẩu tin
có liên quan trong cơ sở dữ liệu bị xóa theo.
Thuận lợi: Không cần viết mã lệnh để cập nhật lại cơ sở dữ
liệu mỗi khi có sự thay đổi trên khóa chính.
Tuy nhiên chúng vẫn mặt hạn chế.
Cơ sở dữ liệu [7]
10
Bài 2: Ngôn ngữ hỏi SQL
Structure Query Language (SQL)
Lựa chọn dữ liệu với câu lệnh Select
Cập nhật dữ liệu với Update
Chèn thêm dữ liệu với Insert
Xóa dữ liệu với Delete
11
Structure Query Language
Ngôn ngữ CSDL chuẩn.
Gồm: ngôn ngữ định nghĩa dữ liệu, ngôn ngữ
thao tác dữ liệu trao đổi, tạo view, cấp quyền…
Thường sử dụng: Select, Update, Insert, Delete.
12
SQL - Select [1]
Lựa chọn dữ liệu theo một số điều kiện nào đó.
Mệnh đề Select
TD: Với CSDL người dùng
-Tìm kiếm tất cả các người dùng
Select UserName From Users
-Nếu muốn tên các người dùng không trùng nhau:
Select Distinct UserName From RoleUser
-Ký tự *: chỉ tất cả các trường
Select * From Users
-Sau Select có thể là một biểu thức
Select RoleID*10, RoleName From Roles13
Mệnh đề Where: lọc & kết nối dữ liệu.
TD:
- Tìm các tên quyền có mã >3
Select RoleName From Roles Where RoleID>3
- Tìm các bộ (người dùng, tên quyền) tương ứng với mã quyền >3
Select UserName, RoleName From Roles, RoleUser
Where RoleUser.RoleID = Roles.RoleID AND
Roles.RoleID > 3
Các phép toán:
- So sánh: >, >=, <, <=, =, <>, BETWEEN…AND
- Logic: AND, NOT, OR
TD: Tìm các tên quyền có mã từ 2 đến 4
Select RoleName From Roles
Where RoleID BETWEEN 2 AND 4
SQL - Select [2]
14
Phép toán LIKE trên chuỗi: đối chiếu mẫu.
-%: ứng với chuỗi con bất kỳ.
-_:ứng với 1 ký tự bất kỳ.
TD: - Tìm các tên quyền có ký tự cuối là e:
Select RoleName From Roles
Where RoleName LIKE “%e”
- Tìm các tên người dùng có ký tự thứ 2 là h
Select UserName From Users
Where UserName LIKE “_h%”
Mệnh đề sắp thứ tự Order By
- ASC: thứ tự tăng.
- DESC: thứ tự giảm.
TD: Lựa chọn các tên quyền có mã >1 và sắp xếp chúng theo thứ
tự tăng.
Select RoleName From Roles
Where RoleID>1 Order By RoleName ASC
SQL - Select [3]
15
Thêm 1 hay nhiều dòng (mẩu tin) vào một bảng đã có.
TD:
- Thêm người dùng nqtoan vào bảng User
Insert Into Users Values(“nqtoan”, ”abc”)
-Ta cóthể chỉ rõ tên trường & giá trị cần xen.
Insert Into Users(Password, UserName)
Values(“abc”, “nqtoan”)
- Thêm cho tất cả người dùng quyền mớicómã là4
Insert Into RoleUser
Select UserName As UserName, 4 As RoleID
From Users
SQL - Insert
16
UpdateThay đổi giá trị các dòng (mẩu tin).
TD:
-Sửa lại mật khẩu của người dùng lhbao là abc
Update Users
Set Password = “abc”
Where UserName = “lhbao”
Delete: Xóa các dòng (mẩu tin) thỏa điều kiện.
TD:
-Xóa tất cả các dòng (mẩu tin) của bảng RoleUser
Delete From RoleUser
-Xóa tất cả các quyền của người dùng lhbao
Delete From RoleUser
Where UserName = “lhbao”
SQL - Update & Delete17
Bài 3: Các thành phần truy
cập dữ liệu
Ứng dụng Client-Server
Các thành phần truy cập dữ liệu
18
Giới thiệu
lưu
trong
Cơ sở dữ liệu
Client
Các kỹ thuật
truy cập dữ liệu
19
Ứng dụng Client-Server
Client Server
Cung cấp dữ liệu
cho Client
PhầnmềmClient
Cơ sở dữ liệu
20
Data Access Components -
Các thành phần truy cập dữ liệu
Database
User Server đang chạy
Database
Database
Yêu cầu dữ liệu
Gởi dữ liệu
Server tắt Phần mềm Client
Yêu cầu dữ liệu
Thông báo lỗi
DAC
(ODBC, OLE DB,
ADO, ADO.net)21
Bài 4: ADO.NET
Giới thiệu về ADO.NET
Các thành phần của ADO.NET
DataBinding
22
ADO.NET
Được giới thiệu với Microsoft .Net Framework
Sử dụng eXtensible Marked Language (XML) để
vận chuyển dữ liệu
23
Kiến trúc ADO.NET
Database
XML
Presentation
Tier
Data Tier
XML
24
Thành phần của ADO.NET
DataSet
.NET data provider: Connection, Command,
DataReader, DataAdapter.25
.NET DATA PROVIDERS
Có thể truy cập, sửa đổi, dữ liệu nhờ đối tượng
Connection & Command.
Đối tượng Connection: thiết lập một nối kết dữ liệu giữa
ứng dụng & CSDL.
System.Data.OleDb System.Data.SqlClient
System.Data System.Data
OLE DB .NET Data Provider SQL .NET Data Provider
26
Đối tượng Connection (1)
Phụ thuộc vào CSDL muốn nối kết.
Gồm 2 loại:
• SqlConnection
• OleDbConnection
Imports
Namespace="System.Data.OleDb"
Imports Namespace="System.Data.
SqlClient"
Imports Namespace="System.Data" Imports Namespace="System.Data"
OLE DB .NET Data Provider SQL .NET Data Provider
27
Đối tượng Connection (2)
sqlcon = New SqlConnection ("server=HoaiBao; uid=sa;
pwd=sa; database=pubs")
adocon=New
OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=D:\\pubs.mdb”)
28
Đối tượng Connection (3)
Close
CreateCommand
Open
ConnectionString
DataBase29
Đối tượng Command (1)
Thực thi một câu lệnh (SQL, Stored Procedure,…).
Gồm:
- SQLCommand
- OleDbCommand
Thuộc tính
- Connection: nối kết CSDL.
- CommandType: kiểu Command (Text, Stored Procedure,
Table Direct) được chỉ ra trong CommandText.
Thực thi Command:
- ExecuteNonQuery
- ExecuteScalar
- ExecuteReader
30
Đối tượng Command (2)
Dim sqlcom As New SqlCommand("select * from
employees", sqlcon)
Dim oleCom As New OleDbCommand("select * from
employees”, adocon)
Lấy dữ liệu về
31
Đối tượng Command (3)
Dim inscom As New SqlCommand("insert into employees
values (‘1234',‘Lam',‘H',‘Bao',7,100,0877, '1979-11-
11T00:00:00 ')",sqlcon)
Dim inscom As New OleDbCommand ("insert into
employees values (‘1234',‘Lam',‘H',‘Bao',7,100,0877,
'1979-11-11T00:00:00 ')", adocon)
Thêm dữ liệu vào CSDL
32
Đối tượng Command (4)
Dim mycommand As New SqlCommand("UPDATE employee SET
job_id=11 WHERE fname=‘Bao'", sqlcon)
Dim mycommand As New OleDbCommand("UPDATE employee
SET job_id=11 WHERE fname=‘Bao'", adocon)
Cập nhật dữ liệu33
Đối tượng Command (5)
Dim delcom As New SqlCommand("delete from employee
WHERE fname=‘Bao'", sqlcon)
Dim delcom As New OleDbCommand("delete from employee
WHERE fname=‘Bao'", adocon)
Xóa dữ liệu
34
DATASET (1)
Là đối tượng lưu dữ liệu được truy xuất từ cơ sở dữ liệu.
Mô hình:
Tạo Dataset: tạo đối tượng của lớp Dataset.
TD: ‘ Tạo Dataset có tên là EmpInfor
Dim empDS As New Dataset(“EmpInfor”)
‘ Không cần chỉ tên của Dataset
Dim empDS As New Dataset()
Client Server
Dataset
Gởi Dataset
tới Client
Gởi dữ liệu
tới Dataset
Client sửa
đổi Dataset
Cập nhật Dataset
lên Server
35
Thuộc tính
-Tables: tập các bảng của Dataset.
- Item: một bảng xác định trong Dataset.
Phương thức:
- Add: thêm một bảng.
- RemoveAt: xóa một bảng ở vị trí xác định.
DataTable: là bảng lấy về từ CSDL.
- DataColumn: các cột trong DataTable.
- DataRow: dòng dữ liệu thật sự.
DATASET (2)
36
Typed DataSet
Có thể tạo đối tượng từ lớp Dataset sẵn có
trong dự án.
Cho phép truy cập trực tiếp tên bảng hay tên
cột.
Hiệu quả khi viết mã lệnh.37
UnTyped DataSet
Kế thừa từ lớp Dataset.
Các bảng và cột được truy xuất thông qua các tập
hợp tương ứng; không thể tạo một lớp Dataset
mới nhờ tập tin lược đồ XML.
38
DataAdapter (1)
Điền dữ liệu từ CSDL vào Dataset.
Cập nhật CSDL với dữ liệu trong Dataset
39
DataAdapter (2)
Lấy dữ liệu từ CSDL SelectCommand
Ý nghĩa Thuộc tính
DeleteCommand
UpdateCommand Cập nhật CSDL dựa vào thay đổi trong
Dataset
InsertCommand
Đưa dữ liệu vào DataSet nhờ thực thi câu
truy vấn trong SelectCommand
Fill
Ý nghĩa Phương thức
40
Sử dụng DataAdapter
Nối kết đến CSDL (Connection)
Tạo đối tượng DataAdapter
Chỉ ra câu truy vấn trong thuộc tính
SelectCommand của DataAdapter.
Điền dữ liệu từ DataAdapter vào Dataset41
DATABINDING
Ràng buộc giá trị trong nguồn dữ liệu với điều khiển của
Winform.
Simple Data Binding: 1 giá trị từ dataset ràng buộc với 1 điều
khiển.
TD:
txtSa.DataBindings.Add(“Text”,
ds.Tables(“Employes”), ”Salary”)
Complex DataBinding: một điều khiển ràng buộc toàn bộ
dataset. Chỉ có điều khiển DataGrid & ComboBox hỗ trợ loại
này.
TD:
cboDPName.DataSour
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET
Mụctiêu
-Vậndụng bộ công cụ lậptrìnhVisual
Basic.NET để xây dựng ứng dụng (từđơn
giản đếnphứctạp).
-Cókhả năng tìm hiểusâuhơncáckỹ thuật
lập trình Visual Basic.NET nâng cao (hệ
thống, mạng…).
Cán bộ phụ trách
Lâm Hoài Bảo (lhbao@cit.ctu.edu.vn)
2
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET
Nộidung chủ yếu
- .NET Framework & Visual Basic.NET
-Lậptrìnhhướng đốitượng.
-Windows Form
-Cơ sở dữ liệuvớiADO.NET.
- Crystal Reports
3
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET
Kiếnthức liên quan
Kỹ năng sử dụng máy tính (Windows),
Lậptrìnhcănbản.
Kỹ năng lập trình tốt Lập trình cănbản
Sử dụng HĐH Windows. Kỹ năng sử dụng máy tính
4
Tài liệuthamkhảo
- Developing Windows-Based Applications
with Visual Basic .NET and Visual C Sharp
.NET; Microsoft Press A Division of Microsoft
Corporation One Microsoft Way Redmond; 2002.
- Programming Visual Basic .NET; Dave
Grundgeiger; Publisher: O'Reilly, First Edition
January; 2002.
CHUYÊN ĐỀ VỀ 1 NNLT -
VISUAL BASIC.NET5
Chương 1: .Net Framework
& Visual Basic.NET
.NET Framework & Common Language
Runtime
Ngôn ngữ Visual Basic.Net
6
Bài 1: Giớithiệuvề .NET &
VISUAL BASIC.NET
Khái niệm và các thành phầncủa.Net
Framework.
Cấutrúc1 ứng dụng .NET
Giớithiệuvề Visual Basic.NET
Chương trình Visual Basic.Net đầutiên.
7
.NET FRAMEWORK
Là mộtmôitrường an toàn cho việc
quảnlývấn đề phát triểnvàthựcthi
ứng dụng.
Gồm2 phần:
- Common Language Runtime (CLR):
quảnlýviệcthựcthimãlệnh.
-Thư việnlớp .NET Framework: tập
hợpcáckiểucủaCLR.
8
CÁC THÀNH PHẦN CỦA .NET
FRAMEWORK9
NGÔN NGỮ & .NET
FRAMEWORK
Tương thích giữa các ngôn ngữ với
nhau (do CLR).
App
(VB.NET,
C#)
VB.NET (C#)
compiler
Microsoft
Intermediate
Language
(MSIL hay IL)
CLR
đọc&
thựcthi
Common Language
Specification (CLS)
10
VISUAL BASIC.NET
Mộtphầncủa Visual Studio.NET
Thuầnhướng đốitượng.
Ngôn ngữ duy nhất trong VS.NET hỗ trợ
chếđộ dịch nền.
Không phân biệtchữ hoa và chữ
thường.
11
ỨNG DỤNG .NET ĐẦU TIÊN
Dịch: vbc <Tên tậptin>
Sau khi dịch xong, ta nhận đượctậptin thực thi (exe).
Thựchiệntậptin này.
TD: Tập tin HelloWorld.vb:
Public Module Hello
Public Sub Main()
System.Console.WriteLine("hello world")
End Sub
End Module
Dịch tập tin: vbc HelloWorld.vb
Thựcthitập tin HelloWorld.exe
12
Bài 2: Ngôn ngữ lậptrình
VISUAL BASIC.NET
Kiểudữ liệu, biến& hằng trong VB.NET.
Câu lệnh đơn trong VB.NET
Các lệnh có cấu trúc củaVB.NET13
KIỂU DỮ LIỆU & ĐỊNH DANH
Kiểugiátrị (cấu trúc): Boolean, Char, Byte, Date,
Decimal, Double, Integer, Long, Short, Single,
Structure.
Kiểu tham chiếu(lớp): Object, String.
Định danh (danh biểu): là tên dùng để đặtchobiến,
hằng, kiểu, lớp, phương thức… theo quy tắc:
-Bắt đầulà1 kýtự từ A-Z.
- Theo sau là các ký tự, hoặckýsố (0-9) hay dấu
gạch dưới.
-Têncó độ dài tối đalà40.
- Không phân biệtchữ hoa và chữ thường.
TD tên: TH_K32, Dt_k33
14
BIẾN (VARIABLE)
Là đạilượng dùng để chứadữ liệu
trong quá trình tính toán.
Cú pháp khai báo biến:
Dim <Tên biến> [As <Kiểu>] [= <Biểuthức>]
15
BIẾN (VARIABLE)
Biếncụcbộ: là biến đượckhaibáo
trong mộtkhốilệnh (Dim)
TD: Tìm giá trị nghịch đảocủax
If x <> 0 Then
Dim rec As Double
rec = 1/x
Console.Writeline(CStr(rec))
End If
16
BIẾN (VARIABLE)
Biếncấp module: là biến đượckhaibáotrong
phầnkhaibáotoàncụccủamộtmodule
(Public, Friend, Private).
Private: là biếnchỉ có hiệulựctrongmodule
đó(mặc định).
Friend: là biếnchỉ có hiệulựctrongdự án
đó.
Public: biếncóhiệulựckhôngchỉ trong dự
án nó được khai báo mà còn trong các dự án
khác có tham chiếu đếndự án này.17
BIẾN (VARIABLE)
Giả sử Project1, ta có Module sau:
Public Module Module1
Public iModulePublic As Integer
Friend iModuleFriend As Integer
End Module
Nếu Project2 tham chiếu đến Project1, ta viết:
Project1.Module1.iModulePublic = 100
Nhưng Lỗi "not accessible" khi:
Project1.Module1.iModuleFriend = 100
18
THÍ DỤ VỀ KHAI BÁO BIẾN
Dim x As Integer
Khi muốn khai báo nhiềubiếncùngkiểu, sử
dụng dấuphẩy (,) phân cách:
Dim x As Long, i, j, k As Integer, _
s As String
Vừakhaibáovừakhởitạogiátrị:
Dim x As Integer = 5
Dim x As Integer = 6, _
y As Integer = 9
19
HẰNG (CONSTANT)
Là đạilượng có giá trị không đổitrong
quá trình tính toán.
Private|Public|Friend|Protected Const _
<Tên hằng> [As <Kiểu>]= <Biểuthức>
TD:
Public Const Pi = 3.14
Private Const g As Single = 9.8
20
BIỂU THỨC
Các phép toán số học (+, -, *, /, Mod,
\, ^).
Các phép toán quan hệ: And, Not, Or.
Các phép toán so sánh: =, >=, <=, <,
>, <>.
Ngoài ra, ta có thể sử dụng cặpdấu
ngoặc đơn để tăng độ ưutiên.21
CHUYỂN ĐỔI KIỂU
Tùy chọn Option Strict: xác định cách thức
trìnhbiêndịch xác định sự tương thích kiểu
trong biểuthức(On: BT phảitương thích
kiểu, Off: VB tựđộng chuyển đổikiểu).
TD: Dim A as Long=6
Dim b As Integer=A
sẽ có lỗixuấthiệnnếu đặt Option Strict On
Mộtsố hàm chuyển đổikiểu: CBool, CChar,
CDate, CDbl, CDec, CInt, CLng, CObj, CSng,
CStr.
22
CÂU LỆNH OPTION
Tác động đếnquátrìnhthựcthicủatrình
biên dịch.
Option Compare [Binary | Text]: cách
thứcso sánhchuỗi.
Option Explicit [On | Off]: xác định các
biếnsử dụng bắtbuộcphải khai báo hay
không?
Option Strict [On | Off]: tựđộng chuyển
đổikiểutrongbiểuthức.
23
CÂU LỆNH GÁN
Cú pháp: <Tên biến> = <Biểuthức>
TD: Tính diệntíchhìnhtrònbiếtbánkínhlà5.
Imports System
Public Module Hello
Public Sub Main( )
Const Pi = 3.14
Dim R As Single = 5, S As Single
S = Pi*R*R ‘ Gán trị tính diệntích
Console.WriteLine("Dien tich " & _
CStr(S))
End Sub
End Module
24
CÂU LỆNH IF
Có 3 dạng chính:
- If đơngiản.
- If có phầnElse
- If và ElseIf nhiều
lần.
If expression Then
statements
ElseIf expression Then
statements
ElseIf expression Then
statements
[Else
statements]
End If
If expression Then
statements
Else
statements
End If
If expression Then
statements
End If25
THÍ DỤ VỀ IF
If m=1 Or m=3 Or m=5 Or m=7 Or m=8 Or m=10 Or m=12 Then
System.Console.WriteLine(“31 days“)
ElseIf m=4 Or m=6 Or m=9 Or m=11 Then
System.Console.WriteLine(“30 days“)
Else
System.Console.WriteLine(“28 or 29 days”)
End If
26
CÂU LỆNH SELECT CASE
Select Case <biểuthứckiểmtra>
Case <Danh sách kếtquả biểuthức1>
[Khốilệnh 1]
Case <Danh sách kếtquả biểuthức2>
[Khốilệnh 2]
……
[Case Else
[Khốilệnh n]]
End Select
Từ khóa Is: So sánh <biểuthứckiểmtra> với1 giá
trị
Từ khóa To: Xác lậpmiềngiátrị của<biểuthức
kiểmtra>
27
THÍ DỤ SELECT CASE
Select Case Tuoi
Case Is <18
System.Console.WriteLine(“Vi thanh nien”)
Case 18 To 30
System.Console.WriteLine(“Ban da truong thanh, lap gia dinh di”)
Case 31 To 60
System.Console.WriteLine(“Ban dang o lua tuoi trung nien”)
Case Else
System.Console.WriteLine(“Ban da lon tuoi, nghi huu duoc roi!”)
End Select
Lưuý: Trong thí dụ trên, không thể viết Case Tuoi<18
28
VÒNG LẶP DO…LOOP
TD: Tìm USLN của2 số a & b
Do Until (a Mod b=0)
r = a Mod b
a =b
b= r
Loop
UCLN = b
TD: Tìm USLN của2 số a & b
Do While (a Mod b <>0)
r = a Mod b
a = b
b = r
Loop
UCLN = b
Do Until <Expression>
<Statements>
Loop
Thựcthi Staments cho
đếnkhi Expression đúng
thì dừng lại
Do While <Expression>
<Statements>
Loop
Thựcthi Staments trong
khi Expression đúng29
VÒNG LẶP FOR
Lặpxác định chính xác số lầnlặp.
For variable = expression1 To expression2 [Step expression ]
Statements
Next [ variable_list ]
TD: Tính n!
Dim i As Integer, K As Long = 1
For i = 1 To n
K = K * i
Next
30
VÒNG LẶP FOR EACH
Lặpqua mộttậphợpcácgiátrị.
For Each variable In expression
Statements
Next [ variable ]
TD: Dùng For Each đi qua toàn bộ các phầntử của1 mảng.
Dim a( ) As Integer = {1, 2, 3, 4, 5}
Dim b As Integer
For Each b In a
System.Console.WriteLine(b)
Next
31
Bài 3: Thư viện lớp cơ sở .NET
-Mô tả về thư việnlớpcơ sở .NET.
-Thiết lập một tham chiếu đến không gian
tên.
-Tạo một thể hiện của 1 lớp của .NET
Framework hay của1 kiểu giá trị.
32
KHÔNG GIAN TÊN
(NAMESPACE)
Các thư việnlớp đượctổ chức trong không gian tên;
đây là mộtnhómcáclớp có liên quan với nhau.
TD: System.Windows.Forms là kgt chứa các lớptạo
nên cửasổ và các thành phầntrêncửasổ củatrình
ứng dụng.
Kgt của.NET Framework đượctổ chứcphâncấpvới
gốclàkgtSystem.
Mộtsố kgt trong .NET Framework: System,
System.Collections, System.ComponentModel,
System.Data, System.Drawing, System.IO,
System.Math, System.Reflection, System.Security,
System.Threading, System.Windows.Forms…33
KHAI BÁO BIẾN KIỂU THAM
CHIẾU
Gồm2 bước: khai báo và khởitạo đốitượng
TD: Khai báo biến đốitượng thuộclớpForm
trong System.Windows.Forms
Dim f As System.Windows.Forms.Form
f = New System.Windows.Forms.Form()
Dim f As New System.Windows.Forms.Form
34
CÂU LỆNH IMPORTS
Dùng để tham chiếu đến namespace nào đó.
Đặt ởđầumodule chương trình.
Làm viếtgọntrongviệc truy xuất đến1 lớpcủa
namespace.
TD: Giả sửđầu module nào đótaviết:
Imports System.Windows.Forms
ta chỉ cầnkhaibáobiến đốitượng Form trong
module đó
Dim f As Form
f = New Form()
35
CÁC KIỂU CỦA .NET
Chia làm các loại: số nguyên, số thực,
luận lý, ký tự.
Kiểusố nguyên:
-263..263-1 Long System.Int64
-231..231-1 Integer System.Int32
-32768..32767 Short System.Int16
0..255 Byte System.Byte
Miềng. trị Kiểu VB.NET Kiểu.NET
36
Kiểusố thực
CÁC KIỂU CỦA .NET
128 bit
64 bit
32 bit
Mô tả
+/-1.0*10-28.. +/-
7.9*1028
28 ký số Decimal System.
Decimal
+/-5.0*10-324.. +/-
1.7*10308
15-16 ký
số
Double System.
Double
+/-1.4*10-45.. +/-
3.4*1038
7 ký số Single System.
Single
Miềng. trị Độ chính
xác
Kiểu
VB.NET
Kiểu
.NET37
Kiểuluậnlý: Kiểucủa .NET là System.Boolean ứng
vớikiểu Boolean củaVB.NET với2 giátrị là True và
False.
Kiểukýtự: Kiểucủa.NET làSystem.Char ứng với
kiểuChar của VB.NET (16 bit - Unicode).
Trong VB.NET mộthằng ký tựđược đặt trong cặp
dấungoặcképvớikýtự c đằng sau.
TD: Dim a As Char
a = “B”c
CÁC KIỂU CỦA .NET
38
Kiểuchuỗikýtự: Kiểu .NET là System.String ứng
với String trong VB.NET.
Trong VB.NET, hằng chuỗi được đặttrongcặpdấu
ngoặckép.
TD: Dim s As String
s = “Tin Học K30”
Kiểu đốitượng: Kiểu.NET làSystem.Objecttương
ứng với Object trong VB.NET. Đây là kiểugốcchotất
cả các kiểutrongVB.NET.
TD: Dim o As Object
o = 5
o = New System.Windows.Forms.Form()
CÁC KIỂU CỦA .NET
39
KIỂU DỮ LIỆU - HÀM THÀNH VIÊN
Parse: hàm có ở các kiểugiátrị. Hàm này cho phép
tạoramộtgiátrị số từ mộtchuỗi.
TD: Dim d As Integer
d = Integer.Parse(“12345”) ‘ d là 12345
System.Console.WriteLine(CStr(d))
ToString: chuyển đổigiátrị sang dạng chuỗi.
TD: Dim a As Integer, s As String
a = 1234
s = a.ToString()
System.Console.WriteLine(s)
40
Các hàm xử lý chuỗi
KIỂU DỮ LIỆU - HÀM THÀNH VIÊN
Loạibỏ những ký tự không cầnthiếttrongchuỗi Trim
Chuyểnchuỗisang chữ thường (hoa) ToLower,
ToUpper
Trả về mộtchuỗicon từ chuỗichotrước SubString
Thay thế chuỗicon trongchuỗigốcbằng mộtchuỗi
khác
Replace
Xóa mộtsố ký tựđượcchỉđịnh. Remove
Chèn chuỗichotrướcvàochuỗihiệnhành Insert
Ý nghĩa Hàm41
CÁC HÀM XỬ LÝ CHUỖI
Imports System.Console
Module Module1
Sub Main()
Dim s1 As String
s1 = "Khoa CNTT - Dai Hoc Can Tho"
WriteLine(s1) ‘1
s1 = s1.Insert(12, "Khu 3 - ")
WriteLine(s1) ‘2
Dim s As String = s1.Substring(12)
WriteLine(s) ‘3
s = s1.Substring(12, 5)
WriteLine(s) ‘4
ReadLine()
End Sub
End Module 42
KIỂU LIỆT KÊ
Cho phép định nghĩamộttậpgiátrị hằng để gợinhớ.
Nếukhôngchỉ ra giá trị củaEnum, giátrịđầutiênlà0.
Public Enum Numbers
zero ' = 0
one ' = 1
two ‘ = 2
End Enum
Dim a As Numbers
WriteLine((a.two*2))
Enum Week
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6
Sunday = 7
End Enum
TD2: Không chỉ ra giá trị của
Enum
TD1: Khai báo kiểuliệtkê
cho các ngày trong tuần.
43
MẢNG
Mảng: tậphợpcácphầntử có cùng kiểu.
Khai báo mảng 1 chiều:
Dim <Tên biến>(<Kích thước>) As <Kiểuphầntử>
TD: Khai báo mảng có 31 số nguyên từ 0 đến30
Dim a(30) As Integer
Ta có thể không chỉ ra kích thướcmảng, nhưng sau đó
ta phảikhởitạomảng.
TD: Dim a() As Integer
a = New Integer() {1,2,3,4}
Dim f As Integer
For Each f In a
Write(f)
Next
44
Khai báo tương tự mảng 1 chiềunhưng có thêm kích
thướccủa các chiềucònlại.
TD:
‘ Khai báo ma trận3 dòng5 cột
Dim m(2, 4) As Single
‘ Khai báo và khởitạoma trận
Dim intArrays(,) As Integer = {{1, 2, 3}, {4, 5, 6}}
‘ Hiển thị theo dạng ma trận
Dim f As Integer, c As Integer = 0
For Each f In intArrays
If c Mod 3 = 0 Then WriteLine()
Write(" ")
Write(f)
c = c + 1
Next
MẢNG NHIỀU CHIỀU45
TẬP HỢP (COLLECTION)
Là mộtlớp đặcbiệtchứamột nhóm các đốitượng nào
đó.
Kgt System.Collections định nghĩa nhiềulớp thành viên:
ArrayList, Stack, HashTable, BitArray, Queue…
Lớp ArrayList: cung cấp các chứcnăng cơ bảncủa1
tậphợp, có thểđượcsử dụng cho nhiềumục đích khác
nhau.
Khai báo & khởitạo đốitượng ArrayList
Dim myList As New System.Collections.ArrayList()
‘Khởitạo đốitượng myList có 5 phầntử
Dim myList As New System.Collections.ArrayList(5)
46
Phương thức
- Add: Thêm phầntử vào tậphợp
-Remove: Xóaphầntử khỏitậphợp.
-RemoveAt: Xóatạivị trí xác định trong tậphợp
TD:
Dim f As Integer, r As New System.Collections.ArrayList
For f = 1 To 5
r.Add(f)
Next
r.Remove(3) ‘ Xóa 3
For Each f In r
WriteLine(f)
Next
ARRAY LIST
47
ArrayList có thể chứa các phầntử thuộc các kiểukhác
nhau.
TD:
Dim f As Integer, r As New System.Collections.ArrayList
For f = 1 To 5
r.Add(f)
Next
r.Add(“Khoa Công Nghệ Thông Tin")
r.Add(“Khoa Kinh Tế & QTKD")
Dim f1 As Object
For Each f1 In r
If TypeOf f1 Is String Then
WriteLine(f1) ‘ Hiểnthị giá trị là chuỗi
End If
Next
ARRAY LIST
48
Bài 4: Xử lý lỗitrongVB.NET
Phân loạicáclỗitrong ứng dụng.
Bẫycáclỗithực thi (runtime error).49
PHÂN LOẠI LỖI
Có 3 loạilỗi(error)
-Lỗi cú pháp (syntax error)
-Lỗithực thi (runtime error)
-Lỗi logic (logic error)
Ngoạilệ (Exception): là lỗixảyralúcthựcthichương
trình (thuộcloại runtime error).
Khi có ngoạilệ xảy ra, nếu không có hành động thích
hợpchương trình sẽ bị ngắt.
Cầnphảicócơ chế xử lý ngoạilệ
50
EXCEPTION
Mộtsố ngoạilệ: ArithmeticException,
InvalidOperationException, OverflowException,
TypeLoadException, IndexOutOfRangeException,
InvalidCastException, NullReferenceException,
SecurityException…
Ngoài ra, ngườidùngcóthểđịnh nghĩangoạilệ cho
riêng mình (phảikế thừatừ những lớptrên).
ThuộctínhcủaException:
-Message: Chuỗimôtả thông tin về ngoạilệ.
- Source: tên ứng dụng hay đốitượng gây ra lỗi.
51
XỬ LÝ NGOẠI LỆ
Ngoạilệ có thểđượcxử lý nhờ vào các từ
khóa: Try, Throw, Catch, Finally.
Cấutrúcmôhìnhxử lý ngoạilệ
Try
‘ Đoạnmãlệnh có thể gây lỗi
Catch e1 As Exception
‘Nếulỗithuộcloạie1, đoạnmãnàythựcthi
‘Ngượclại, khối Catch kếđượcthựcthi
Catch en As Exception
‘Nếulỗithuộcloạien, đoạnmãnàythựcthi
Finally
‘ Đoạnmãnàyluônthựcthi, dùngoạilệ có
‘xảyrahay không? Phần này không bắtbuộc
End Try 52
XỬ LÝ NGOẠI LỆ -THÍDỤ
TD: Ngoạilệ không thểđổitừ chuỗisang số
Module Module1
Sub Main()
Try
Dim r As Integer, s As String
Write("Nhap r= “)
s = ReadLine()
r = Integer.Parse(s)
WriteLine(1 / r)
Catch e As System.Exception
WriteLine(e.Message + " Xu ly ngoai le")
Finally
WriteLine("Khoi Finally")
End Try
End Sub
End Module53
XỬ LÝ NGOẠI LỆ -THÍDỤ
54
Chương 2: Lậptrìnhhướng đối
tượng với Visual Basic.NET
Nội dung chính:
Lớp& đốitượng
Phương thức
Thuộctính
Nạpchồng
Thừakế
55
LỚP
Những thuộc tính và hành động chung củacác
thựcthể được nhóm lại để tạonên1 đơnvị duy
nhấtlàlớp.
TD: LớpCon người có các thuộctínhvàhành động
sau:
-Tên
-Chiều cao
-Màutóc.
-Nóinăng
-Viết
….
Những thuộctínhvàhành động chung gọi là thành
viên (member) 56
ĐỐI TƯỢNG
Một đốitượng là mộttrường hợpcụ thể củamộtlớp.
TD: Đốitượng 1 con ngườithựctế củalớpCon
người:
- Tên: VănCường
-Tuổi: 29
-Trọng lượng: 60 kg
Hành động:
- Đi
-Nói
- Suy nghĩ57
TẠO MỘT LỚP MỚI
Sử dụng từ khóa Class
Class <Tên lớp>
<Các thành viên củalớp>
End Class
TD: Khai báo lớpPerson
Class Person
Public Name As String
Public Age As Integer
Public Weight As Single
End Class
58
TẠO ĐỐI TƯỢNG TỪ LỚP
Việctạo1 đốitượng chính là khai báo
và khởitạo biến đốitượng từ lớp.
TD: Tạo đốitượng p thuộclớpPerson
Dim p As Person
p = New Person()
Dim p As New Person()
59
PHƯƠNG THỨC (METHOD)
Các hành động củalớp đượcthể hiệnqua phương
thức(chương trình con).
Trong VB.NET, phương thứccó2 loại: hàm
(Function) và thủ tục(Sub).
Khai báo hàm:
[Public | Private | Friend | Protected] Function _
<Tên hàm>(<Khai báo các tham số>) _
As <Kiểutrả về>
<Các khai báo và câu lệnh định nghĩahàm>
End Function
<Khai báo các tham số>: giống như khai báo biến.
Lờigọihàmthực thi là 1 biểuthức:
<Tên hàm>(Danh sách tham số thựctế)
60
PHƯƠNG THỨC (METHOD)
Khai báo thủ tục:
[Public | Private | Friend | Protected] Sub _
<Tên thủ tục> (<Khaibáocácthamsố>)
<Các khai báo và câu lệnh định nghĩathủ tục>
End Sub
Gọithựcthithủ tục
<Tên thủ tục> (<Danh sách tham số thựctế>)
TD:
Public Sub MySub()
MessageBox.Show(“Thi du ve Sub")
End Sub
Function Add(ByVal first As Integer, ByVal second As _
Integer) As Integer
Add = first + second
End Function 61
TRUYỀN THAM SỐ CHO
PHƯƠNG THỨC
2 cách truyềnthamsố:
Truyềntheogiátrị: mặc định hay từ
khóa ByVal.
Truyềntheo địachỉ: từ khóa ByRef.
62
THÍ DỤ TRUYỀN THAM SỐ
Public Sub Demo1()
Dim x, y As Integer
x = 15
y = 20
' Gọi phương thức Demo2
Demo2(x, y)
' x=? y= ?
MessageBox.Show("X = " & x.ToString & "Y = " & _
y.ToString)
End Sub
Public Sub Demo2(ByVal p1 As Integer, ByRef p2 As _
Integer)
p1 = p1 + p2
p2 = p2 + p1
End Sub
63
PHƯƠNG THỨC XÂY DỰNG
Là phương thức đượcgọithựchiện đầutiênmỗikhi1 đốitượng
của1 lớp đượctạora.
Trong VB.NET, phương thứcxâydựng luôn là Sub New()
TD:
Class Person
Public Name As String
Public Age As Integer
Public Weight As Single
Public Sub New() ‘ Phương thứcxâydựng
Name =“”
Age = 0
Weight = 0
End Sub
End Class 64
PHƯƠNG THỨC HỦY
Là phương thức đượcgọithựchiệncuối cùng khi đối
tượng bị thu hồi.
Phương thức này có nhiệmvụ giải phóng tài nguyên được
dùng cho đốitượng.
Trong VB.NET, phương thứcnàyphảilà Overrides Sub
Finalize()
TD:
Class Person
…
Protected Overrides Sub Finalize()
‘ Thu hồi các thuộc tính
Name = “”
End Sub
End Class65
THUỘC TÍNH (PROPERTIES)
Thuộctínhlànhững đặctrưng của các đốitượng của1
lớp.
Thuộctínhcóthểđượctạonhờ:
-Từ khóa Public.
-Phương thứcProperty.
TD: LớpCon người(Person)
Class Person
Public strName As String
Public iAge As Integer
Public iWeight As Integer
End Class
Với cách truy cập Public, thuộctínhcóthểđượctruy
xuấtkhônggiớihạn. 66
Nếutamuốnhạnchế truy cập, ta có thể sử dụng từ
khóa Private (data hiding).
Trong TD trên, ta có thểđịnh nghĩathuộctínhName:
Private strName As String
Public Property Name() As String
Set
strName = Value
End Set
Get
Name = strName
End Get
End Property
THUỘC TÍNH (PROPERTIES)
67
KhốiSet: gántrị cho thuộctính.
KhốiGet: lấygiátrị củathuộctính.
Thuộctínhchỉđọc(ReadOnly): khai báo khốiGet
(không có khốiSet) hay cóthể khai báo cách tường
minh trong khốiGet nhờ từ khóa ReadOnly.
TD: ThuộctínhtuổicủalớpCon ngườilàchỉđọc.
Private iAge As Integer
Public ReadOnly Property Age() As Integer
Get
Age = iAge
End Get
End Property
THUỘC TÍNH (PROPERTIES)
68
Thuộctínhchỉ ghi (WriteOnly): khai báo khốiSet
(không có khốiGet) hay cóthể khai báo cách tường
minh trong khốiSet nhờ từ khóa WriteOnly.
TD: Trọng lượng củalớpCon ngườilàchỉ ghi.
Private iWeight As Integer
Public WriteOnly Property Weight () As Integer
Set
iWeight = Value
End Set
End Property
THUỘC TÍNH (PROPERTIES)69
ĐA HÌNH (POLYMORPHISM)
Đahình: Khả năng các phương thứccócùngmộttên
nhưng các tham số của chúng là khác nhau.
Nạpchồng phương thức (method overload): khai báo nhiều
phương thức có cùng một tên (khác tham số) trong mộtlớp.
TD: Tạolớp Điểmtrongkhônggian2 chiềugồm2 thuộc
tính là tọa độ X & tọa độ Y.
-2 phương thức xây dựng: một không có tham số (gán X, Y,
là 0), mộtcóthamsố (cặp(X1,Y1) cósẵn để gán cho X,Y).
-Phương thứchiểnthị tọa độ của điểm lên màn hình.
-2 phương thứctínhkhoảng cách từđiểmhiệnthời đến1
điểmkhác, mộtkhôngthamsố (tính kc đếngốctọa độ),
mộtcóthamsố là một điểmkhác(tínhkc đến điểmnày).
70
Public Sub New()
Me.X = 0
Me.Y = 0
End Sub
Public Sub New(ByVal X1 As _
Integer, ByVal Y1 As Integer)
Me.X = X1
Me.Y = Y1
End Sub
Public Sub Display()
WriteLine("({0},{1})", Me.X, Me.Y)
End Sub
Public Function _
Distance() As Single
Return Sqrt(Me.X ^ 2 + Me.Y ^ 2)
End Function
Class Point
Private iX As Integer
Private iY As Integer
Public Property X() As Integer
Get
X = iX
End Get
Set(ByVal Value As Integer)
iX = Value
End Set
End Property
Public Property Y() As Integer
Get
Y = iY
End Get
Set(ByVal Value As Integer)
iY = Value
End Set
End Property
71
WriteLine("Khoang cach p1 & p2: _
{0}", p1.Distance(p2))
WriteLine("Khoang cach p1 & goc _
toa do: {0}", p1.Distance())
ReadLine()
End Sub
Lưuý:
- Sử dụng không gian tên:
System.Console &
System.Math.
Public Function _
Distance(ByVal p As Point) As Single
Return Sqrt((Me.X - p.X) ^ 2 + _
(Me.Y - p.Y) ^ 2)
End Function
End Class ‘ Kếtthúc ĐN lớpPoint
‘Hàmmain
Sub Main()
Dim p1, p2 As Point
p1 = New Point(2, 2)
p2 = New Point
WriteLine("Toa do p1 la ({0},{1})", _
p1.X, p1.Y)
WriteLine("Toa do p2 la ({0},{1})", _
p2.X, p2.Y)
p1.Display()
p2.Display()
72
THỪA KẾ (INHERITANCE)
Thừakế là khả năng mộtlớp(lớpcon) thừahưởng những thuộc
tính & các hành động từ 1 lớp đãcó(lớp cha).
VB.NET không hỗ trợđathừakế.
Sử dụng từ khóa Inherits khi định nghĩalớpcon.
TD: Thiếtkế lớp điểm trong không gian 3 chiềuthừakế từ lớp
điểm trong kg 2 chiều.
Class Point3D
Inherits Point ' Thừakế từ lớpPoint
Private iZ As Integer
Public Property Z() As Integer
Get
Z = iZ
End Get
Set(ByVal Value As Integer)
iZ = Value
End Set
End Property
End Class73
THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC
Lớpcon cóthể ghi đècácphương thứccủalớp cha.
Phương thứccủalớp cha phảisử dụng từ khóa Overridable,
phương thứccủalớpcon sử dụng từ khóa Overrides.
Từ khóa MyBase: truy xuấtcácthuộc tính hay phương thứccủalớp
cha từ lớpcon.
TD: Lớp điểm trong kg 3 chiềucầnghi đèphương thứchiểnthị tọa
độ điểmlênmànhình.
MyBase.New(X1, Y1)
Me.Z = z1
End Sub
Public Overrides Sub Display()
WriteLine("Toa do p1 la _
({0},{1},{2})", Me.X, Me.Y, Me.Z)
End Sub
Public Sub New()
MyBase.New()
Me.Z = 0
End Sub
Public Sub New(ByVal x1 As _
Integer, ByVal y1 As Integer, _
ByVal z1 As Integer)
74
Sub Main()
Dim p1, p2 As Point3D
p1 = New Point3D(1, 2, 3)
p1.Display()
p2 = New Point3D
p2.Display()
End Sub
Kếtquả chương trình
THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC
75
GIAO DIỆN - INTERFACE
Nếumộtlớpcầnthể hiệntính đathừakế, ta sử dụng
giao diện(Interface).
Giao diện có các thuộctính& cácphương thứcriêng,
tuy nhiên chúng không có mã lệnh để cài đặt.
Lớpsử dụng giao diệncầnphảicài đặt(Implements)
các phương thức đã định nghĩa trong giao diện.
TD:
Class Tool
Implements Interface1
Public Sub A() Implements Interface1.A
‘Cài đặtA
End Sub
…
End Class
Public Interface Interface1
Sub A()
Function B(ByVal C As _
Integer) As Integer
End Interface
76
Chương 3: Thiếtkế giao
diệnvàxử lý sự kiện
Lập trình hướng sự kiện(Event
Programming).
Sử dụng cửasổ (form, Form).
Sử dụng các Controls để thiếtkế giao
diện.77
Bài 1: Lậptrìnhsự kiện
(Event Programming)
Các tậptin của1 ứng dụng VB.NET.
Sự kiện& lập trình hướng sự kiện
78
CÁC TẬP TIN CỦA 1 ỨNG
DỤNG WINDOWS FORM
Ứng dụng thiếtkế & lập trình đượcquảnlýtrong
VB.NET bằng Solution.
1 Solution có thể chứa nhiềudự án (Project).
Các tậptin khitạo1 ứng dụng VB.NET:
Các tậptin khác …
Tậptin dự án *.vbproj
Tậptin tàinguyên *.resx
Tậptin chứa định nghĩavề form &
mã lệnh bên trong đó
*.vb
Tập tin Solution (vănbản) *.sln
79
TẠO ỨNG DỤNG
WINDOWS FORM
8081 82
LẬP TRÌNH SỰ KIỆN
(EVENT PROGRAMMING)
Sự kiện(event): làhành động củangười
dùng tác động vào ứng dụng đang thựcthi.
TD: Nhấnphímbấtkỳ trên bàn phím.
Nhấpchuột.
Khả năng đáp ứng lạisự kiệncủa ứng dụng
phụ thuộcngườilậptrình.
Ngườilậptrìnhphảiviết đoạnmãlệnh, đoạn
lệnh này sẽ thựcthikhisự kiệntương ứng
xảyra.
TD: Máy tính Calculator, trình vẽ Paint.
83
Mã lệnh cho sự kiệnClick củaGhi đĩa
……………………………………
Mã lệnh cho sự kiệnClick củaIn giấy
……………………………………
……………………………………
Vấn đề gì xảyranếu:
-Ngườidùngkhôngtác động gì vào ứng dụng?
-Ngườidùngnhậpdữ liệu vào các ô nhập?
-Ngườidùngnhấpchọn Ghi đĩa?
-Ngườidùngnhấpchọn In giấy?
84
Bài 2: Form
Khái niệmform
Thêm form vào ứng dụng.
Thiếtlập startup form & vị trí form lúc
startup.
Các thuộctính, phương thức, sự kiện
củaform.85
FORM - Khái niệm
Là cửasổđượclậptrình để hiểnthị dữ liệu
& nhận thông tin phía ngườidùng.
Thêm form vào dự án (khi thiếtkế):
-Trênmục menu Project, chọn Add
Windows Form. Hộpthoại Add New Item
bậtra.
-Chọn Windows Form, nhấpOpen.
Thêm form bằng mã lệnh: Khai báo và khởi
tạo đốitượng form.
TD: Dim f As DialogForm
f = New DialogForm()
86
INHERITED FORM
Là form đượctạoravàkế thừacácthuộc tính, phương
thức, sự kiệncủaform cha.
Thêm form thừakế vào ứng dụng (bằng mã lệnh):
-Thêm1 form vào ứng dụng.
- Cho form này thừakế 1 form cha nào đóbằng cách sử
dụng từ khóa Inherits trongkhaibáolớp.
TD: Tạoform myFormthừakế từ form MainForm:
Public Class myForm
Inherits MainForm
‘ Cài đặt của lớp myForm
End Class
87
FORM - THUỘC TÍNH
Thuộctính: đặctínhtạonênvẻ bề ngoài của
control.
-BackColor: màunền.
- ForeColor: màu chữ.
-Text: Tiêu đề form.
-Font: Font chữ củaform.
-Name: tênlớpcủaform
……………..
Ta có thể thiếtlậpcácthuộctínhnàybằng
mã lệnh hay nhờ vào cửasổ thuộctính.
TD: Me.BackColor =
System Drawing Color Red
88
THIẾT LẬP THUỘC TÍNH
BẰNG CỬA SỔ THUỘC TÍNH89
FORM – PHƯƠNG THỨC
Form.Show : thể hiện form lên màn hình.
Form.ShowDialog : thể hiện form lên màn hình hình dạng
Dialog.
Form.Activate : form đượckíchhoạt(active)
Form.Hide : ẩnform đi.
Form.Close : đóng lạiform vàgiảiphóngtàinguyên.
TD:
Dim myForm As New DialogForm()
myForm.Show() ‘ Thể hiện Form trạng thái bình thường
myForm.ShowDialog() ‘ Thể hiện Form dạng Dialog
myForm.Activate()
myForm.Hide()
myForm.Close()
90
FORM - SỰ KIỆN (EVENT)
Tạo đoạnmãxử lý sự kiệntrongVB.NET:
91
FORM - SỰ KIỆN (EVENT)
Load : Xảyrakhithể hiện đầutiêncủaForm đượcLoad
lên màn hình.
Activated : XảyrakhiForm đượckíchhoạt.
Deactivated: XảyrakhiForm mấtkíchhoạt.
VisibleChanged : XảyrakhiForm cóthay đổitrạng thái
(ẩn/hiện).
Closing: XảyrakhiForm đang trong quá trình đóng lại.
Lưuý:
-Sự kiện Load đượcsử dụng để khởitạogiátrị củacác
thành phần trong Form.
-Sự kiện Closing & Closed thường đượcsử dụng để thu
hồi tài nguyên đượccấpphátchoForm.
92
THÍ DỤ XỬ LÝ SỰ KIỆN
CỦA FORM
Giả sử ta muốnngănthaotác đóng
Form củangười dùng:
Sự kiện Form_Closing(), ta thiếtlập:
CancelEventArgs.Cancel = True
Private Sub myForm_Closing(ByVal sender As Object, _
ByVal e As System.ComponentModel.CancelEventArgs) _
Handles MyBase.Closing
e.Cancel = True
End Sub93
Bài 3: Các control trong
VB.NET
Khái niệmcontrol.
Mộtsố thao tác với các control khi thiết
kếứng dụng.
Mộtsố control thường sử dụng.
94
CONTROL – KHÁI NIỆM
Control: Các thành phầncósẵn để tạogiao
diệntương tác vớingườidùng.
Mộtsố control: Label, TextBox, Button,
ListBox, ComboBox, RadioButton, CheckBox,
PictureBox…
95
LABEL
Dùng để hiểnthị dữ liệuchongườidùng.
Thuộctính:
-Name: TêncủaLabel
- Text: Chuỗihiểnthị trên Label.
- BorderStyle: KiểuviềncủaLabel (None,
FixedSingle, Fixed3D)
- Image: hình ảnh củaLabel
TD: Thay đổiText củaLabel
có Name là lblTest1 thành ‘None’:
lblTest1.Text = “None”
96
TEXT BOX
Dùng để nhận/hiểnthị dữ liệuvề phía người dùng.
Thuộctính:
- Name: Tên củaô nhậpliệuTextBox.
- Text: Chuỗihiểnthị trên ô nhậpliệuTextBox.
- Multiline: TextBox có nhận nhiềudòngvănbản
hay không? (Mặc định giá trị này là False).
- CharacterCasing: tựđộng chuyển đổidữ liệu
nhậpcủa TextBox thành dạng tương ứng (Normal,
Upper, Lower).
- PasswordChar: Ký tự hiểnthị thay thế khi nhập.
- Font: Font chữ củaTextBox97
Sự kiện:
- KeyPress: Xảy ra khi người dùng nhấn phím có mã Ascii
từ bàn phím.
Để kiểmchứng ký tự người dùng nhậptừ bàn phím
ngườitasử dụng 1 số hàm Char.IsDigit, Char.IsLetter,
Char.IsLetterOrDigit, Char.IsPunctuation , Char.IsLower ,
Char.IsUpper.
TD: Sự kiện KeyPress
Private Sub TextBox1_KeyPress (ByVal sender As Object, ByVal e As _
System.Windows.Forms.KeyPressEventArgs) Handles _
TextBox1.KeyPress
If Char.IsDigit(e.KeyChar) = True Then
MessageBox.Show("You pressed a number key")
End If
End Sub
TEXT BOX
98
Sự kiện Validating:
-XảyratrướckhiTextBoxmấtkíchhoạt, dùng để kiểmtra
dữ liệunhậpcóhợplệ hay không?
-Chỉ thựchiện khi ngườilậptrìnhthiếtlậpthuộctính
CausesValidation của Text Box là True.
TD:
Private Sub TextBox1_Validating(ByVal sender As Object, ByVal e As _
System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
' Kiểm tra giá trị của TextBox
If TextBox1.Text = "" Then
' Bắt buộc TextBox phải nhập lại, TextBox phải được kích hoạt
e.Cancel = True
End If
End Sub
TEXT BOX
99
BUTTON
Dùng để xác nhận 1 hành động hay thao tác của
người dùng.
Thuộc tính:
-Name: Têncủa Button.
- Text: Chuỗihiểnthị trên Button.
- Image: Hình ảnh trên Button.
- FlatStyle: Hình dạng củaButton (Flat, Popup,
Standard, and System.)
-Font: Xáclập Font chữ cho Button.
100
Sự kiện
- Click: Xảy ra khi người dùng nhấpchuộtvàoButton.
TD: Tính N! vớiN nhậptừ bản phím.
BUTTON
Sự kiệnButton_Click()
Private Sub btnTinh_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnTinh.Click
Dim N, i As Integer, K As Long = 1
N = CInt(txtN.Text)
For i = 1 To N
K = K * i
Next
lblKQ.Text = CStr(K)
End Sub101
LISTBOXES
Sử dụng để hiểnthị một danh sách cho
ngườidùnglựachọn.
WinForms hỗ trợ 2 loại list box:
-ListBox
-CheckedListBox
Sự khác biệt chính là những phầntử của
CheckedListBox đượchiểnthị có dấucheck
trước đó.
102
LISTBOX
Thuộctính
-Items: tậpcácphầntử trong ListBox.
- SelectedIndex: xác định chỉ số củamục đang hiệnthời
đượcchọn trong ListBox, phầntửđầutiêncóchỉ số 0.
- SelectedItems: tậpcácmục đang đượcchọn.
- SelectedValue: giá trị củamục đang đượcchọn.
-Text: chuỗitrênmục đượcchọn.
Phương thức
-ClearSelected: xóahếtcáclựachọntrênListBox.
- FindString: tìm mục đầu tiên trong danh sách mà phần
tửđócógiátrị bắt đầulàmộtchuỗichotrước.
103
LISTBOX
Sự kiện
- SelectedIndexChanged: xảyra
khi giá trị củathuộctính
SelectedIndex thay đổi.
- SelectedValueChanged: xảyra
khi giá trị củathuộctính
SelectedValue thay đổi.
TD: Sử dụng thuộctính đối
tượng Items để thêm các mục
vào ListBox. Xử lý sự kiệnLoad
củaForm để viếtmãlệnh xử lý.
104
LISTBOX
Private Sub myForm_Load(ByVal sender As _
System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
Me.lstTen.Items.Add("NguyễnVănCường")
Me.lstTen.Items.Add("Lâm Quang Hà")
Me.lstTen.Items.Add("Trần Trung Trực")
Me.lstTen.Items.Add("Lê Quang Trãi")
End Sub
Ngoài ra thuộctính đốitượng Items còn có mộtsố
thuộctính& phương thức khác: Count, Clear,
Insert, RemoveAt, Item…105
CHECKEDLISTBOX
CheckedListBox cũng hỗ trợ các thuộc tính, phương thức,
sự kiệngiống như ListBox; bên cạnh đó control này còn có
những đặc điểmriêng:
Thuộctính
- CheckedIndies: tậpcácchỉ số củacácphầntửđượclựa
chọn(checked).
- CheckedItems: tậphợpcácphầntửđượcchọn
(checked).
TD: Cho hình bên, ta có:
- CheckedIndies={1,2}
- CheckedItems={Lâm Quang Hà,
Trần Trung Trực}
106
CHECKEDLISTBOX
Phương thức
- SetItemChecked: thiếtlậpmụccóchỉ số xác định được
chọn(checked).
- SetItemCheckState: xác lậptrạng thái checked của1
mục xác định.
TD: Sử dụng phương thức SetItemCheckState
Sự kiện Click của Button Trạng thái
Me.lstNuoc.SetItemCheckState(1, _
CheckState.Checked)
Me.lstNuoc.SetItemCheckState(2, _
CheckState.Indeterminate)
Me.lstNuoc.SetItemCheckState(3, _
CheckState.Unchecked)
107
COMBOBOX
Là control kếthợpgiữa TextBox & ListBox. Control
này hỗ trợ các tính năng như ListBox; tuy nhiên
chúng vẫncóphầnmở rộng so vớiListBox.
Thuộctính
- DropDownStyle: kiểucủaComboBox, gồmcó
Simple, DropDownList & DropDown.
Simple DropDown DropDownList 108
LISTVIEW
Cho phép hiểnthị một danh sách các phầntửở dạng thức
đặcbiệt. ListView có 4 kiểusau:
-Text only: mặc định.
- Text with small icon.
- Text with large icon.
- Detail view: các phầntử hiểnthị nhiềucột.
ListView kế thừacáctínhnăng của CheckedListBox.
Thuộctính
-CheckBoxes: mỗiphầntử trong ds có 1 checkbox đứng
trước.
-Items: tậpcácphầntử trong ds.
- MultiSelect: ds có nhiềulựachọnkhông?109
LISTVIEW - THÍ DỤ
110
LISTVIEW - THÍ DỤ
Dim lsvTen As New ListView
lsvTen.Width = 300
lsvTen.Height = 200
' Hiểnthị chi tiết
lsvTen.View = View.Details
' Sửagiátrị củaText
lsvTen.LabelEdit = True
lsvTen.FullRowSelect = True
' Hiểnthị lưới
lsvTen.GridLines = True
Dim item1 As New ListViewItem("NguyễnVănAn", 0)
item1.SubItems.Add("1")
item1.SubItems.Add("2")
item1.SubItems.Add("3")
111
Dim item2 As New ListViewItem("Lê Chí Công", 1)
item2.SubItems.Add("4")
item2.SubItems.Add("5")
item2.SubItems.Add("6")
Dim item3 As New ListViewItem("Huỳnh VănHảo", 0)
item3.SubItems.Add("7")
item3.SubItems.Add("8")
item3.SubItems.Add("9")
' Tạocáccộtchocácmục
lsvTen.Columns.Add("Họ tên", -2, HorizontalAlignment.Left)
lsvTen.Columns.Add("Toán", -2, HorizontalAlignment.Left)
lsvTen.Columns.Add("Lý", -2, HorizontalAlignment.Left)
lsvTen.Columns.Add("Hóa", -2, HorizontalAlignment.Center)
‘Thêmcácmục vào ListView
lsvTen.Items.AddRange(New ListViewItem() _
{item1, item2, item3})
112
TREEVIEW
Cho phép hiểnthị dữ liệu ở dạng phân cấp.
TreeView hỗ trợ hầuhếtcácthuộc tính, phương thức& sự
kiệncủa ListView.
Thuộctính
- ImageList: ds các ảnh đượchiểnthịở mỗi nút.
- Nodes: ds các nút.
- SeletedNode: nút hiệnthời đượclựachọn.
Phương thức
-GetNodeAt: truyxuất1 nút ở vị trí xác định trong TreeView.
- GetNodeCount: tổng số nút.
Sự kiện
- BeforeSelect, AfterSelect: xảyratrước/sau khi 1 nút đượcchọn.
- BeforeCollapse, AfterCollapse: xảyratrước/sau khi thu hẹp1
nút.
- BeforeExpand, AfterExpand: xảyratrước/sau khi 1 mở rộng 1
nút.113
TREEVIEW - THÍ DỤ
Hiểnthị 10 khách
hàng, mỗikhách
hàng có 5 đơn đặt
hàng.
Thiếtkế các lớp
Khách hàng & Đặt
hàng.
Tạo TreeView như
hình
114
Public Class Customer
Public CustomerName As String
Public CustomerOrder As _
ArrayList
Public Sub New(ByVal Name _
As String)
CustomerName = Name
CustomerOrder = New _
ArrayList(0)
End Sub
End Class
Public Class Orders
Public OrderID As String
Public Sub New(ByVal _
id As String)
OrderID = id
End Sub
End Class
Sự kiệnLoad củaForm đượcxử lý
Dim customerArray As New ArrayList
' Thêm khách hàng
Dim x As Integer
For x = 0 To 9
customerArray.Add(New Customer("Customer " + x.ToString()))
Next x
115
‘Thêm đơn đặthàng
Dim customer1 As Customer
For Each customer1 In customerArray
Dim y As Integer
For y = 0 To 4
customer1.CustomerOrder.Add(New Orders("Order" + y.ToString()))
Next y
Next customer1
' Xóa TreeView
TreeView1.Nodes.Clear()
' Tạo các nút cha là các khách hàng
For Each customer1 In customerArray
TreeView1.Nodes.Add(New TreeNode(customer1.CustomerName))
' Các nút con là các đơn đặthàng
Dim order1 As Orders
For Each order1 In customer1.CustomerOrder
TreeView1.Nodes(customerArray.IndexOf(customer1)).Nodes.Add( _
New TreeNode(customer1.CustomerName + ".“ + order1.OrderID))
Next order1
Next customer1
116
CHECKEDBOX
Đượcsử dụng để nhận thông tin dạng Yes/No.
Thuộctính
-Checked: Xác định control đang ở trạng thái nào (True/False).
Sự kiện
-CheckedChanged: Xảy ra khi giá trị củathuộctínhChecked bị
thay đổi.
Private Sub chkDam_CheckedChanged(ByVal sender _
As System.Object, ByVal e As System.EventArgs) _
Handles chkDam.CheckedChanged
If Me.chkDam.Checked Then
Me.txtTen.Font = New Font("Arial", 9.0!, _
System.Drawing.FontStyle.Bold)
Else
Me.txtTen.Font = New Font("Arial", 9.0!, _
System.Drawing.FontStyle.Regular)
End If
End Sub117
RADIO BUTTON
- Là control cho phép nhậndữ liệuYes/No,
nhưng các radio button cùng 1 nhóm thì không
thể chọn đồng thời.
-Cácthuộctính, phương thức, sự kiệntương tự
CheckBox.
118
GROUPBOX
Là control đượcdùng để
nhóm các điềukhiển
khác.
Thuộc tính:
-Text: Chuỗitrêntiêu đề
củaGroupBox.
TD (hình bên)
119
PICTURE BOX
Đượcsử dụng để hiểnthị hình ảnh.
Thuộctính
-Image: Xác định hình ảnh cầnhiểnthị.
- SizeMode: xác định cách thức ảnh đượchiểnthị
(AutoSize, CenterImage, Normal, StretchImage)
Sự kiện
-SizeModeChange: xảyrakhithuộctínhSizeMode
thay đổigiátrị.
120
IMAGELIST
Dùng để lưucáchình ảnhvàchophépchúng
hiểnthịở các control khác nhau.
Thuộctính
-Images: tậphợpcác ảnh củaImageList.
- ImageSize: kích thướccủacác ảnh có trong
ImageList.
Phương thức
-Draw: vẽ một ảnh xác định.121
TIMER
Là control đáp ứng lạisự trôi đicủathờigian.
Thuộctính
- Enabled: cho phép control thờigianthựcthi.
-Interval: Khoảng thờigiangiữa2 sự kiện.
Phương thức
-Start: khởi động control thờigian.
-Stop: ngưng control thờigian.
Sự kiện
-Tick: Xảyrasau1 khoảng thờigian đượcchỉ trong
Interval
122
TIMER - Thí dụ
Thiếtkếứng dụng cho phép hiểnthịđồng hồ số.
Thuộc tính: Enable = True
Interval=1000
Xử lý sự kiệnTick
Private Sub Timer1_Tick(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
Me.lblTG.Text = CStr(Now) ‘ Now: hàm lấythờigian
End SubBài 4
Mụctiêu
Sử dụng hộp thông điệp
Sự hợplệ củadữ liệunhập
Ứng dụng SDI, MDI
Menu và xử lý sự kiện
Sự liên kếtgiữacácform
Tạomột đốitượng form
Thể hiệnform lênmànhình
Dim [forminstance] as Form
[forminstance] = New [calledform]
[forminstance].Show()
Thí dụ:
Dim NewForm As Form
NewForm = new ImageForm()
NewForm.Show()
Hộpthoại - Dialog
Sử dụng
Các loại
Hiểnthị thông điệp đếnngười dùng
Nhận thông tin từ phía người dùngCác loạihộpthoại
•OpenFileDialog
•PageSetUpDialog
•FontDialog
•ColorDialog
•SaveFileDialog
•PrintPreviewDialog
•PrintDialog
Custom dialog boxes
Common dialog boxes
OpenFileDialog
FontDialog ColorDialogHộp thông điệp - MessageBox [1]
Hộp thông điệp
Đoạnmãthể hiệnhộpthông điệp:
MessageBox.Show(“[Message]”)
Phương thứcShow có12 kiểukhácnhau(được
nạpchồng)
MessageBox (2)
Public Shared DialogResult Show(String, String, MessageBoxButtons, _
MessageBoxIcon)
Public Shared DialogResult Show(String, String, MessageBoxButtons)
Public Shared DialogResult Show(IWin32Window, String, String)
Public Shared DialogResult Show(IWin32Window, String)
Public Shared DialogResult Show(String, String)
Public Shared DialogResult Show(IWin32Window, String String, _
MessageBoxButtons)
Public Shared DialogResult Show(String)
Nạpchồng - Overloads
MessageBox (3)
Public Shared DialogResult Show(String, String, MessageBoxButtons, _
MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions)
Public Shared DialogResult Show(IWin32Window, String, String, _
MessageBoxButtons, MessageBoxIcon, MessageBoxDefaultButton)
Public Shared DialogResult Show(IWin32Window, String, String, String, _
MessageBoxButtons, MessageBoxIcon)
Public Shared DialogResult Show(String, String, MessageBoxButtons, _
MessageBoxIcon, MessageBoxDefaultButton)
Public Shared DialogResult Show(IWin32Window, String, String, _
MessageBoxIcon, MessageBoxDefaultButton, MessageBoxOptions)
Nạpchồng
Sự hợplệ củadữ liệu
Sự hợplệở mứcform
Sự hợplệở mứctrường
Mộtsố sự kiện được dùng:
Enter
Leave
Validating
Validated
Các loạikiểmtra:Thứ tự các sự kiện Sự hợplệ mứctrường
KeyPress
KeyDown
KeyUp
Sự kiện KeyPress
Theo dõi dữ liệunhậpcủangườidùng ở từng byte
Thí dụ:
Private Sub TextBox1_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress
End Sub
Có mộtthamsốđặcbiệtkiểu
System.Windows.Forms.KeyPressEventArgs
Sự kiện KeyDown and KeyUp
Có mộtthamsố kiểu
System.Windows.Forms.KeyEventArgs
Thí dụ:
Private Sub TextBox1_KeyUp(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyUp
Private Sub TextBox1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyDownThuộctính
•Mộtsố thuộctính:
•MaxLength
•PasswordChar
•Readonly
Mộtsố phương thức
For i=0 To TextBox4.Text.Length - 1
If Not(Char.IsNumber(TextBox4.Text,i)) Then
MessageBox.Show("Phone Number must “ & _
be a numeric value")
TextBox1.Focus()
Next
Sự hợplệ mứcform
Kiểmtradữ liệucóhợplệở tấtcả các trường?
Cho phép kích hoạt hay không kích hoạtmột thành phần nào đó.
Thí dụ:
Private Sub Test()
Dim o As Object
For Each o In Me.Controls
If TypeOf o Is System.Windows.Forms.TextBox Then
Dim t As TextBox = CType(o, TextBox)
If t.Text = "" Then
MessageBox.Show("It cannot be empty")
t.Focus()
Return
End If
End If
Next
End Sub
Error Provider Control
Sử dụng để hiểnthị icon lỗikhingườidùngthaotáclỗi
trên một control nào đótrênform.
Thuộctính
- BlinkRate: xác định tốc độ nhấp nháy củaicon lỗi.
- BlinkStyle: xác định cách thứcmàicon nhấp nháy
trên control(AlwaysBlink, BlinkDifferentError, &
NeverBlink).
- Icon: đường dẫnchỉđếnicon lỗi.
Phương thức
- GetError: nhậnvề chuỗi thông báo lỗi.
- SetError: xác lậpchuỗithôngbáolỗitrênmột control
xác định.Xử lý ngoạilệ khi ngườidùngnhậpkhôngphảisố.
Dim N, i As Integer, K As Long = 1
Try
N = Integer.Parse(txtN.Text)
For i = 1 To N
K = K * i
Next
lblKQ.Text = CStr(K)
Catch
err1.SetError(txtN, "Đây phải là giá trị số")
End Try
Error Provider - Thí dụ SDI (1)
New
Document
Ứng dụng SDI
chỉ có mộtcửa
sổ tạimộtthời
điểm
SDI [2]
Không thể mở nhiềuform tạithời điểm
nào đó.
Nếumuốnmở nhiềuform thìtacầntạo
nhiềuthể hiệncủa ứng dụng.
MDI (1)
Nhiềutàiliệu Ứng dụng MDI nhóm
nhiềutàiliệutrongmột
đơnvị duy nhất.
Ứng dụng MDI có thể thao tác với nhiềucửasổMDI (2)
Cửasổ con
Cửasổ cha
Designing an MDI application
IsMdiContainer= true
Thêm form con vào ứng dụng MDI:
Chọn Solution Explorer->Solution Name -> nhấpchuộtphải->
Add Windows Form
Thêm đoạnmã để gọithực thi form con
Đặc điểmcủa ứng dụng MDI (1)
Đặc điểmform cha:
• Hiểnthị khi ứng dụng khởi động
• Là khung chứa cho các cửasổ khác
• Hiểnthị menu của các form con
• Chỉ có duy nhấtmột form cha
• Có thể mở nhiều form con tạimộtthời điểm
Đặc điểmcủa ứng dụng MDI (2)
Form con không thể di chuyểnkhỏivùnghiểnthị của
form cha.
Đóng form cha thì tấtcả các form con đềubịđóng lại
Mở form conCửasổ Activating and Deactivating
Cửasổ con
Deactivate
Cửasổ
con Active
Cửasổ nằm trên cùng là cửasổ Active.
Màu của thanh tiêu đề củacửasổ active giống màu
của thanh tiêu đề củaform cha.
Sắpxếpcửasổ con
Tile
Cascade
Menus (1)
Sub Menu Option Main Menu Option
Menu bar
Menus (2)
Trong hộp
công cụ Trong ứng dụng
MDI khi thiếtkế
Trong hộp
công cụ
Lúc thựcthi ứng
dụngMenu [3]
Menu là mộtloại control trong đóngườidùngcóthể
lựachọn các mục để thựcthitừ mộtdanhsáchcho
trước.
Phân loại
- Menu thả xuống (Drop-Down Menu): là dạng
menu thông dụng nhất.
-Menu bậtra(Pop-Up Menu, ContextMenu):
thường hiểnthị khi ta ấnnútphảichuột.
Dropdown Menu
Tạo menu nhờ vào control MainMenu.
Các bướctạo menu:
- Tạo menu mớivàmenu bar.
-Thêmcácmục menu con vào menu đãcó.
-Sửa đổilạicácthuộctínhcủamenu vàcác
mục menu.
-Xử lý sự kiện Click củacácmục menu con.
Dropdown Menu - Thí dụ Main Menu
MainMenu: hiểnthị 1 menu khi ứng dụng
đượcthực thi. Các menu con củaMainMenugl
Menu.
MenuItem: mụccụ thể của1 Menu xác định.
Thuộctính
-IsParent: True nếumục menu này là cha của
các mục menu con nào đó.
- MenuItems: tậphợpcácmục menu con.
Phương thức
- MergeMenu: ghép các mục menu con của1
menu xác định vào menu hiệnhành.MenuItem
Thuộctính
-Checked: là True nếucódấu 9 trướcmục
menu con.
-Index: vị trí của menu con trong 1 menu xác
định.
-Shortcut: xáclậpphímtắt.
-Parent: tên(Name) của menu cha.
-Text: chuỗihiểnthị trên mụcmenu.
Sự kiện
- Click: Xảy ra khi người dùng Click chọnmục
menu.
Private Sub MenuItem4_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem4.Click
MessageBox.Show("Bạnchọn File/Save", "Thông báo")
End Sub
Private Sub MenuItem5_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem5.Click
End
End Sub
Context Menu
Là control cho phép người dùng truy cậpcácmụctrên
menu nhờ thao tác nhấpchuộtphải.
Sau khi ContextMenu đượctạo ra, chúng sẽđượcgắn
vớimột control khác nhờ vào thuộctínhContextMenu
của control đó.
TD tạo ContextMenu & thiếtlậpthuộc tính ContextMenu
củaForm
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles _
MyBase.Load
Me.ContextMenu = ContextMenu1
End Sub
TạoMenu bằng mã lệnh
Ta có thể thêm hay xóa đimộtmục menu (MenuItem) của1
menu nào đónhờ vào các phương thứcAdd & Remove.
TD: Xử lý sự kiệnLoad củaForm bằng đoạnmãlệnh tạo menu:
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e _
As System.EventArgs) Handles MyBase.Load
Dim myMainMenu As New MainMenu
Dim FileMenu As New MenuItem
Dim NewItem As New MenuItem
Dim OpenItem As New MenuItem
NewItem.Text = "&New"
OpenItem.Text = "&Open..."
FileMenu.Text = "&File"
FileMenu.MenuItems.Add(NewItem)
FileMenu.MenuItems.Add(OpenItem)
myMainMenu.MenuItems.Add(FileMenu)
Me.Menu = myMainMenu
End Sub TD xóa 1 mụcmenu
Dim kq As New DialogResult
kq = MessageBox.Show("Bạnmuốnxóamục New không?", "Xóa", _
MessageBoxButtons.YesNo)
If kq = DialogResult.Yes Then
FileMenu.MenuItems.RemoveAt(0)
End If
Kếtquả thí dụ1
Chương 4:
VB.NET VÀ CƠ SỞ DỮ LIỆU
Nội dung
- Các khái niệm
- Các thành phần truy cập dữ liệu
- ADO.NET
2
Bài 1: Một số khái niệm về cơ
sở dữ liệu
Cơ sở dữ liệu (Database)
Bảng (table) & trường (field)
Khóa
Mối kết hợp (relationship)
3
Cơ sở dữ liệu [1]
Cơ sở dữ liệu là một kho chứa thông tin.
Flat files: tất cả dữ liệu chứa trong 1 tập tin duy nhất. TD:
Bảng tính Excel:
02 LTT Trần Văn Ba 5000 10 (gói) Trà chanh IceTea 03/03/06 1001
01 THĐ NV Cường 10000 10 (hộp) Kem đánh răng P/S 02/03/06 1000
02 LTT Trần Văn Ba 15000 15 (kg) Bột giặt Omo 03/03/06 1001
01 THĐ NV Cường 10000 10 (chai) Dầu gội Clear 02/03/06 1000
01 THĐ NV Cường 15000 5 (kg) Bột giặt Omo 02/03/06 1000
Địa chỉ KH Tên KH Đơn
giá
Số lượng Hàng hóa Ngày đặt Đặt
hàng
4
Bất lợi:
- Lãng phí không gian lưu trữ.
-Cónhiều thông tin trùng.
-Rắc rối trong bảo trì.
Cơ sở dữ liệu quan hệ (relational database): tập hợp các
nhóm thông tin khác nhau gl bảng (table) được kết hợp lại
theo cách thức nào đó.
TD: Trong TD trên cơ sở dữ liệu có thể gồm 3 bảng:
- KhachHang(MaKH, TenKH, DiachiKH)
- HangHoa(MaHang, TenHang, Dongia, Ghichu)
- DatHang(STTDH, MaKH, MaHang, Soluong)
Cơ sở dữ liệu [2]5
Bảng (table): chứa các mẩu tin là các mẩu dữ liệu riêng rẽ
trong phân nhóm dữ liệu.
Mẩu tin (record): chứa các trường (field), mỗi trường thể
hiện một bộ phận dữ liệu của mẩu tin.
TD bảng KhachHang:
Cơ sở dữ liệu [3]
Trường 3 Trường 2 Trường 1
02 LTT Trần Văn Ba KH02 Mẩu tin 2
01 THĐ NV Cường KH01 Mẩu tin 1
Diachi TenKH MaKH
6
Khóa chính (primary key): là một hay nhiều trường mà chúng
xác định duy nhất mỗi mẩu tin trong bảng.
TD Khóa chính bảng KhachHang là MaKH.
HangHoa là MaHang.
DatHang là STTDH, MaKH, MaHang
Khóa ngoại (foreign key): là một hay nhiều trường ở một
bảng nhưng chúng là khóa chính ở một bảng khác.
TD trong bảng DatHang ta có các khóa ngoại là MaKH (là
khóa chính của KhachHang), MaHang (khóa chính của
HangHoa).
Cơ sở dữ liệu [4]
7
Mối kết hợp (relationship): sự liên kết giữa các bảng.
1-1: một mẩu tin trong 1 bảng xác định 1 mẩu tin trong bảng
khác.
1-n: mỗi mẩu tin trong 1 bảng xác định nhiều mẩu tin trong
bảng khác.
TD:
Cơ sở dữ liệu [5]
8
n-n: nhiều mẩu tin trong 1 bảng liên kết với nhiều mẩu tin
trong bảng khác.
Mối kết hợp này cần thêm bảng thứ 3 lưu các quan hệ giữa 2
bảng.
TD: CSDL về
người sử dụng:
Cơ sở dữ liệu [6]9
Toàn vẹn tham chiếu (referential integrity): xác định mỗi
khi dữ liệu trong các bảng bị thay đổi (thêm, sửa, xóa) các
mối kết hợp vẫn không bịảnh hưởng.
- Cascade update: Nếu có sự thay đổi giá trị của 1 khóa, giá
trị của khóa đó ở các bảng khác cũng thay đổi theo.
- Cascade delete: Nếu một mẩu tin bị xóa, tất cả các mẩu tin
có liên quan trong cơ sở dữ liệu bị xóa theo.
Thuận lợi: Không cần viết mã lệnh để cập nhật lại cơ sở dữ
liệu mỗi khi có sự thay đổi trên khóa chính.
Tuy nhiên chúng vẫn mặt hạn chế.
Cơ sở dữ liệu [7]
10
Bài 2: Ngôn ngữ hỏi SQL
Structure Query Language (SQL)
Lựa chọn dữ liệu với câu lệnh Select
Cập nhật dữ liệu với Update
Chèn thêm dữ liệu với Insert
Xóa dữ liệu với Delete
11
Structure Query Language
Ngôn ngữ CSDL chuẩn.
Gồm: ngôn ngữ định nghĩa dữ liệu, ngôn ngữ
thao tác dữ liệu trao đổi, tạo view, cấp quyền…
Thường sử dụng: Select, Update, Insert, Delete.
12
SQL - Select [1]
Lựa chọn dữ liệu theo một số điều kiện nào đó.
Mệnh đề Select
TD: Với CSDL người dùng
-Tìm kiếm tất cả các người dùng
Select UserName From Users
-Nếu muốn tên các người dùng không trùng nhau:
Select Distinct UserName From RoleUser
-Ký tự *: chỉ tất cả các trường
Select * From Users
-Sau Select có thể là một biểu thức
Select RoleID*10, RoleName From Roles13
Mệnh đề Where: lọc & kết nối dữ liệu.
TD:
- Tìm các tên quyền có mã >3
Select RoleName From Roles Where RoleID>3
- Tìm các bộ (người dùng, tên quyền) tương ứng với mã quyền >3
Select UserName, RoleName From Roles, RoleUser
Where RoleUser.RoleID = Roles.RoleID AND
Roles.RoleID > 3
Các phép toán:
- So sánh: >, >=, <, <=, =, <>, BETWEEN…AND
- Logic: AND, NOT, OR
TD: Tìm các tên quyền có mã từ 2 đến 4
Select RoleName From Roles
Where RoleID BETWEEN 2 AND 4
SQL - Select [2]
14
Phép toán LIKE trên chuỗi: đối chiếu mẫu.
-%: ứng với chuỗi con bất kỳ.
-_:ứng với 1 ký tự bất kỳ.
TD: - Tìm các tên quyền có ký tự cuối là e:
Select RoleName From Roles
Where RoleName LIKE “%e”
- Tìm các tên người dùng có ký tự thứ 2 là h
Select UserName From Users
Where UserName LIKE “_h%”
Mệnh đề sắp thứ tự Order By
- ASC: thứ tự tăng.
- DESC: thứ tự giảm.
TD: Lựa chọn các tên quyền có mã >1 và sắp xếp chúng theo thứ
tự tăng.
Select RoleName From Roles
Where RoleID>1 Order By RoleName ASC
SQL - Select [3]
15
Thêm 1 hay nhiều dòng (mẩu tin) vào một bảng đã có.
TD:
- Thêm người dùng nqtoan vào bảng User
Insert Into Users Values(“nqtoan”, ”abc”)
-Ta cóthể chỉ rõ tên trường & giá trị cần xen.
Insert Into Users(Password, UserName)
Values(“abc”, “nqtoan”)
- Thêm cho tất cả người dùng quyền mớicómã là4
Insert Into RoleUser
Select UserName As UserName, 4 As RoleID
From Users
SQL - Insert
16
UpdateThay đổi giá trị các dòng (mẩu tin).
TD:
-Sửa lại mật khẩu của người dùng lhbao là abc
Update Users
Set Password = “abc”
Where UserName = “lhbao”
Delete: Xóa các dòng (mẩu tin) thỏa điều kiện.
TD:
-Xóa tất cả các dòng (mẩu tin) của bảng RoleUser
Delete From RoleUser
-Xóa tất cả các quyền của người dùng lhbao
Delete From RoleUser
Where UserName = “lhbao”
SQL - Update & Delete17
Bài 3: Các thành phần truy
cập dữ liệu
Ứng dụng Client-Server
Các thành phần truy cập dữ liệu
18
Giới thiệu
lưu
trong
Cơ sở dữ liệu
Client
Các kỹ thuật
truy cập dữ liệu
19
Ứng dụng Client-Server
Client Server
Cung cấp dữ liệu
cho Client
PhầnmềmClient
Cơ sở dữ liệu
20
Data Access Components -
Các thành phần truy cập dữ liệu
Database
User Server đang chạy
Database
Database
Yêu cầu dữ liệu
Gởi dữ liệu
Server tắt Phần mềm Client
Yêu cầu dữ liệu
Thông báo lỗi
DAC
(ODBC, OLE DB,
ADO, ADO.net)21
Bài 4: ADO.NET
Giới thiệu về ADO.NET
Các thành phần của ADO.NET
DataBinding
22
ADO.NET
Được giới thiệu với Microsoft .Net Framework
Sử dụng eXtensible Marked Language (XML) để
vận chuyển dữ liệu
23
Kiến trúc ADO.NET
Database
XML
Presentation
Tier
Data Tier
XML
24
Thành phần của ADO.NET
DataSet
.NET data provider: Connection, Command,
DataReader, DataAdapter.25
.NET DATA PROVIDERS
Có thể truy cập, sửa đổi, dữ liệu nhờ đối tượng
Connection & Command.
Đối tượng Connection: thiết lập một nối kết dữ liệu giữa
ứng dụng & CSDL.
System.Data.OleDb System.Data.SqlClient
System.Data System.Data
OLE DB .NET Data Provider SQL .NET Data Provider
26
Đối tượng Connection (1)
Phụ thuộc vào CSDL muốn nối kết.
Gồm 2 loại:
• SqlConnection
• OleDbConnection
Imports
Namespace="System.Data.OleDb"
Imports Namespace="System.Data.
SqlClient"
Imports Namespace="System.Data" Imports Namespace="System.Data"
OLE DB .NET Data Provider SQL .NET Data Provider
27
Đối tượng Connection (2)
sqlcon = New SqlConnection ("server=HoaiBao; uid=sa;
pwd=sa; database=pubs")
adocon=New
OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0; _
Data Source=D:\\pubs.mdb”)
28
Đối tượng Connection (3)
Close
CreateCommand
Open
ConnectionString
DataBase29
Đối tượng Command (1)
Thực thi một câu lệnh (SQL, Stored Procedure,…).
Gồm:
- SQLCommand
- OleDbCommand
Thuộc tính
- Connection: nối kết CSDL.
- CommandType: kiểu Command (Text, Stored Procedure,
Table Direct) được chỉ ra trong CommandText.
Thực thi Command:
- ExecuteNonQuery
- ExecuteScalar
- ExecuteReader
30
Đối tượng Command (2)
Dim sqlcom As New SqlCommand("select * from
employees", sqlcon)
Dim oleCom As New OleDbCommand("select * from
employees”, adocon)
Lấy dữ liệu về
31
Đối tượng Command (3)
Dim inscom As New SqlCommand("insert into employees
values (‘1234',‘Lam',‘H',‘Bao',7,100,0877, '1979-11-
11T00:00:00 ')",sqlcon)
Dim inscom As New OleDbCommand ("insert into
employees values (‘1234',‘Lam',‘H',‘Bao',7,100,0877,
'1979-11-11T00:00:00 ')", adocon)
Thêm dữ liệu vào CSDL
32
Đối tượng Command (4)
Dim mycommand As New SqlCommand("UPDATE employee SET
job_id=11 WHERE fname=‘Bao'", sqlcon)
Dim mycommand As New OleDbCommand("UPDATE employee
SET job_id=11 WHERE fname=‘Bao'", adocon)
Cập nhật dữ liệu33
Đối tượng Command (5)
Dim delcom As New SqlCommand("delete from employee
WHERE fname=‘Bao'", sqlcon)
Dim delcom As New OleDbCommand("delete from employee
WHERE fname=‘Bao'", adocon)
Xóa dữ liệu
34
DATASET (1)
Là đối tượng lưu dữ liệu được truy xuất từ cơ sở dữ liệu.
Mô hình:
Tạo Dataset: tạo đối tượng của lớp Dataset.
TD: ‘ Tạo Dataset có tên là EmpInfor
Dim empDS As New Dataset(“EmpInfor”)
‘ Không cần chỉ tên của Dataset
Dim empDS As New Dataset()
Client Server
Dataset
Gởi Dataset
tới Client
Gởi dữ liệu
tới Dataset
Client sửa
đổi Dataset
Cập nhật Dataset
lên Server
35
Thuộc tính
-Tables: tập các bảng của Dataset.
- Item: một bảng xác định trong Dataset.
Phương thức:
- Add: thêm một bảng.
- RemoveAt: xóa một bảng ở vị trí xác định.
DataTable: là bảng lấy về từ CSDL.
- DataColumn: các cột trong DataTable.
- DataRow: dòng dữ liệu thật sự.
DATASET (2)
36
Typed DataSet
Có thể tạo đối tượng từ lớp Dataset sẵn có
trong dự án.
Cho phép truy cập trực tiếp tên bảng hay tên
cột.
Hiệu quả khi viết mã lệnh.37
UnTyped DataSet
Kế thừa từ lớp Dataset.
Các bảng và cột được truy xuất thông qua các tập
hợp tương ứng; không thể tạo một lớp Dataset
mới nhờ tập tin lược đồ XML.
38
DataAdapter (1)
Điền dữ liệu từ CSDL vào Dataset.
Cập nhật CSDL với dữ liệu trong Dataset
39
DataAdapter (2)
Lấy dữ liệu từ CSDL SelectCommand
Ý nghĩa Thuộc tính
DeleteCommand
UpdateCommand Cập nhật CSDL dựa vào thay đổi trong
Dataset
InsertCommand
Đưa dữ liệu vào DataSet nhờ thực thi câu
truy vấn trong SelectCommand
Fill
Ý nghĩa Phương thức
40
Sử dụng DataAdapter
Nối kết đến CSDL (Connection)
Tạo đối tượng DataAdapter
Chỉ ra câu truy vấn trong thuộc tính
SelectCommand của DataAdapter.
Điền dữ liệu từ DataAdapter vào Dataset41
DATABINDING
Ràng buộc giá trị trong nguồn dữ liệu với điều khiển của
Winform.
Simple Data Binding: 1 giá trị từ dataset ràng buộc với 1 điều
khiển.
TD:
txtSa.DataBindings.Add(“Text”,
ds.Tables(“Employes”), ”Salary”)
Complex DataBinding: một điều khiển ràng buộc toàn bộ
dataset. Chỉ có điều khiển DataGrid & ComboBox hỗ trợ loại
này.
TD:
cboDPName.DataSour

X-Content-Type-Options: nosniff

P3P: CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"

Cache-Control: no-cache

Vary: User-Agent

X-XSS-Protection: 1; mode=block