You are on page 1of 159

Gio trnh tin hc:

Lp trnh vi Microsoft Visual Basic 6.0


Tc gi: Nguyn Sn Hi (nshai@moet.edu.vn)
Cc Cng ngh thng tin B Gio dc v o to
H Ni, thng 6 - 2006

Lp trnh Visual Basic 6.0

GII THIU

Lp trnh ng dng l mn hc rt quan trng i vi sinh vin ngnh cng


ngh thng tin (CNTT). Hin nay c rt nhiu cc ngn ng lp trnh chuyn
nghip c th s dng tt lp trnh cc ng dng nh: Microsoft .NET, C++
Buider, Delphi, v.v. Nhng Visual Basic 6.0 (VB6), t y gi tt l VB c th
coi l mt trong nhng cng c d hc nht.
Gio trnh ny vit ra phc v nhu cu hc mn Lp trnh ng dng hoc Lp
trnh Visual Basic cho cc sinh vin, hc sinh trng THCN h chuyn CNTT.
Sau nhng ni dung v lp trnh VB cn bn, gio trnh s hng hc sinh n
cc k thut lp trnh c s d liu (CSDL) trn VB. kt qu cui cng l to ra
cc ng dng qun l s dng VB nh l mt cng c pht trin trn h CSDL
Access.
Thi lng thit k 75 tit. Trong 24 tit l thuyt, 46 tit thc hnh v 5
tit dnh cho kim tra. Tu theo mc ng dng ca tng trng, tng ngnh
vo mn hc ny m mi n v s chn cho mnh mt qu thi gian cng nh
cc ni dung ging dy ph hp t gio trnh ny.
Ni dung gio trnh gm mt bi m u v 4 chng:
Bi m u
Bi m u s l nhng li gii thiu v ngn ng Visual Basic 6.0, v mi
trng lm vic v lch s ca ngn ng ny. Kt thc bi hc, hc vin s hiu
c mi trng lm vic, to v lm vic trn project n gin.
Chng 1: Lp trnh VB cn bn
Chng ny cung cp nhng khi nim, nhng cch thc cn bn nht khi
lm vic vi bt k mt ngn ng lp trnh no, y l VB. l bin, hng,
cc cu trc lnh v k thut chng trnh con trong VB.
Chng 2: Lm vic vi cc iu khin
iu khin l mt thnh phn rt quan trng trong nhng ngn ng lp trnh
trc quan, hng i tng (nh VB). Chng ny tp trung vo vic gii thiu
nhng khi nim, cch thc lm vic v hng dn s dng, lp trnh trn h
thng cc iu khin t cn bn n nng cao ca VB. K thut bt li v x l
li cng c cp n rt chi tit. Kt thc ni dung chng ny, hc vin c
th thit k c mt s cc ng dng chy trn windows bng cch s dng tt
cc kin thc ca chng 1 v chng 2.

Trang 2

Lp trnh Visual Basic 6.0

Chng 3: Lp trnh c s d liu


Hu ht lp trnh ng dng u lin quan n cc k thut x l CSDL.
Chng ny tp trung gii thiu hai cng ngh lp trnh CSDL ph bin l DAO
(Data Access Objects) v ADO (ActiveX Data Objects) thng qua cc bi ton
c th nh: nhp d liu, tm kim v t lc, in bo co.
Chng 4: Hon thin d n
Chng ny tp trung hng dn cc qui trnh, cng c v k thut thit
k giao din chnh ng dng, cng nh hon thin, ng gi mt d n hon
chnh trn mi trng VB. l sn phm phn mm cui cng gi ti khch
hng. K thut MDI Form, Menu, ToolBar cng nh qui trnh ng gi thng
qua tin ch Package and Deployment Wizard c hng dn s dng chi tit.
Phn cui gio trnh c a ra danh mc cc ti liu bn c tham kho;
danh mc cc t vit tt c s dng trong sch v gii ngha mt s thut ng
ting Anh thng gp khi lp trnh trn VB.
Cui cng, chng ti xin chn thnh cm n s quan tm v to iu kin ca
S GD&DT H Ni; cc ng nghip tn tnh gip , ng gp kin xy
dng gio trnh c hon thin nh by gi. Tuy nhin rt kh trnh khi
nhng thiu st t khch quan n ch quan. Chng ti rt mong nhn c s
gp , ph bnh gio trnh ngy cng hon thin hn, phc v tt cho vic
dy-hc trong nh trung v cc bn c.
H ni, ngy 20 thng 10 nm 2005

Trang 3

Lp trnh Visual Basic 6.0

B I M U

Ni dung bi hc ny cung cp ci nhn tng quan v ngn ng Visual Basic:


tnh nng, mi trng v cch thc lm vic. Tuy khng nng v kin thc lp
trnh Visual Basic, nhng ni dung bi hc ny l rt quan trng gip hc sinh
tip cn ngn ng ny mt cch thun li. c bit, nu y l ln u tin hc
k thut lp trnh trn windows.

1. Gii thiu Visual Basic 6.0


Visual Basic 6.0 (VB) l mt ngn ng lp trnh hng i tng, trc quan
trn mi trng Windows. VB cung cp mt b cng c hon chnh n gin
ha vic trin khai lp trnh ng dng, c th ni y l cch nhanh v tt nht
hc v lp trnh ng dng trn Microsoft Windows.
Phn "Visual- Trc quan" cp n phng php c s dng to giao
din ha ngi dng (GUI - Graphical User Interface). VB c sn rt nhiu
nhng b phn trc quan gi l cc iu khin (Controls) m ngi lp trnh c
th sp t v tr v quyt nh cc c tnh ca chng trn mt khung giao din
mn hnh, gi l form. Vic thit k cc giao din ngi dng ng dng trn VB
c th hnh dung n gin nh vic v giao din trn Word hoc trn Paint Prush
ca Windows.
Phn "Basic" cp n ngn ng BASIC (Beginners All-Purpose Symbolic
Instruction Code), mt ngn ng lp trnh n gin, d hc, c vit ra cho cc
khoa hc gia- nhng ngi khng c th gi hc lp trnh in ton s dng.

Trang 4

Lp trnh Visual Basic 6.0

Tuy nhin, ngn ng Basic trong VB c ci thin rt nhiu ph hp vi


phong cch lp trnh hin i.
Visual Basic cn c hai dng khc l Visual Basic for Application (VBA) mt ngn ng nm pha sau cc chng trnh Word, Excel, VB, Project, .v.v..
cn gi l Macros. Dng VB trong Microsoft Office, ta c th lm tng chc
nng cc ng dng bng cch t ng ha cc chng trnh. V VBScript c
dng lp trnh phc v cc tng tc trn giao din web.
Visual Basic c rt nhiu phin bn, 2 phin bn tt nht c th ni n l
Visual Basic 6.0 (VB6) v Visual Basic .NET (VB7 hay VB.NET). V mt kin
trc, hai phin bn ny gn khc nhau hon ton. VB6 pht trin ng dng da
trn cng ngh COM (Common Object Model)- mt cng ngh rt pht trin t
nht cho n nm 2000. Cn VB.NET da trn nn tng cng ngh .NET
Framework - mt cng ngh hin i hn v ang rt c a chung. Gio trnh
ny ch cp n vic s dng v pht trin phn mm ng dng trn phin bn
VB6 (gi tt l VB). Bi l phin bn ny rt d hc v pht trin. Vic tm hiu
ngn ng VB.NET l rt khuyn khch cho nhng ai ang mun tm cho mnh
mt b cng c pht trin chuyn nghip trn a mi trng hot ng. Tuy
nhin, khi nm chc nhng ni dung VB6 t gio trnh ny, bn c c th
sn sng tip cn VB.NET vi t th rt thun li.
ci t VB, yu cu ti thiu phi c a 1 - b Microsoft Visual Studio
6.0 (b ny y gm 4 a). Tuy nhin cng nn gi c a 2 v 3 c c
y cc ti nguyn i cng gip vic nghin cu v tm hiu VB c thun
li.

Trang 5

Lp trnh Visual Basic 6.0

2. Khi ng
Sau khi gi t VB, c th khi ng t thanh tc v ca Windows nh sau:
Start | Programs | Microsoft Visual Studio 6.0 | Microsoft Visual Basic
6.0

Hp thoi u tin ca phn mm xut hin:

bt u mt ng dng mi, t th New, chn Standard EXE, nhn Open.


Mi trng lm vic VB xut hin:

Trang 6

Lp trnh Visual Basic 6.0

3
2
5

C rt nhiu cc thnh phn trong mi trng lm vic ca VB. mc n


gin nht c 5 thnh phn c khoanh trn trong hnh trn l:
(1). Thanh thc n v thanh cng c chun ca VB;
(2). Ca s Project Explorer ni qun l ton b cc thnh phn m ngi
lp trnh lm c trn d n ca VB hin thi. Lm vic trn VB l lm
vic trn cc d n (Projects). Mi d n cn phi to ra nhiu thnh phn
cu thnh nh: giao din, biu mu bo co, th vin,... tt c nhng thnh
phn ny s oc qun l trn ca s Project Explorer;
(3). Biu mu Form ni thng dng thit k cc hp thoi, ca s - giao
din ca ngi s dng vi ng dng phn mm;
(4). Thanh cng c ToolBox- ni cha cc iu khin (Control) gip ngi
lp trnh d dng to ra nhng giao din thn thin v lp trnh trn chng
mt cch thun li, a nng;
(5). Ca s Properties ni thit lp cc thuc tnh cho nhng i tng,
nhng iu khin trong qu trnh lm vic trn VB.

Trang 7

Lp trnh Visual Basic 6.0

3. Lu tr
Lm vic trn VB l lm vic trn cc d n (Project). Ti mt thi im c
th ch lm vic vi mt d n no , cng c khi lm vic trn mt tp hp cc
d n (Project Group). Tuy nhin khun kh gio trnh ny ch ni v lm vic
trn mt d n n l.
D n l cng c qun l tt c nhng g cn phi to ra cho mt d n phn
mm vit trn VB. Hnh di m t cc ni dung c th c qun l bi mt d
n mang tn quan_ly_canbo

Trong d n trn c cc thnh phn:


Forms to ra cc giao din ngi s dng phn mm nh l cc hp
thoi, biu nhp d liu, ca s giao din. C 4 form c to ra trong d n
trn.
Modules l ni cha nhng th vin khai bo phc v vic pht trin phn
mm. Trong mi Module c th cha cc chng trnh con, cc khai bo bin,
hng, mi trng lm vic m cc thnh phn th vin ny c th dng ring
hoc chia s dng chung trong ton b d n. C 2 module c to ra trong d
n trn l Module1 v Module2.
Trang 8

Lp trnh Visual Basic 6.0

Class Modules ni to ra cc lp i tng do ngi lp trnh t nh


ngha phc v cc nhu cu pht trin ring. D n trn c mt tp lp l Class1.
User Controls ni cho php ngi lp trnh t nh ngha ra cc iu khin
phc v mc ch cng vic ring pht trin trong d n. D n trn c mt
i tng iu khin t nh ngha l UserCo.
Designers ni to ra cc mi trng d liu (data environment) v cc bo
biu (Data report) phc v nhu cu x l, truy xut v in n d liu trong d n.
Khng ch dng li y, ng vi mi d n trn VB c th cn to ra nhng
i tng ring. V chng c th c qun l trn ca s Project Explorer.
ghi li mt d n, nhn thc n File | Save hoc nt Save

trn thanh

cng c hoc nhn t hp phm nng Ctrl + S. VB s ln lt yu cu nhp vo


tn tp tin ca cc i tng to c trn d n (vic t tn ny ch xut
hin ln ghi u tin). Tp tin chnh ca d n c phn m rng l .vbp v biu
tng nh sau:

Ch :
Do mi d n VB s bao gm rt nhiu tp tin, chng lun phi c i cng nhau. Do
vy ng vi mi d n mi hy to mt th mc v ghi li ton b nhng g lm c
v lin quan ln th mc ny. iu ny rt thun li khi phi di chuyn d n n
nhiu my, nhiu v tr khc nhau lm vic.

4. M d n c
m mt d n ra lm vic trn VB thao tc nh sau:
Nhn nt Open

trn thanh cng c, hoc nhn t hp phm tt Ctrl + O,

mt hp thoi xut hin chn d n cn m:

Trang 9

Lp trnh Visual Basic 6.0

th Existing c th tm n d n cn m v nhn nt Open


Hoc

th Recent c th chn d n t danh sch lm vic gn nht m.


Sau thao tc ny, d n cn lm vic s c m ra trn mi trng lm vic
ca VB.

Trang 10

Lp trnh Visual Basic 6.0

CHNG

LP TRNH VB CN BN
Chng ny tp trung gii thiu chi tit cc thnh phn lin quan n lp trnh
cn bn trn VB. l nhng iu kin ti thiu, cn thit nht hc bt k
mt ngn ng lp trnh no. C th hc vin s nm c:
-

Cc kiu d liu trong VB;

S dng bin v hng;

Cc cu trc lp trnh cn bn;

K thut chng trnh con;

Cch thc son tho chng trnh;

K thut bt li v x l li trn VB.

Trang 11

Lp trnh Visual Basic 6.0

1. Kiu d liu - bin v hng


1.1 Kiu d liu
Cng nh cc ngn ng lp trnh khc, VB u h tr cc kiu d liu c bn.
Di y gii thiu chi tit v tng kiu.
Boolean
Kiu l gc, tng t kiu Boolean trn Pascal. Kiu ny chim 2 byte b nh;
ch nhn mt trong 2 gi tr l: Yes No hoc True False hoc i khi th hin
di dng s 0 tng ng vi False, True tng ng vi bt k s no khc 0.
Khi lp trnh CSDL, kiu Boolean tng ng vi kiu Yes/No trong bng d
liu.
Byte
Kiu s nguyn dng trong phm vi t 0..255. Kiu ny chim 1 byte b
nh.
Integer
Kiu nguyn, c gi tr trong khong -32768...32767. Kiu ny chim 2 bytes
b nh.
Long
Kiu s nguyn di, c gi tr trong khong 2,147,483,648 .. 2,147,483,647.
Kiu ny chim 4 bytes b nh.
Single
Kiu s thc, c gi tr trong khong 1.401298E-45 to 3.402823E38. Chim 4
bytes b nh.
Double

Trang 12

Lp trnh Visual Basic 6.0

Kiu s thc c ln hn kiu Single, c gi tr trong khong


4.94065645841247E-324 to 1.79769313486232E308. Chim 8 bytes b nh.
Currency
Kiu tin t. Bn cht l kiu s, ln 8 bytes, c gi tr trong khong 922,337,203,685,477.5808 to 922,337,203,685,477.5807. c bit, kiu ny lun
c k hiu tin t i km.
String
Kiu xu k t. Kiu ny tng ng vi kiu String trong Pascal, tng ng
vi kiu Text trong VB. ln ti a 255 bytes tng ng vi kh nng x l
xu di 255 k t.
Variant
Variant l kiu d liu khng tng minh. Bin kiu ny c th nhn bt k
mt gi tr no c th. V d :
Dim a As Variant
a = 123
a = Nguyn Vn Ng

Hon ton khng c li.


Ngi ta thng khai bo bin kiu Variant trong nhng trng hp phi x
l bin mm do. Khi th bin nhn gi tr kiu ny, khi th nhn gi tr v x
l theo kiu d liu khc.
Object
Object l mt loi bin kiu Variant, chim dung lng nh 4 bytes, dng
tham chiu ti mt loi i tng (Object) no trong khi lp trnh. Tt nhin
mun khai bo bin Object kiu no, phi chc chn i tng c ng
k vo th vin tham chiu VB bi tnh nng Project | Reference.

Trang 13

Lp trnh Visual Basic 6.0

1.2 Bin
a. Bin khai bo bin
Bin (Variable) l thnh phn ca mt ngn ng lp trnh, gip x l d liu
mt cch linh hot v mm do.
Thng thng trong cc ngn ng lp trnh, mi bin khi tn ti phi c
nh kiu, tc l phi nhn mt kiu d liu xc nh. Tuy nhin trong VB th
khng, mi bin c th nh kiu (c khai bo trc khi s dng) hoc khng
nh kiu (khng khai bo vn s dng c). Trong trng hp ny bin s
t nhn kiu gi tr Variant.
Bin c th c khai bo bt k u trong phn vit lnh ca VB. Tt
nhin, bin c hiu lc nh khai bo ch bt u t sau li khai bo v m bo
phm vi hot ng nh qui nh. V bin trong VB hot ng rt mm do,
nn c nhiu cch khai bo bin nh:
V d 1: Khai bo bin i kiu Integer
Dim i As Integer

V d 2: Khai bo 2 bin i, j kiu Integer


Dim i, j As Integer

V d 3: Khai bo bin i kiu Integer, st kiu String di 15 k t


Dim i As Integer, st As String*15

V d 4: Khai bo bin i kiu Variant


Dim i As Variant
hoc
Dim i
Trang 14

Lp trnh Visual Basic 6.0

V d 5: Khai bo bin txt kiu Textbox


Dim txt As TextBox

V d 6: Khai bo mng kiu String*30 gm 46 phn t


Dim Hoten(45) As String * 45

V d 7: Khai bo bin mng 2 chiu A(i , j) trong : i = 0..3 v j = 0..4


Dim A(3, 4) As Integer

V d 8: Khai bo mng 3 chiu A(i, j, k) trong : i = 1..5; j = 4..9 v k = 3..5


Dim A(1 To 5,

4 To 9,

3 To 5) As Double

V d 9: Khai bo mt mng ng kiu Variant. Mng ng l mng khng


c nh chiu di.
Dim MyArray()

b. Phm vi bin
Nh chng ta bit, mi bin sau khi c khai bo n s nhn mt kiu d
liu v c mt phm vi hot ng, tc l li khai bo bin ch c tc dng trong
nhng vng c ch nh; ngoi vng ch nh bin s khng c tc dng,
nu c tc dng s theo ngha khc (bin cc b kiu Variant chng hn).
Bin cc b:
Trang 15

Lp trnh Visual Basic 6.0

Bin cc b c khai bo sau t kho Dim, n ch c tc dng trong mt


chng trnh con, cc b trong mt form hoc mt module no . Di y s
ch ra 3 trng hp bin cc b ny:
- Trong mt chng trnh con, nu n c khai bo trong chng trnh con
;
- Trong c mt Form, nu n c khai bo trong phn Decralations ca
Form ;
- Trong c mt Reports, nu n c khai bo trong phn Decralations ca
Report ;
- Trong c mt Modules, nu n c khai bo trong phn Decralations ca
Modules ;
* Bin ch c tc dng sau lnh khai bo Dim
Bin ton cc:
Bin ton cc c khai bo sau cm t kho Public, n c tc dng trong
ton b chng trnh ( bt k ch no c th vit lnh). Loi bin ny lun phi
c khai bo ti vng Decralations ca mt Module no .
V d:
Public Hoten(45) As String * 45

Trn mt d n VB khng c php khai bo trng tn bin ton cc. Tuy


nhin tn bin cc b vn c th trng tn bin ton cc, trong trng hp VB
s u tin s dng bin cc b trong phm vi ca n.

1.3 Hng
a. Khai bo hng
Hng (Constan) l i lng c gi tr xc nh v khng b thay i trong bt
k hon cnh no. Tng ng vi tng kiu d liu, s c nhng hng tng
ng.
Trang 16

Lp trnh Visual Basic 6.0

Khai bo hng s bi t kho Const. Sau y l cc v d v khai bo cc loi


hng:
V d 1: Hng a =5 (hng s)
Const a = 5

V d 2: Hng ngy = 24/12/2004 kiu Date (bao bi cp du thng #..#)


Const ngay = #24/12/2004#

V d 3: Hng xu k t (bao bi cp du nhy kp ..)


Const phongban = "Ti v"

V d 4: Hng kiu Lgc xc nh bi True hoc False


Const ok = True

b. Phm vi hng
Tng t nh bin, hng cng c nhng phm vi hot ng ca n. Hng
c khai bo trong th tc no, hoc cc b trong form, report hoc module no
s ch c tc dng trong phm vi .
Mun hng c phm vi ton cc, phi c khai bo sau t kho Public
Const, ti vng Decralations ca mt module no nh sau:
Public Const a = 12

Trang 17

Lp trnh Visual Basic 6.0

2. Cc cu trc lnh VB
Cc cu trc lnh l thnh phn c bn ca mi ngn ng lp trnh. Thng
thng cc ngn ng lp trnh u c cc cu trc lnh nh nhau: lnh x l iu
kin, lnh lp bit trc s vng lp, lnh lp khng bit trc s vng lp,.. Tuy
nhin cch th hin (c php) mi cu trc lnh c th khc nhau tu thuc vo
mi ngn ng lp trnh. Hn na, mi ngn ng cng c th c mt s im
khc bit, c trng trong mi cu trc lnh.
Cng ging nh nhiu ngn ng lp trnh hin i khc, cc cu trc lnh
trong VB u tun th cc nguyn tc:
- C cu trc: mi cu trc lnh u c t kho bt u v mt t kha bo
hiu kt thc;
- Thc hin tun t (loi tr trng hp c bit th tc Goto <Label>);
- C kh nng lng nhau;

2.1 Cu trc IF END IF


Cu trc ny thng gi l lnh la chn. Tc l nu mt iu kin no
xy ra s l g, hoc tri li c th lm g. Trong VB c php lnh ny nh sau:
If <iu kin> Then
<th tc 1>
[ Else
<th tc 2> ]
End If

ngha lnh trn l: nu <iu kin> = True th thc hin cc lnh trong
<th tc1>, tri li thc hin cc lnh trong <th tc 2>.
Phn trong cp du ngoc vung [..] c th c hoc khng c trong cu lnh,
tu thuc vo mc ch x l.
V d 1: Kim tra v tr li mt s l chn hay l?
If so Mod 2 = 0 Then
Msgbox L s chn !
Else
Msgbox L s l !
Trang 18

Lp trnh Visual Basic 6.0

End If

Cho bit thang (s nguyn) ri vo u nm (1..4), gia nm (5..8) hay cui


nm (912)?
If thang >=9 Then
Msgbox Cui nm
Else
If thang >=5 Then
Msgbox Gia nm
Else
Msgbox u nm
End If
End If

2.2 Cu trc SELECT CASE .. END SELECT


y l mt loi ca cu trc la chn. Thng thng hon ton c th s dng
If .. End If thc hin cc x l lin quan n kiu cu trc ny, nhng trong
nhng trng hp c bit, cu trc Select Case .. End Select th hin c s
tin dng vt tri. Trong VB c php lnh ny nh sau:
Select Case <biu thc>
Case <gi tr 1>
<th tc 1>
Case <gi tr 2>
<th tc 2>

Case <gi tr n>


<th tc n>
[Case Else
<th tc n+1>]
End Select

Trong : <Biu thc> lun tr v gi tr kiu v hng m c nh: s


nguyn, xu k t, kiu l gc,..
Vi cu trc ny, VB hot ng nh sau:
(1) Tnh gi tr ca biu thc
Trang 19

Lp trnh Visual Basic 6.0

(2) Kim tra <biu thc> = <gi tr 1> ?


- Nu ng thc hin <th tc 1> v kt thc lnh, thc hin lnh tip theo sau
t kho End Select.
- Nu sai, thc hin tip vic so snh <biu thc> = <gi tr i> tip theo v x
l tng t qui trnh nu trn.
(3) Trong trng hp <biu thc> <> <gi tr i>, i=1..n khi c 2 kh
nng:
- Nu c tu chn Case Else th VB s thc hin <th tc n+1>;
- Nu khng c tu chn Case Else, VB s khng thc hin bt k th tc no
lit k trong vng Select .. End Select c m chuyn ti thc hin lnh tip
theo sau t kho End Select.
Xt v d sau: Kim tra mt s nguyn (so) v tr v tn ting Anh thng
tng ng vi s nguyn (bin thang) , v d:
1

- Janualy

- February

12

- December

>12 - Khng xc nh
Nu dng lnh If hon ton c th p ng c bi ton ny, thay vo s
l mt tp hp 12 lnh If .. Else .. End If nh sau:
If so = 1 Then
thang = "Janualy"
Else
If so = 2 Then
thang = "February"
Else
If so = 3 Then
thang = "March"
Else
If so = 4 Then
thang = "April"
Else
If so = 5 Then
thang = "May"
Trang 20

Lp trnh Visual Basic 6.0

Else
If so = 6 Then
thang = "June"
Else
If so = 7 Then
thang = "July"
Else
If so = 8 Then
thang = "August"
Else
If so = 9 Then
thang = "September"
Else
If so = 10 Then
thang = "October"
Else
If so = 11 Then
thang = "November"
Else
If so = 12 Then
thang = "December"
Else
thang = "Khng xc nh"
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Tuy nhin khi s dng Select Case .. End Select, cu trc s gn gng v
sng sa hn nhiu. C th nh sau:
Select Case so
Case 1
thang =
Case 2
thang =
Case 3
thang =
Case 4
thang =
Case 5
thang =
Case 6
thang =

"Janualy"
"February"
"March"
"April"
"May"
"June"
Trang 21

Lp trnh Visual Basic 6.0

Case 7
thang
Case 8
thang
Case 9
thang
Case 10
thang
Case 11
thang
Case 12
thang
Case Else
thang
End Select

= "July"
= "August"
= "September"
= "October"
= "November"
= "December"
= "Khng xc nh"

2.3 Cu trc FOR NEXT


For Next l mt cu trc lp bit trc s ln lp trong VB, tuy nhin trong
nhng tnh hung c bit, vn c th s dng cu trc ny nh cu trc khng
bit trc c s ln lp.
C php cu trc ForNext nh sau:
For <bin chy> = <gi tr 1> To <gi tr 2> [Step <n>]
<th tc>
[Exit For]
Next

Trong :
- <bin chy> l bin kiu v hng m c, hay dng nht l bin kiu
nguyn;
- <gi tr 1>, <gi tr 2> l cc gi tr m bin chy s nhn v thc hin
dch chuyn sau mi ln lp. C th dch chuyn i 1 n v, c th dch
chuyn i nhiu n v mt ln, c th dch chuyn tin, cng c th dch
chuyn li- tt c iu ny tu thuc vo vic c hay khng c tu chn
[Step <n>];

Trang 22

Lp trnh Visual Basic 6.0

- Nu c tu chn [Step <n>] bin chy s dch n n v sau mi ln lp.


Khi , nu n>0 d dch tin, ngc li s dch li;
- Mi ln lp, VB s thc hin <th tc> mt ln;
- Trong trng hp c bit nu gp phi lnh Exit For trong vng lp, ngay
lp tc thot khi lnh lp v thc hin lnh tip ngay sau t kho Next.
Chnh Exit For lm mt i tnh lp bit trc c s ln lp ca loi
lnh ny.
Tip theo l cc v d:
V d 1: Tnh tng cc s t 1 n 50, gi tr c lu vo bin tong.
Dim i As Byte
Dim tong As Integer
tong = 0
For i = 1 To 50
tong = tong +i
Next
Msgbox tong

V d 2: Tnh tng cc s chia ht cho 3 t 1 n 50, gi tr c lu vo bin


tong.
Dim i As Byte
Dim tong As Integer
tong = 0
For i = 3 To 50 Step 3
tong = tong +i
Next
Msgbox tong

Lnh For trong v d ny ch khc lnh For v d 1 ch Step 3. V <gi tr


1> = 3 l s chia ht cho 3, nn tt c cc gi tr i cn li s chia ht cho 3 (v i =
i +3).

V d 3: Kim tra mt s nguyn (>2) c phi l nguyn t hay khng?


Trang 23

Lp trnh Visual Basic 6.0

Dim so As Integer
Dim uoc As Integer
Dim nguyento As Boolean
nguyento = True
For uoc = 2 To Int(so / 2)
If so Mod uoc = 0 Then
nguyento = False
Exit For
End If
Next
If nguyento Then
Msgbox "l nguyn t"
Else
Msgbox "khng l nguyn t !"
End If

Gii thut n gin xc nh mt s c phi nguyn t hay khng l: xc


nh xem tt c cc s (uoc) c th tr thnh c ca s (so) cn kim tra. Nu
tm thy mt c thc s u tin, kt lun ngay khng phi s nguyn t bi
lnh nguyento = False v thot khi vng lp bng lnh Exit For; trong trng
hp xt ton b cc c c th m khng tm c mt s no l c thc s, kt
lun y l s nguyn t (bin nguyento = True nh gi tr ban u)

2.4 Cu trc WHILE WEND


While Wend l mt cu trc lp khng bit trc s ln lp trong VB.C
php cu trc WhileWend nh sau (Wend - vit tt ca cm t While End):
While <iu kin>
<th tc>
Wend

Trong :
- While, Wend l cc t kho ca lnh lp;
- Nu <iu kin> = True, cc lnh trong <th tc> s c thc hin. Thc
hin xong li quay ln dng lnh While kim tra tip <iu kin>;
Trang 24

Lp trnh Visual Basic 6.0

- Nu <iu kin> = False, s thot khi vng lp v thc hin lnh tip
theo t kho Wend.
Ch : Lun phi chng minh c rng, sau mt s hu hn ln thc hin
<th tc>, gi tr ca <biu thc> phi l False thot khi vng lp. Trong
trng hp khng th thot khi vng lp, c ngha ngi lp trnh mc phi
li lp v hn. C th dn n chng trnh b treo.
Cc v d:
V d 1: Tnh tng cc s chia ht cho 3 trong khong t 1 n 50
Dim i As Byte
Dim tong As Integer
tong = 0
i = 3
While i <= 50
tong = tong +i
i = i + 3
Wend
Msgbox tong

V d 2: V d ny th hin vng lp v hn. L do c th l ch quan, rt n


gin v g nhm! Hy ch ra dng lnh g nhm v thc hin sa cho ng.
Dim i As Byte
Dim tong As Integer
tong = 0
i = 1
While i <= 50
If i Mod 3 = 0 Then
tong = tong + i
End If
j = i + 1
Wend
Msgbox tong

Trang 25

Lp trnh Visual Basic 6.0

3. Chng trnh con


Chng trnh con (CTC) l mt n v m lnh VB, n c th cha tp hp
cc cu lnh nhm thao tc, tnh ton hoc iu khin mc ch hoc d liu no
. Trong VB c 2 loi CTC:
- CTC dng th tc, c khai bo bi t kho Sub;
- CTC dng hm, c khai bo bi t kho Function.
V bn cht, 2 loi CTC trn u nh nhau: khai bo, tham s v truyn tham
s. Tuy nhin, im khc nhau c bn l:
- Function lun tr v mt gi tr kiu v hng chun, v d: hm Date() - tr
v gi tr ngy hin ti kiu Date. Trong VB sn c rt nhiu cc hm tnh
ton, chng c gi l cc build-in function. Hn na, ngi dng hon
ton c th to ra cc hm s dng cho cc mc ch ring loi hm ny
gi l user-define function;
- Cn Sub th khng, n ch thc hin mt s cc cng vic. Tt nhin nhng
cng vic ny hon ton c th lm thay i d liu theo mong mun trong
chng trnh. Cng nh Function, VB sn c mt th vin cc th tc; hn
na ngi dng cng c th t to thm nhng th tc mi phc v vic x
l d liu theo mc ch ring. c bit, VB cn nh ngha th tc p ng
s kin. Th tc ny s c t ng gi ra khi s kin p ng b nh
hng. Chng ta s tr li ni dung ny qua cc v d lp trnh VB.
Tu tng tnh hung c th s la chn s dng Function hoc Sub.

3.1 Chng trnh con dng hm


C php
Function <tn hm>([<danh sch cc tham s>]) As <kiu DL hm>
<th tc>
End Function

Trong :
Trang 26

Lp trnh Visual Basic 6.0

- Function, End Function l cc t kho bt buc khai bo cu trc mt CTC


dng hm;
- <tn hm> l tn gi hm nh khai bo. Tn khng c cha du cch
(space) v cc k t c bit;
- <danh sch cc tham s> - danh sch cc tham s cn thit cho hm. C
hay khng c danh sch ny tu thuc vo hm cn nh ngha;
- <kiu DL hm> - kiu d liu m hm s tr li. Phn ny bt buc phi
c khai bo vi mi hm;
- <th tc> - thn CTC. Trong cu lnh <tn hm> = <biu thc> phi
xut hin t nht mt ln trong th tc. Cu lnh ny c tc dng gn gi tr
cho hm.
Nu khng c t kho Public trc Function, hm ch c tc dng cc b:
trong mt module, trong mt report hoc trong mt form. Khi c t kho Public
trc Function, hm s c tc dng ton cc. Tc l c th s dng bt k ni
no trn tp VB . Tt nhin, tt c nhng g khai bo l Public phi c khai
bo trong phn Decralations ca mt Module no .
Cc v d:
V d 1: hm tnh tng 2 s
Function Tong2So(a, b As Double) As Double
Tong2So = a + b
End Function

V d 2: hm kim tra mt s c phi l nguyn t hay khng?


Function laNguyenTo(so As Integer) As Boolean
Dim uoc As Integer
laNguyenTo = True
If so > 2 Then
For uoc = 2 To Int(Sqr(so))
If so Mod uoc = 0 Then
laNguyenTo = False
Exit For
Trang 27

Lp trnh Visual Basic 6.0

End If
Next
End If
End Function

V d trn c s dng n:
- hm Int(number) hm ly phn nguyn ca mt s;
- hm Sqr(number) hm ly cn bc hai mt s

V d 3: hm tch tn trong xu h v tn.


y l mt bi ton gp phi rt nhiu trong thc t. C th bi ton gii quyt
vn sau:
Nu bit h tn l Nguyn Sn Hi, hm s tch ra c tn l Hi. Ton b
m lnh hm nh sau:
Function GetTen(hoten As String) As String
Dim pos As Integer
pos = 1
If InStr(pos, Trim(hoten), " ") = 0 Then
GetTen = hoten
Exit Function
End If
While InStr(pos + 1, Trim(hoten), " ") > 0
pos = InStr(pos + 1, Trim(ten), " ")
Wend
GetTen = Mid(hoten, pos)
End Function

V d 4: Hm dng so snh 2 xu kiu ch TCVN3 chng ti a ra di y


l mt tham kho rt tt. Trong Word, VB cng nh cc bng d liu ting Vit
c du trn my tnh, vic sp xp xu k t l mt bi ton m ngi Vit phi
gii quyt. V d, di y l mt danh sch trn Word:
STT
1

Tn
Quang
Trang 28

Lp trnh Visual Basic 6.0

on

Bng

Bang

An

Sau khi s dng tnh nng sp xp (Sort) ca Word theo ct Tn theo th t


tng dn, c danh sch kt qu nh sau:
STT

Tn

on

An

Bng

Bang

Quang

M danh sch sp xp ng phi l:


STT

Tn

An

Bang

Trang 29

Lp trnh Visual Basic 6.0

Bng

on

Quang

Hm Mahoa di y s gip qui i mt xu ting Vit chun TCVN3 (b


phng ABC) v dng khng du. Mun sp xp hay so snh v th cc xu, hy
so snh cc xu khng du c chuyn i bi hm Mahoa ny.
Private
Dim
Dim
Dim

Function MahoaTCVN3(Ckt As String)


kq, kti As String
vt1, vt2, i As Integer
Cgoc1, Cma1 As String, Cgoc2, xd, Cma2 As String

Cgoc1 =
"aeiou
y"
Cma1 = "abadafaparazblbnbpcbcdcl1b1c1d1e1f1a"
Cgoc2 =
"AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxY
yZz"
Cma2 =
"aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbeb
fbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcccbcccdcecfcgchcicjckc
lcmcn"
kq = ""
xd = ""
For i = 1 To Len(Ckt)
kti = Mid(Ckt, i, 1)
vt1 = InStr(Cgoc1, kti)
If vt1 <> 0 Then
kq = kq & Mid(Cma1, 1 + ((vt1 - 1) \ 6) * 2, 2)
xd = xd & Mid(Cma1, 25 + ((4 + vt1) Mod 6) * 2, 2)
Else
vt2 = InStr(Cgoc2, kti)
If vt2 <> 0 Then
kq = kq & Mid(Cma2, (vt2) * 2 - 1, 2)
Else
kq = kq + kti
End If
End If
Next i
MahoaTCVN3 = kq & xd
Trang 30

Lp trnh Visual Basic 6.0

End Function
Function Mahoa(Ckt As String) As String
Dim vt1 As Integer
Dim kq, Ctam As String
Ckt = Ckt & " "
kq = ""
vt1 = InStr(Ckt, " ")
Do While vt1 <> 0
Ctam = Trim(Left(Ckt, vt1 - 1))
Ckt = Right(Ckt, Len(Ckt) - vt1)
kq = MahoaTCVN3(Ctam) & " " & kq
vt1 = InStr(Ckt, " ")
Loop
Mahoa = kq
End Function

3.2 Chng trnh con dng th tc


C php
[Public] [Private] Sub <tn CTC>([<danh sch cc tham s>])
<th tc>
End Sub

Trong :
- Sub, End Sub l cc t kho bt buc khai bo cu trc mt CTC dng th
tc;
- <tn CTC> l tn gi th tc nh khai bo. Tn khng c cha du cch
(space) v cc k t c bit;
- <danh sch cc tham s> - danh sch cc tham s cn thit cho th tc. C
hay khng c danh sch ny tu thuc vo th tc cn to
- <th tc> - thn CTC.
Nu khng c t kho Public trc Sub, th tc ch c tc dng cc b:
trong mt module, trong mt report hoc trong mt form. Khi c t kho Public
Trang 31

Lp trnh Visual Basic 6.0

trc Sub, th tc s c tc dng ton cc. Tc l c th s dng bt k ni no


trn tp VB . Tt nhin, tt c nhng g khai bo l Public phi c khai bo
trong phn Decralations ca mt Module no .
Cc v d:
V d 1: Th tc tnh tng hai s
Sub tong2so(a, b As Double)
tong = a + b
ch : tong- l bin c khai bo ton cc
End Sub

V d 2: Cng l tnh tng, nhng th tc sau y khng c ngha g!


Sub tong2so(a, b As Double)
Dim tong As Double
tong = a + b
ch : tong- l bin c khai bo ton cc
End Sub

V sao? V bin tong c khai bo cc b trong CTC tong2so, nn khi CTC


ny kt thc, bin tong cng b gii thot khi b nh lun. Khng gy nh
hng g n d liu cng nh th hin ca chng trnh.
V d 3: CTC gii phng trnh bc 2 vi 3 tham s u vo l a, b v c (a
<>0)
Sub GPTB2(a, b, c As Double)
Dim delta As Double
Dim x1, x2 As Double
delta = b * b - 4 * a * c
If delta < 0 Then
MsgBox "Phng trnh v nghim !"
Else
If delta = 0 Then
x1 = -b / (2 * a)
MsgBox "Nghim kp x1 = x2 = " + Trim(Str(x1))
Else
x1 = (-b + Sqr(delta)) / (2 * a)
x2 = (-b - Sqr(delta)) / (2 * a)
Trang 32

Lp trnh Visual Basic 6.0

MsgBox "2 nghiem x1=" + Trim(Str(x1)) + ", " _


+ "x2=" + Trim(Str(x2))
End If
End If
End Sub

V d 4: CTC hin th dng ch cho mng (mt CTC khng c tham s)


Sub Hello()
Msgbox "Cho cc bn !"
End Sub

3.3 S dng chng trnh con


a. S dng th tc
Lnh Call gi mt th tc ra lm vic. C php nh sau:
Call <Tn CTC> (<Danh sch cc tham tr>)

Trong :
- Call l t kho - lnh gi v thi hnh mt CTC ;
- <Tn CTC> l tn ca CTC cn gi ra thi hnh;
- <Danh sch cc tham tr> - l danh sch cc gi tr (nu cn) truyn vo
cc tham s tng ng ca CTC. Ch : kiu d liu ca cc tham tr v cc
tham s phi tng ng nhau. Nu tham tr c truyn gin tip qua tn mt
bin th bin phi c khai bo trc v c nh kiu ht nh kiu ca
tham s cn truyn vo.
V d 1: Gi CTC gii phng trnh bc 2 (vi 3 tham s l A, B, C kiu thc)
lp trnh t trc.
Call GPTB2(3, 4, 1)

Hoc truyn tham s gin tip qua tn cc bin


Trang 33

Lp trnh Visual Basic 6.0

Dim
a =
b =
c =

a, b, c As Double
3
4
1

Call GPTB2(a, b, c)

V d 2: Gi CTC tnh tng 2 s vi 2 s cho trc l 7 v 8


Call

tong2so(7, 8)

Hoc gi gin tip qua cc tn bin


Dim a, b As Double
a =7
b = 8
Call tong2so(a, b)

c bit, vi nhng CTC dng th tc khng c tham s u vo c th b qua


lnh Call m g vo trc tip tn CTC khi s dng.
V d 3: Gi CTC Hello trn
Gi theo kiu chnh tc
Call Hello
B qua t kho Call v CTC ny khng c tham s
Hello

b. S dng hm
Sau khi to c cc hm, vic s dng chng nh s dng cc hm c sn
ca VB. Ch : khc vi CTC dng th tc, tn CTC hm phi c gi thng
qua mt biu thc (v hm lun tr v mt gi tr c xc nh kiu cho trc).
V d 1: gn kt qu tng ca 2 s vo mt Textbox c tn Text1, s
dng hm tong2so trn. Khi m lnh s vit nh sau:
Trang 34

Lp trnh Visual Basic 6.0

Text1.Text = tong2so(5, 7)

Hoc cch gi s dng tn bin lm tham tr cho CTC


Dim a, b As Double
a = 5
b = 7
Text1.Text = tong2so(a, b)

4. Son tho chng trnh v x l li


4.1 Son tho chng trnh
Son tho chng trnh bao gm tp hp cc cng vic v thit k, gi t cc
chc nng ca ng dng. Trong qui trnh xy dng phn mm, cng vic ny
thng ca lp trnh vin (Coder). C 2 phn vic chnh trong son tho chng
trnh l thit k giao din v gi t th tc.
Thit k giao din: l vic s dng cc iu khin (Controls), cc i tng
(Objects) cng cc k nng, k thut cn thit to ra cc giao din s dng
phn mm. VB l ngn ng lp trnh trc quan, nn vic to ra cc giao din s
dng cng c thc hin mt cch trc quan, d dng hu ht bng cch s
dng con chut. V d: thit k giao din nh sau:

Trang 35

Lp trnh Visual Basic 6.0

Label

DriveListBox
DirListBox
FileListbox
Combobox

Cch lm nh sau:
Bc 1: Xc nh ng cc iu khin cn s dng cho cc i tng cn
thit k trn giao din (xem minh ha cc loi i tng hnh trn);
Bc 2: Dng chut a cc iu khin t thanh cng c ToolBox ln Form
cn thit k. Vic ny thc hin n gin nh v mt khi hnh.

Thanh cng c Toolbox c cha cc iu


khin cn thit cho vic thit k giao
din.

Nu khng thy xut hin thanh cng c, c th gi chng ra bng lnh View |
Toolbox
Bc 3: Thit lp cc thuc tnh ph hp cho cc i tng trn giao din
thng qua ca s Properties:
Trang 36

Lp trnh Visual Basic 6.0

Ca s Properties ni c th thit lp
trc tip cc thuc tnh cho iu khin.
Ct bn tri l tn cc thuc tnh; ct
bn phi l gi tr cc thuc tnh tng
ng m c th thay i c.

Nu khng thy xut hin ca s Properties, c th gi chng ra bng lnh


View | Properties Windows hoc nhn phm chc nng F4.
Gi t th tc: khc vi cc ngn ng lp trnh trn DOS nh Pascal hoc
C. Vic lp trnh (vit m lnh) trn VB a dng hn, c bit vi cc iu khin
c thit k trn form, vic lp trnh a phn l vit cc th tc p ng cc s
kin (chng ta cn quay li phn ny nhng phn tip theo).
Mi cu lnh VB c vit trn mt dng (kt thc bi k t Enter). Trong
trng hp cc cu lnh qu di, c th vit trn nhiu dng vn bn nhng phi
c ni vi nhau bi k hiu ghp dng lnh. Di y l mt dng lnh:
Msgbox Cho cc bn, ti tn l Nam, mong c lm quen!

Vn lnh , c th vit trn nhiu dng, phi s dng k t ghp dng lnh
nh sau:
Msgbox Cho cc bn, ti tn l Nam, _
& mong c lm quen!

K t ghp tip dng lnh tip theo (mt du


cch, tip theo l du gch di).

thi hnh mt d n VB, nhn phm F5 hoc nhn nt Start trn thanh
ToolBar.
Trang 37

Lp trnh Visual Basic 6.0

ngng thi hnh d n VB, nhn nt End.

4.2 Li v x l li
Li l hin tng rt bnh thng trong lp trnh. Khi lp trnh vin a ra
nhng cu lnh khng hp l v c php, v x l d liu rt c th gy ra li.
C rt nhiu nguyn nhn gy ra li; cc nguyn nhn ny c th c lng
trc hoc khng c lng trc. Tuy nhin, khi chng trnh c ng gi
v chuyn giao ti khch hng s dng th khng c php tn ti li phn
mm. K thut x l li bao gm cc k nng pht hin v x l cc tnh hung
khi chng trnh gy li lm sao m bo chng trnh gim ti a li.
a. X l li
L vic x l khi ang lp trnh gp phi li. Thng thng khi chy th
chng trnh trong lc ang xy dng phn mm nu gp phi li, s xut hin
hp thoi thng bo li c dng:

Thng thng mt hp thoi thng bo li gm 2 thnh phn:


- Thnh phn bo li bao gm:
+ M s li - Mi li m VB c th kim tra c u c mt m s, c
hin th dng thng bo: Run-time error 'm s li': V d trn l : Run-time
error '11':
+ Tn li. v d trn tn li l: Division by zero - li sai kiu d liu.
- Thnh phn x l li gm 2 nt lnh:
Trang 38

Lp trnh Visual Basic 6.0

+ Nt

- dng ngay chng trnh, chuyn v ch Design -

thit k bnh thng;


+ Nt

- dng chng trnh chuyn v ch Break - sa li

trc tip. Khi cu lnh li s c t bi mu nn vng cho php ngi lp


trnh c th sa c m chng trnh:

Khi dch chut ln mt bin no , gi tr bin s c hin th di dng


Tool tip.

Trang 39

Lp trnh Visual Basic 6.0

Hnh trn khi di chut ln bin b, gi tr bin b xut hin di dng Tool tip
(gi tr b = 0).
Sau khi chn nt Debug, lp trnh vin hon ton c th thc hin sa m lnh
trong chng trnh. Tuy nhin, trong mt s trng hp khi sa m lnh VB s
hi:

iu ny c ngha: vic sa i m lnh va ri, VB yu cu phi tr v ch


thit k bnh thng nu nhn Ok; tri li nhn Cancel- vic thay i m lnh
s khng c chp nhn.
Sau khi thc hin sa m lnh, c th yu cu VB thc thi tip chng trnh.
Vic thc thi s c tin hnh tip tc ti v tr vt sng ang tr. Hoc c th
dng chut dch chuyn vt sng v lnh cn thc thi (ch trong cng mt
CTC). thc thi tip nhn phm F5 hoc nt Continue

Trang 40

trn thanh cng c;

Lp trnh Visual Basic 6.0

hoc nhn nt Stop

nu mun dng vic sa m lnh trong ch Break,

chuyn v ch Design.

Ca s Immediate
L cng c hu hiu h tr vic d li bi: hp thoi ny cho php thc thi
tng cu lnh trn ch hi thoi.

Gi s v d trn sau khi g lnh:


? b

Xem gi tr ca bin b. Sau khi nhn Enter s nhn c kt qu


0
Trang 41

Lp trnh Visual Basic 6.0

Hoc nu g:
? a / b

S nhn c thng bo li:

V b = 0.
b. By li
Mc 4.2.1 trnh by nhng k nng x l li khi ang son tho chng
trnh. Cc thao tc ch c thc hin trong lc ang xy dng phn mm
(VB IDE), do ngi lp trnh x l. Khi phn mm c ng gi chuyn
n ngi dng nu gp li, n s hin th mt hp tthoi thng bo li (Error
Dialog) cho bit l do vn tt v li. Sau khi nhn OK, chng trnh s ngng
hot ng, b thot.
x l li trong tnh hung ny, c 2 phng php by li m chng ti a
ra di y tham kho; hy vng lp trnh vin s chn la c tnh hung
ph hp s dng mt trong cc phng php ny m bo chng trnh vit
ra chy c ng theo mc ch.
S dng lnh On Error Resume Next
Khi t ch tr i, nu chng trnh gp li, n s b qua (ignore) hon
ton. im ny tin ch gip chng trnh EXE ca ta trnh gp li thot khi
t ngt nh phn tch trn. Nhng n cng bt li l khi khch hng cho hay
h gp nhng trng hp l, khng gii thch c (v li b b qua m khng
ai ), th ta cng b lun, c th khng bit bt u t u g li. Do ,
trong lc g li ta khng nn dng n, nhng trc khi giao cho khch hng nn
cn nhc k c nn s dng trong cc on m lnh hay khng.
Trang 42

Lp trnh Visual Basic 6.0

V d s dng On Error Resume Next b qua li:


Function A_chia_B(a, b As Double) As Double
On Error Resume Next
A_chia_B = Null
A_chia_B = a / b
End Function

Trong CTC trn, nu b = 0, lnh A_chia_B = a / b s gp phi li. Do c li


khai bo On Error Resume Next nn lnh li ny c b qua (khng thc hin).
Tc l gi tr hm l Null.
S dng cu lnh On Error Goto <nhn>
Khi mt th tc c t cu lnh ny, nu gp phi mt li no , VB s
chuyn thng vic thc hin n <nhn> ch nh. Thng thng cc lnh
tip theo ca <nhn> l x l cc tnh hung li.
Sau y l v d s dng phong php On Error Goto <nhn> by li:
Function A_chia_B(a, b As Double) As Double
On Error GoTo Loi
A_chia_B = a / b
Msgbox Ok!
Loi:
If Err.Number = 11 Then
MsgBox "Li chia cho 0 !"
End If
End Function

Trong CTC trn, trong trng hp b = 0 cu lnh A_chia_B = a / b s gy ra


li. Theo nh khai bo On Error Goto Loi ban u, VB s b qua tt c cc
lnh sau lnh li v chuyn thng ti cc lnh sau nhn Loi: y l lnh kim
tra li. Nu M li = 11 kt lun ngay mt thng bo li ting Vit. Li chia
cho 0 !
Phng php ny cng c dng ph bin c trong qu trnh xy dng
pht hin li, cng nh trong phn mm ng gi gi n khch hng. Mi
Trang 43

Lp trnh Visual Basic 6.0

khi gp li s c thng bo nguyn nhn gy ra li bng ting Vit (chng


hn) m vn khng nh hng n hot ng khc ca phn mm.
Trong phng php ny, ngi lp trnh nn khai thc ti a i tng Err i tng mang nhng thng tin v li ang xy ra, c th:
Hnh ng

Kt qu

Err.Description

M t tn li

Err.Number

a ra m li

Err.Clear

Xo b cc gi tr ca i tng Err

Trang 44

Lp trnh Visual Basic 6.0

Bi tp chng 1

Bi tp 1:
Xy dng th tc tm c s chung ln nht ca 2 s nguyn a v b.
Bi tp 2:
Xy dng th tc tm bi s chung nh nht nht ca ca 2 s nguyn a v b.
Bi tp 3:
Xy dng th tc thng k tng s tng loi k t c trong mt xu. V d c
xu ban u cong hoa xa hoi chu nghia viet nam. Kt qu th tc ny cho bit:
Tng s k t

a:
c:
e:
g:
h:
i:
m:
n:
o:
v:

3
1
1
2
4
1
1
3
3
1

Bi tp 4:
Xy dng hm tm s cc i trong bn s nguyn a, b, c v d.
Bi tp 5:
Xy dng hm o v tr k t ca mt xu. V d: xu u vo c dng
abcd, kt qu hm ny s tr v xu ngc li l dcba.
Bi tp 6:
Xy dng th tc gii phng trnh Ax2 + Bx + C = 0. Trong A, B, C l cc
tham s u vo, x l nghim cn tm.
Bi tp 7:
Xy dng hm tnh tng cc s nguyn trong mt khong s nguyn [a, b] cho
trc.
Trang 45

Lp trnh Visual Basic 6.0

Bi tp 8:
Xy dng hm tch t u tin ca mt xu k t. V d c mt xu nh sau:
Vit Nam, hm ny s tch ra c xu Vit l t u tin trong xu .

Trang 46

Lp trnh Visual Basic 6.0

CHNG

S DNG IU KHIN

Mt th mnh ca ngn ng VB l lp trnh trc quan thng qua cc iu


khin (Controls), nhiu khi ngi ta cn gi l cc i tng (Objects). y l s
khc bit cn bn gia lp trnh trc quan (trn windows) vi cch thc lp trnh
trn DOS (Passcal, C, C++) trc y. iu khin l g? Lm vic trn cc lp
iu khin nh th no? L cc vn s c trnh by k trong chng ny.

Trang 47

Lp trnh Visual Basic 6.0

1. S lc v iu khin
Controls l nhng i tng c dng thit k giao din trong nhng
ngn ng lp trnh trc quan. Trong VB, cc i tng Controls c t trn
thanh cng c ToolBox m lp trnh vin c th ly t y ra thit k ln cc
mu giao din (Forms) hoc bo co (Report).
Mi Control c xem nh l mt i tng (Object), c 3 thnh phn c bn
sau:

1.1. Tp thuc tnh


Thuc tnh (Properties) l cc thnh phn m t tnh cht mt i tng. V
d: nu coi mt chic my vi tnh l mt i tng th tp thuc tnh ca i
tng ny c th l:
Tn thuc tnh
Loi b vi x l:
Tc CPU:
B nh trong:
B nh ngoi:
Kch c mn hnh:
Mu mn hnh:

Gi tr
Intel
3 Gh
512 Mb
40 Gb
15
Black
..

Mi thuc tnh lun c mt gi tr xc nh. V d trn th: thuc tnh Loi b


vi x l c gi tr l Intel. i vi mt my tnh khc, gi tr thuc tnh ny c
th l ADM; hoc thuc tnh B nh trong l 521 Mb nhng c th mt my tnh
khc gi tr thuc tnh ny l 256 Mb.
C 2 cch thit lp gi tr thuc tnh cho mt i tng:
Thit lp trc tip qua ca s Properties
Cch ny ch thc hin ch thit k giao din (Design view). Mun thit
lp thuc tnh cho i tng no, hy chn i tng bng chut ri kch hot

Trang 48

Lp trnh Visual Basic 6.0

ca s Properties (bng cch nhn F4 hoc thc n View | Properties


Windows)
i tng ang chn

Ca s trn hin th v cho php thit lp cc thuc tnh ca i tng Label1,


i tng ny thuc iu khin Lablel. Danh sch bn tri ca s hin th tn cc
thuc tnh, danh sch bn phi ca s hin th v cho php thit lp gi tr cc
thuc tnh tng ng bn tri. Thng thng, mi khi thit lp xong gi tr mt
thuc tnh trn hp thoi Properties, c th nhn thy ngay kt qu trn mn hnh
thit k.
Thuc tnh Name
Thuc tnh Name cho bit tn gi ca i tng. Gi tr thuc tnh ny khng
c cha du cch. Trn mt ca s thit k giao din gi tr thuc tnh Name
ca mi i tng l duy nht (khng c t trng nhau).
Vic thit lp thuc tnh Name trong khi lp trnh l rt cn thit v quan trng
v mi khi lp trnh iu khin i tng no phi s dng thuc tnh Name
tham chiu.
V d: Kim tra tui (txtTuoi) xem ngi l gi, tr hay l trung nin.
Trang 49

Lp trnh Visual Basic 6.0

If Val(txtTuoi.Text) < 30 Then


Msgbox Thanh - thiu nin !
Else
If Val(txtTuoi.Text) < 60 Then
Msgbox Trung nin !
Else
Msgbox Cao nin !
End If
End If

v d trn, mun tham chiu n gi tr ca txtTuoi phi dng n thuc


tnh Text. Khi phi vit biu thc thng qua thuc tnh Name ca iu khin
txtTuoi nh sau: txtTuoi.Text
Mo : Cch t tn cho cc i tng
Theo kinh nghim lp trnh v cch t tn cc i tng, thng t theo qui tc sau:

2 hoc 3 k t u tin ca tn i tng vit ch in thng, gi tr l t vit tt ca


kiu i tng. V d:
Loi i tng

T vit tt

Loi i tng

T vit tt

Textbox

txt

Listbox

lst

Label

lbl

Combobox

cbo

Command

cmd

Line

ln

Check box

chk

Treeview

tv

Form

frm

Listview

lv

Picture

pct

Optional

opt

Frame

fme

Cc k t cn li ca tn i tng t theo t gi nh, c th bng ting Vit hoc


bng ting Anh ty theo s thch ca ngi lp trnh cho d nh. Di y l mt s v
d v t tn thuc tnh bn c tham kho:
M t thuc tnh

Tn thuc tnh

Thuc lp Control

H tn

txtHoten

Textbox

Trang 50

Lp trnh Visual Basic 6.0


Ngy sinh

txtNgaysinh

Textbox

Gii tnh

chkGioitinh

Checkbox

a ch

txtDiachi

Textbox

nh

pctChandung

Picture

Thit lp thuc tnh bng m lnh


Phng php ny dng thit lp thuc tnh cho cc i tng khi chng trnh
ang chy (Running time), cch thit lp nh sau:
<tn i tng>.<tn thuc tinh> = <gi tr>
V d:
thit lp gi tr cho Text1
Text1.Text = "Nguyn Trng Cng"
thit lp phng ch
Text1.Font = "Aial"
thit lp mu ch mu xanh
Text1.ForeColor = &HC00000
thit lp mu nn mu vng
Text1.BackColor = &H80FFFF

Mt s thuc tnh hay gp


Di y l mt s thuc tnh hay s dng khi lm vic vi cc i tng.
Mi thuc tnh di y khng phi bt k thuc tnh no cng c, ch a ra
y tham kho v lm vic c khi gp phi.
Thuc tnh Caption
hin th vn bn (Text) trn i tng. Hu ht cc i tng c vn bn i
km u c thuc tnh ny nh: Label, Checkbox, Frame, Command,.. c bit
Caption ca i tng Form l dng ch lm tiu cho ca s. i tng
Textbox tuy c vn bn i km nhng khng c thuc tnh Caption, thay vo
l thuc tnh Text.
Trang 51

Lp trnh Visual Basic 6.0

Thuc tnh Font


hin th phng ch trn i tng. Thuc tnh ny thng xut hin vi
nhng i tng c ch (Text) i km. Mt trong nhng phng ch h thng
ting Vit s dng quen thuc l Ms Sans serife hoc Microsoft Sans serife .
Thuc tnh Alignment
Canh l vn bn ca i tng. Thng xut hin nhng i tng c vn
bn i km. C 3 gi tr c th thit lp l:
Gi tr

Tc dng

0 Left Justify

Canh l tri

1 Right Justify

Canh l phi

2 Center

Canh l vo gia

Thuc tnh Appearance


Chn cch thc hin th i tng theo kiu no? C 2 cch thc chn la:
Gi tr

Tc dng

0 Flat

Kiu mnh, phng

1 3D

Kiu 3 chiu, c g ni

Thuc tnh Backcolor


Thit lp mu nn hin th trn i tng. C a mu sc chn la trn
bng mu khi nhn chut ln thuc tnh ny:

Thuc tnh ForeColor


Trang 52

Lp trnh Visual Basic 6.0

Thit lp mu ch hin th trn i tng. Cch lm vic nh vi thuc tnh


Backcolor.
Thuc tnh Enable
Thuc tnh ny cho php lm vic hay khng c php lm vic (cm)
trn i tng no . iu ny th hin rt r rng khi s dng cc phn mm
my tnh, c nhng lc mt nt no m i khng th nht chut ln c
lc l khi i tng ang b thit lp thuc tnh Enable = False. Ngc li
nhng lc lm vic c bnh thng trn mt i tng, tc l thuc tnh
Enable ca i tng ang l True.
Thuc tnh Visible
Thuc tnh ny cho php hin th (Visible = True) hoc n (Visible = False)
mt i tng no khi chng trnh ang chy. Khi i tng b Visible =
False, thc t i tng vn tn ti trn form, vn hot ng, ch khc mt iu
l n hin th di dng n, ngi dng khng nhn thy c.
Thuc tnh Left
Thit lp ta tri ca i tng trn Form (trc ox nu coi form nh mt
ta cc). Gi tr l mt s nguyn, cho bit ta tri ca i tng (0 l mp
tri ca Form, ln hn 0 hin th tng dn v bn phi form, nh hn 0 hin th
tng dn v bn tri form)
Thuc tnh Top
Thit lp ta trn ca i tng trn Form (trc oy nu coi form nh mt
ta cc). Gi tr l mt s nguyn, cho bit ta trn ca i tng (0 l
mp trn cng ca Form, ln hn 0 hin th tng dn v pha di form, nh hn
0 hin th tng dn v bn trn form)
Thuc tnh Height
Hin th v cho php thit lp chiu cao ca i tng
Thuc tnh With
Cho php v hin th chiu di ca i tng
Trang 53

Lp trnh Visual Basic 6.0

1.2. Tp phng thc


Phng thc (Methods) l nhng kh nng m i tng c th lm c.
V d vi i tng mt b my tnh, cc phng thc c th l:
Tn phng thc

Tc dng

Turn On Bt ngun in my tnh. Khi my tnh s trng thi


sn sng khi ng.
Restart Khi ng li my tnh. Khi my tnh s thc hin tt
ri bt li v thc hin cc th tc cn thit khi ng
my.
Running chy mt chng trnh no , gi s h iu hnh yu
cu m chng trnh son tho vn bn WindWord chng
hn

Mi i tng c th c nhng tp phng thc khc nhau ty thuc vo


c trng ca tng loi i tng.
Khi gi mt phng thc ra lm vic, tc l yu cu i tng thc hin
mt s cng vic c lp trnh trc. Vic gi mt phng thc ging nh
vic gi mt chng trnh con dng th tc x l mt s vn lin quan n i
tng ang lm vic. Di y l mt s v d:
V d 1: Phng thc Clear ca mt hp Textbox c tn Text1. Khi ra lnh
sau:
Text1.Clear

My tnh s thc hin xa gi tr c trn Text1, thit lp ny trng thi


rng (Null)
V d 2: Phng thc AddItem ca hp Combobox dng a mt gi tr
vo danh sch cc mc chn (Items) ca hp th. Gi s lm vic trn Combo c
tn Combo1. Nu ra lnh sau:
Combo1.AddItems Voi
Trang 54

Lp trnh Visual Basic 6.0

Combo1.AddItems S t

My tnh s thc hin thm 2 mc Voi v S t vo hp th Combo c


th chn la.

1.3. Tp s kin
S kin (Events) l tp hp cc tc ng c th xy ra i vi mt i
tng. V d: mt mt nt lnh Command c mt tp s kin sau:
Tn s kin

Xy ra khi

Click Khi nhn chut tri ln nt lnh


LostFocus Khi im tab di khi nt lnh
KeyDown Khi im tab ang nm trn nt lnh v bm mt phm
MouseMove Khi di chut qua nt lnh

Th tc p ng s kin ca mt i tng l mt chng trnh con c


nh ngha theo mt c php cho trc x l theo mc ch ca nh lp trnh
khi s kin xut hin. Tn ca chng trnh con ny c to bi cu trc
<Tn i tng>_<tn s kin> (<cc tham s cn thit>)
V d: th tc p ng s kin Click ca nt lnh Command1 c khai
bo nh sau:
Private Sub Command1_Click()
Ni dung th tc vit y
End Sub

Th tc trn c ngha nh sau: khi chng trnh ang chy, nu nhn


chut ln nt lnh c tn Command1, tc l xut hin s kin Click ca nt lnh
ny, khi th thc Command1_Click s c thc hin nu n tn ti. Trong
trng hp nu khng khai bo th tc p ng s kin, nu s kin xy ra
my tnh s khng thc hin g c. Mt iu c rt ra l: nu to mt nt lnh

Trang 55

Lp trnh Visual Basic 6.0

nhng khng vit (lp trnh) th tc p ng s kin Click cho nt lnh th


khi nhn chut ln nt ny my tnh s khng lm g c.
Mt s s kin hay s dng
S kin Click
Xy ra khi nhn chut tri ln i tng. S kin ny hay c s dng nht
i tng nt lnh Command. Ngoi ra i tng Listbox v Combobox cng
hay c s dng
S kin DblClick
Xy ra khi nhn p chut ln i tng. Ch rng, trc khi s kin
DblClick xut hin th s kin Click s xut hin. V mun nhn kp chut tc l
ngi dng phi nhn n chut t nht mt ln.
S kin Validate
S kin ny dng kim tra tnh ng n ca d liu. i km vi s kin s
c tham s Cancel. iu ny rt thun li khi ngi lp trnh mun kim tra vic
nhp d liu cho mt hoc mt i tng no . Nu ng d liu nhp
ng hy thit lp tham s Cancel = False (ngm nh Cancel = False); trong
trng hp pht hin d liu nhp vo cha hp l, hy thit lp tham s Cancel
= true, khi my tnh s yu cu nhp li d liu n khi no tha mn th thi.
Chng ta s tr li vi s kin ny trong phn K thut kim tra tnh ng n d
liu s trnh by chng tip theo.
S kin LostFocus
Xut hin khi di im Tab ra khi i tng. Vic di im Tab s xut hin
khi ngi dng nhn phm Tab hoc i khi l phm Enter. S kin ny thng
dng kim tra hoc x l mt vn no sau khi kt thc nhp d liu ca
mt no . Mt v d: gi s ngay sau khi nhp xong d liu Textbox H
tn, ngi lp trnh mun tch c H, m v Tn ring ra x l; s kin
LostFocus s rt thch hp lm vic ny.

Trang 56

Lp trnh Visual Basic 6.0

2. Mt s thnh phn iu khin c bn


Phn ny s gii thiu mt s cc iu khin rt c bn v hay c s dng
nhiu nht mi khi lp trnh trn VB.

2.1 iu khin Form


Form l i tng chnh to giao din s dng trong cc ngn ng lp trnh
trc quan. Ni nh lp trnh t cc i tng khc nh: nhp d liu, nt lnh,
vit cc x l,.. hon thnh mt giao din ngi s dng. Di y l v d
mt form c xy dng v ang s dng lm giao din ngi dng:

Cc i tng thit k
trn form

Form

Form hon ton ch l ci nn thit k cc i tng khc ln to thnh


mt giao din ngi s dng (nh mt ca s).

Mt s thuc tnh ca form:


Caption tiu form, c th hin trn thanh tiu ca ca s. Vi form
trn gi tr thuc tnh Caption l V d v Form;
ControlBox cho php hin th (gi tr l True) hoc n (gi tr l False) cc
nt iu khin form (nt Minimize, nt Restore v nt Close ca ca s). Vi
form trn, ControlBox = True;
WindowState - chn la kch c ca form khi bt u hin th. C 3 la
chn l: 0 Normal (ch bnh thng, tc l thit k nh th no khi hin th
kch c form ng bng nh vy); 1 Minimized (ch thu gn v thanh tc
Trang 57

Lp trnh Visual Basic 6.0

v ca Windows, tc l khi hin th form s t ng thu v (Minimize) thanh tc


v ca Windows); 2- Maximized (ch phng to ton mn hnh, tc l khi bt
u kch hot, form s phng to ton mn hnh nh khi nhn nt Maximize trn
ca s). Vi form trn WindowState = 0 Normal (y cng l ch ngm
nh ca form);
Icon - chn biu tng (icon) cho form. Mun vy trn my tnh phi c
tp lm biu tng cho form dng *.ico.

Mt s s kin ca form
Form c rt nhiu s kin, y s gii thiu 4 s kin m hay c s dng
nht mi khi lp trnh trn form:
S kin Form_Load
Xy ra khi form bt u kch hot. L mt trong nhng s kin xut hin u
tin (ch sau s kin Form_Initialize) mi khi kch hot mt form. S kin ny
thng dng thit lp mi trng lm vic cho form. Tuy nhin khi thc hin
th tc p ng s kin ny, mt s i tng thit k trn form cha c np
y , nn cng c th gp phi li nh sau:

S kin Form_Activate
Xy ra sau s kin Form_Load. Cng tng t nh form_load, s kin ny
thng dng thit lp mi trng lm vic cho form. iu khc bit l n xy
ra sau s kin Form_Load v cc i tng trn form c np v nhn dng
y ;
Trang 58

Lp trnh Visual Basic 6.0

S kin Form_Resize
Xy ra khi ngi dng lm thay i kch c form. S kin ny hay c dng
canh li v tr cc i tng trn form mi khi kch c ca form c thay i;
S kin Form_Unload
Xy ra khi ngng kch hot form, gii phng form ra khi b nh. N tng
ng vi vic thc hin lnh Unload Me hoc khi dng chut nht nt Close
trn form. i km vi th tc p ng s kin Form_load c tham s Cancel
kiu Boolean (ngm nh l False). Khi Cancel = True, lnh Unload form s
khng c thc hin, khi form s vn trng thi hot ng. S kin ny
thng s dng kim tra cc iu kin cn thit trc khi quyt nh ng
mt form li, gii phng b nh. Trong trng hp cha iu kin ng
form, hy thit lp tham s Cancel = True.

2.2 iu khin Label

Label l mt trong nhng iu khin n gin nht. N c tc dng hin th


mt gi tr (nhn) ln form di dng vn bn (Text). im c bit ca Label l
ch cho php hin th, khng cho php ngi dng c th sa v xa gi tr bng
bn phm (khc vi Textbox sau ny cho php nhp, sa v xa gi tr). Hnh
di minh ha vic s dng iu khin Label trong mt Form:

Trang 59

Lp trnh Visual Basic 6.0

Cc i tng Label

C 4 thuc tnh thng quan tm n khi s dng Label l:


- Caption nhp, thit lp gi tr hin th ln Label;
- BackColor - thit lp mu nn cho Label;
- ForeColor - thit lp mu ch cho Label;
- Align canh l ch cho Label.

2.3 iu khin Textbox

Textbox l mt trong nhng iu khin c dng kh rng ri. N thng


c s dng vo vic hin th, nhp v sa d liu dng vn bn trn cc d
liu t trn form. Hnh di y minh ha vic s dng Textbox trn mt form:

Trang 60

Lp trnh Visual Basic 6.0

Cc i tng TextBox

c bit, i tng textbox c th hin th trn c nhiu dng v nh hp


Ghi ch form trn. lm c nh vy cn thit lp thuc tnh Multiline =
True v thuc tnh ScrollBar ( ty chn thanh cun cho Textbox) mt cch
ph hp.
Gi tr trn TextBox c th hin qua thuc tnh Text. Thng thng, VB
s ngm hiu gi tr cc textbox l kiu xu k t (Text) nn lp trnh vin phi
ht sc ch ti vic s dng php tnh cng + kiu s, v my tnh s hiu l
php ghp xu (cng hai xu). Khi c th s dng hm Val (hm chuyn i
xu s) nh sau:
Dim num As Double
num = Val(Text1.Text) + Val(Text2.Text)
Vit nh th ny s b sai kt qu
num = Text1.Text + Text2.Text

Tuy nhin trong VB nu ch vit nguyn tn i tng Textbox (v d Text1


chng hn), my tnh cng hiu l ly gi tr ca thuc tnh Text ca i tng
ny. Tc l:
Lnh
num = Text1.Text + Text2.Text
cng tng ng vi lnh
num = Text1 + Text2

Trang 61

Lp trnh Visual Basic 6.0

Khuyn co:
Chng ti khuyn co khng nn vit tt nh vy, s to thnh mt thi quen khng tt
khi s dng nhng cng c lp trnh chuyn nghip sau ny.

S kin ca Textbox rt nhiu, y s gii thiu 2 s kin hay c s dng


nht vi Textbox:
S kin Validate
Mt s kin rt quan trng trong vic kim tra tnh ng n d liu khi nhp
vo mt iu khin. V d sau y minh ha iu :
Yu cu to form cho php nhp vo H tn v Tui nh sau:

Trong H tn khng c trng, Tui phi nhp vo mt s. Gi s


thuc tnh Name (tn) ca H tn l txtHoten, Tui l txtTuoi. Khi m
lnh kim tra tnh ng n 2 Textbox trn l 2 th tc p ng s kin
Validate nh sau:
'kim tra tnh ng n H tn
'
Private Sub txtHoten_Validate(Cancel As Boolean)
If txtHoten = "" Then
Cancel = True
MsgBox "H tn khng c trng !"
End If
End Sub
'kim tra tnh ng n cho nhp Tui
'
Private Sub txtTuoi_Validate(Cancel As Boolean)
If Not IsNumeric(txtTuoi) Then
Cancel = True
MsgBox "Tui phi l mt s !"
Trang 62

Lp trnh Visual Basic 6.0

End If
End Sub

S kin LostFocus
S kin ny thng dng khi dch im Tab qua i tng va lm vic.
Trong v d v Textbox, s trnh by v d v tch ly Tn ngay sau khi Nhp
xong d liu cho H tn (c Name l txtHoten). V d ny s dng n hm
GetTen, ton b m lnh nh sau:
Private Sub txtHoten_LostFocus()
Msgbox "Tn va nhp l : " + GetTen(txtHoten)
End Sub
Function GetTen(st As String) As String
Dim pos As Integer
pos = 1
If InStr(pos, Trim(st), " ") = 0 Then
GetTen = st
Exit Function
End If
While InStr(pos + 1, Trim(st), " ") > 0
pos = InStr(pos + 1, Trim(st), " ")
Wend
GetTen = Trim(Mid(st, pos))
End Function

2.4 iu khin CommandButton

iu khin CommandButton l i tng m ngi dng thng gi l nt


lnh trn cc giao din s dng. Chng c thit k chp nhn thi hnh mt
mnh lnh no .
Trang 63

Lp trnh Visual Basic 6.0

Mt s thuc tnh thng s dng ca CommandButton:


Thuc tnh Caption
thit lp hin th ch cho nt lnh. V d nt lnh sau y:
c thuc tnh Caption l X l d liu..
Thuc tnh Appearance
chn la kiu hin th cho nt lnh, c 2 kiu la chn: 0 Flat (kiu
phng) v 1 3D (kiu ba chiu thng thng hay dng kiu 3D).
Thuc tnh Cancel
Nu thuc tnh Cancel ca mt nt lnh l True, khi form cha nt lnh ang
kch hot, nu bm phm Esc (Escape), ngay lp tc s kin Click nt lnh ny
c thi hnh. Thng thng thuc tnh ny hay c thit lp l True cho
nhng nt Thot, Kt thc, Hu hay Cancel.
Thuc tnh Default
Tri li vi thuc tnh Cancel, mt nt lnh nu c thit lp thuc tnh
Default l True, khi form cha nt lnh ny kch hot, nu nhn phm Enter,
ngay lp tc s kin Click ca nt lnh ny c kch hot. Thng thng
Default c thit lp l True cho cc nt ng hoc Ok.
Ch :
Trn mt form, khng th thit lp ng thi 2 thuc tnh Cancel v Default cho mt nt
lnh l True.

Thuc tnh Picture


np mt nh lm nn cho nt lnh. thuc tnh ny c hiu lc, phi
thit lp gi tr thuc tnh Style ca nt lnh l Graphic.

S kin ca nt lnh rt khim tn, hu ht lp trnh ch s dng s kin Click


tc l c kch hot khi nhn chut tri ln nt lnh.

Trang 64

Lp trnh Visual Basic 6.0

2.5 iu khin Picture

Picturebox l iu khin cho php hin th v x l mt s thao tc v nh ln


form nh: phng to, thu nh nh (Zooming); cun nh (Scrolling); lt nh
(flipping);
Mt s thuc tnh ca Picturebox
Thuc tnh Picture
ch n tp nh cn hin th ln Picturebox. C th thit lp thuc tnh ny
trn hp thoi Properties trong ch thit k form. Hoc dng m lnh: gi s
c Picture1 trn form, mt tp nh nm c:\windows\setup\setup.bmp. Th tc
LoadPicture s hin th nh ny ln iu khin picturebox trn form:
Picture1.Picture = LoadPicture("c:\windows\setup.bmp")

Khi lnh xo b d liu trn Picture1 khi khng cn thit nh sau:


Picture1.Picture = LoadPicture("")
hoc
Set Picture1.Picture = Nothing

Trang 65

Lp trnh Visual Basic 6.0

3. Nhm iu khin trnh by giao din


3.1 iu khin ComboBox

iu khin Combobox l dng iu khin trnh by giao din, gip vic chn
la mt gi tr trn mt danh sch tr nn d dng. Khi s dng, iu khin ny
c dng nh sau:

Cu trc ca mt Combobox bao gm mt hp chn, trong c th c mt


danh sch cc mc chn (Items). Lm vic trn Combobox tc l lm vic
trn cc Items. Bao gm cc cng vic nh:
-

Lm th no thm cc Items vo danh sch mc chn?

Lm th no xo b mc chn ra khi danh sch?

Lm th no nh v, di chuyn, cc mc chn?

Tt c c th thc hin c thng qua tp cc thuc tnh v phng thc ca


iu khin ny.
Tp hp cc phng thc:
Phng thc AddItem
thm mt Item ln danh sch. C php nh sau:
Trang 66

Lp trnh Visual Basic 6.0

<tn Combobox>.AddItem <gi tr>

Trong :
-

<tn combobox> l gi tr thuc tnh Name ca Combo;

<gi tr> l nhn hin th ca Item mi thm vo.

Vi yu cu nh Combobox trn, phi thc hin ln lt 7 cu lnh


AddItem nh sau:
Combo1.AddItem
Combo1.AddItem
Combo1.AddItem
Combo1.AddItem
Combo1.AddItem
Combo1.AddItem
Combo1.AddItem

"Th
"Th
"Th
"Th
"Th
"Th
"Ch

2"
3"
4"
5"
6"
7"
nht"

Hn na, ti ca s Properties cng c th khi to c danh sch cc Items


cho mt Combobox bng cch g chng vo thuc tnh List.
Phng thc RemoveItem
Dng g b mt Item no ra khi danh sch. Mun vy, phi xc nh
c Item c s th t bao nhiu s c g ra (s th t ny c tnh t 0). C
php nh sau:
<tn Combobox>.AddItem <stt>

Trong :
-

<tn combobox> l gi tr thuc tnh Name ca Combo cn g Item;

<stt> l s th t ca Item cn g b, STT ny c tnh t 0.

V d: mun g b Item c gi tr Th 4 trn, phi thc hin cu lnh g b


Item vi STT l 3 nh sau:
Combo1.RemoveItem 3

Phng thc Clear


Trang 67

Lp trnh Visual Basic 6.0

Phng thc Clear dng xa b ton b cc Items ang c trn mt


Combobox. Sau khi gi phng thc ny, Combobox tr nn rng trng.
Combo1.Clear

Mt s cc thuc tnh hay s dng


Thuc tnh ListCount
Cho bit tng s cc Item ang c trn Combobox
Thuc tnh List
truy cp ti mt Item no . V tr ca Item cn truy cp c th hin
qua s th t ca n. V d mun thit lp gi tr ca Item c s th t 3 t Th 4
sang Th t, c th s dng thuc tnh List thng qua cu lnh sau:
Combo1.List (3) = Th t

Thuc tnh ListIndex


Cho bit s th t ca Item ang c chn trn Combobox. V d sau cho
php hin th s th t ca Item ang c chn trn Combo1:
Msgbox ang chn Item th: + Str(Combo1.ListIndex)

3.2 iu khin ListBox

Trang 68

Lp trnh Visual Basic 6.0

iu khin Listbox l dng iu khin trnh by giao din, gip vic chn la
mt gi tr trn mt danh sch tr nn d dng. Khi s dng, iu khin ny c
dng nh sau:

Cu trc ca mt Listbox bao gm mt bng chn, trong c th c mt


danh sch cc mc chn (Items). Cu trc ny ht nh cu trc ca
Combobox

3.3 iu khin CheckBox

iu khin Checkbox ch c th hin c 2 trng thi: c chn (Checked)


v khng c chn (Unchecked), cho nn iu khin ny thng c dng
biu din d liu dng Logical (True hoc False).
Mt s thuc tnh hay dng
Thuc tnh Caption
biu din nhn hin th trn iu khin
Thuc tnh Value
bit c trng thi (d liu) trn iu khin. C 3 trng thi l:
-

0 Unchecked iu khin khng c chn;


Trang 69

Lp trnh Visual Basic 6.0

1 Checked - iu khin c chn (tch);

2 Grayed - trng thi lng. Trng thi ny thng xut hin lc u tin,
khi iu khin Checkbox cha c khi to l Checked hay Unchecked.
Sau khi xc nh Checked hay Unchecked, s khng tn ti gi tr
Grayed na.

V d di y minh ho cch s dng iu khin Checkbox vo vic biu


din d liu gii tnh cho nhn s. Nu l nam gii, s c Checked, tri li l
n gii. Nt lnh xc nh kt qu tr li gi tr iu khin checkbox ang chn.
Bc 1: thit k forrm nh sau:

Bc 2: vit m lnh cho cc s kin Click ca nt lnh Xc nh gii tnh


chn nh sau:
Private Sub Command1_Click()
'------------------------------------'cn c vo thuc tnh Value xc nh gii tnh
'
If Check1.Value = Checked Then
MsgBox "L nam gii !"
Else
MsgBox "L n gii !"
End If
End Sub

Trang 70

Lp trnh Visual Basic 6.0

3.4 iu khin OptionButton

iu khin OptionButton thng dng trong nhng tnh hung chn la ly


mt kt qu t danh sch cc la chn c sn.
C 2 thuc tnh quan trng:
Thuc tnh Caption
thit lp nhn hin th cho OptionButton
Thuc tnh Value
xc nh gi tr ca OptionButton. Bng True nu OptionButton c
chn, tri li l False.
c bit, mt tp hp cc iu khin OptionButton trn mt Frame ch c th
tn ti nhiu nht 1 iu khin OptionButton nhn gi tr True. V d sau y s
s dng cc iu khin OptionButton thc hin thit k 2 cu hi thi trc
nghim trn my tnh:
Bc 1: Thit k form nh sau:

Trang 71

Lp trnh Visual Basic 6.0

Trong : tn ca cc OptionButton trn Cu 1 v Cu 2 ln lt t theo th


t t trn xung di l: opt11, opt12, opt13 v opt21, opt22.
p n ng ca cu 1 nu Chn opt12; p n ng Cu 2 nu chn opt21
(hnh di).

Bc 2: vit lnh cho th tc p ng s kin Click ca nt Kt qu l:


Private Sub cmdKetqua_Click()
Dim ketqua As Integer
'----------------------------------'khi to bin kt qu, ban u cha tr li ng cu no
'
Trang 72

Lp trnh Visual Basic 6.0

ketqua = 0
'----------------------------------'nu chn opt12, tr li ng 1 cu
'
If opt12.Value = True Then ketqua = ketqua + 1
'----------------------------------'nu chn opt21, tr li ng thm 1 cu na
'
If opt21.Value = True Then ketqua = ketqua + 1
'----------------------------------'in kt qu
'
MsgBox "Bn tr li ng " + Str(ketqua) + "/ 2 cu !"
End Sub

4. Nhm iu khin lm vic th mc, tp tin


Vi VB, thng qua cc i tng iu khin tp tin, th mc v a, vic lp
trnh truy cp ti cc th mc, tp tin, a trn my tnh l chuyn n gin.
Phn di y trnh by cch s dng hiu qu cc iu khin ny trong d n
VB.

DriveListBox

DirListBox

FileListBox

Trang 73

Lp trnh Visual Basic 6.0

4.1 iu khin DriveListbox

iu khin DriveListBox

iu khin DriveListBox dng to giao din truy cp n danh sch cc


a tm thy trn my tnh.
Do l DriveListBox nn hnh dng cng nh mt s thuc tnh ca iu khin
ny ging vi iu khin ComboBox trnh by trn (mc 3). Di y l mt
s thuc tnh hay c s dng:
List - truy cp ti tng a trn DriveListBox. V d Drive1.List(1)
cho bit ng dn ca a th 2 (th t c tnh t 0) trn Drive1.
ListCount- cho bit tng s a truy cp c trn my tnh.
ListIndex - cho bit s th t ca a ang chn.

4.2 iu khin DirListBox

iu khin DirListBox

iu khin DirListBox dng to giao din truy cp n cy th mc trn


my tnh. Di y l mt s thuc tnh hay c s dng:
List - truy cp ti tng th mc con (Item) trn cy th mc. V d
Dir1.List(2) cho bit ng dn ca th mc th 3 (th t c tnh t 0) t
trn xung trn cy th mc Dir1.
ListCount- cho bit tng s th mc c trn cy th mc DirLisstBox.
Trang 74

Lp trnh Visual Basic 6.0

ListIndex - cho bit s th t ca th mc con ang c chn trn cy th


mc.
Path - cho bit ng dn y th mc m ca th mc con ang chn trn
cy th mc (th mc gc l a dang chn).

4.3 iu khin FileListBox

iu khin DirListBox

iu khin FileListBox dng to giao din truy cp n danh sch cc tp


tin (files) trn mt th mc no . Di y l mt s thuc tnh hay c s
dng:
List - truy cp ti tng tp tin trn danh sch. V d File1.List(2) cho
bit tp tin th 3 (th t c tnh t 0) trong danh sch cc tp tin ang hin th
File1..
ListCount- cho bit tng s tp tin ang hin th trn FileListBox.
ListIndex - cho bit s th t ca tp tin ang c chn trn FileListBox.
Path - ng dn ti th mc cho FileListBox lm vic.
Pattern - thit lp t lc cho cc tp tin hin th trn FileListBox.

4.4 V d tng hp
Thit k mt giao din nh sau:

Trang 75

Lp trnh Visual Basic 6.0

Drive1
lbThongke

Dir1

File1

Combo1

Khi chn mt a, cy th mc ca a xut hin trn mt DirListBox


c tn Dir1;
Khi chn mt th mc trn Dir1, danh sch cc tp tin ca th mc vi
phn m rng ca tp tin tha mn Combo1 s c hin th ln mt FileListBox
c tn File1. ng thi my tnh s m s tp tin ang hin th trn File1 ra mt
Label c tn lbThongke.
Ton b m lnh cho form trn nh sau:
Private Sub Form_Load()
'--------------------'Add cc kiu file cn lc ln Combo1
'
Combo1.AddItem "*.*"
Combo1.AddItem "*.doc"
Combo1.AddItem "*.txt"
Combo1.AddItem "*.exe"
'-------------------'ngm nh s hin th *.*
'
Combo1.ListIndex = 0
End Sub
Private Sub Drive1_Change()
Trang 76

Lp trnh Visual Basic 6.0

On Error GoTo Thoat


'--------------------'Thit lp a cho Dir1 l Drive1
'
Dir1.Path = Drive1
Exit Sub
'----------------------'Trng hp a khng sn sng, hin th mt thng bo
li
'
Thoat:
MsgBox "Khng truy cp c a ny!", vbCritical
End Sub
Private Sub Dir1_Change()
'-----------------------'gi th tc hin th tp tin ln File1
'
Call Show_file
End Sub
Private Sub Combo1_Click()
'-----------------------'gi th tc hin th tp tin ln File1
'
Call Show_file
End Sub
Sub Show_file()
'-------------------'Thit lp ng dn cho File1 l th mc ang chn Dir1
'
File1.Path = Dir1
'-------------------'Thit lp thuc tnh t lc cho File1 Combo1
'
File1.Pattern = Combo1
'-------------------'thng k tng s File hin th a ra lbThongke
'
lbThongke.Caption = "c " + Str(File1.ListCount) + "
file(s)"
End Sub

Trang 77

Lp trnh Visual Basic 6.0

5. Mt s iu khin chung
5.1 iu khin MS Common Dialog
MS Common Dialog l iu khin gip gi ra cc hp thoi: m tp tin
(Open file), ghi tp tin (Save file), m hp thoi phng ch (Font), m hp
thoi chn mu h thng.
Thng thng, iu khin ny cha c sn trn thanh cng c ToolBox,
mun c lm nh sau:
M thc n Project | Components, hoc nhn t hp phm nng Ctrl +
T, mt hp thoi xut hin. Hy tm n mc Microsoft Common Control 6.0
v chn nh sau:

n y c th s dng iu khin ny trn thanh cng c:

Trang 78

Lp trnh Visual Basic 6.0

iu khin CommonDialog

Mt s thuc tnh thng s dng:


Thuc tnh CancelError
Nu thit lp l False, b qua li trong qu trnh m hp thoi h thng
Common Dialog
Thuc tnh DefaultExt
thit lp kiu tp ngm nh s lc trn hp thoi.
Thuc tnh DialogTitle
thit lp tiu ca s hp thoi h thng khi m ra.
Thuc tnh FileName
t tn tp tin cn m hoc ghi trn hp thoi Common Dialog. Hn
na thuc tnh ny dng ly gi tr l tp tin c chn trn hp thoi
Open File.
Thuc tnh Filter
to danh sch t lc tp tin
Thuc tnh InitDir
thit lp th mc ngm nh tr ti khi hp thoi Open File hoc Save
c m ra.
Mt s phng thc ca iu khin Common Dialog
Phng thc ShowOpen
hin th Common Dialog di dng hp thoi m tp tin (Open File).
Dng hp thoi ny nh sau:
Trang 79

Lp trnh Visual Basic 6.0

Phng thc ShowSave


hin th Common Dialog di dng hp thoi ghi tp tin (Save As).
Dng hp thoi ny ging nh hp Open File.
Phng thc ShowPrinter
hin th Common Dialog di dng hp thoi ty chn my in h thng.
Dng hp thoi ny nh sau:

Trang 80

Lp trnh Visual Basic 6.0

Phng thc ShowColor


hin th Common Dialog di dng hp thoi mu sc h thng. Dng
hp thoi ny nh sau:

V d:
Thit k form nh sau:
Trang 81

Lp trnh Visual Basic 6.0

CommonDialog1
Command1
Text1

M lnh cho s kin Click ca nt lnh Command1 nh sau:


Private Sub Command1_Click()
CommonDialog1.CancelError = False
CommonDialog1.DefaultExt = "*.xls"
CommonDialog1.DialogTitle = "Open file ..."
CommonDialog1.Filter = "*.xls|*.xls|*.doc"
CommonDialog1.InitDir = "c:\setup"
CommonDialog1.ShowOpen
Text1.Text = CommonDialog1.FileName
End Sub

5.2 iu khin Treeview

iu khin Treeview l i tng c th th hin d liu di dng cy


(Tree). iu ny rt thun tin khi d liu cn trnh by c cu trc phn cp.
Hnh di l mt Treeview ang trnh by cy phn cp cc mc:

Trang 82

Lp trnh Visual Basic 6.0

s dng c Treeview, cn gi t th vin nhm iu khin dng


Microsoft Windows Common Controls 6.0 trn ca s Components nh
hnh di:

Trc ht tm hiu cu trc mt treeview:


Cu trc mt Treeview bao gm tp hp cc nt (Nodes). C 2 loi nt l: nt
gc (Root) v nt con (Sub-Node);
Trang 83

Lp trnh Visual Basic 6.0

Mi nt s bao gm mt tp hp cc thuc tnh nh sau:


-

Thuc tnh Text - thit lp nhn hin th cho nt . V d trn,


cc gi tr Mc 1, Mc 1.1 hoc Mc 1.2.1, chng l gi tr ca
thuc tnh Text ca cc nt tng ng;

Thuc tnh Key - thit lp gi tr kha cho nt . Mi nt c th c


mt gi tr kha, gi tr ny l duy nht (khng c php tn ti 2
nt c gi tr kha nh nhau). K t u tin ca mt nt phi l mt
ch ci. Thuc tnh Key thng dng xc nh c du hiu cho
bit ngi dng ang chn nt no trn treeview. Hn na, Key bt
buc phi c nu nt s tn ti cc nt con ca n;

Thuc tnh ForeColor - thit lp mu sc cho Text ca nt;

Thuc tnh Bold - thit lp kiu ch m cho nt;

Thuc tnh Tag thng thng gn mt gi tr no cho tng


nt. Khc vi Key, gi tr ca Tag c th trng nhau v c th gn a
dng v kiu d liu.

Thuc tnh Image - chn biu tng nh cho nt. l s th t


ca nh trn mt iu khin ListImage thit lp cho treeview ny
trc ;

Thuc tnh Parent - truy cp n nt cha ca nt no .

Mt s thuc tnh ca Treeview:


-

Thuc tnh Checkboxes - thit lp du Checkbox trn mi nt;

Thuc tnh ImageList - thit lp ImageList cha cc biu tng


nh lm biu tng cho cc nt trn treeview;

Thuc tnh SelectedItem xc nh nt ang c chn trn


treeview. Nt ny s c gn gi tr vo mt bin kiu Node;

Cch lm vic vi Treeview:


lm vic vi Treeview, cn khai bo t nht mt bin kiu Node nh sau:
Dim nd As Node
Trang 84

Lp trnh Visual Basic 6.0

Thm mt nt gc
Nt gc (Root) l nt khng c nt cha ca n.
Set nd = <tn treeview>.Nodes.Add()

Trong : nd l bin kiu Node c khai bo trc ; <tn treeview> l


gi tr thuc tnh Name ca Treeview ang lm vic.
Tip theo, thng qua bin nd c gn cho nt mi thit lp cc thuc
tnh cn thit cho nt ny. V d:
Set nd = TreeView1.Nodes.Add()
nd.Text = "Mc 1"
nd.key = "m1"
nd.Tag = 1
nd.ForeColor = &H800000
nd.Bold = True

Thm mt nt con
Nt con (Sub-Node) l nt m lun tn ti mt nt cha ca n. Nt cha ny c
th l mt nt dng nt gc, nhng cng c th l mt nt dng nt con.
Set nd = <tn treeview>.Nodes.Add(<key nt cha>, 4)

Trong : nd l bin kiu Node c khai bo trc ; <tn treeview> l


gi tr thuc tnh Name ca Treeview ang lm vic; <key nt cha> l gi tr
Key ca nt cha.
Tip theo, thng qua bin nd c gn cho nt mi thit lp cc thuc
tnh cn thit cho nt ny. V d di y s to mt nt con ca nt Mc 1
to trn:
Set nd = TreeView1.Nodes.Add("m1", 4)
nd.Text = "Mc 1.1"
nd.key = "m1.1"
Trang 85

Lp trnh Visual Basic 6.0

Vi hnh minh ha trn, m lnh cho form nh sau:


Private Sub Form_Load()
Dim nd As Node
'-----------------'To nt gc c nhn Mc 1
'
Set nd = TreeView1.Nodes.Add()
nd.Text = "Mc 1"
nd.key = "m1"
nd.ForeColor = &H800000
nd.Bold = True
'---------------'To cc nt con ca nt Mc 1
'
Set nd = TreeView1.Nodes.Add("m1", 4)
nd.Text = "Muc 1.1"
nd.key = "m1.1"
Set nd = TreeView1.Nodes.Add("m1", 4)
nd.Text = "Muc 1.2"
nd.key = "m1.2"
'-------------------'To tip lp cc nt con na
'
Set nd = TreeView1.Nodes.Add("m1.2", 4)
nd.Text = "Muc 1.2.1"
Set nd = TreeView1.Nodes.Add("m1.2", 4)
nd.Text = "Muc 1.2.2"
Set nd = TreeView1.Nodes.Add("m1.2", 4)
nd.Text = "Muc 1.2.3"
'-------------------'To nt gc c nhn Mc 2
'
Set nd = TreeView1.Nodes.Add()
nd.Text = "Muc 2"
nd.key = "m2"
'---------------------'To cc nt con ca nt Mc 2
'
Set nd = TreeView1.Nodes.Add("m2", 4)
nd.Text = "Muc 2.1"
nd.key = "m2.1"
Set nd = TreeView1.Nodes.Add("m2", 4)
Trang 86

Lp trnh Visual Basic 6.0

nd.Text = "Muc 2.2"


nd.key = "m2.2"
'-------------------------'To tip lp cc nt con na
'
Set nd = TreeView1.Nodes.Add("m2.2", 4)
nd.Text = "Muc 2.2.1"
Set nd = TreeView1.Nodes.Add("m2.2", 4)
nd.Text = "Muc 2.2.2"
Set nd = TreeView1.Nodes.Add("m2.1", 4)
nd.Text = "Muc 2.1.1"
End Sub
Private Sub TreeView1_DblClick()
MsgBox "ang chn nt c Key l:" +
TreeView1.SelectedItem.key _
& " C nhn l: " + TreeView1.SelectedItem.Text
End Sub

S kin Treeview1_DblClick() hin th gi tr Key v Text ca nt ang


chn khi nhn kp chut ln nt .

Trang 87

Lp trnh Visual Basic 6.0

Bi tp chng 2
Bi tp 1:
To form tm c s chung ln nht, bi s chung nh nht ca 2 s nguyn A
v B nh sau:

Bi tp 2:
To form lit k cc s nguyn t trong khong t 1 n n, n l s c nhp
trn form Nhp s:

Sau khi nhn nt Hin th s nguyn t, danh sch cc s nguyn t tm c


s hin th ra Kt qu nh hnh trn.
Bi tp 3:

Trang 88

Lp trnh Visual Basic 6.0

To form cho php gii phng trnh Ax2 + Bx + C = 0 trong A, B, C l 3


s thc c nhp vo, x l nghim cn tm. Mi kt qu s c hin th ln
Kt qu.

Bi tp 4:
Xy dng form gm 2 List box (hnh di), cc nt >, >>, <, << c tc dng
chuyn mt hoc tt c cc mc (Items) t danh sch 1 sang danh sch 2 v
ngc li.

Trang 89

Lp trnh Visual Basic 6.0

Hn na, thit k sao cho khi nhn kp chut ln mt mc mt danh sch,


mc s c chuyn sang danh sch bn kia.
Bi tp 5:
S dng Treeview, ImageList xy dng cy danh mc Tnh (Thnh) \
Huyn (Qun) \ X (Phng) nh hnh sau:

Trang 90

Lp trnh Visual Basic 6.0

CHNG

LP TRNH C S D LIU

Trong chng ny s trnh by cc cch dng VB lp trnh iu khin d


liu trn mt h CSDL no . Hin nay ang tn ti kh nhiu cc k thut lp
trnh CSDL, tuy nhin khun kh cun sch ny ch trnh by hai k thut cn
bn l DAO (Data Access Objects) v ADO (ActiveX Data Objects) thng qua
cc bi ton lp trnh CSDL c th nh:
-

Bi ton cp nhp d liu;

Cc phng php trnh by d liu;

Bi ton tm kim, t lc d liu;

Bi ton thit k in d liu

Trong ton b chng ny, phn l thuyt v cc v d s c trnh by


thng qua 2 h CSDL mu trn Access nh sau:
C s d liu Qun l th vin

Trang 91

Lp trnh Visual Basic 6.0

Trong :
Bng NXB lu tr danh sch cc nh xut bn;
Bng TACGIA lu tr danh sch cc tc gi vit sch
Bng SACH lu tr cc thng tin v sch trong th vin. Mi sch s c
nhng thng tin sau: sachID m sch, tn sch, nxbID - xut bn u? Nm
xut bn, tacgiaID - ca tc gi no? vn tt - nhng thng tin gii thiu vn tt
v cun sch ny.
C s d liu Qun l lng cn b:

Trong :
Bng CHUCVU lu tr danh mc cc chc v trong c quan, ph cp chc
v (phucapcv) cng c xc nh cho mi loi chc v tng ng trong bng
ny;
Bng PHONGBAN lu tr danh mc cc phng ban c trong n v qun
l;
Bng CANBO lu tr ton b thng tin v cn b trong c quan. Bng ny
kt ni sang bng PHONGBAN v CHUCVU bit c cc thng tin v chc
v v phng ban ca cn b.

Trang 92

Lp trnh Visual Basic 6.0

1. K thut DAO
DAO (Data Access Objects Cc i tng truy xut d liu) l tp hp bao
gm lp cc i tng c th dng lp trnh truy cp v x l d liu trong
cc h CSDL. y l CSDL Access, ngn ng lp trnh VB.
DAO c pht trin kh sm, gn y nht l phin bn DAO 3.5 v 3.51n c th thc hin tt c trn cc phin bn Access t 97 tr v trc. Vi
Access 2000, XP phi dng phin bn DAO 3.6. Vi phin bn mi ny, DAO
3.6 s dng nn Microsoft Jet 4.0. V vy, c th lm vic c trn nn Unicode
d dng.
Cch thc lp trnh trn mt h CSDL c m t tng qut nh sau:
ng dng

Cc kt ni d liu

C s d liu

Trong :
-

Tng ng dng: bao gm nhng giao din ngi s dng cng


nh nhng cng c n gin m ngi lp trnh c th dng x
l d liu theo cc bi ton;

Tng Kt ni d liu: bao gm tp hp cc cng c, phng thc


kt ni ti nhng d liu cn lm vic trong CSDL. y,
tng kt ni bao gm cc chun Microsoft Jet 3.51 v cc lp i
tng DAO;

Tng C s d liu: bao gm cc bng, cc query trong c s d


liu thc ti.
Trang 93

Lp trnh Visual Basic 6.0

Nh vy lp trnh trn mt CSDL phi s dng cc i tng, cc phng


thc tng kt ni nh l nhng cng c c th truy cp c vo CSDL tc
nghip x l. Tng kt ni chnh l Jet 3.51 v DAO 3.6 s trnh by di
y.

1.1 Lp i tng DAO


Cu trc mt CSDL bao gm nhiu thnh phn, i hi vic lp trnh cng cn
c nhng thnh phn tng ng lm vic. Lp cc thnh phn tng ng
c th lp trnh c trn ton b cu trc CSDL l lp cc i tng DAO.
Chng c tn gi, c nhng tp thuc tnh, cc phng thc lm vic v c quan
h mt thit vi nhau. Cy phn cp lp cc i tng DAO sau y th hin
iu :

Workspaces

Databases

RecordSets

QueryDefs

TableDefs

Relations

Trong :
Workspaces nh ngha tp hp cc vng lm vic. y c th coi l
lp lm vic cao nht. V l thuyt c th khai bo mt vi vng lm vic
(Workspace), nhng trn thc t ch cn khai bo mt vng lm vic v
Trang 94

Lp trnh Visual Basic 6.0

vng ny lun c khai bo ngm nh cho CSDL hin ti. Nn s khng


cn bn nhiu n lp cc WorkSpace ny;
Databases - nh ngha tp hp cc CSDL Access cn lm vic trn mt
d n;
RecordSets- nh ngha cc tp hp bn ghi (Records) cn lm vic;
QueryDefs - nh ngha tp hp cc Query lm vic. Querydefs v
Recordsets l kh nng truy xut, x l d liu (Data Manipulation) ca
DAO;
TableDefs - nh ngha tp hp cc bng (Table) cn lm vic. y l kh
nng nh ngha d liu (Data-Definition Language);
Relations - nh ngha tp hp cc quan h (Relationship) cn lm vic;
Mi lp cc i tng trn s bao gm tt c cc i tng cng loi trong
mt i tng m ang m. V d:
- Databases s bao gm tt c cc CSDL ang c m trong vng lm vic
hin ti;
- RecordSets s bao gm tp hp tt c cc Recordset ang c m trn
CSDL hin ti.
Khi , tham chiu n mt i tng c th cn lm vic, c th dng ch
s (s th t ca i tng trn tp hp tt c cc i tng ) hoc dng tn
gi i tng tham chiu. V d sau lit k tn ca tt c cc Recordset
ang s dng trong CSDL db.
Dim db As DAO.Database
'-----------------------------------'cc cu lnh tip theo y..
'-----------------------------------'-----------------------------------'Lit k tn tt c cc recordset ang c m trn db
'
For i = 0 To db.Recordsets.Count
MsgBox db.Recordsets(i).Name
Next

Trang 95

Lp trnh Visual Basic 6.0

lm vic ti mt i tng c th, cn phi tham chiu t lp cc i


tng m ca n.
V d: hin th gi tr ca trng (Field) hoten trn tp hp cc bn ghi
(Recordset) rs1 lm nh sau:
MsgBox rs1.Fields("hoten").Value
' hoc
MsgBox rs1.Fields![hoten].Value

1.2 i tng Database


Database l i tng dng lm vic vi mt CSDL (trong trng hp ny c
th hiu mt CSDL nh mt tp Access .MDB).
Lp cc i tng con ca Database c th hin qua s sau:

Khai bo
Dim db As DAO.Database
' Gn db cho mt CSDL c th
Set db = OpenDatabase(C:\Baitap\qlbh.mdb)

Khi khng lm vic vi CSDL no , c th ra lnh ng gii phng b


nh bng cu lnh:
db.Close

Trang 96

Lp trnh Visual Basic 6.0

Sau khi lnh ny thc thi, tt c cc i tng con ca db nu ang m s


c ng li gii phng b nh. Bn thn db cng c gii phng b nh
(l Nothing), tt nhin tp CSDL v d liu vn cn nguyn trn a.

1.3 i tng RecordSet


Recordset l i tng dng miu t tp hp cc bn ghi ca mt bng, ca
mt query hoc tp cc bn ghi kt qu ca vic thi hnh mt cu lnh SQL no
.
Lp cc i tng con ca Recordset c th hin qua s sau:

Khai bo
Set rs=db.OpenRecordset(<Name>)

Trong :
-

Set rs = db.OpenRecordset

l lnh to ra tp hp cc bn ghi t CSDL db

gn vo bin kiu recordset rs;


-

<Name> l mt xu k t ch ra ngun d liu s tr v cho Recordset.


Xu ny c th l tn mt bng, mt Query hoc mt cu lnh SQL;

Mi bin Recordset khi lm vic, phi c ch ra Database xut x ca n


(phi c tham chiu t mt bin kiu Database c khai bo). Sau y l
cc v d:

V d 1:
Gn tp hp cc bn ghi t mt bng vo bin Recordset ( y l bng
canbo).
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("canbo")
Trang 97

Lp trnh Visual Basic 6.0

V d 2:
Gn tp hp cc bn ghi t mt cu lnh chn d liu SQL vo bin Recordset
( y l cc thng tin hoten, ngaysinh ca tt c cc cn b n t bng canbo).
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("SELECT hoten, ngaysinh FROM canbo
WHERE gioitinh = False")

Mt s thuc tnh ca Recordset


Thuc tnh Name
Tr v xu k t trong tham s <name> ca lnh gi Recordset. V d: lnh
sau s cho bit xu k t to ngun d liu cho Recordset l g?
MsgBox rs.Name

Thuc tnh AbsolutePosition


Cho bit v tr bn ghi hin ti (c tnh t 0). Trong trng hp khng c
bn ghi no trn recordset hoc con tr bn ghi ang nm EOF- s khng th
ly c gi tr thuc tnh ny. Do vy s dng thuc tnh ny thng phi i
km thuc tnh kim tra c tn ti bn ghi no hay khng (RecordCount > 0) v
con tr bn ghi c cui tp cha (EOF = False).
Thuc tnh RecordCount
Cho bit tng s bn ghi tr v trn Recordset
Thuc tnh EOF
Cho bit con tr bn ghi hin ti c nm EOF hay khng? Nu c gi tr
thuc tnh ny l True, tri li l False.
Thuc tnh Fields
Trang 98

Lp trnh Visual Basic 6.0

Dng tham chiu ti cc trng (Fields) trn tp hp cc bn ghi m


Recordset tr v. Thc t Field cng l mt i tng v cng c b thuc tnh
v cc phng thc ca n. Vi Field ca Recordset thng thng ngi ta hay
s dng thuc tnh Value. Nu khng ch nh thuc tnh c th no cho Field,
VB vn hiu ngm nh l Value.
V d: Hin th gi tr trng hoten trong Recordset rs
Msgbox rs.Fields("hoten").Value
'hoc
Msgbox rs.Fields("hoten")

Mt s phng thc ca Recordset


Phng thc Close
ng Recordset, gii phng b nh. Ch thc hin hnh ng ny khi
khng lm vic vi Recordset no .
Cc phng thc di chuyn bn ghi ca Recorset
Phng thc MoveFirts
chuyn con tr v bn ghi u tin
Phng thc MoveLast
di chuyn con tr v bn ghi cui cng
Phng thc MoveNext
Dch n bn ghi k sau
Phng thc MovePrevious
Dch n bn ghi k trc
V d 3:
V d sau duyt v hin th ton b Hoten ca bng canbo
Dim rs As DAO.Recordset
Trang 99

Lp trnh Visual Basic 6.0

Set rs = db.OpenRecordset("canbo")
If rs.RecordCount > 0 Then
rs.MoveFirst
While rs.EOF = False
MsgBox rs.Fields("hoten").Value
rs.MoveNext
Wend
End If

Phng thc AddNew, Update


thm mi mt bn ghi vo Recordset. Qui trnh thm mt bn ghi mi nh
sau:
1. Ra lnh Addnew
2. Gn gi tr cho cc trng ca bn ghi mi
3. Ra lnh Update
Di y l v d thm mi mt h s cn b mi vo bng canbo.
V d 4:
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("canbo")
'---------------------'Ra lnh thm mi bn ghi
'
rs.AddNew
'-------'Gn gi tr cho cc trng ca bn ghi mi
'
rs.Fields("canboID") = "CB00565"
rs.Fields("hoten") = "Nguyn Sn Hi"
rs.Fields("ngaysinh") = #2/11/1975#
rs.Fields("gioitinh") = True
rs.Fields("chucvuID") = "CV002"
'-------'Ra lnh ghi li d liu
'
rs.Update

Trang 100

Lp trnh Visual Basic 6.0

Phng thc Edit, Update


Phng thc Edit sa d liu mt bn ghi no trn recordset. Qui trnh
sa mt bn ghi nh sau:
1. nh v ti bn ghi cn s trn recordset
2. Ra lnh Edit
3. Gn gi tr mi cho cc trng cn sa
4. Ra lnh Update
Di y l v d v sa h s cn b c m CB000565
V d 5:
Dim rs As DAO.Recordset
'------------------------------------'nh v ti bn ghi cn sa
'
Set rs = db.OpenRecordset("SELECT * FROM canbo WHERE
canboID='CB0565'")
If rs.RecordCount > 0 Then
rs.MoveFirst
'--------------------------------'Ra lnh sa bn ghi
'
rs.Edit
'--------------------------------'Thc hin sa cc trng d liu cn thit
'
rs.Fields("hoten") = "Nguyn Vn Hi"
rs.Fields("ngaysinh") = #22/11/1975#
'----------------------'Ra lnh ghi li d liu va sa
'
rs.Update
End If

Phng thc Delete


Trang 101

Lp trnh Visual Basic 6.0

xo bn ghi hin ti ra khi Recordset. Khi bn ghi hin ti s b xo b


khi CSDL. Cn thn trng mi khi ra lnh ny. Thng thng cc lnh mt nt
Xo bn ghi ca mt mu nhp liu (nhp vo bin Recordset rs) nh sau:
V d 6:
Private Sub cmDelete_Click()
Dim tbao
tbao = MsgBox(" chc chn xo cha?", vbYesNo + vbCritical)
If tbao = vbYes Then
rs.Delete
rs.MoveNext
End If
End Sub

1.4 i tng QueryDef


i tng Querydef dng tham chiu ti cc Query c sn (Buil-in) trn
CSDL Access, hoc cng c th lp trnh to cc Query t cc cu lnh SQL.

to v kch hot mt query trn VB bng cch thc thi cu lnh SQL, lm
theo hng dn sau:
'-----------------'Khai bo mt bin kiu Database v mt bin kiu QueryDef
Dim qr As DAO.QueryDef
'--------------------------'Ra lnh to mt Query mi, c tn rng (ch trong b
nh)
Set qr = db.CreateQueryDef(<tn query>)
'------------------------------'Gn chui lnh SQL vo thuc tnh SQL ca query
'
qr.SQL = "G lnh SQL cn thi hnh vo y"

Trang 102

Lp trnh Visual Basic 6.0

'-------------------------'Ra lnh thi hnh query


'
qr.Execute
'--------------------------'gii phng b nh
qr.Close

Trong :
- Bt buc phi khai bo mt bin kiu QueryDef lm vic (bin qr);
- Phi c mt bin Database c khai bo sn (bin db);
- Lnh

Set qr = db.CreatQueryDef(<tn query>)

to mt query mi ln

CSDL. <tn query> s c hin th trn danh sch trong th Queries trn
ca s Database. Nu <tn query>="", query ny s ch tn ti trong b
nh. Tu thuc vo mc ch cng vic m c t tn query hay khng,
nu ch n thun to mt query x l cng vic no ri gii phng,
nn t <tn query>="";
- Lnh qr.SQL=<cu lnh SQL> gn lnh SQL cn thc thi vo Query.
Tu thuc vo cu lnh SQL ny m query s thc hin nhng g. V d:
qr.SQL = "DELETE * FROM canbo"

lnh ny s xo tt c cc bn ghi trn

bng cn b;
- Lnh qr.Excute thi hnh cu lnh SQL c thit lp. Lnh ny tng
ng nhn nt Run i vi mt query trn ch thit k;
- Lnh

qr.Close

ng query hin ti v gii phng b nh khi khng cn

lm vic n na.
Sau y l mt s v dng v s dng bin QueryDef to ra mt s loi
query x l d liu.
V d 1: To DELETE query xo danh sch nhng cn b c tui ln hn
60 ra khi bng canbo (cn b ngh hu)
Dim qr As DAO.QueryDef

Trang 103

Lp trnh Visual Basic 6.0

Set qr = db.CreateQueryDef("")
qr.SQL="DELETE * FROM canbo WHERE Year(Date())- " _
& " Year(Ngaysinh)>=60"
qr.Execute
qr.Close

V d 2: Gi s thm mt trng mi trn bng cn b c tn luongchinh.


To UPDATE query tnh gi tr cho trng ny = hesoluong * 290000.
Dim db As DAO.Database
Dim qr As DAO.QueryDef
Set db = CurrentDb
Set qr = db.CreateQueryDef("")
qr.SQL = "UPDATE canbo SET canbo.luongchinh = hesoluong *
290000"
qr.Execute
qr.Close

1.5 i tng TableDef


i tng TableDef c dng tham chiu ti cc bng d liu (Table)
trn CSDL. Thng qua i tng ny c th thit k, chnh sa c cu trc cc
bng d liu trong ch Run-time ca VB nh trn ch thit k bng Design
View trn Access.

Mt s thuc tnh quan trng ca TableDef


Thuc tnh Name
Cho bit tn bng c gn vo bin kiu TableDef
Trang 104

Lp trnh Visual Basic 6.0

Thuc tnh RecordCount


Cho bit tng s bn ghi hin c trn bng c gn bi bin TableDef
Thuc tnh DateCreated
Cho bit thi gian to ra bng c gn vo bin kiu TableDef
Thuc tnh Fields
tham chiu ti cc trng ca bng. y l thuc tnh hay c s dng
nht i vi TableDef. Thc cht, Field y l mt i tng, do cng c
tp cc thuc tnh v phng thc ring cho thuc tnh ny.
Di y l th tc hin th tn ca tt cc cc trng trong mt bng no
(ngm nh trn mt CSDL c khai bo v gn bin db - kiu Database).

V d 1:
Sub LietKeTenTruong(tenbang As String)
Dim tbl As DAO.TableDef
Set tbl = db.TableDefs(tenbang)
For i = 0 To tbl.Fields.Count - 1
MsgBox tbl.Fields(i).Name
Next
End Sub

Mt s phng thc ca TableDef


Phng thc CreateTableDef
to ra mt bng mi t VB. C php to bng mi nh sau:
Set tbl = db.CreateTableDef(<Tn bng mi>)
------------------------------------------....Cc th tc to trng mi cho bng
------------------------------------------db.TableDefs.Append tbl

Trang 105

Lp trnh Visual Basic 6.0

Trong :
-

db l bin kiu Database c gn bi CSDL cn lm vic


(bng mi s c to ra trn CSDL ny);

<Tn bng mi> l tn bng cn to.

Lnh db.TableDefs.Append tbl l lnh ghi cu trc bng ang


khai bo ln CSDL ch nh.

Phng thc CreateField


to ra cc trng cho mt bng kiu TableDef no . thm mt trng
mi ln bng, s dng c php sau:
tbl.Fields.Append tbl.CreateField(<tn
trng>,<KiuDL>,<ln>)

Trong :
-

<tn trng> - tn trng mi cn to;

<KiuDL> - l mt tu chn khai bo kiu d liu ca trng


cn to. Kiu d liu c khai bo theo cc hng s nh sau:

Gi tr: Tng ng vi kiu


dbBoolean Boolean
dbByte Byte
dbChar Char
dbCurrency Currency
dbDate Date/Time
dbDecimal Decimal
dbDouble Double
dbFloat Float
dbGUID GUID
dbInteger Integer
dbLong Long
dbMemo Memo
Trang 106

Lp trnh Visual Basic 6.0

dbNumeric Numeric
dbSingle Single
dbText Text
dbTime Time

< ln> l mt tu chn khai bo ln d liu nu cn.

Tip theo l v d minh ho cch to cu trc mt bng d liu tng hp nhng


hng dn trnh by trn.
V d 2:
Sub TaoBangMoi()
On Error GoTo Loi
Dim tbl As DAO.TableDef
Set tbl = db.CreateTableDef("NewTable")
tbl.Fields.Append
tbl.Fields.Append
tbl.Fields.Append
tbl.Fields.Append
tbl.Fields.Append

tbl.CreateField("ID", dbInteger)
tbl.CreateField("Name", dbText)
tbl.CreateField("Age", dbByte)
tbl.CreateField("DateBirth", dbDate)
tbl.CreateField("Comment", dbMemo)

db.TableDefs.Append tbl
Exit Sub
Loi:
If Err.Number = 3010 Then
MsgBox " tn ti bng c tn " + tbl.Name
End If
End Sub

1.6 i tng Relation


i tng Relation dng to kt ni (RelationShip) gia 2 bng trong
CSDL Access. Di y l mt v d to kt ni gia 2 bng hoadon v khach
trong CSDL Qun l bn hng.
Sub CreatRelationShip()
On Error GoTo Loi
Dim rls As DAO.Relation

Trang 107

Lp trnh Visual Basic 6.0

Set rls = db.CreateRelation("TaoQuanHe", "khach",


"hoadon", dbRelationUpdateCascade)
rls.Fields.Append rls.CreateField("khachID")
rls.Fields("khachID").ForeignName = "khachID"
db.Relations.Append rls
Loi:
If Err.Number = 3012 Then
MsgBox " tn ti quan h ny !"
End If
End Sub

Trong trng hp tn ti kt ni ny, mt thng bo li ting Vit " tn


ti quan h ny !" xut hin.

1.7 S dng Data Form Wizard


Data Form Wizard l mt trnh tin ch dng to nhanh mt giao din cp
nht d liu cho mt bng d liu trn mt CSDL. Chng c dng trong cng
c VisData c tch hp sn trong VB. Tip theo s hng dn s dng tin ch
ny to mt s form nhp d liu cho cc bng trn CSDL Qun l lng cn
b.
Yu cu: to form cp nht danh mc chc v cho CSDL Qun l lng cn
b, c s dng Data Form Wizard.
Bc 1: To mt Project trn VB
Bc 2: Thc hin lnh Add-in Visual Data manager. Ca s ng dng
VisData xut hin.
Bc 3: m tp CSDL Access cn lm vic (CSDL Qun l lng) bng
cch: File | Open Database | Microsoft Access Tip theo tm n tp CSDL
Qun l lng v Open.
Bc 4: To form nhp d liu bng cch: Utility | Data Form Designer.
Mt hp thoi xut hin, hy thit lp nh sau:

Trang 108

Lp trnh Visual Basic 6.0

Cch thit lp:


-

G tn form vo hp Form Name: ch tn form khng cha


du cch v mt s k t c bit;

Hp Record Source, chn tn bng cn nhp d liu. y chn


bng CHUCVU;

Tip theo s dng cc nt >, >> hoc <, << a cc trng ca


bng d liu cn nhp ln form t danh sch Available Fields
sang danh sch Included Fields;

Cui cng nhn nt Build the Form kt thc.

n y, khi quay sang Project trn VB s thy xut hin mt form nhp d
liu cho bng CHUCVU c t ng to vo c th s dng.
Khi thi hnh project, form ny c giao din nh sau:

Thanh nh v bn ghi
i tng Data Control

thm mt bn ghi:
Trang 109

Lp trnh Visual Basic 6.0

Nhn nt Add;

Tip theo in d liu bn ghi mi ln cc hp nhp d liu ca


form;

Nhn nt Update ghi d liu.

sa d liu mt bn ghi:
-

S dng thanh nh v bn ghi chuyn n bn ghi cn sa;

Thc hin sa d liu;

Nhn nt Update ghi nhn d liu.

xa mt bn ghi:
-

S dng thanh nh v bn ghi chuyn n bn ghi cn xa;

Nhn nt Delete xa bn ghi ang hin th.

1.8 Bi ton cp nht d liu


Nhp d liu l yu cu gn nh bt buc i vi bt k ng dng no. Vi
cng ngh DAO, Data Control l iu khin rt ph hp cho bi ton ny. Di
y minh ha v d to form nhp d liu cho bng CHUCVU s dng cng
ngh ny:
V d 1: thit k form nhp d liu n gin
Bc 1: Thit k giao din nhp d liu cho form nh sau:

Trang 110

Lp trnh Visual Basic 6.0

Bc 2: thit lp mt s thuc tnh cho cc iu khin trn form nh sau:


iu khin Data1
- Thuc tnh DatabaseName hy tr ti tp CSDL Qun l lng;
- Thuc tnh RecordSource - chn bng cn nhp d liu (bng CHUCVU).
Nt Thm mi, thuc tnh name l cmdThemMoi;
Nt Xa bn ghi, thuc tnh name l cmdXoa;
Nt ng, thuc tnh name l cmdDong;
nhp M chc v:
Mi mt nhp d liu trn form yu cu ti thiu phi thit lp 2 thuc
tnh l:
- DataSource - khai bo ngun d liu cho ny ly t u (bng no)?
Thng thng ly t iu khin Data Control lin kt ti bng d liu;
- DataField khai bo trng d liu s lin kt ti nhp d liu hin ti.
Thuc tnh ny phi c thit lp sau thuc tnh DataSource mi c tc
dng.
Vi form trn, 3 i tng dng nhp d liu phi thit lp cc thuc tnh nh
sau:
i tng

DataSource

DataField

Text1

Data1

chucvuID

Text2

Data1

Tenchucvu

Text3

Data1

Phucapcv

Bc 3: vit m lnh iu khin cho cc nt lnh trn form nh sau:


Private Sub cmdThemMoi_Click()
'-----------------------------'ln thm bn ghi mi
'
Data1.Recordset.AddNew
'---------------------Trang 111

Lp trnh Visual Basic 6.0

'trc khi nhp d liu, chuyn con tr ti m chc v


'
Text1.SetFocus
End Sub
Private Sub cmdXoa_Click()
Dim thongbao
thongbao = MsgBox(" chc chn xa cha?", vbYesNo)
If thongbao = vbYes Then
'--------------------------'lnh xa bn ghi hin ti trn Data1
'
Data1.Recordset.Delete
End If
End Sub
Private Sub cmdDong_Click()
Unload Me
End Sub

V d 2: S dng DbGrid
Vi DbGrid, vic thit k mt giao din nhp d liu n gin hn v d s
dng hn. Di y gii thiu cch s dng iu khin ny.
Bc 1: thit k giao din form nh sau:

iu khin DbGrid

Trong trng hp khng thy iu khin DbGrid trn thanh ToolBar, hy kch
hot n bi ca s Components nh sau:
Trang 112

Lp trnh Visual Basic 6.0

Bc 2: thit lp cc thuc tnh ph hp cho cc i tng:


iu khin Data1
- Thuc tnh DatabaseName hy tr ti tp CSDL Qun l lng;
- Thuc tnh RecordSource - chn bng cn nhp d liu (bng CHUCVU);
- Thuc tnh Visible = False ( n iu khin Data ny khi chy chng
trnh).
Nt Thm mi, thuc tnh name l cmdThemMoi;
Nt ng, thuc tnh name l cmdDong;
iu khin DbGrid1
- Thuc tnh DataSource chn ngun d liu s hin th ln DbGrid (chn
Data1);
- Thuc tnh AllowAddNew = True;
- Thuc tnh AllowDelete = True;
- Thuc tnh AllowUpdate = True;
Trang 113

Lp trnh Visual Basic 6.0

- Thuc tnh DataMode = 0 Bound (tc l t ng gn kt d liu ti bng


d liu);
- Cui cng nhn phi chut ln DbGrid chn thc n Retrieve Fields t
ng thit lp tiu cc ct v nh v th t cc ct trong bng d liu ln
cc ct tng ng trn DbGrid.

Hn na, nu chn mc Properties c th thit lp c nhiu hn cc


thuc tnh khc lm DbGrid tr nn p hn. Vic ny bn c t nghin cu.
Bc 3: Vit lnh cho form nh sau:
Private Sub cmdXoa_Click()
Dim thongbao
thongbao = MsgBox(" chc chn xa cha?", vbYesNo)
If thongbao = vbYes Then
'--------------------------'lnh xa bn ghi hin ti trn Data1
'
Data1.Recordset.Delete
End If
End Sub
Private Sub cmdDong_Click()
Unload Me
End Sub

Vi phng php ny khng cn s dng phng thc thm bn ghi mi (bi


trn DbGrid t ng cho php lm vic ny).

1.9 Bi ton tm v lc d liu


Lc v tm kim l dng bi ton c bn trong lp trnh CSDL. Nguyn tc
hot ng ca dng bi ton ny l nh nhau, s ch khc v yu cu, giao din
s dng.
V d di y l mt bi ton lc ra danh sch cn b ca mt phng ban no
sau khi tn phng ban c chn t mt hp Combobox:
Trang 114

Lp trnh Visual Basic 6.0

Cch lm:
Bc 1: Thit k giao din form nh sau:

Bc 2: thit lp cc thuc tnh ph hp cho cc iu khin nh sau:


iu khin Data1
- Thuc tnh DatabaseName hy tr ti tp CSDL Qun l lng;
- Thuc tnh Visible = False ( n iu khin Data ny khi chy chng
trnh).
iu khin DbGrid1
Trang 115

Lp trnh Visual Basic 6.0

- Thuc tnh DataSource chn ngun d liu s hin th ln DbGrid (chn


Data1);
Bc 3: vit lnh cho form nh sau:
Private Sub Form_Load()
Dim rs As DAO.Recordset
'------------------------------------'m tp CSDL gn vo bin db
'
Set db = OpenDatabase(Data1.DatabaseName)
'--------------------------------------'m danh sch cc phng ban v y ln Combo1
'
Set rs = db.OpenRecordset("phongban")
While rs.EOF = False
Combo1.AddItem rs.Fields("tenphongban").Value
rs.MoveNext
Wend
End Sub
Private Sub Combo1_Click()
'------------------'th tc ny xy ra sau khi chn mt phng ban t combo1
'
Dim strSQL As String
'Bc 1 ------------------'xc nh cu lnh SQL lc ra danh sch cn b tha mn
'phng ban chn Combo1
'
strSQL = "SELECT canbo.hoten, chucvu.tenchucvu " _
+ " FROM (canbo INNER JOIN chucvu ON canbo.chucvuID = " _
+ " chucvu.chucvuID) INNER JOIN phongban ON = " _
+ " canbo.phongbanID = phongban.phongbanID " _
+ " WHERE phongban.tenphongban = '" + Combo1.Text + "'"
'Bc 2--------------'gn cu lnh SQL trn cho Data1
'
Data1.RecordSource = strSQL
'-----------------------'Lnh ny thc hin d liu t Data1 ln DbGrid
'
Data1.Refresh
End Sub

Trang 116

Lp trnh Visual Basic 6.0

Ch
Vic vit ra cu lnh SQL ng l rt kh, i hi lp trnh vin phi c nhiu kinh
nghim. lm tt c vic ny, nn thit k mt query ch design view; ri s
dng tnh nng Copy, Paste dn cu lnh SQL m query to ln ni son tho lnh
VB v chnh sa cho ph hp. Thng thng sa mnh WHERE ca cu lnh.

2. K thut ADO
Phn 1 ca chng ny gii thiu cng ngh lp trnh CSDL DAO trn VB,
l cng ngh kh d hc, ph bin. ADO (ActiveX Data Objects) l cng
ngh mi hn, khc phc c mt s cc nhc im ca DAO v thch nghi
trn nhiu h CSDL. Hin nay, ADO.NET l cng c cc mnh v ang c
pht trin rt ph bin. Tuy nhin ADO.NET ch c th chy trn nn .NET.
tr thnh nh pht trin chuyn nghip, chn ADO l mt hng i ng.

2.1 Kin trc ADO


Trc khi i vo tm hiu k thut lp trnh ADO hy tm hiu kin trc v
cch thc s dng VB lp trnh CSDL dng ADO.
Visual Basic

ADO

OLE DB

CSDL

Nh vy, c th s dng VB lp trnh CSDL s dng cng ngh ADO ta


cn qua 2 lp: ADO v OLE DB.

Trang 117

Lp trnh Visual Basic 6.0

- ADO cung cp tp hp cc i tng, cng c c th lp trnh x l h


CSDL;
- Trong khi , OLE DB l mt trnh cung cp cc dch v gip iu khin cc
yu cu x l d liu t ADO. Trong thc t vi ngun d liu l Access, cn
cn phi qua lp iu khin Jet trc khi tp hp cc lnh t ADO c th thm
nhp vo CSDL.
Tuy nhin, cc lp trnh vin cng cha cn quan tm nhiu n cu trc ca
OLE DB cng nh Jet m ch cn s dng tt cc i tng ADO vo lp trnh
CSDL v OLE DB v Jet ch n gin l vic khai bo chng.

2.2 i tng Connection


i tng Connection dng kt ni ti ngun d liu vt l cn lm vic.
Tt c cc i tng ca ADO u phi lm vic trn mt Connection no
c thit lp.
thit lp mt Connection cn phi khai bo mt bin c kiu
ADODB.Connection;
Cc thuc tnh kt ni ti CSDL c th hin qua mt chui kt ni (thng
gi chui ny l Connection String). Trn chui ny c ch nh cc thuc tnh
nh:
Provider tn trnh cung cp dch v truy cp CSDL. y dng
Microsoft.JET.OLEDB.3.51;
Data Source - ch nh ngun d liu truy cp. y ch nh ng dn ti
tp CSDL Access cn lm vic. V d: C:\Project\QLTV\Data\qltv.mdb
Khi , vic m mt kt ni trong ADO c thc hin bi th tc sau:

Dim cnn As New ADODB.Connection


cnn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Data Source=C:\Project\QLTV\Data\qltv.mdb"

Khi khng mun lm vic vi kt ni no (cnn), nn ngt b kt ni gii


phng b nh bng vic gi phng thc Close nh sau:
Trang 118

Lp trnh Visual Basic 6.0

cnn.Close

Sau lnh ngt kt ni ny, tt c cc i tng khc ca ADO c s dng


Connection cnn cng s t ng c gii phng khi b nh.

2.3 i tng Command


i tng Command trong ADO thng dng thc thi mt cu lnh truy
vn SQL no . V d nh: vic xa, thm, cp nht cc bn ghi trong CSDL.
Cch s dng i tng ny nh sau:
Bc 1: Khai bo mt bin i tng Command nh sau:
Dim cmd As New ADODB.Command

Bc 2: Thit lp chui kt ni cho Command ny thng qua thuc tnh


ActiveConnection. Chui ny ht nh chui s dng khi to Connection.
V d: vi vic kt ni ti CSDL Qun l th vin nh trn, chui kt ni s nh
sau:
cmd.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.3.51;"
_

& "Data Source= " + App.Path + "\qltv97.mdb"

Hoc c th s dng thng qua Connection khi to nh sau:


cmd.ActiveConnection = cnn.ConnectionString

Bc 3: Gn cu lnh SQL cn thc thi thng qua thuc tnh CommandText


ca i tng Command. Gi s mun chn thm mt bn ghi mi ln bng
NXB c gi tr (nxbID = 05, tenNXB=Nh xut bn khoa hc k thut,
diachi=H ni):
cmd.CommandText = "INSERT INTO nxb (nxbID, tenNXB, diachi)"
_
& "VALUES ('05', 'Nh xut bn khoa hc k thut', 'H
ni')"

Bc 4: Ra lnh thc thi Command bi phng thc Excute


Trang 119

Lp trnh Visual Basic 6.0

cmd.Execute

V c bn, i tng Command trong ADO gn ging vi i tng


QueryDef trong DAO!

2.4 i tng Recorset


i tng Recordset trong ADO cng gn ging nh trong DAO, tc l c th
trch lc d liu t CSDL. im khc bit ch yu gia Recorset trong ADO v
DAO l: Recordset trong ADO ch c kh nng ch c, khng th cp nht c
d liu. Nh vy nhng phng thc nh Delete, Addnew hay Update l khng
c trn i tng recorset trong ADO.
Khc vi Command, Recordset cn hot ng trn mt Connection c
kch hot. Gi s c Connection cnn c kch hot v kt ni ti CSDL
Qun l th vin. Cc bc sau y hng dn to mt Recordset:
Bc 1: Khai bo mt bin i tng RecordSet nh sau:
Dim rs As New ADODB.RecorSet

Bc 2: Ra lnh thc thi cu lnh la chn SQL v gn tp hp cc bn ghi


tr v vo bin Recordset ny. Gi s mun ly ra cc thng tin v sch nh:
sachID, tensach, nanxb, tentacgia, tennxb. Th tc nh sau:
rs.Open "SELECT sach.sachID, sach.tensach, sach.namXuatban, "
_

& " tacgia.tentacgia, nxb.tenNxb FROM tacgia INNER JOIN " _


& " (nxb INNER JOIN sach ON nxb.nxbID = sach.nxbID) ON " _
& " tacgia.tacgiaID = sach.tacgiaID;", cnn

n y c th s dng Recordset ny nh trong DAO, ch khc l khng th


thc hin cc chc nng v cp nht d liu. V d di y thc hin duyt v
in ra Tensach, tentacgia, tennxb, Namxb ca tt c cc bn ghi Recordset trn:
While rs.EOF = False

Trang 120

Lp trnh Visual Basic 6.0

MsgBox rs.Fields("tensach") & " - " &


rs.Fields("tentacgia")
rs.MoveNext
Wend

Trang 121

Lp trnh Visual Basic 6.0

3. Data Report
Data Report l cng c thit k in bo co trong VB. y l cng c khng
thc s chuyn nghip, nhng n rt quan trng tip cn ti cc cng c thit
k in bo co chuyn nghip khc.
Qui trnh thit k v s dng mt Data Report thng phi qua 3 bc sau:
Xy dng ngun d liu

Thit k Data Report

S dng Report

Di y s trnh by k tng qui trnh to ra v s dng mt Data Report.

3.1 Xy dng ngun d liu


Xy dng ngun d liu l xy dng tp hp d liu cn in ln bo co thng
qua mt truy vn d liu (query). Cch lm nh sau:
Bc 1: To mi trng d liu ln Project (trong trng hp c mt mi
trng d liu ri, bc ny l khng cn phi lm li).
Ra lnh Project \ Data Environment. Mt Data Environment s xut hin
trn Project nh sau:

Trang 122

Lp trnh Visual Basic 6.0

Bc 2: Thit lp kt ni ti tp CSDL bng cch:


Nhn phi chut ln mc Connection trn Data Environment (hnh trn) v
chn Properties, hp thoi Data Link Properties xut hin nh sau:

Trang 123

Lp trnh Visual Basic 6.0

th Provider hy chn dch v Microsoft Jet 3.51 OLE DB Provider (hnh


trn).
th Connection, hp Select or enter a databasename: hy chn n tp
CSDL Access (hnh di):

Nhn nt Test Connection kim tra kt qu kt ni, nu hp thoi di


y hin th:

Tc l kt ni thnh cng ti tp CSDL.


Bc 3: to truy vn d liu cn in ra bo co.
Nhn phi chut ln Connection va lm vic, chn lnh Add Command, hp
thoi sau xut hin:
Trang 124

Lp trnh Visual Basic 6.0

Tip theo nhn nt lnh SQL Builder xy dng truy vn cho Command
ny, mt mn hnh thit k query (gn ging trong Access) xut hin cho php
thit k mt truy vn d liu n CSDL:

Trn hp thoi trn c th:


Trang 125

Lp trnh Visual Basic 6.0

a cc bng ln query (Add Table) bng cch dng chut ko bng cn


chn t ca s Data View sang phn thit k query;

Chn mt trng d liu no truy vn bng cch tch ln hp chn


trng trn bng thit k;

Xem d liu truy vn c bng cch nhn phi chut ln hp thoi


thit k query, chn lnh Run.

3.2 Thit k Data Report


Bc 1: a mt Data Report mi ln Project, ra lnh Project \ Data
Report. Mn hnh thit k Report xut hin nh sau:

Giao din thit


k bo co
Thanh cng c
thit k bo
co

Mn hnh thit k report gm 2 phn:


- Thanh cng c thit k report- cha cc iu khin cn thit cho vic
thit k d liu ln report. Bao gm cc iu khin nh:
RptLabel dng to ra cc nhn vn bn trn bo co (ging nh Label trn
form).
RptTextbox - in d liu t cc trng (dat field) ra report
Trang 126

Lp trnh Visual Basic 6.0

RptLine - k ng thng
RptImage - chn cc hnh nh ln report
RptFunction - a cc hm tng hp ln report
RptShape - v cc khi hnh ln report.

- Giao din thit k bo co. cng th hin cu trc hin th d liu


trn report. Thng thng, mi report gm 5 phn c bn:
Phn 1: Page Header - mi report s ch c duy nht mt Page Header,
l phn d liu hin th trn cng (Header) ca mi trang in;
Phn 2: Page Footer - mi report s ch c duy nht mt Page Footer, l
phn d liu hin th di cng (Footer) ca mi trang in;
Phn 3: Detail l phn hin th d liu chi tit t cc bn ghi trong truy
vn d liu ra report. Truy vn c bao nhiu bn ghi, Detail s gm
chng lt in d liu ra bo co. Mi reoport ch gm duy nht mt
Detail.
Phn 4: Report Header l tiu u ca Report. D liu ca phn ny
hin th ngay sau d liu phn Page Header ca trang in u tin.
Phn 5: Report Footer l tiu cui ca Report. D liu ca phn ny
hin th ngay trc d liu phn Page Footer ca trang in cui cng.
Bc 2: Thit lp mt s thuc tnh cho Data Report
Thuc tnh DataSource - ch ra mi trng d liu (Data Environment) no s
cung cp d liu cho report;
Thuc tnh Datamember - ch ra truy vn d liu (Command) no s cung
cp d liu cho report.
Bc 3: Thit k report
S dng cc iu khin trn thanh cng c ph hp thit k v nh dng
report.
Trang 127

Lp trnh Visual Basic 6.0

Hnh di l mt thit k report in ra thng tin cc cun sch t CSDL Qun


l th vin.

RptLabel

RptTextbox

RptFunction

3.3 S dng Data Report


Gi mt Data Report xem v in d liu cch lm nh vi mt form. C
php lnh l:
<Tn Data Report>.Show

Sau khi nhn c lnh ny trong ch Running Time, mn hnh xem d


liu trc khi in ca Data Report xut hin nh sau:

Trang 128

Lp trnh Visual Basic 6.0

n y c th thc hin vic in d liu mt cch d dng nh trn Word v


Excel.

Trang 129

Lp trnh Visual Basic 6.0

Bi tp chng 3
1. Thit k CSDL Qun l th vin trn Access nh sau:

Cc cng vic tip theo c thc hin trn mt Project ca VB:


2. Thit k form cp nht d liu bng NXB vi giao din s dng nh sau:

3. Thit k form cp nht d liu cho bng TACGIA vi giao din s dng nh
sau:

Trang 130

Lp trnh Visual Basic 6.0

4. Thit k giao din nhp d liu cho bng SACH vi giao din s dng nh
sau:

5. Thit k form phc v tra cu sch theo mt tc gi no nh sau:

Trang 131

Lp trnh Visual Basic 6.0

Sau khi chn tn mt tc gi, thng tin v cc cun sch ca tc gi c


hin th trn DbGrid;
Nhn nt In kt qu, thng tin cc kt qu ny s c in ra mt Data Report.
6. Thit k form tra cu sch theo mt nh xut bn no nh sau:

Sau khi chn mt Nh xut bn, thng tin v cc cun sch ca nh xut bn
s c hin th ln mt DbGrid;
Trang 132

Lp trnh Visual Basic 6.0

Nhn chut ln nt In kt qu, d liu tm c s in ra mt Data Report.


7. Thit k form tm kim sch theo tn gn ng. Tn gn ng l tn c cha
trong trng Tensach. Giao din s dng form yu cu nh sau:

Sau khi nhp mt tn cn tm, nhn nt Tm. Danh sch cc cun sch m tn
sch c cha cm t va g vo s c hin th ln DbGrid;
Nht nt In kt qu, thng tin ny s c in ra mt Data Report.
8. Thit k form tm kim sch theo chng loi (thng tin chng loi ca mi
cun sch c lu vo trng VANTAT) nh sau:

Trang 133

Lp trnh Visual Basic 6.0

Sau khi g vo tn chng loi cn tm, nhn nt Tm, phn mm s lit k cc


cun sch c cha cm t va nhp vo trong trng VANTAT;
Nu nhn nt In kt qu, ton b kt qu tm c s c in ra mt Data
Report.

Trang 134

Lp trnh Visual Basic 6.0

CHNG

HON THIN D N
Chng ny trang b nhng kin thc cng nh k thut thit k giao din
chnh cho mt ng dng v dch, ng gi d n thnh b gi t ng dng mang
tnh thng mi. Ni dung ca chng tp trung vo cc vn :
-

Thit k giao din chnh ng dng;

Thit k Menu, Toolbar;

Dch ng dng ra dng .exe;

ng gi d n thnh b gi t phn mm.

Trang 135

Lp trnh Visual Basic 6.0

1. Thit k MDI Form


1.1 Mt s khi nim
MDI Form (Multiple Document Interface Form) l mt kiu giao din ng
dng c dng kh ph bin, v d nh: Microsoft Word, Microsoft Excel,
Microsoft Powerpoint, Microsoft Visual Basic, Trong mt ng dng, MDI l
form giao din chnh, ni cha h thng thc n (menu), thanh cng c
(Toolbar) c th truy cp c n cc chc nng ca ng dng. y c l l
gii php tt nht qun l vic thc hin cc m un chc nng trong mt ng
dng. Hnh di minh ha mt ng dng s dng gii php MDI Form cho ng
dng:

Trong VB, mi Project ch tn ti nhiu nht mt MDI form. Khc vi form


thng thng, trn MDI ch c th thit k c mt s cc iu khin nh:
Trang 136

Lp trnh Visual Basic 6.0

Menu, ToolBar, Picture Box, ListImage, StatusBar, Timer v Common Dialog.


a s cc iu khin cn li khng th t trc tip ln MDI form c, nu
mun phi t chng trn mt iu khin dng Container nh Picture Box.
Nhng form c qun l bi MDI form c gi l MDI Child forms (form
con). Khi MDI form ng li, ton b cc form con ang m cng s b gii
phng khi b nh.
Vi hnh trn, ca s c tiu VisData l MDI form, 2 ca s cn li:
Database Window v SQL Statement u l cc MDI Child forms.

1.2 S dng MDI form


Bc 1: a mt MDI form ln project. Cch lm nh sau:
-

Thc n Project | Add MDI form. Mt hp thoi xut hin:

Chn MDI Form, nhn Open, mt MDI form c chn vo Project;

Tip theo c th thit k menu, toolbar v cc giao din cn thit khc


ln MDI v gi t cc th tc cn thit (tm hiu tip cc mc sau).

Bc 2: Thit lp cc MDI Child form bng cch: thit lp thuc tnh


MDIChild = True cho cc form mun lm MDI Child.
Trang 137

Lp trnh Visual Basic 6.0

2. Thit k Menu
Menu l loi iu khin ph bin dng gi cc th tc, cc giao din hoc
chc nng ca mt ng dng ra lm vic. Thng thng, menu c thit k
ngay trn MDI form ca mi ng dng.

Trong VB, mun to ra menu cho ng dng, cn s dng trnh Menu Editor.
Tip theo y, s hng dn cch s dng Menu Editor thit k h thng
menu trn mt MDI form.
Bc 1: To mt MDI Form l giao din chnh ca ng dng, ni s cha
menu cn to (hnh trn);
Bc 2: Gi trnh Menu Editor bng cch: nhn phi chut ln MDI Form,
tip theo chn Menu Editor (hnh di):

trnh Menu Editor xut hin!


Bc 3: Thc hin thit k cu trc menu trn hp thoi Menu Editor nh
sau:

Trang 138

Lp trnh Visual Basic 6.0

Menu ny ang
c thit lp

H thng menu
c thit k

Ton b h thng menu trn MDI Form c thit k trn mt hp thoi


Menu Editor (mt phn ca chng nh hnh trn). Cch thc: xy dng tng mc
ca menu. Mi mc ca menu c th phi thit lp cc thng tin sau:
-

Caption nhn th hin ca mc menu (bt buc phi nhp). c bit:


-

to ng phn cch (

) thit lp Caption l (gch

ngang);
-

thit lp phm nng cho mc menu, g k t & ln trc k t mun


thit lp phm nng (ch k t H ca mc &He thong).

Name - nh tn cho mi mc menu. Gi tr ny phi duy nht v bt


buc phi nhp (Name khng c trng nhau);

Shortcut - chn phm nng cho mc menu ny (vi nhng mc menu


cp mt nh: H thng hoc D liu hoc Bo co trn khng th
thit lp c phm nng, chng ch dnh cho cc mc menu cp 2 tr
i);

Enable cho php lm vic hoc cm (khng cho php lm vic) mc


menu ny. Nh hnh trn, mc menu Quan ly nguoi dung l ang b
cm;
Trang 139

Lp trnh Visual Basic 6.0

Visible cho php hin th hoc n mc menu. Nu khng chn thuc


tnh ny, mc menu s khng hin th trn h thng menu khi
chng trnh hot ng;

Nt Next chuyn n mc menu tip theo sau;

Nt Insert - chn thm mt mc menu trng;

Nt Delete - xa mc menu ang chn;

H thng cc nt

dch chuyn v tr cng nh th cp

ca cc mc menu;
-

Thit lp xong nhn OK chp nhn.

Bc 3: vit cc th tc p ng s kin cho cc mc ca h thng menu (


l cc lnh gi thi hnh cc th tc hoc Form trong Project). Thng thng, vit
th tc p ng s kin Click cho cc mc bng cch: ti ca s thit k MDI
Form, dng chut tr n mc menu cn vit th tc p ng s kin, mn hnh
son tho chng trnh s xut hin lm vic.
Lnh hin th mt Form ra lm vic l:
<tn form>.Show

V d: lnh sau gi form Cp nht h s c Name l frmCapNhatHoSo c


vit nh sau:
frmCapNhatHoSo.Show

3. Thit k ToolBar
Cng vi Menu, ToolBar l mt iu khin quan trng thit k giao din
chnh cho cc ng dng. Thng thng, mi ng dng u s dng c Menu ln
ToolBar. Menu l cng c chnh gi cc chc nng ca ng dng, cn

Trang 140

Lp trnh Visual Basic 6.0

ToolBar c dng gi nhng tnh nng hay s dng nht cho mi ng dng.
Bi v, dng ToolBar thao tc nhanh hn Menu.
Di y l mt giao din chnh ca ng dng s dng c Menu v ToolBar:

Di y s hng dn cch thit k v gi t ToolBar trn theo ng mc


ch ca n.
Bc 1: Mt Toolbar c th c trang tr nhng nt lnh bng hnh nh (nh
hnh trn), khi cn to mt iu khin ImageList trn form c cha ToolBar
ny. iu khin ImageList (c ToolBar) cng nm trong th vin Microsoft
Windows Common Controls 6.0. Nn phi khai bo th vin ny trn ca s
Components trc khi c th s dng chng. Cch thit k ImageList nh sau:
-

a mt ImageList ln Form (gi s c tn ImageList1);

Nhn nut phi chut ln ImageList, chn Properties, hp thoi


Property Page xut hin nh sau:

Trang 141

Lp trnh Visual Basic 6.0

S dng nt Insert Picture a danh sch cc nh s s dng vo


thit k ToolBar ln ImageList ny (hnh trn a c 3 nh).

Bc 2: a i tng ToolBar ln form. Nhn phi chut ln ToolBar, chn


Properties, hp thoi thit k ToolBar xut hin nh sau:

Th General cha cc thuc tnh chung cho ToolBar l:

Trang 142

Lp trnh Visual Basic 6.0

ImageList - chn iu khin ImageList1 to ra (tuy nhin thuc


tnh ny c th b qua);

Style hnh dng ca cc nt trn ToolBar kiu 1 tbrFlat (kiu


phng) hoc 0 3D (3 chiu);

Th Buttons thit k h thng cc nt cho Toolbar:

to mi mt nt ln toolbar nhn nt Insert Button. Tip theo khai bo


cc thuc tnh cho nt va to bao gm:
-

Caption nhn tiu ca nt;

Key kha ca nt. Gi tr kha gia cc nt l duy nht. Thuc tnh


ny cng c th dng nhn bit cc nt khi dng;

Style - kiu nt. Mi nt lnh trn Toolbar c th nhn 1 trong cc


kiu nh l: 0 tbrDefault - kiu nt lnh thng thng; 1
tbrCheck - kiu nt 2 trng thi n xung v khng; 3 tbrSeparator
lm vch ngn gia cc nt;

ToolTip Text - thit lp xu k t nhc mi khi di chut ln nt ny;

Trang 143

Lp trnh Visual Basic 6.0

Image - chn nh cho nt lnh (nu cn). nh c ly t iu


khin ImageList. Ga tr g vo y l th t ca nh cn hin th ln
nt trong danh sch ImageList.

Bc 3: gi t th tc cho Toolbar gi n cc chc nng ng dng nh


thit k. Bt s kin Click ca Toolbar gi t cc th tc gi chc nng
ng dng tng ng. Trong s kin ny, tham s Button cho bit nt va c
nhn chut. C th thng qua gi tr Key ca Button bit va bm ln nt no.
Vi Toolbar trn, th tc ny s nh sau:
Private Sub Tbr1_ButtonClick(ByVal Button As MSComctlLib.Button)
'--------------------------------'S dng thuc tnh Key nhn bit cc nt
'
Select Case Button.Key
'---------------------------'Key = m1 nhn ln nt Quan ly nguoi dung
'
Case "m1"
frmQuanlynguoidung.Show
'---------------------------'Key = m2 nhn ln nt Nhap ho so
'
Case "m2"
frmQuanlyhoso.Show
'-------------------------------'Key = m3 nhn ln nt Thoat
'
Case "m3"
End
End Select
End Sub
Trang 144

Lp trnh Visual Basic 6.0

4. ng gi d n
ng gi d n l qui trnh cui cng dch d n vit trn VB thnh b gi
t phn mm - mt sn phm c th chuyn giao n khch hng. Bc ny s
bao gm cc cng vic dch v ng gi ton b cc ti nguyn cn thit d
n c th chy c lp trn bt k mt my tnh no, kt qu s l mt b gi t
phn mm (Setup). Cc bc thc hin to mt b gi t nh sau:
Bc 1: Dch Project ra tp c th thc thi c (tp .exe) bng cch ra lnh
File \ Make <project>.exe Nu khng c li g, ton b d n VB s c
dch ra mt tp c tn <tn project>.exe.
Bc 2: Kch hot trnh Package and Deployment Wizard cu VB - mt cng
c dng ng gi d n i km VB6 bng cch:
-

Ra lnh Add-in \ Add in Manager;

Tip theo kch hot trnh Package and Deployment Wizard bng cch
nhn p chut ln mc Package and Deployment Wizard:

Trang 145

Lp trnh Visual Basic 6.0

Nhn Ok ng hp thoi ny;

Tip theo ra lnh Add Ins |

. Trnh

Package and Deployment Wizard xut hin tng bc gip ng


gi d n.
Bc 3: tng bc thc hin ng gi d n:

hp thoi trn, nhn nt Package tip tc. Hp thoi sau xut hin
hi li mt ln na c mun dch li d n hay khng?

Nhn Yes nu mun dch li, tri li nhn No tip tc.


Hp thoi tip theo xut hin hi chn kiu ng gi. Thng thng
chn kiu Standard Setup Package:

Trang 146

Lp trnh Visual Basic 6.0

Nhn Next tip tc:


Hp thoi tip theo yu cu xc nh th mc trn a ni s lu tr b
gi t s to c sau ny:

Chn th mc xong, nhn Next tip tc:


Hp thoi sau y xut hin cho php ty chn cc th vin iu khin
DAO vo b gi t. VB s t ng xc nh cc th vin cn thit, cch tt
Trang 147

Lp trnh Visual Basic 6.0

nht l a chng ln b gi t bng cch a chng t danh sch


Available drivers sang danh sch Included drivers (hnh di):

Nhn Next tip tc:


Hp thoi tip theo xut hin cho php thm (Add) hoc g b (Remove)
cc tp tin trn b ng gi. Thng thng, cc tp CSDL cng nh mt s
cc tp tin lin quan khc n d n VB phi s dng tnh nng ny a
vo b gi t. Nt Add thc hin thm cc tp tin:

Trang 148

Lp trnh Visual Basic 6.0

Nhn Next tip tc:


Hp thoi tip theo la chn cch to ra cc tp tin trong b gi t. C
hai ty chn l: Single cab ton b a gi t ch gom li thnh mt tp
tin Setup.exe; hoc Multiple cap - s chia b a gi t thnh cc tp tin
nh dng nn c dung lng nh (trc y thng dng ty chn ny
c th copy b gi t ra cc a mm).

Trang 149

Lp trnh Visual Basic 6.0

Nhn Next tip tc:


Hp thoi tip theo dng g tiu b gi t. Hy g tiu phn mm
vo hp: Installation title:

Nhn Next tip tc:


Hp thoi tip theo dng qun l cc Shortcut ca phn mm trn thanh
tc nghip Start ca Windows:

Trang 150

Lp trnh Visual Basic 6.0

Nt New Group to mt nhm mi (Group) trn mc Programs


ca thanh Start;

Nt New Item - to mt Shortcut mi trn mt Group no ;

Nt Properties thit lp thm cc thuc tnh cho cc Group hoc


Items;

Nt Remove xa b cc Group hoc Items khng cn thit.

Nhn Next tip tc:


Hp thoi tip theo cho php khai bo li v tr cc tp tin c ng gi
trn a sau khi chng c gi t. C th thay i v tr ny ct
Install Location trn bng hin th danh sch cc tp tin c ng gi:

Nhn Next tip tc:


Hp thoi cui cng tin trnh gi t xut hin. Ti y c th nhn nt
Finish kt thc qu trnh ng gi d n. Hoc c th s dng nt Back
tr li cc bc lm thit lp li.

Trang 151

Lp trnh Visual Basic 6.0

Trang 152

Lp trnh Visual Basic 6.0

Bi tp chng 4
1. Vi Project Qun l sch th vin, hy to MDI form v h thng Menu,
Toolbar nh sau:

2. S dng cng c Package and Deployment Wizard ng gi Project Qun


l sch th vin thnh b gi t hon chnh.

Trang 153

Lp trnh Visual Basic 6.0

TI LIU THAM KHO


1. Programming Microsoft Visual Basic 6.0, Francesco Balena, Microsoft
Press, 1999;
2. Advanced Microsoft Visual Basic 6.0, Second Edition, Wendy Zucker,
Microsoft Press, 1998;
3. MSDN, Microsoft Corporation, 1997.

Trang 154

Lp trnh Visual Basic 6.0

DANH SCH CC T VIT TT

ADO - ActiveX Data Access


CNTT - Cng ngh thng tin
COM - Common Object Model
CSDL - C s d liu
DAO - Data Access Objects
GUI - Graphical User Interface
MDI - Multi Document Interface
VB - Visual Basic

Trang 155

Lp trnh Visual Basic 6.0

THUT NG TING ANH


Connection

Mt i tng trong ADO dng to kt ni ti CSDL phc v lp


trnh CSDL.

Control

iu khin trong VB - mt cng c lp trnh trc quan.

Data

D liu, d kin, s liu

Data

Mi trng d liu trong d n VB. Mi trng c th bao gm cc

Environment

kt ni d liu (Connection), cc truy vn d liu (Command) phc


v lp trnh CSDL v in bo co.

Data Report

Mt cng c trong VB dng thit k, in bo co.

Data source

Ngun cung cp d liu, c th l cung cp cho mt Form, cung cp


d liu cho mt Report.

Data type

Kiu d liu. D liu trong c s d liu phi c nh kiu: kiu


s, kiu ch, kiu l gc, - l cc kiu d liu

Database

C s d liu. Ni cha ton b d liu cho mt mc ch qun l


no , d liu c thit k v lu tr theo cc cu trc ti u.

Datasheet

Bng d liu- ni d liu hin th di dng bng bao gm cc ct


v cc dng d liu.

Design View

Mi trng thit k, c th l thit k Form, thit k report, query,

Detete

Ch hnh ng xa cc bn ghi ra khi c s d liu

EOF

End Of File mt du hiu cho bit con tr bn ghi nm v tr


ci cng ca mt recorset.

Field

Trng d liu

Field size

ln ca trng d liu

Trang 156

Lp trnh Visual Basic 6.0

Form

i tng dng thit k giao din trong pht trin phn mm. Kt
qu ca form khi s dng s l cc ca s, hp thoi- ni m ngi
dng c th s dng thao tc trn phn mm.

Function
Group By

Mt mnh trong cu lnh SQL dng nhm cc bn ghi phc v


cc vic tng hp d liu no .

Object

i tng - mt thnh quan trng trong lp trnh hng i tng,


trc quan nh VB.

Package &

Mt cng c dng ng gi d n, to b gi t trong mi

Deployment

trng pht trin VB.

Project

Mt d n VB bao gm nhiu thnh phn, nhiu tp tin v ti


nguyn phc v xy dng d n phn mm no trn VB.

Query

Mt i tng dng truy xut, x l d liu trn cc h c s d liu

Record

Bn ghi

Recordset

Tp hp cc bn ghi

Relationship

Ch quan h gia cc bng trong c s d liu

SQL

Structured Query Laguage ngn ng truy vn d liu c cu trc.


Mt ngn ng x l d liu kh ph dng trn cc h c s d liu.
Vi Access, Query Design chnh l ni thit k to ra cc cu
lnh SQL thi hnh cc php x l d liu.

Sub

T kha khai bo chng trnh con dng th tc (Procedure)


trong VB.

Wizard

L trnh iu khin gip ngi lp trnh n gin trong vic xy


dng ng dng. Trong VB, chng ta c tm hiu Data Form
Wizard.

Trang 157

Lp trnh Visual Basic 6.0

MC LC
GII THIU .............................................................................................................2
BI M U ............................................................................................................4
1. Gii thiu Visual Basic 6.0.......................................................................................4
2. Khi ng .................................................................................................................6
3. Lu tr ......................................................................................................................8
4. M d n c .........................................................................................................9
CHNG 1: LP TRNH VB CN BN ...............................................................11
1. Kiu d liu - bin v hng ....................................................................................12
1.1 Kiu d liu......................................................................................................12
1.2 Bin ..................................................................................................................14
a. Bin khai bo bin.................................................................................................. 14
b. Phm vi bin ............................................................................................................. 15

1.3 Hng .................................................................................................................16


a. Khai bo hng........................................................................................................... 16
b. Phm vi hng ............................................................................................................ 17

2. Cc cu trc lnh VB..............................................................................................18


2.1 Cu trc IF END IF......................................................................................18
2.2 Cu trc SELECT CASE .. END SELECT .....................................................19
2.3 Cu trc FOR NEXT...................................................................................22
2.4 Cu trc WHILE WEND ............................................................................24
3. Chng trnh con....................................................................................................26
3.1 Chng trnh con dng hm.............................................................................26
3.2 Chng trnh con dng th tc.........................................................................31
3.3 S dng chng trnh con ................................................................................33
a. S dng th tc ......................................................................................................... 33
b. S dng hm ............................................................................................................. 34

4. Son tho chng trnh v x l li .......................................................................35


4.1 Son tho chng trnh ....................................................................................35
4.2 Li v x l li .................................................................................................38
a. X l li..................................................................................................................... 38
b. By li ....................................................................................................................... 42

Bi tp chng 1.........................................................................................................45
CHNG 2: S DNG IU KHIN ...................................................................47
1. S lc v iu khin .............................................................................................48
1.1. Tp thuc tnh..................................................................................................48
1.2. Tp phng thc .............................................................................................54
1.3. Tp s kin ......................................................................................................55
2. Mt s iu khin c bn .......................................................................................57
2.1 iu khin Form...............................................................................................57
2.2 iu khin Label ..............................................................................................59
2.3 iu khin Textbox..........................................................................................60
2.4 iu khin CommandButton............................................................................63
2.5 iu khin Picture............................................................................................65
3. Nhm iu khin trnh by giao din .....................................................................66
3.1 iu khin ComboBox.....................................................................................66
Trang 158

Lp trnh Visual Basic 6.0

3.2 iu khin ListBox ..........................................................................................68


3.3 iu khin CheckBox ......................................................................................69
3.4 iu khin OptionButton .................................................................................71
4. Nhm iu khin lm vic th mc, tp tin ...........................................................73
4.1 iu khin DriveListbox..................................................................................74
4.2 iu khin DirListBox .....................................................................................74
4.3 iu khin FileListBox ....................................................................................75
4.4 V d tng hp..................................................................................................75
5. Mt s iu khin chung ........................................................................................78
5.1 iu khin MS Common Dialog......................................................................78
5.2 iu khin Treeview ........................................................................................82
Bi tp chng 2.........................................................................................................88
CHNG 3: LP TRNH C S D LIU ..........................................................91
1. K thut DAO.........................................................................................................93
1.1 Lp i tng DAO .........................................................................................94
1.2 i tng Database..........................................................................................96
1.3 i tng RecordSet........................................................................................97
1.4 i tng QueryDef ......................................................................................102
1.5 i tng TableDef .......................................................................................104
1.6 i tng Relation.........................................................................................107
1.7 S dng Data Form Wizard ...........................................................................108
1.8 Bi ton cp nht d liu................................................................................110
1.9 Bi ton tm v lc d liu .............................................................................114
2. K thut ADO.......................................................................................................117
2.1 Kin trc ADO ...............................................................................................117
2.2 i tng Connection ....................................................................................118
2.3 i tng Command......................................................................................119
2.4 i tng Recorset ........................................................................................120
3. Data Report...........................................................................................................122
3.1 Xy dng ngun d liu.................................................................................122
3.2 Thit k Data Report ......................................................................................126
3.3 S dng Data Report ......................................................................................128
Bi tp chng 3.......................................................................................................130
CHNG 4: HON THIN D N ....................................................................135
1. Thit k MDI Form...............................................................................................136
1.1 Mt s khi nim............................................................................................136
1.2 S dng MDI form.........................................................................................137
2. Thit k Menu.......................................................................................................138
3. Thit k ToolBar...................................................................................................140
4. ng gi d n .....................................................................................................145
Bi tp chng 4.......................................................................................................153
TI LIU THAM KHO ......................................................................................154
DANH SCH CC T VIT TT .......................................................................155
THUT NG TING ANH ..................................................................................156

Trang 159

You might also like