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 2 12 - December - Janualy - February

>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

2 3 4 5 6 7

c on Bng Bang An n

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 7 3 2 6 4 5 1 Tn n on c An Bng Bang Quang

M danh sch sp xp ng phi l:


STT 6 7 5 Tn An n Bang

Trang 29

Lp trnh Visual Basic 6.0

4 3 2 1

Bng on c 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 thit k bnh thng; + Nt

- dng ngay chng trnh, chuyn v ch Design -

- 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 trn thanh cng c;

Trang 40

Lp trnh Visual Basic 6.0

hoc nhn nt Stop chuyn v ch Design.

nu mun dng vic sa m lnh trong ch Break,

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 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 -

kt lun ngay mt thng bo li ting Vit. Li chia

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 Err.Description Err.Number Err.Clear Kt qu M t tn li a ra m li 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 Textbox Label Command Check box Form Picture Optional Frame T vit tt Loi i tng Listbox Combobox Line Treeview Listview T vit tt

txt lbl cmd chk frm pct opt fme

lst cbo ln tv lv

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 H tn Tn thuc tnh txtHoten Thuc lp Control Textbox

Trang 50

Lp trnh Visual Basic 6.0


Ngy sinh Gii tnh a ch nh txtNgaysinh chkGioitinh txtDiachi pctChandung Textbox Checkbox Textbox 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 0 Left Justify 1 Right Justify 2 Center Tc dng Canh l tri Canh l phi 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 0 Flat 1 3D Tc dng Kiu mnh, phng 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 Text1 Text2 Text3 DataSource Data1 Data1 Data1 DataField chucvuID Tenchucvu 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 ( 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). ) thit lp Caption l (gch

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 ca cc mc menu; dch chuyn v tr cng nh th cp

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 | gi d n. . Trnh

Package and Deployment Wizard xut hin tng bc gip ng

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 Data Data Environment iu khin trong VB - mt cng c lp trnh trc quan. D liu, d kin, s liu Mi trng d liu trong d n VB. Mi trng c th bao gm cc kt ni d liu (Connection), cc truy vn d liu (Command) phc v lp trnh CSDL v in bo co. Data Report Data source Mt cng c trong VB dng thit k, in bo co. 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 Detete EOF Mi trng thit k, c th l thit k Form, thit k report, query, Ch hnh ng xa cc bn ghi ra khi c s d liu End Of File mt du hiu cho bit con tr bn ghi nm v tr ci cng ca mt recorset. Field Field size Trng d liu 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 & Deployment Project Mt cng c dng ng gi d n, to b gi t trong mi trng pht trin VB. 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 Record Recordset Relationship SQL Mt i tng dng truy xut, x l d liu trn cc h c s d liu Bn ghi Tp hp cc bn ghi Ch quan h gia cc bng trong c s d liu 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