giáo trình vb.net

175
1 CHUYÊN ĐỀ VỀ 1 NNLT - VISUA L BASIC. NET Mục t iêu - Vận dụng bộ công cụ lập trình Visual Basic.NET để xây dựng ứng dụng (từ đơn giản đến phức tạp). - Có khả năng tìm hiểu sâu hơn các kỹ thuật lập trình Visual Basic.NET nâng cao (hệ thống, mạng…). C án bộ ph ụ t r ách Lâ m Chí N guy ệ n ([email protected])

Upload: hung-pham

Post on 02-Jul-2015

5.107 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Giáo trình vb.net

1

CHUYÊN ĐỀ VỀ 1 NNLT - VISUA L BASIC. NET

Mục t iêu- Vận dụng bộ công cụ lập trình Visual Basic.NET để xây dựng ứng dụng (từ đơn giản đến phức tạp).- Có khả năng tìm hiểu sâu hơn các kỹ thuật lập trình Visual Basic.NET nâng cao (hệ thống, mạng…). Cán bộ ph ụ t rách Lâ m Chí Nguy ện

([email protected])

Page 2: Giáo trình vb.net

2

CHUYÊN ĐỀ VỀ 1 NNLT - VISUA L BASIC. NET

Nội dung chủ y ếu- Giới thiệu về .NET Framework.

- Giao diện người dùng.- Các kiểu dữ liệu của Visual Basic.NET.- Lập trình hướng đối tượng.- Truy cập cơ sở dữ liệu với ADO.NET.- Phân phối ứng dụng.

Page 3: Giáo trình vb.net

3

CHUYÊN ĐỀ VỀ 1 NNLT - VISUA L BASIC. NET

Kiến thức liên quanKỹ năng sử dụng máy tính (Windows), Lập

trình căn bản, cơ sở dữ liệu.

Kỹ năng sử dụng máy tính Sử dụng HĐH Windows.

Lập trình căn bản Có được kỹ năng lập trình là một lợi thế.

Cơ sở dữ liệu Câu lệnh truy vấn dữ liệu

Page 4: Giáo trình vb.net

4

Tài l iệu t ha m k hảoDev elopin g Win dow s-B ase d App lic ation s wit h Visu al Ba sic .N ET an d Vis ua l C Sh arp .NE T; 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.Programming and Problem Solving with Visual Basic .NET; Nell Dale, Michael McMillan, Chip Weems and Mark Headington; Jones and Bartlett Publishers; 2003.

CHUYÊN ĐỀ VỀ 1 NNLT - VISUA L BASIC. NET

Page 5: Giáo trình vb.net

5

Chương 1: Giới thi ệu về .N et Fr am ew or k

.NET Framework & Common Language Runtime. Ngôn ngữ Visual Basic.Net Khai báo lớp Tạo đối tượng từ lớp

Page 6: Giáo trình vb.net

6

Bài 1: Giới thi ệu về .NET & VIS UAL BASI C.NET

Khái niệm và các thành phần của .Net Framework.Cấu trúc 1 ứng dụng .NETGiới thiệu về Visual Basic.NETChương trình Visual Basic.Net đầu tiên.

Page 7: Giáo trình vb.net

7

.NE T F RAM EW ORK

Là một môi trường an toàn cho việc quản lý vấn đề phát triển và thực thi ứng dụng.Gồm 2 phần:- Common Language Runtime (CLR): quản lý việc thực thi mã lệnh.- Thư viện lớp .NET Framework: tập hợp các kiểu của CLR.

Page 8: Giáo trình vb.net

8

CÁC T HÀNH PH ẦN CỦ A .NET FRAMEW ORK

Page 9: Giáo trình vb.net

9

NGÔN NGỮ & .N ET FRA ME WORK

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ực thi

Common Language Specification (CLS)

Page 10: Giáo trình vb.net

10

CẤU TR ÚC CỦA 1 ỨN G DỤN G .NET

Assembly: tập hợp mã lệnh, tài nguyên và dữ liệu. Assembly manifest: chứa đựng thông tin về những gì được mô tả trong assembly:- Định danh.- Danh sách các kiểu- Danh sách các assemblies khác.- Danh sách quyền truy cập…

Page 11: Giáo trình vb.net

11

CẤU TR ÚC ASSE MB LY

Page 12: Giáo trình vb.net

12

VISU AL B ASIC. NET

Một phần của Visual Studio.NETThuần hướng đối tượng.Ngôn ngữ duy nhất trong VB.NET hỗ trợ ràng buộc trễ.Ngôn ngữ duy nhất trong VB.NET hỗ trợ chế độ dịch nền.Không phân biệt chữ hoa và chữ thường.

Page 13: Giáo trình vb.net

13

ỨN G DỤN G .NET ĐẦ U TIÊN

Dịch: vbc <Tên tập tin>Sau khi dịch xong, ta nhận được tập tin thực thi (exe). Thực hiện tập tin này.TD: Tập tin HelloWorld.vb:

Public Module HelloPublic Sub Main()

System.Console.WriteLine("hello world")End SubEnd ModuleDịch t ập t in: v bc H elloWo rld.vbThực t hi t ập t in H elloWorld.e xe

Page 14: Giáo trình vb.net

14

Bài 2: Ngôn ngữ lập trì nh VIS UAL BASIC. NET

Kiểu dữ liệu, biến & hằng trong VB.NET.Câu lệnh đơn trong VB.NETCác lệnh có cấu trúc của VB.NET

Page 15: Giáo trình vb.net

15

KIỂU DỮ LIỆU & Đ ỊNH DANH

Kiểu giá 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 để đặt cho biến, hằng, kiểu, lớp, phương thức… theo quy tắc:

- Bắt đầu là 1 ký tự từ A-Z.- Theo sau là các ký tự, hoặc ký số (0-9) hay dấu gạch

dưới.- Tên có độ dài tối đa là 40.- Không phân biệt chữ hoa và chữ thường.

TD tên: TH_K30, Dt_k31

Page 16: Giáo trình vb.net

16

BIẾ N ( VA RIABLE )

Là đại lượng dùng để chứa dữ liệu trong quá trình tính toán.Cú pháp khai báo biến:

Di m| Pri vate|P ubli c|F ri end|Pro te cted _

<Tên biến> As <Kiểu> [= <Biểu thức>]

Page 17: Giáo trình vb.net

17

BIẾ N ( VA RIABLE )

Biến cục bộ: là biến được khai báo trong một khối lệnh (Dim)TD: Tìm g iá tr ị ng hịch đảo của x

If x <> 0 ThenDim rec As Integerrec = 1/x

End IfMsgBox CStr(rec)

Page 18: Giáo trình vb.net

18

BIẾ N ( VA RIABLE )

Biến cấp module: là biến được khai báo trong phần khai báo toàn cục của một module (Public, Friend, Private).Priv ate : là biến chỉ có hiệu lực trong module đó (mặc định).Friend : là biến chỉ có hiệu lực trong dự án đó.Publi c: biến có hiệu lực không chỉ trong dự án nó được khai báo mà còn trong các dự án khác có tham chiếu đến dự án này.

Page 19: Giáo trình vb.net

19

BIẾ N ( VA RIABLE )

Giả sử Project1, ta có Module sau:Public Module Module1

Public iModulePublic As IntegerFriend iModuleFriend As Integer

End ModuleNế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

Page 20: Giáo trình vb.net

20

TH Í DỤ VỀ KH AI BÁO BIẾN

Dim x As Integer

Khi muốn khai báo nhiều biến cùng kiểu, sử dụng dấu phẩy (,) phân cách: Dim x As Long, i, j, k As Integer, _

s As String

Vừa khai báo vừa khởi tạo giá trị:Dim x As Integer = 5Dim x As Integer = 6, _

y As Integer = 9

Page 21: Giáo trình vb.net

21

HẰN G (CON STA NT)

Là đại lượng có giá trị không đổi trong quá trình tính toán.

Priva te|Publi c|F ri end|Pr ot ected Const _ <Tên hằng> [As <Kiểu>]= <Biểu thức>TD :

Public Const Pi = 3.14Private Const g As Single = 9.8

Page 22: Giáo trình vb.net

22

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ặp dấu ngoặc đơn để tăng độ ưu tiên.

Page 23: Giáo trình vb.net

23

CHU YỂN ĐỔI KIỂ U

Tùy chọn Op tion Str ict: xác định cách thức trình biên dịch xác định sự tương thích kiểu trong biểu thức (On : BT phải tương thích kiểu, Off: VB tự động chuyển đổi kiểu).TD : Dim A as Long=6

Dim b As Integer=Asẽ có lỗi xuất hiện nếu đặt Option Str ict O nMột số hàm chuyển đổi kiểu: CBool, CChar, CDate, CDbl, CDec, CInt, CLng, CObj, CSng, CStr.

Page 24: Giáo trình vb.net

24

CÂU LỆN H OPT ION

Tác động đến quá trình thực thi của trình biên dịch.Optio n Com pare [Binar y | Tex t] : cách thức so sánh chuỗi.Optio n Ex plici t [On | Off] : xác định các biến sử dụng bắt buộc phải khai báo hay không?Optio n Strict [On | Off ]: tự động chuyển đổi kiểu trong biểu thức.

Page 25: Giáo trình vb.net

25

CÂU LỆN H GÁNCú pháp: <Tên b iế n> = < Biể u th ức>TD: Tính diện tích hình tròn biết bán kính là 5.

Imports SystemPublic 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ện tích Console.WriteLine("Dien tich " & _

CStr(S))End Sub

End Module

Page 26: Giáo trình vb.net

26

CÂU LỆN H IFIf expression Then statementsEnd If

If expression Thenstatements

Else

statementsEnd If

If expression Thenstatements

ElseI f expression Thenstatements

ElseI f expression Thenstatements

[Elsestatements]

End If

Có 3 dạng chính :- If đơn giản.- If có phần Else- If và El se If nhiều lần.

Page 27: Giáo trình vb.net

27

TH Í DỤ VỀ IF

If (TheColorYouLike = vbRed) Then System.Console.WriteLine("You are a lucky person“)

Else If (TheColorYouLike = vbGreen) Then System.Console.WriteLine("You are a hopeful person“)

Else If (TheColorYouLike = vbBlue) Then System.Console.WriteLine ("You are a brave person")

Else If (TheColorYouLike = vbMagenta) Th en System.Console.WriteLine("You are a sad person”)

Else System.Console.WriteLine("You are an average person”)End If

Page 28: Giáo trình vb.net

28

CÂU LỆN H SE LEC T CASE

Sele ct Ca se <biểu thức kiểm tra>Case <Danh sách kết quả biểu thức 1>

[Khối lệnh 1]Case <Danh sách kết quả biểu thức 2>

[Khối lệnh 2]……

[Ca se E lse[Khối lệnh n]]

End S electTừ khóa Is : So sán h <biểu t hức kiể m t ra> với 1 giá trịTừ khóa T o: Xác lập m iề n giá trị củ a <biể u t hức kiểm t ra>

Page 29: Giáo trình vb.net

29

TH Í DỤ SELE CT CA SE

Sele ct Ca se TuoiCas e Is <18 System.Console.WriteLine(“Vi thanh nien”)Cas e 18 To 30 System.Console.WriteLine(“Ban da truong thanh, lo lap than di”)Cas e 31 To 60 System.Console.WriteLine(“Ban dang o lua tuoi trung nien”)Cas e Else System.Console.WriteLine(“Ban da lon tuoi, nghi huu duoc roi!”)End S ele ct

Lưu ý : Trong thí dụ trên, kh ôn g th ể vi ết Case Tuoi<18

Page 30: Giáo trình vb.net

30

VÒN G LẶP D O… LO OP Do W hile <Expression>

<Statements> LoopThực thi Stam en ts t ron g k hi Exp re ssi on đún g

Do Unt il <Expression>

<Statements> LoopThực thi Stame nts cho đế n khi Exp ress ionđú ng th ì d ừng lại

TD : Tìm USLN của 2 số a & b

Do Wh il e (a Mod b <>0) r = a Mod b a = b b = rLoopUCLN = b

TD : Tìm USLN của 2 số a & b

Do Un til (a Mod b=0) r = a Mod b a =b b= rLoo pUCLN = b

Page 31: Giáo trình vb.net

31

VÒN G LẶP F OR

Lặp xác định chính xác số lần lặp.For variable = expression1 To expression2 [Step expression ]

StatementsNex t [ variable_list ]

TD: Tính n!Di m i As Int eger, K As Lon g = 1For i = 1 To n

K = K * iNext

Page 32: Giáo trình vb.net

32

VÒN G LẶP F OR EA CH

Lặp qua một tập hợp các giá trị.For Each variable In expression

StatementsNex t [ variable ]

TD: Dùng For Each đi qua toàn bộ các phần tử của 1 mảng.Dim a( ) As I nteg er = {1, 2, 3, 4, 5}Dim b As In tege rFor Each b In a

System.Console.WriteLine(b)Next

Page 33: Giáo trình vb.net

33

Bài 3: T hư viện lớp cơ sở .NET

- Mô tả về thư viện lớp cơ 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ị.

Page 34: Giáo trình vb.net

34

KHÔNG G IAN T ÊN (NAMES PAC E)

Các thư viện lớp được tổ chức trong không gian tên; đây là một nhóm các lớp có liên quan với nhau.TD: System.Windows.Forms là kgt chứa các lớp tạo nên cửa sổ và các thành phần trên cửa sổ của trình ứng dụng.Kgt của .NET Framework được tổ chức phân cấp với gốc là kgt System.Một số 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…

Page 35: Giáo trình vb.net

35

KHAI BÁO B IẾN KIỂU T HAM C HIẾU

Gồm 2 bước: khai báo và khởi tạo đối tượngTD : Khai báo biến đối tượng thuộc lớp Form trong System.Windows.FormsDim f As System.Windows.Forms.FormSet f = Ne w System.Windows.Forms.Form()

Page 36: Giáo trình vb.net

36

CÂU LỆN H IMPOR T

Dùng để tham chiếu đến namespace nào đó.Đặt ở đầu module chương trình.Làm viết gọn trong việc truy xuất đến 1 lớp của namespace.TD: Giả sử đầu module nào đó ta viết:

Imp ort System.Windows.Formsta chỉ cần khai báo biến đối tượng Form trong module đó

Dim f As Formf = New Form()

Page 37: Giáo trình vb.net

37

Bài 4: LỚP

Nội dung chí nh :

Tạo 1 lớp mới.Tạo một thể hiện (đối tượng) của 1 lớp.

Page 38: Giáo trình vb.net

38

KH ÁI NIỆM LỚ P

Những thuộc t ính và hà nh độn g chu ng của 1 thực th ể được nhóm lại để tạo nên 1 đơn vị duy nhất là lớp.TD: Lớp Con người có các thuộc tính và hành động sau:

- Tên- Chiều cao- Màu tóc.- Nói năng- Viết….

Những thuộc tính và hành động chung gọi là thành viên (member)

Page 39: Giáo trình vb.net

39

KH ÁI NIỆM ĐỐI TƯỢ NG

Một đối tượng là một trường hợp cụ thể của một lớp.TD: Đối tượng 1 con người thực tế của lớp Con người:

- Tên: Đan Tú- Tuổi: 29- Trọng lượng: 46 kgHành động :- Đi- Nói- Suy nghĩ

Page 40: Giáo trình vb.net

40

TẠ O MỘT LỚP MỚI

Sử dụng từ khóa ClassClass <Tên lớp>

<Các thành viên của lớp>End Cla ssTD: Khai báo lớp PersonClass Person

Pub lic Name As S trin gPub lic Age As In tegerPub lic Weight As S in gle

End Cla ss

Page 41: Giáo trình vb.net

41

TẠ O ĐỐI TƯỢNG TỪ LỚP

Việc tạo 1 đối tượng chính là khai báo v à khởi t ạo biến đối tượng từ lớp.TD : Tạo đối tượng p thuộc lớp Person

Dim p As Personp = Ne w Person()

Page 42: Giáo trình vb.net

42

PH ƯƠ NG TH ỨC (METHOD )

Các hành động của lớp được thể hiện qua phương thức (chương trình con).Trong VB.NET, phương thức có 2 loại: hàm (Function) và thủ tục (Sub).Khai báo hàm:

[Pub lic | Pr ivat e | F riend | P rot ect ] Fun ct ion _ <Tên hàm>(<Khai báo các tham số>) _

As <Kiểu trả về><Các khai báo và câu lệnh định nghĩa hàm>

End F un ct ion<Khai báo các tham số>: giống như khai báo biến.Lời gọi hàm thực thi là 1 biểu thức:

<Tên hàm>(Danh sách tham số thực tế)

Page 43: Giáo trình vb.net

43

PH ƯƠ NG THỨ C (MET HOD )

Khai báo thủ tục:[Publi c | P riv ate | Fr iend | P rot ect ] Sub _

<Tên thủ tục> (<Khai báo các tham số>)<Các khai báo và câu lệnh định nghĩa hàm>

End S ubGọi thực thi thủ tục

<Tên thủ tục> (<Danh sách tham số thực tế>)TD:Public Sub MySub()

MessageBox.Show(“Thi du ve Sub")End SubFunction Add(ByVal first As Integer, ByVal second As _

Integer) As IntegerAdd = first + second

End Function

Page 44: Giáo trình vb.net

44

TRU YỀN THA M S Ố C HO P HƯƠNG T HỨC

2 cách truyền tham số:Truyền theo giá trị: mặc định hay từ khóa ByVal .Truyền theo địa chỉ: từ khóa By Re f.

Page 45: Giáo trình vb.net

45

TH Í D Ụ TRU YỀN THA M SỐ

Public Sub Demo1()Dim x, y As Integerx = 15y = 20' Gọi phương thức Demo2Demo2(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 + p2p2 = p2 + p1

End Sub

Page 46: Giáo trình vb.net

46

PH ƯƠ NG THỨ C XÂY DỰ NG

Là phương thức được gọi thực hiện đầu tiên mỗi khi 1 đối tượng của 1 lớp được tạo ra.Trong VB.NET, phương thức xây dựng luôn là Sub New()TD:Class Person

Pub lic Name As S trin gPub lic Age As In tegerPub lic Weight As Sin glePub lic S ub New() ‘ P hươ ng t hức x ây d ựn g

Na me =“”Age = 0Weigh t = 0

End S ubEnd Cla ss

Page 47: Giáo trình vb.net

47

PH ƯƠ NG THỨ C HỦY

Là phương thức được gọi thực hiện cuối cùng khi đối tượng bị thu hồi.Phương thức này có nhiệm vụ giải phóng tài nguyên được dùng cho đối tượng.Trong VB.NET, phương thức này phải là Overrides Sub Finalize()

TD :Class Person

…Protect ed Overrides Sub Finalize()

‘ Thu hồi các thuộc tínhName = “”

End SubEnd Cla ss

Page 48: Giáo trình vb.net

48

Chương 2: Giao diệ n ngườ i dùng (Us er In terfa ce)

Tạo giao diện người dùng. Lập trình hướng sự kiện (Event Programming). Sử dụng cửa sổ (biểu mẫu, Form). Sử dụng các điều khiển (Controls) khác để thiết kế giao diện.

Page 49: Giáo trình vb.net

49

Bài 1: Lập trì nh sự ki ện (Eve nt Pr ogr am ming)

Các tập tin của 1 ứng dụng VB.NET. Sự kiện & lập trình hướng sự kiện

Page 50: Giáo trình vb.net

50

CÁC TẬ P TIN CỦA 1 ỨNG D ỤNG WINDOW S F ORM

Ứng dụng thiết kế & lập trình được quản lý trong VB.NET bằng Solution. 1 Solution có thể chứa nhiều dự án (Project). Các tập tin khi tạo 1 ứng dụng VB.NET:

*.sln Tập tin Solution (văn bản)

*.vb Tập tin chứa định nghĩa về form & mã lệnh bên trong đó

*.resx Tập tin tài nguyên

*.vbproj Tập tin dự án

… Các tập tin khác

Page 51: Giáo trình vb.net

51

TẠ O ỨN G DỤ NG WINDOW S F OR M

Page 52: Giáo trình vb.net

52

Page 53: Giáo trình vb.net

53

Page 54: Giáo trình vb.net

54

LẬ P TR ÌNH SỰ KIỆN (EVENT PR OGRAM MIN G)

Sự kiện (event): là hành động của người dùng tác động vào ứng dụng đang thực thi.TD : Nhấn phím bất kỳ trên bàn phím.

Nhấp chuột. Khả năng đáp ứng lại sự kiện của ứng dụng phụ thuộc người lập trình. Người lập trình phải viết đoạn mã lệnh, đoạn lệnh này sẽ thực thi khi sự kiện tương ứng xảy ra.TD: Máy tính Calculator, trình vẽ Paint.

Page 55: Giáo trình vb.net

55

Mã lệnh cho sự kiện Click của Ghi đĩa

……………………………………Mã lệnh cho sự kiện Click của In giấy

……………………………………

……………………………………

Vấn đề gì xảy ra nếu:

- Người dùng không tác động gì vào ứng dụng?

- Người dùng nhập dữ liệu vào các ô nhập?

- Người dùng nhấp chọn Ghi đĩa ?

- Người dùng nhấp chọn In giấy ?

Page 56: Giáo trình vb.net

56

Bài 2: Cửa sổ (Biểu mẫu, For m)

Khái niệm biểu mẫu. Thêm biểu mẫu vào ứng dụng. Thiết lập startup form & vị trí form lúc startup. Các thuộc tính, phương thức, sự kiện của biểu mẫu.

Page 57: Giáo trình vb.net

57

CỬA SỔ (BIỂ U MẪU , FORM )

Là cửa sổ được lập trình để hiển thị dữ liệu & nhận thông tin phía người dùng.Thêm biểu mẫu vào dự án (khi thiết kế):- Trên mục menu Project, chọn Add Windows Form. Hộp thoại Add New Item bật ra.- Chọn Windows Form, nhấp Open.Thêm biểu mẫu bằng mã lệnh: Khai báo và khởi tạo đối tượng biểu mẫu.TD : Dim f As DialogForm

f = New DialogForm()

Page 58: Giáo trình vb.net

58

BIỂ U MẪU TH ỪA K Ế (IN HER ITED FORM)

Là biểu mẫu được tạo ra và kế thừa các thuộc tính, phương thức, sự kiện của biểu mẫu cha.Thêm biểu mẫu thừa kế vào ứng dụng (bằng mã lệnh):- Thêm 1 biểu mẫu vào ứng dụng.- Cho biểu mẫu này thừa kế 1 biểu mẫu cha nào đó bằng cách sử dụng từ khóa In heri ts trong khai báo lớp.TD: Tạo biểu mẫu myForm thừa kế từ biểu mẫu MainForm:

Public Class myFormInherits MainForm‘ Cài đặt của lớp myForm

End Class

Page 59: Giáo trình vb.net

59

BIỂ U MẪU - TH UỘC TÍN H

Thuộc tính: đặc tính tạo nên vẻ bề ngoài của điều khiển.- BackColor: màu nền.- ForeColor: màu chữ.- Text: Tiêu đề biểu mẫu.- Font: Font chữ của biểu mẫu.…………….. Ta có thể thiết lập các thuộc tính này bằng mã lệnh hay nhờ vào cửa sổ thuộc tính.TD : Me.BackColor = System.Drawing.Color.Red

Page 60: Giáo trình vb.net

60

TH IẾT LẬP T HU ỘC T ÍNH BẰNG CỬ A SỔ TH UỘC TÍN H

Page 61: Giáo trình vb.net

61

BIỂ U MẪU – 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 được kích hoạt (active) Form.Hide : ẩn form đi. Form.Close : đóng lại form và giải phóng tài nguyên.TD:

Dim myForm As New DialogForm()myForm.Show() ‘ Thể hiện Form trạng thái bình thườngmyForm.ShowDialog() ‘ Thể hiện Form dạng DialogmyForm.Activate() myForm.Hide() myForm.Close()

Page 62: Giáo trình vb.net

62

BIỂU MẪ U - SỰ KI ỆN (EVEN T)

Tạo đoạn mã xử lý sự kiện trong VB.NET:

Page 63: Giáo trình vb.net

63

BIỂU MẪ U - SỰ KI ỆN (EVEN T)

Load : Xảy ra khi thể hiện đầu tiên của Form được Load lên màn hình. Activated : Xảy ra khi Form được kích hoạt. Deactivated: Xảy ra khi Form mất kích hoạt. VisibleChanged : Xảy ra khi Form có thay đổi trạng thái (ẩn/hiện). Closing: Xảy ra khi Form đang trong quá trình đóng lại. Closed : Xảy ra sau sự kiện Closing.

Lưu ý: - Sự kiện Load được sử dụng để khởi tạo giá trị của các thành phần trong Form.- Sự kiện Closing & Closed thường được sử dụng để thu hồi tài nguyên được cấp phát cho Form.

Page 64: Giáo trình vb.net

64

TH Í DỤ XỬ LÝ SỰ KIỆN CỦ A FORM

Giả sử ta muốn ngăn thao tác đóng Form của người dùng:Sự kiện Form_Closing(), ta thiết lập:

CancelEventArgs.Cancel = True Priv ate Sub myForm_Closing(By Val sender As Object, _

ByVa l e As System.ComponentModel.CancelEventArgs) _ Ha nd le s MyBase.Closing

e.Cancel = True En d Sub

Page 65: Giáo trình vb.net

65

Bài 3: Cá c điều khi ển trong VB.NET

Khái niệm điều khiển. Một số thao tác với các điều khiển khi thiết kế ứng dụng. Một số điều khiển thường sử dụng.

Page 66: Giáo trình vb.net

66

ĐIỀ U KHIỂN (CON TR OL)

Điều khiển: Các thành phần có sẵn để tạo giao diện tương tác với người dùng. Một số điều khiển: Label, TextBox, Button, ListBox, ComboBox, OptionButton, CheckBox, PictureBox…

Page 67: Giáo trình vb.net

67

ĐIỀ U KHIỂN NHÃN - LAB EL

Dùng để hiển thị dữ liệu cho người dùng.Thuộc tính:- Name: Tên của Label- Text: Chuỗi hiển thị trên Label.- BorderStyle: Kiểu viền của điều khiển Label (None,FixedSingle, Fixed3D)- Image: hình ảnh của Label

TD: Thay đổi Text của Labelcó Name là lblTest1 thành ‘None’:

lblTest1.Text = “None”

Page 68: Giáo trình vb.net

68

ĐIỀ U KHIỂN Ô NHẬP LI ỆU - T EXT BOX

Dùng để nhận/hiển thị dữ liệu về phía người dùng.Thuộc tính:- Nam e: Tên của ô nhập liệu TextBox.- Text: Chuỗi hiển thị trên ô nhập liệu TextBox.- Mult iline : TextBox có nhận nhiều dòng văn bản hay không? (Mặc định giá trị này là False ).- Cha ract erCh as ing : tự động chuyển đổi dữ liệu nhập của TextBox thành dạng tương ứng (Normal, Upper, Lower).- Pass wordCh ar : Ký tự hiển thị thay thế khi nhập.- Font : Font chữ của TextBox

Page 69: Giáo trình vb.net

69

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ểm chứng ký tự người dùng nhập từ bàn phím người ta sử dụng 1 số hàm Char.IsDigit, Char.IsLetter, Char.IsLetterOrDigit, Char.IsPunctuation , Char.IsLower , Char.IsUpper.

TD: Sự kiện KeyPressPrivate Sub TextBox1_KeyPress (ByVal sender As Object, ByVal e

As _System.Windows.Forms.KeyPressEventArgs) Handles _

TextBox1.KeyPressIf Char.IsDigit(e.KeyChar) = True Then

MessageBox.Show("You pressed a number key")End If

End Sub

ĐIỀ U KHIỂN Ô NHẬP LI ỆU - T EXT BOX

Page 70: Giáo trình vb.net

70

Sự k iệ n Valid at ing :- Xảy ra trước khi TextBox mất kích hoạt, dùng để kiểm tra dữ liệu nhập có hợp lệ hay không?- Chỉ thực hiện khi người lập trình thiết lập thuộc tí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 TextBoxIf TextBox1.Text = "" Then

' Bắt buộc TextBox phải nhập lại, TextBox phải được kích hoạt

e.Cancel = TrueEnd If

End Sub

ĐIỀ U KHIỂN Ô NHẬP LI ỆU - T EXT BOX

Page 71: Giáo trình vb.net

71

ĐIỀ U KHIỂN NÚT NHẤN - 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ên của Button.- Text: Chuỗi hiển thị trên Button.- Image: Hình ảnh trên Button.- FlatStyle: Hình dạng của Button (Flat, Popup, Standard, and System.)- Font: Xác lập Font chữ cho Button.

Page 72: Giáo trình vb.net

72

Sự kiện- Click: Xảy ra khi người dùng nhấp chuột vào Button.TD: Tính N! với N nhập từ bản phím.

ĐIỀ U KHIỂN NÚT NHẤN - BUTTON

Sự kiện Button_Click()Pr iv at e Sub btnTinh_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Hand les btnTinh.Click

Dim N, i As Int eg er , K As Lo ng = 1

N = CInt(txtN.Text)

For i = 1 To N

K = K * i

Nex t

lblKQ.Text = CStr(K)

End Sub

Page 73: Giáo trình vb.net

73

ĐIỀ U KHIỂN DAN H SÁC H L ỰA CHỌN - LISTB OX ES

Sử dụng để hiển thị một danh sách cho người dùng lựa chọn. WinForms hỗ trợ 2 loại list box:- ListBox

- CheckedListBox

Sự khác biệt chính là những phần tử của CheckedListBox được hiển thị có dấu check trước đó.

Page 74: Giáo trình vb.net

74

ĐIỀ U KHIỂN DAN H SÁC H L ỰA CHỌN - LISTB OX

Thuộc tín h- Items: tập các phần tử trong ListBox.- SelectedIndex: xác định chỉ số của mục đang hiện thời được chọn trong ListBox, phần tử đầu tiên có chỉ số 0.- SelectedItems: tập các mục đang được chọn.- SelectedValue: giá trị của mục đang được chọn.- Text: chuỗi trên mục được chọn.Phư ơng t hức- ClearSelected: xóa hết các lựa chọn trên ListBox.- FindString: tìm mục đầu tiên trong danh sách mà phần tử đó có giá trị bắt đầu là một chuỗi cho trước.

Page 75: Giáo trình vb.net

75

ĐIỀ U KHIỂN DAN H SÁC H L ỰA CHỌN - LISTB OX

Sự k iện- SelectedIndexChanged: xảy ra khi giá trị của thuộc tính SelectedIndex thay đổi.- SelectedValueChanged: xảy ra khi giá trị của thuộc tính SelectedValue thay đổi.TD: Sử dụng thuộc tính đối tượng Items để thêm các mục vào ListBox. Xử lý sự kiện Load của Form để viết mã lệnh xử lý.

Page 76: Giáo trình vb.net

76

ĐIỀ U KHIỂN DAN H SÁC H L ỰA CHỌN - LISTB OX

Pri vat e Sub myForm_Load(ByVal sender As _ System.Object, ByVal e As System.EventArgs) _

Handles MyBase.LoadMe.lstTen.Items.Add("Nguyễn Văn Cườ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 S ubNgoài ra thuộc tính đối tượng Items còn có một số thuộc tính & phương thức khác: Count, Clear, Insert, RemoveAt, Item…

Page 77: Giáo trình vb.net

77

ĐIỀU KHIỂN DANH SÁC H LỰ A C HỌ N - CH ECK ED LIST BO X

CheckedListBox cũng hỗ trợ các thuộc tính, phương thức, sự kiện giống như ListBox; bên cạnh đó điều khiển này còn có những đặc điểm riêng:

Thu ộc t ính- CheckedIndies: tập các chỉ số của các phần tử được lựa

chọn (checked).- CheckedItems: tập hợp các phần tử được chọn (checked).TD: Cho hình bên, ta có:- CheckedIndies={1,2}- CheckedItems={Lâm Quang Hà,

Trần Trung Trực}

Page 78: Giáo trình vb.net

78

ĐIỀU KHIỂN DANH SÁC H LỰ A C HỌ N - CH ECK ED LIST BO X

Phương t hức- SetItemChecked: thiết lập mục có chỉ số xác định được chọn (checked).- SetItemCheckState: xác lập trạng thái checked của 1 mục xác định.TD: Sử dụng phương thức SetItemCheckState

Sự ki ện Cli ck củ a Button Trạn g th ái

Me.lstNuoc.SetItemCheckState(1, _

CheckState.Checked) Me.lstNuoc.SetItemCheckState(2, _

CheckState.Indeterminate) Me.lstNuoc.SetItemCheckState(3, _

CheckState.Unchecked)

Page 79: Giáo trình vb.net

79

ĐIỀ U KHIỂN HỘP DA NH SÁ CH - COMBOB OX

Là điều khiển kết hợp giữa 2 điều khiển TextBox & ListBox. Điều khiển này hỗ trợ các tính năng như ListBox; tuy nhiên chúng vẫn có phần mở rộng so với ListBox.Thu ộc tính- DropDownStyle: kiểu của ComboBox, gồm có Simple, DropDownList & DropDown.

Simple DropDown DropDownList

Page 80: Giáo trình vb.net

80

ĐIỀU KH IỂN LI ST VIE W

Cho phép hiển thị một danh sách các phần tử ở dạng thức đặc biệt. ListView có 4 kiểu sau:- Text only: mặc định.- Text with small icon.- Text with large icon.- Detail view: các phần tử hiển thị nhiều cột.ListView kế thừa các tính năng của CheckedListBox.Thuộc tính- CheckBoxes: mỗi phần tử trong ds có 1 checkbox đứng trước.- Items: tập các phần tử trong ds.- MultiSelect: ds có nhiều lựa chọn không?

Page 81: Giáo trình vb.net

81

LIS TVIEW - THÍ DỤ

Page 82: Giáo trình vb.net

82

LIS TVIEW - THÍ DỤ

Dim lsvTen As N ew ListViewlsvTen.Width = 300lsvTen.Height = 200' Hiển thị chi tiếtlsvTen.View = View.Details' Sửa giá trị của TextlsvTen.LabelEdit = True

lsvTen.FullRowSelect = True' Hiển thị lướilsvTen.GridLines = True

Dim item1 As Ne w ListViewItem("Nguyễn Văn An", 0)item1.SubItems.Add("1")item1.SubItems.Add("2")item1.SubItems.Add("3")

Page 83: Giáo trình vb.net

83

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 Ne w ListViewItem("Huỳnh Văn Hảo", 0)item3.SubItems.Add("7")item3.SubItems.Add("8")item3.SubItems.Add("9")' Tạo các cột cho các mụclsvTen.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êm các mục vào ListViewlsvTen.Items.AddRange(New ListViewItem() _

{item1, item2, item3})

Page 84: Giáo trình vb.net

84

ĐIỀ U KHIỂN TRE EV IEW

Cho phép hiển thị dữ liệu ở dạng phân cấp. TreeView hỗ trợ hầu hết các thuộc tính, phương thức & sự kiện của ListView. Thuộ c t ính- ImageList: ds các ảnh được hiển thị ở mỗi nút.- Nodes: ds các nút.- SeletedNode: nút hiện thời được lựa chọn. Phương th ức- GetNodeAt: truy xuất 1 nút ở vị trí xác định trong TreeView.- GetNodeCount: tổng số nút. Sự k iện- BeforeSelect, AfterSelect: xảy ra trước/sau khi 1 nút được chọn.- BeforeCollapse, AfterCollapse: xảy ra trước/sau khi thu hẹp 1 nút.- BeforeExpand, AfterExpand: xảy ra trước/sau khi 1 mở rộng 1 nút.

Page 85: Giáo trình vb.net

85

ĐIỀU KHI ỂN TR EEVI EW - THÍ DỤ

Hiển thị 10 khách hàng, mỗi khách hàng có 5 đơn đặt hàng. Thiết kế các lớp Khách hàng & Đặt hàng. Tạo TreeView như hình

Page 86: Giáo trình vb.net

86

Public Cla ss CustomerPublic CustomerName As St ringPublic CustomerOrder As _ Ar rayListPublic Sub N ew(ByVal Name _

As St ring )CustomerName = NameCustomerOrder = New _

Ar rayList (0)End Sub

End Cla ss

Public Cla ss Orders Public OrderID As Stri ng Public Sub New(ByV al _ id As Stri ng)

OrderID = id En d SubEn d Cla ss

Sự ki ện Load của Fo rm đượ c xử lý

Dim customerArray As Ne w Arr ayLi st' Thêm khách hàngDim x As Integ erFor x = 0 To 9

customerArray.Add(Ne w Customer("Customer " + x.ToString()))Ne xt x

Page 87: Giáo trình vb.net

87

‘ Thêm đơn đặt hàngDim customer1 As CustomerFo r E ach customer1 In customerArray

Dim y As Int ege rFo r y = 0 To 4 customer1.CustomerOrder.Add(New Orders("Order" + y.ToString()))Next y

Next customer1 ' Xóa TreeViewTreeView1.Nodes.Clear()

' Tạo các nút cha là các khách hàng

Fo r E ach customer1 In customerArrayTreeView1.Nodes.Add(New TreeNode(customer1.CustomerName))' Các nút con là các đơn đặt hàngDim order1 As OrdersFo r Each order1 In customer1.CustomerOrder

TreeView1.Nodes(customerArray.IndexOf(customer1)).Nodes.Add( _ New TreeNode(customer1.CustomerName + ".“ + order1.OrderID))Next order1

Next customer1

Page 88: Giáo trình vb.net

88

ĐIỀU KH IỂN CHE CKB OX

Được sử dụng để nhận thông tin dạng Yes/No.Thu ộc tín h- Checked: Xác định điều khiển đang ở trạng thái nào (True/False).Sự ki ện- CheckedChanged: Xảy ra khi giá trị của thuộc tính Checked bị thay đổi.

Pr iv at e Sub chkDam_CheckedChanged(By Va l sender _ As System.Object, ByVal e As System.EventArgs) _

Hand les chkDam.CheckedChanged If Me.chkDam.Checked Then Me.txtTen.Font = New Font("Arial", 9.0!, _

System.Drawing.FontStyle.Bold) Els e Me.txtTen.Font = New Font("Arial", 9.0!, _

System.Drawing.FontStyle.Regular) End IfEnd Sub

Page 89: Giáo trình vb.net

89

ĐIỀU K HIỂN RA DIO BU TTON

- Là điều khiển cho phép nhận dữ liệu Yes/No, nhưng các radio button cùng 1 nhóm thì không thể chọn đồng thời.

- Các thuộc tính, phương thức, sự kiện tương tự CheckBox.

Page 90: Giáo trình vb.net

90

ĐIỀU KHI ỂN NHÓ M - GROU PB OX

Là điều khiển được dùng để nhóm các điều khiển khác. Thuộc tính:- Text: Chuỗi trên tiêu đề của GroupBox.

TD (hình bên)

Page 91: Giáo trình vb.net

91

ĐIỀU K HIỂ N PI CTU RE BOX

Được sử dụng để hiển thị hình ảnh.Thu ộc tính- Image: Xác định hình ảnh cần hiển thị.- SizeMode: xác định cách thức ảnh được hiển thị (AutoSize, CenterImage, Normal, StretchImage)Sự kiện- SizeModeChange: xảy ra khi thuộc tính SizeMode thay đổi giá trị.

Page 92: Giáo trình vb.net

92

ĐIỀ U KHIỂN IMA GELI ST

Dùng để lưu các hình ảnh và cho phép chúng hiển thị ở các điều khiển khác nhau.Th uộc tí nh- Images: tập hợp các ảnh của ImageList.- ImageSize: kích thước của các ảnh có trong ImageList.Phương thức- Draw: vẽ một ảnh xác định.

Page 93: Giáo trình vb.net

93

ĐIỀ U KHIỂN TIMER

Là điều khiển đáp ứng lại sự trôi đi của thời gian.Thu ộc tính- Enabled: cho phép điều khiển thời gian thực thi.- Interval: Khoảng thời gian giữa 2 sự kiện.Ph ương thức- Start: khởi động điều khiển thời gian.- Stop: ngưng điều khiển thời gian.Sự kiện- Tick: Xảy ra sau 1 khoảng thời gian được chỉ trong Interval

Page 94: Giáo trình vb.net

94

ĐIỀU K HIỂN TIMER - Thí dụ

Thiết kế ứng dụng cho phép hiển thị đồng hồ số.

Thuộc tính: Enable = TrueInterval=1000

Xử lý sự kiện TickPriv ate Su b Timer1_Tick(By Val sender As System.Object, _

By Val e As System.EventArgs) Hand le s Timer1.TickMe.lblTG.Text = CStr(Now) ‘ Now: hàm lấy thời gian

End Sub

Page 95: Giáo trình vb.net

95

Bài 4: Các đi ều kh iển khá c

Hộp thoại (Dialog). Hộp thông điệp (MessageBox)

Page 96: Giáo trình vb.net

96

HỘP TH OẠI ( DIALOG BOX )

Là 1 cửa sổ tạm chứa các điều khiển khác để tương tác giữa ứng dụng và người sử dụng.Đặc điểm- Kích thước của hộp thoại không thể thay đổi.- Hộp thoại không chứa menu.Các loại hộp thoại- Modal: hiển thị thông điệp & người dùng không thể chuyển đổi sang các cửa sổ khác khi hộp thoại còn tồn tại.- Modaless: ta có thể chuyển đổi sang các cửa sổ khác dễ dàng.

Page 97: Giáo trình vb.net

97

OPEN FILE D IALOG

Đây là hộp thoại mở tập tin.

Page 98: Giáo trình vb.net

98

FONT DIAL OG

Đây là hộp thoại cho phép chọn Font.

Page 99: Giáo trình vb.net

99

COLOR DIALOG

Đây là hộp thoại cho phép chọn màu từ bảng màu của hệ thống.

Page 100: Giáo trình vb.net

100

HỘ P TH ÔNG ĐI ỆP - MESS AGEBOX

Dùng để hiển thị thông báo.Cách sử dụng:

MessageBox.Show(“[Thông điệp]”)Ta có thể sử dụng Show như 1 hàm, kết quả trả về (DialogResult) của hàm có thể có các giá trị: Abort, Cancel, Inorge, No, None, OK, Retry, Yes.MessageBox.Show(s1 As S trin g, s2 As S trin g, _

btns As Me ss ag eBoxBut ton , icns As _ Me ss age BoxIc on ) As D ialo gR esult

s1: Thông điệp cần hiển thị.s2: Tiêu đề của hộp thông điệp.

Page 101: Giáo trình vb.net

101

HỘ P TH ÔNG ĐI ỆP - MESS AGEB OX

MessageBoxButton: AbortRetryInorge, OK, OKCancel, RetryCancel, YesNo, YesNoCancel.MesageBoxIcon: Asterisk, Error, Exclamation, Hand, Information, None, Question, Stop, Warning. TD :

MessageBox.Show("Chào mừng bạn làm quen với hộp _thông điệp", "Thông báo", MessageBoxButtons.YesNoCancel, _

MessageBoxIcon.Information)

Page 102: Giáo trình vb.net

102

Bài 5: Menu

Tạo menu với MainMenu.Tạo menu ngữ cảnh với ContextMenu.Xử lý sự kiện của các mục của menuTạo menu bằng mã lệnh

Page 103: Giáo trình vb.net

103

ME NU - KHÁ I NIỆM

Menu là một loại điều khiển trong đó người dùng có thể lựa chọn các mục để thực thi từ một danh sách cho 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ật ra (Pop-Up Menu, ContextMenu): thường

hiển thị khi ta ấn nút phải chuột.

Page 104: Giáo trình vb.net

104

DR OPDOWN MEN U

Tạo menu nhờ vào điều khiển MainMenu.Các bước tạo menu:- Tạo menu mới và menu bar. - Thêm các mục menu con vào menu đã có. - Sửa đổi lại các thuộc tính của menu và các mục menu. - Xử lý sự kiện Click của các mục menu con.

Page 105: Giáo trình vb.net

105

DR OPD OWN MEN U - TH Í DỤ

Page 106: Giáo trình vb.net

106

ĐIỀ U KH IỂN MAIN ME NU

Mai nMenu : hiển thị 1 menu khi ứng dụng được thực thi. Các menu con của MainMenu gl Me nu .Me nuIte m: mục cụ thể của 1 Menu xác định.Th uộc tí nh- IsParent: Tr ue nếu mục menu này là cha của các mục menu con nào đó.- MenuItems: tập hợp các mục menu con.Phương thức- MergeMenu: ghép các mục menu con của 1 menu xác định vào menu hiện hành.

Page 107: Giáo trình vb.net

107

MEN UITEM

Thuộc t ính- Checked: là Tr ue nếu có dấu trước mục menu con.- Index: vị trí của menu con trong 1 menu xác định.- Shortcut: xác lập phím tắt.- Parent: tên (Name) của menu cha.- Text: chuỗi hiển thị trên mục menu.Sự k iện- Click: Xảy ra khi người dùng Click chọn mục menu.

Page 108: Giáo trình vb.net

108

Priv ate Sub MenuItem4_Click(By Val sender As System.Object, _ ByV al e As System.EventArgs) Ha ndle s MenuItem4.Click

MessageBox.Show("Bạn chọn File/Save", "Thông báo")End SubPriv ate Sub MenuItem5_Click(By Val sender As System.Object, _

By Val e As System.EventArgs) Ha ndle s MenuItem5.Click En dEnd Sub

Page 109: Giáo trình vb.net

109

CONTEX T MEN U

Là điều khiển cho phép người dùng truy cập các mục trên menu nhờ thao tác nhấp chuột phải.Sau khi ContextMenu được tạo ra, chúng sẽ được gắn với một điều khiển khác nhờ vào thuộc tính ContextMenu của điều khiển đó.TD tạo ContextMenu & thiết lập thuộc tính ContextMenu của Form

Priv ate Sub Form1_Load(By Val sender As System.Object, ByVa l e _As System.EventArgs) Ha nd les _

MyBase.LoadMe .ContextMenu = ContextMenu1

End Sub

Page 110: Giáo trình vb.net

110

TẠ O M EN U BẰNG MÃ LỆN H

Ta có thể thêm hay xóa đi một mục menu (MenuItem) của 1 menu nào đó nhờ vào các phương thức Add & Remove.TD: Xử lý sự kiện Load của Form bằng đoạn mã lệnh tạo menu:Pr ivate Sub Form2_Load(ByVal sender As System.Object, ByVal e _

As System.EventArgs) Handle s MyBase.Load Dim myMainMenu As New MainMenu

Dim FileMenu As New MenuItem Dim NewItem As N ew MenuItem

Dim OpenItem As N ew MenuItemNewItem.Text = "&New"

OpenItem.Text = "&Open..." FileMenu.Text = "&File" FileMenu.MenuItems.Add(NewItem) FileMenu.MenuItems.Add(OpenItem) myMainMenu.MenuItems.Add(FileMenu) Me.Menu = myMainMenuEnd Sub

Page 111: Giáo trình vb.net

111

TD xóa 1 mục menuDim kq As New DialogResultkq = MessageBox.Show("Bạn muốn xóa mục New không?", "Xóa", _

MessageBoxButtons.YesNo)If kq = DialogResult.Yes Then FileMenu.MenuItems.RemoveAt(0)End If

Page 112: Giáo trình vb.net

112

KẾT QUẢ TH Í DỤ

Page 113: Giáo trình vb.net

113

Chương 3: Các ki ểu dữ liệ u & Bẫy lỗi trong VB.NET

Cách thức sử dụng các kiểu dữ liệu.Một số kiểu mở rộng: liệt kê, mảng, tập hợp.Bẫy lỗi (Error Handler) trong VB.NET.

Page 114: Giáo trình vb.net

114

Bài 1: Sử dụn g các kiểu dữ li ệu

Các kiểu dữ liệu của .NET Framework.Một số hàm thao tác trên các giá trị các kiểu cũng như các hàm xử lý chuỗi

Page 115: Giáo trình vb.net

115

CÁC KIỂU CỦ A .N ET

Chia làm các loại: số nguyên, số thực, luận lý, ký tự.Kiể u s ố nguy ên:

Kiểu .N ET Ki ểu VB.N ET Mi ền g. tr ịSystem.Byte Byte 0..255

System.Int16 Short -32768..32767

System.Int32 Integer -231..231-1

System.Int64 Long -263..263-1

Page 116: Giáo trình vb.net

116

Kiể u s ố t hự c

CÁC KIỂU CỦ A .N ET

Kiểu .NET

Kiể u VB .NET

Mô tả Độ chính xác

Miền g . trị

System.Single

Single 32 bit 7 ký số +/-1.4*10-45.. +/-3.4*1038

System.Double

Double 64 bit 15-16 ký số

+/-5.0*10-324.. +/-1.7*10308

System.Decimal

Decimal 128 bit 28 ký số +/-1.0*10-28.. +/-7.9*1028

Page 117: Giáo trình vb.net

117

Kiểu luậ n lý : Kiểu của .NET là System.Boolean ứng với kiểu Boolean của VB.NET với 2 giá trị là True và False.Kiểu ký tự : Kiểu của .NET là System.Char ứng với kiểu Char của VB.NET (16 bit - Unicode).Trong VB.NET một hằng ký tự được đặt trong cặp dấu ngoặc kép với ký tự c đằng sau.TD: Dim a As Cha r

a = “B”c

CÁC KIỂU CỦ A .N ET

Page 118: Giáo trình vb.net

118

Kiểu ch uỗi ký tự : Kiểu .NET là System.String ứng với String trong VB.NET.Trong VB.NET, hằng chuỗi được đặt trong cặp dấu ngoặc kép.TD: Dim s As S trin g

s = “Tin Học K30”Kiểu đối tượng : Kiểu .NET là System.Object tương ứng với Object trong VB.NET. Đây là kiểu gốc cho tất cả các kiểu trong VB.NET.TD: Dim o As O bje ct

o = 5o = New System.Windows.Forms.Form()

CÁC KIỂU CỦ A .N ET

Page 119: Giáo trình vb.net

119

KIỂU DỮ LIỆU - H ÀM T HÀNH VIÊN

Parse : hàm có ở các kiểu giá trị. Hàm này cho phép tạo ra một giá trị số từ một chuỗi.TD: Dim d As In tege r

d = Int eger.Parse(“12345”) ‘ d là 12345System.Console.PrintLine(CStr(d))

ToS trin g: chuyển đổi giá trị sang dạng chuỗi.TD: Dim a As In tege r, s As S trin g

a = 1234s = a.ToString()System.Console.PrintLine(s)

Page 120: Giáo trình vb.net

120

Các hàm xử lý chuỗi

KIỂU DỮ LIỆU - H ÀM T HÀNH VIÊN

Hàm Ý ng hĩa

Inse rt Chèn chuỗi cho trước vào chuỗi hiện hành

Remov e Xóa một số ký tự được chỉ định.

Rep lace Thay thế chuỗi con trong chuỗi gốc bằng một chuỗi khác

Sub Stri ng Trả về một chuỗi con từ chuỗi cho trước

ToLowe r, ToU pper

Chuyển chuỗi sang chữ thường (hoa)

Trim Loại bỏ những ký tự không cần thiết trong chuỗi

Page 121: Giáo trình vb.net

121

CÁ C HÀM XỬ LÝ C HUỖIImp or ts System.ConsoleMod ule Module1

Su b Ma in () Dim s1 As St ring

s1 = "Khoa CNTT - Dai Hoc Can Tho" WriteLine(s1) ‘1 s1 = s1.Insert(12, "Khu 3 - ") WriteLine(s1) ‘2 Dim s As St ring = s1.Substring(12) WriteLine(s) ‘3 s = s1.Substring(12, 5) WriteLine(s) ‘4 ReadLine() End Su bEnd Modu le

Page 122: Giáo trình vb.net

122

Bài 2: K iểu liệt kê, mả ng & t ập hợ p

Kiểu liệt kê (enum)Khai báo và sử dụng mảng (array)Tập hợp trong VB.NET (collection)

Page 123: Giáo trình vb.net

123

KIỂU LIỆT K Ê

Cho phép định nghĩa một tập giá trị hằng để gợi nhớ.Nếu không chỉ ra giá trị của Enum, giá trị đầu tiên là 0.

TD1: Khai báo kiểu liệt kê cho các ngày trong tuần.

TD2: Không chỉ ra giá trị của Enum

Enum WeekMonday = 1Tuesday = 2Wednesday = 3Thursday = 4Friday = 5Saturday = 6Sunday = 7

End Enum

Public Enum Numbers zero ' = 0 one ' = 1 two ‘ = 2End Enum

Dim a As NumbersWriteLine((a.two*2))

Page 124: Giáo trình vb.net

124

MẢ NG

Mảng: tập hợp các phần tử có cùng kiểu.Khai báo mảng 1 chiều: Di m <Tên biến>(<Kích thước>) As <Kiểu phần tử>TD: Khai báo mảng có 31 số nguyên từ 0 đến 31

Dim a(30) As Int egerTa có thể không chỉ ra kích thước mảng, nhưng sau đó ta phải khởi tạo mảng.TD: Dim a() As I nteg er

a = New Integer() {1,2,3,4}Dim f As In tegerFor Ea ch f In a Write(f)

Next

Page 125: Giáo trình vb.net

125

Khai báo tương tự mảng 1 chiều nhưng có thêm kích thước của các chiều còn lại.TD:‘ Khai báo ma trận 3 dòng 5 cộtDim m(2, 4) As S in gle‘ Khai báo và khởi tạo ma trậnDim intArrays(,) As Integer = {{1, 2, 3}, {4, 5, 6}}‘ Hiển thị theo dạng ma trậnDim f As In tege r, c As In teger = 0

For Eac h f In intArrays If c Mod 3 = 0 The n WriteLine()

Write(" ") Write(f) c = c + 1 Next

MẢ NG NHIỀU CHIỀU

Page 126: Giáo trình vb.net

126

TẬP H ỢP (COLLE CT ION )

Là một lớp đặc biệt chứa một nhóm các đối tượng nào đó.Kgt System.Collection định nghĩa nhiều lớp thành viên: ArrayList, Stack, HashTable, BitArray, Queue…Lớp ArrayList: cung cấp các chức năng cơ bản của 1 tập hợp, có thể được sử dụng cho nhiều mục đích khác nhau.Khai báo & khởi tạo đối tượng ArrayList Dim myList As New System.Collections.ArrayList() ‘ Khởi t ạo đ ối t ượn g myList có 5 ph ần t ử Dim myList As New System.Collections.ArrayList(5)

Page 127: Giáo trình vb.net

127

Phươ ng th ức- Add: Thêm phần tử vào tập hợp- Remove: Xóa phần tử khỏi tập hợp.- RemoveAt: Xóa tại vị trí xác định trong tập hợpTD:

Dim f As In terg er , r As New System.Collections.ArrayListFor f = 1 To 5

r.Add(f)Nextr.Remove(3) ‘ Xóa 3

For E ach f In rWriteLine(f)

Next

ARR AY L IST

Page 128: Giáo trình vb.net

128

ArrayList có thể chứa các phần tử thuộc các kiểu khác nhau.TD:

Dim f As In tege r, 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 Ob jec t For Eac h f1 In r If Typ eOf f1 Is Str in g Then WriteLine(f1) ‘ Hiển thị giá trị là chuỗi

End I f Next

ARR AY L IST

Page 129: Giáo trình vb.net

129

Bài 3: Xử lý lỗi trong VB.NET

Phân loại các lỗi trong ứng dụng.Bẫy các lỗi thực thi (runtime error).Điều khiển ErrorProvider.

Page 130: Giáo trình vb.net

130

PHÂ N LOẠI LỖI

Có 3 loại lối (error)- Lỗi cú pháp (syntax error)- Lỗi thực thi (runtime error)- Lỗi logic (logic error)Ngoại lệ (Exception): là lỗi xảy ra lúc thực thi chương trình (thuộc loại runtime error).Khi có ngoại lệ xảy ra, nếu không có hành động thích hợp chương trình sẽ bị ngắt.

Cần ph ải có cơ ch ế x ử lý n goạ i lệ

Page 131: Giáo trình vb.net

131

EX CE PT ION

Một số ngoại lệ: ArithmeticException, InvalidOperationException, OverflowException, TypeLoadException, IndexOutOfRangeException, InvalidCastException, NullReferenceException, SecurityException…Ngoài ra, người dùng có thể định nghĩa ngoại lệ cho riêng mình (phải kế thừa từ những lớp trên).Thuộc tính của Exception:- Message: Chuỗi mô tả thông tin về ngoại lệ.- Source: tên ứng dụng hay đối tượng gây ra lỗi.

Page 132: Giáo trình vb.net

132

XỬ LÝ NGOẠI LỆ

Ngoại lệ có thể được xử lý nhờ vào các từ khóa: Try, Throw, Catch, Finally.Cấu trúc mô hình xử lý ngoại lệ Try

‘ Đoạn mã lệnh có thể gây lỗi Catch e1 As Ex cep tion

‘ Nếu lỗi thuộc loại e1, đoạn mã này thực thi ‘ Ngược lại, khối Catch kế được thực thi

Catch en As Exce pti on ‘ Nếu lỗi thuộc loại en, đoạn mã này thực thi

Final ly‘ Đoạn mã này luôn thực thi, dù ngoại lệ có ‘ xảy ra hay không? Phần này không bắt buộc

End Try

Page 133: Giáo trình vb.net

133

XỬ LÝ NGOẠI LỆ - T HÍ DỤ

TD: Ngoại lệ không thể đổi từ chuỗi sang sốMod ule Module1 Su b Ma in () Tr y Dim r As In teger, s As S trin g

Write("Nhap r= “) s = ReadLine() r = Integer.Parse(s) WriteLine(1 / r) Ca tch e As S yst em .Exc eption WriteLine(e.Message + " Xu ly ngoai le") Fin al ly WriteLine("Khoi Finally") En d Try

End SubEn d Mod ule

Page 134: Giáo trình vb.net

134

XỬ LÝ NGOẠI LỆ - T HÍ DỤ

Page 135: Giáo trình vb.net

135

ĐIỀU K HIỂN ERRORP ROV IDER

Sử dụng để hiển thị icon lỗi khi người dùng thao tác lỗi trên một điều khiển nào đó trên form.Thuộc tín h- BlinkRate: xác định tốc độ nhấp nháy của icon lỗi.- BlinkStyle: xác định cách thức mà icon nhấp nháy trên điều khiển(AlwaysBlink, BlinkDifferentError, & NeverBlink).- Icon: đường dẫn chỉ đến icon lỗi.Phư ơng t hức- GetError: nhận về chuỗi thông báo lỗi.- SetError: xác lập chuỗi thông báo lỗi trên một điều khiển xác định.

Page 136: Giáo trình vb.net

136

Xử lý ngoại lệ khi người dùng nhập không phải số.

Dim N, i A s I nteg er , K As Lon g = 1 Try N = Inte ger.Parse(txtN.Text) For i = 1 To N K = K * i Next lblKQ.Text = CStr(K) Ca tch err1.SetError(txtN, "Đây phải là giá trị số") En d Try

ERRO RP ROVID ER - T HÍ DỤ

Page 137: Giáo trình vb.net

137

ERRO RP ROVID ER - T HÍ DỤ

Page 138: Giáo trình vb.net

138

Chươ ng 4: Lập Trình Hướ ng Đối Tượng vớ i VB.NET

Thuộc tính (Properties)Đa hình (Polymorphism)Thừa kế (Inheritance)Giao diện (Interface)

Page 139: Giáo trình vb.net

139

THUỘC TÍ NH (PROPERTIES)

Thuộc tính là những đặc trưng của các đối tượng của 1 lớp.Thuộc tính có thể được tạo nhờ:- Từ khóa Public.- Phương thức Property.TD: Lớp Con người (Person)Class Person

Pub lic strName As S trin gPub lic iAge As In tegerPub lic iWeight As In teger

End Cla ssVới cách truy cập Pub lic , thuộc tính có thể được truy xuất không giới hạn.

Page 140: Giáo trình vb.net

140

Nếu ta muốn hạn chế truy cập, ta có thể sử dụng từ khóa Priv at e (data hiding).Trong TD trên, ta có thể định nghĩa thuộc tính Name:

Privat e strName As St ringPub lic P roper ty Name() As S trin g

SetstrName = Va lue

End S etGe t

Name = strNameEnd G et

End P roper ty

THUỘC TÍ NH (PROPERTIES)

Page 141: Giáo trình vb.net

141

Khối Set: gán trị cho thuộc tính.Khối Get: lấy giá trị của thuộc tính.Thuộc tính chỉ đọc (ReadOn ly ): khai báo khối Get (không có khối Set) hay có thể khai báo cách tường minh trong khối Get nhờ từ khóa ReadOnly .TD: Thuộc tính tuổi của lớp Con người là chỉ đọc.

Privat e iAge As In tegerPub lic R eadOn ly P rope rt y Age() As Int eger

GetAge = iAge

End G etEnd P roper ty

THUỘC TÍ NH (PROPERTIES)

Page 142: Giáo trình vb.net

142

Thuộc tính chỉ ghi (Wri teO nly ): khai báo khối Set (không có khối Get) hay có thể khai báo cách tường minh trong khối Set nhờ từ khóa Writ eO nly .TD: Trọng lượng của lớp Con người là chỉ ghi.

Priv at e iAge As In tegerPublic W rit eOn ly Pr op ert y Weight () As In tege r

SetiAge = Value

End S etEnd Pr op ert y

THUỘC TÍ NH (PROPERTIES)

Page 143: Giáo trình vb.net

143

ĐA H ÌN H (POLY MORPH ISM)

Đa hình: Khả năng các phương thức có cùng một tên nhưng các tham số của chúng là khác nhau.Nạp chồ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ột lớp. Khi định nghĩa các phương thức này, ta sử dụng từ khóa Ove rload s.TD: Tạo lớp Điểm trong không gian 2 chiều gồm 2 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ột có tham số (cặp (X1,Y1) có sẵn để gán cho X,Y).- Phương thức hiển thị tọa độ của điểm lên màn hình.- 2 phương thức tính khoảng cách từ điểm hiện thời đến 1 điểm khác, một không tham số (tinh kc đến gốc tọa độ), một có tham số là một điểm khác (tính kc đến điểm này).

Page 144: Giáo trình vb.net

144

Cla ss Point Pr iva te iX As I nt ege r Pr iva te iY As I nt ege r Public Pr ope rt y X() As I ntege r Get X = iX End G et Se t(ByVal Value As Int ege r) iX = Value End Se t End Pr ope rt y Public Pr ope rt y Y() As I ntege r Get Y = iY End G et Se t(ByVal Value As Int ege r) iY = Value End Se t End Pr ope rt y

Public Sub N ew() Me.X = 0 Me.Y = 0End Sub

Public Sub N ew(ByVal X1 As _ Int ege r, ByVal Y1 As I ntege r) Me.X = X1 Me.Y = Y1End Sub

Public Sub Display() WriteLine("({0},{1})", Me.X, Me.Y)End Sub

Public Ov erloads Func tio n _ Distance() As Sin gl e Re tur n Sqrt(Me.X ^ 2 + Me.Y ^ 2)End Func tio n

Page 145: Giáo trình vb.net

145

Public O verloads Func tion _ Distance(ByVal p As Point) As Single Re tur n Sqrt((Me.X - p.X) ^ 2 + _ (Me.Y - p.Y) ^ 2)End Func tio nEnd Cla ss ‘ Kế t thúc ĐN lớp Po int

‘ Hà m ma inSub Ma in() Dim p1, p2 As Po int 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()

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.- Đối với phương thức xây dựng, để nạp chồng ta không được đặt từ khóa Overloa ds.

Page 146: Giáo trình vb.net

146

TH ỪA KẾ (IN HE RITA NCE )

Thừa kế là khả năng một lớp (lớp con) thừa hưở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ợ đa thừa kế.Sử dụng từ khóa Inhe rit s khi định nghĩa lớp con.TD: Thiết kế lớp điểm trong không gian 3 chiều thừa kế từ lớp điểm trong kg 2 chiều.Cla ss Point3D

In herit s Point ' Thừa kế từ lớp Point Priv at e iZ As Integ er Public Prop ert y Z() As Inte ger Get Z = iZ En d Get Se t(By Val Value As Inte ger) iZ = Value En d Set End Property End Cla ss

Page 147: Giáo trình vb.net

147

THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC

Lớp con có thể ghi đè các phương thức của lớp cha.Phương thức của lớp cha phải sử dụng từ khóa Ov errid able , phương thức của lớp con sử dụng từ khóa Ove rrid es.Từ khóa My Ba se : truy xuất các thuộc tính hay phương thức của lớp cha từ lớp con.TD: Lớp điểm trong kg 3 chiều cần ghi đè phương thức hiển thị tọa độ điểm lên màn hình.

Pub lic Sub New () MyB ase.New() Me.Z = 0End SubPub lic Sub New (ByV al x1 As _Intege r, ByV al y1 As In te ger , _

By Val z1 As In teg er)

MyB ase .New(X1, Y1) Me.Z = z1End SubPub lic Overri des Sub Display() WriteLine("Toa do p1 la _ ({0},{1},{2})", Me.X, Me.Y, Me.Z) End Sub

Page 148: Giáo trình vb.net

148

Sub Ma in () Dim p1, p2 As Point3D p1 = New Point3D(1, 2, 3) p1.Display() p2 = New Point3D p2.Display()End Sub

Kết q uả ch ươ ng t rìn h

THỪA KẾ - GHI ĐÈ PHƯƠNG THỨC

Page 149: Giáo trình vb.net

149

GIAO DIỆ N - INTER FA CE

Nếu một lớp cần thể hiện tính đa thừa kế, ta sử dụng giao diện (Int erfa ce ).Giao diện có các thuộc tính & các phương thức riêng, tuy nhiên chúng không có mã lệnh để cài đặt.Lớp sử dụng giao diện cần phải cài đặt (Imp lemen ts ) các phương thức đã định nghĩa trong giao diện.TD:

Pub lic Int erf ace Interface1 Su b A() Fu ncti on B(ByVal C As _ Integ er) As I nte gerEnd In terface

Cl ass Tool Impl em en ts Interface1Public Sub A() Im pl em en ts Interface1.A ‘Cài đặt AEn d Sub…En d Cla ss

Page 150: Giáo trình vb.net

150

Chươ ng 5: Cơ sở dữ liệu & VB.NET

Một số khái niệm về cơ sở dữ liệuNgôn ngữ hỏi SQL (Structure Query Language)Giới thiệu về ADO.NET

Page 151: Giáo trình vb.net

151

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óaMối kết hợp (relationship)

Page 152: Giáo trình vb.net

152

CƠ SỞ DỮ LIỆU

Cơ sở dữ liệu là một kho chứa thông tin.Fla t f il es : tất cả dữ liệu chứa trong 1 tập tin duy nhất. TD: Bảng tính Excel:

Đặt hàng

Ngày đặ t Hàng hóa Số lượ ng Đơn giá

Tên KH Địa chỉ KH

1000 02/03/06 Bột giặt Omo 5 (kg) 15000 NV Cường 01 THĐ

1000 02/03/06 Kem đánh răng P/S 10 (hộp) 10000 NV Cường 01 THĐ

1000 02/03/06 Dầu gội Clear 10 (chai) 10000 NV Cường 01 THĐ

1001 03/03/06 Bột giặt Omo 15 (kg) 15000 Trần Văn Ba 02 LTT

1001 03/03/06 Trà chanh IceTea 10 (gói) 5000 Trần Văn Ba 02 LTT

Page 153: Giáo trình vb.net

153

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 qua n 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(MaK H, TenKH, DiachiKH)- HangHoa(Ma Hang , TenHang, Dongia, Ghichu)- DatHang(STTDH, Ma KH, MaHan g, Soluong)

CƠ SỞ DỮ LIỆU

Page 154: Giáo trình vb.net

154

Bản g (tab le ): 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 (recor d): chứa các trường (fie ld ), 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 - CÁC KHÁI NIỆM

MaK H Te nKH Dia chi

Mẩu tin 1 KH01 NV Cường 01 THĐ

Mẩu tin 2 KH02 Trần Văn Ba 02 LTT

Trường 1 Trường 2 Trường 3

Page 155: Giáo trình vb.net

155

Khóa chín h (prima ry k ey ): 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 (fo reign ke y) : 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 - KHÓA

Page 156: Giáo trình vb.net

156

Mối k ết hợp ( relat ionsh ip) : 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Ữ L IỆU - MỐ I K ẾT H ỢP

Page 157: Giáo trình vb.net

157

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Ữ L IỆU - MỐ I K ẾT H ỢP

Page 158: Giáo trình vb.net

158

Toà n vẹn tham ch iế u (re fere ntial in tegrit y): 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.- Cas cad e upda te : 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.- Casca de 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 - T OÀN VẸN THAM CH IẾU

Page 159: Giáo trình vb.net

159

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 SelectCập nhật dữ liệu với UpdateChèn thêm dữ liệu với InsertXóa dữ liệu với Delete

Page 160: Giáo trình vb.net

160

ST RUC TU RE QU ERY LANGU AGE

SQL là ngôn ngữ CSDL chuẩn.SQL gồm nhiều phần: 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…Câu lệnh thường sử dụng: Select, Update, Insert, Delete.

Page 161: Giáo trình vb.net

161

SQL - CÂU LỆ NH SE LE CT

Được sử dụng để lựa chọn dữ liệu theo một số điều kiện nào đó.Mệ nh đề Sele ct TD: Với CSDL người dùng- Tìm kiếm tất cả các người dùng

Sele ct UserName From Users- Nếu muốn tên các người dùng không trùng nhau:

Sele ct D is tin ct UserName From RoleUser- Ký tự * được dùng chỉ tất cả các trường

Sele ct * Fr om Users- Sau Select có thể là một biểu thức

Sele ct RoleID*10, RoleName From Roles

Page 162: Giáo trình vb.net

162

Mệ nh đề Wh ere : dùng để lọc & kết nối dữ liệu.TD:- Tìm các tên quyền có mã >3

Sele ct RoleName From Roles Wh ere RoleID>3- Tìm các bộ (người dùng, tên quyền) tương ứng với mã quyền >3

Sele ct UserName, RoleName From Roles, RoleUserWh ere RoleUser.RoleID = Roles.RoleID AND

Roles.RoleID > 3Các phép toán:- So sánh: >, >=, <, <=, =, <>, BETWEEN…AND- Logic: AND, NOT, ORTD: Tìm các tên quyền có mã từ 2 đến 4

Sele ct RoleName From RolesWh ere RoleID BE TW EEN 2 AN D 4

SQL - CÂU LỆ NH SE LE CT

Page 163: Giáo trình vb.net

163

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:Sele ct RoleName From Roles Wh ere RoleName LIKE “%e”

- Tìm các tên người dùng có ký tự thứ 2 là hSele ct UserName From Users Wh ere UserName LIKE “_h%”

Mệ nh đề s ắp t hứ t ự Or der 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.

Sele ct RoleName From Roles Wh ere RoleID>1 Or der B y RoleName ASC

SQL - CÂU LỆ NH SE LE CT

Page 164: Giáo trình vb.net

164

Dùng để 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 UserInse rt In to Users Va lue s(“nqtoan”, ”abc”)

- Ta có thể chỉ rõ tên trường & giá trị cần xen.Inse rt In to Users(Password, UserName) Valu es(“abc”, “nqtoan”)

- Thêm cho tất cả người dùng quyền mới có mã là 4Inse rt In to RoleUser

Sele ct UserName As UserName, 4 As RoleIDFrom Users

SQL - CÂ U LỆN H INSERT

Page 165: Giáo trình vb.net

165

Upd at e: Cho phép thay đổ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

Upd at e UsersSet Password = “abc”Wh ere UserName = “lhbao”

Dele te: 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

Dele te From RoleUser- Xóa tất cả các quyền của người dùng lhbao

Dele te From RoleUserWh ere UserName = “lhbao”

SQL - UPD AT E & DE LET E

Page 166: Giáo trình vb.net

166

Bài 3: Gi ới th iệu về AD O.NET

OLE DB, ADO, ADO.NETDataset.NET Data Providers- Đối tượng Command.- Đối tượng DataReader.- Đối tượng DataAdapter.DataBinding

Page 167: Giáo trình vb.net

167

OLED B

OLEDB: Object Linking and Embedding for DataBase: giao diện cơ sở dữ liệu được sử dụng để truy cập các loại dữ liệu khác nhau.Mô hìn h:

OLEDB

RelationalDatabase

Non-RelationalDatabase

Page 168: Giáo trình vb.net

168

AC TI VEX D ATA OBJ ECT (A DO )

Tập hợp các đối tượng để truy cập cơ sở dữ liệu thông qua trình cung cấp OLEDB.Mô hình

OLEDB

RelationalDatabase

Non-RelationalDatabase

ADO

Page 169: Giáo trình vb.net

169

AD O.NET

Là cải tiến của ADO.Sử dụng XML để vận chuyển dữ liệu.

Thàn h p hầ n cơ b ản của AD O.NET :- DataSet

- .NET data provider: gồm các thành phần Connection, Command, DataReader, DataAdapter.

WinForm

DataSet

DataObject

DataSet DatabaseXML

Page 170: Giáo trình vb.net

170

DAT AS ET

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 N ew Dataset(“EmpInfor”)‘ Không cần chỉ tên của DatasetDim empDS As N ew Dataset()

Client ServerDataset

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

Page 171: Giáo trình vb.net

171

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.

DAT AS ET

Page 172: Giáo trình vb.net

172

.NET DAT A P ROVID ERS

Cho phép tương tác giữa CSDL & dataset.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.

SQL .N ET Data Provi der OLE D B .NET Data Prov id er

System.Data System.Data

System.Data.SqlClient System.Data.OleDb

Page 173: Giáo trình vb.net

173

Thuộ c t ính :- ConnectionString: chuỗi nối kết đến CSDL.- Database: CSDL muốn nối kết.TD: - SQL .NET Data Provider

Dim conn As SqlConnectionconn = New SqlConnection _ (“se rve r=www”;uid =lhbao;pw d=abc;da taba se =pubs”)

- OLE DB .NET Data ProviderDim conn As OleDb.OleDbConnectionconn = New OleDb.OleDbConnection("Pr ov ide r=Microsoft.Jet.OLEDB.4.0; _

Da ta So ur ce=D:\User.mdb“)- Provider: trình cung cấp CSDL. Một số provider:

Access: Microsoft.Jet.OLEDB.4.0SQL Server: SQLOLEDB

- Data Source: CSDL.- User Id: tên người dùng.- pwd: mật khẩu

.NET DAT A P ROVID ERS

Page 174: Giáo trình vb.net

174

TH Í D Ụ .N ET CON NECTIO N

Tạo lớp kết nối đến CSDL Access với lúc khởi tạo đối tượng cần truyền tham số là đường dẫn chỉ đến CSDL User.mdb.

Public C la ss cnAccess Publi c conn As OleDb.OleDbConnection Public S ub N ew(By Val FileName As S trin g) conn = New OleDb.OleDbConnection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;” & _

“User ID=Admin;Data Source=" & FileName conn.Open()End SubProt ect ed Ove rri de s Sub Finalize()

conn.Close() conn = NothingEnd SubEnd Clas s

Page 175: Giáo trình vb.net

175