Download as pdf or txt
Download as pdf or txt
You are on page 1of 265

Gio trnh o to Visual Basic 6.

1 Mc lc
1 Mc lc...............................................................................................................................1
2 Lm quen vi visual basic 6.0.............................................................................................9

2.1 Xy dng ng dng ban u..............................................................................9


2.1.1 Vit ng dng ban u..................................................................................9
2.1.2 Xy dng tnh nng Calendar.........................................................................9
2.1.3 Thm tnh nng Clock...................................................................................11
2.2 Cc tnh nng mi trong Visual basic 6.0.........................................................11
2.2.1 Khi qut vn tt v Visual basic 6.0..........................................................11
2.2.2 Khai thc th mnh ca cc iu khin m rng......................................12
2.3 Lm vic vi mi trng lp trnh trong Visual basic ...................................12
2.3.1 Tm hiu cc phn ca IDE.........................................................................12
2.3.2 Thm v xo cc thanh cng c trong IDE ca Visual basic.......................13
2.3.3 Thm cc iu khin vo hp cng c........................................................14
2.3.4 nh hng thng qua ca s form v code................................................14
2.3.5 Qun l ng dng vi project explorer ......................................................14
2.3.6 Ca s properties..........................................................................................14
2.3.7 Hin th IDE.................................................................................................14
2.3.8 Tr gip........................................................................................................15
3 Tm hiu Visual basic 6 ....................................................................................................16

3.1 Thuc tnh phng thc v s kin.................................................................16


3.1.1 i tng.....................................................................................................16
3.1.2 Thuc tnh ....................................................................................................16
3.1.3 Phng thc.................................................................................................17
3.1.4 S kin.........................................................................................................18
3.1.5 Mi quan h gia phng thc, thuc tnh v s kin..............................18
3.1.6 Ca s Properties..........................................................................................19
3.1.7 Vit chng trnh s dng thuc tnh, phng thc v s kin...............20
3.2 Lm vic vi mt n...................................................................................25
3.2.1 nh ngha.....................................................................................................25
3.2.2 Ca s Project Explorer................................................................................26
3.2.3 To n......................................................................................................26
3.2.4 i thuc tnh n.....................................................................................26
3.2.5 Lu v t tn n....................................................................................27

FPT Software Solution

Trang:1/265

Gio trnh o to Visual Basic 6.0


3.2.6 M n c sn...........................................................................................27
3.2.7 Thm xo v lu tp tin trong n............................................................28
3.2.8 Thm iu khin vo n ........................................................................30
3.2.9 To tp tin EXE...........................................................................................31
3.2.10 Sa i thuc tnh n............................................................................32
3.3 Lm vic vi nhiu n................................................................................33
3.3.1 S dng Project Group.................................................................................33
3.3.2 Thm n vo nhm n........................................................................33
3.3.3 Xo n trong nhm n........................................................................34
4 Lm vic vi cc iu khin............................................................................................35

4.1 Cc loi iu khin..........................................................................................35


4.1.1 Thao tc vi iu khin...............................................................................35
4.2 Cc iu khin ni ti......................................................................................38
4.2.1 Nt lnh........................................................................................................39
4.2.2 Hp vn bn.................................................................................................39
4.2.3 iu khin thanh cun.................................................................................39
4.2.4 iu khin Timer.........................................................................................40
4.2.5 iu khin nhn ..........................................................................................40
4.2.6 Checkbox: ....................................................................................................40
4.2.7 Mt s thuc tinh thng dng:....................................................................40
4.2.8 4.2.9 Hp danh sch (Listbox)......................................................................40
4.3 Cc iu khin M i.........................................................................................41
5 Nhp mn lp trnh...........................................................................................................43

5.1 Chun lp trnh (Coding convention)...............................................................43


5.1.1 Coding conventions.......................................................................................43
5.1.2 Form design standard....................................................................................48
5.1.3 Report design standard (for Crystal Report).................................................51
5.1.4 Database design standards.............................................................................52
5.2 Thit k trc khi vit chng trnh...............................................................53
5.3 Cc thao tc thng dng trong ca s Code.....................................................53
5.3.1 Son tho Code............................................................................................53
5.3.2 Mt s chc nng t ng ..........................................................................54
5.4 Bin hng v cc kiu d liu.........................................................................54
5.4.1 Khai bo bin................................................................................................54
5.4.2 Khai bo ngm..............................................................................................54
5.4.3 Khai bo tng minh....................................................................................55

FPT Software Solution

Trang:2/265

Gio trnh o to Visual Basic 6.0


5.4.4 Khai bo bin Static......................................................................................55
5.4.5 Hng.............................................................................................................55
5.5 Hm v th tc..................................................................................................62
5.6 Cu trc iu khin..........................................................................................63
5.6.1 Cu trc chn...............................................................................................63
5.6.2 Cu trc lp..................................................................................................64
5.6.3 Lm vic vi cu trc..................................................................................65
5.7 G ri chng trnh..........................................................................................65
5.7.1 Mt s gii php gim li...........................................................................65
5.7.2 G ri............................................................................................................66
5.8 By li...............................................................................................................67
5.8.1 Lnh On Error...............................................................................................67
5.8.2 Kt thc by li...........................................................................................67
6 Lp trnh x l giao din..................................................................................................68

6.1 Menu..................................................................................................................68
6.1.1 Dng trnh son tho menu to menu ...................................................68
6.1.2 Vit chng trnh iu khin menu............................................................69
6.2 Hp thoi..........................................................................................................69
6.2.1 Thng ip(Message box)...........................................................................69
6.2.2 Hp nhp(Input box)....................................................................................70
6.2.3 Cc hp thoi thng dng(Common dialog)...............................................70
6.2.4 Hp thoi hiu chnh...................................................................................71
6.3 Thanh cng c(ToolBar)...................................................................................71
6.3.1 Trong ng dng n gin............................................................................71
6.3.2 Nhng i tng..........................................................................................71
6.4 Thanh trng thi................................................................................................71
6.5 X l chut v bn phm...................................................................................72
6.5.1 s kin chut................................................................................................72
6.5.2 Hiu chnh con tr chut.............................................................................72
6.5.3 S kin bn phm.........................................................................................72
7 X l tp tin.......................................................................................................................74

7.1 M hnh FSO(File System Object model).........................................................74


7.2 X l cc tp tin vi cc dng lnh v hm I/O c in.................................74
7.2.1 Cc kiu truy cp tp tin..............................................................................74
7.3 Cc iu khin trn h thng tp tin...............................................................77
7.3.1 Hp danh sch a.....................................................................................77
7.3.2 Hp danh sch th mc................................................................................77

FPT Software Solution

Trang:3/265

Gio trnh o to Visual Basic 6.0


7.3.3 Hp danh sch tp tin...................................................................................78
7.4 iu khin richtextbox.....................................................................................78
7.4.1 Phng thc loadfile....................................................................................79
7.4.2 Phng thc savefile....................................................................................79
8 S dng DLL v Windows API.........................................................................................80

8.1 DLL v cu trc ca Windows.........................................................................80


8.1.1 Cc hp thoi thng dng ...........................................................................80
8.2 WIN API............................................................................................................81
8.3 S dng API......................................................................................................82
8.3.1 Tm kim API...............................................................................................82
8.3.2 Cc DLL ca Windows................................................................................82
8.3.3 Gi API.........................................................................................................83
8.4 Dng API khai thc kh nng Multimedia........................................................86
8.4.1 Lp multimedia.............................................................................................86
9 Thm tr gip vo ng dng............................................................................................98

9.1 Thm h tr cho Help.......................................................................................98


9.1.1 Thuc tnh HelpFile......................................................................................98
9.1.2 Thuc tnh HelpContextID...........................................................................98
9.2 Thm h tr cho WHATS THIS HELP...........................................................99
9.2.1 Kch hot Whats This Help cho biu mu ...............................................99
9.3 Cung cp help cng vi ng dng.................................................................100
9.3.1 Cung cp WinHelp.....................................................................................100
9.3.2 Cung cp HTML Help................................................................................100
10 Lp trnh hng i tng.........................................................................................101

10.1 Gii thiu v i tng .............................................................................101


10.1.1 i tng trong VB.................................................................................102
10.1.2 Modul Lp................................................................................................103
10.1.3 Tham s tu chn.....................................................................................107
10.1.4 S kin ca lp........................................................................................108
10.1.5 Hu i tng..........................................................................................110
10.2 Bin i tng.............................................................................................110
10.2.1 To iu khin lc thi hnh.....................................................................110
10.2.2 S kin ca mng iu khin.................................................................112
10.2.3 Qun l iu khin nh bin i tng................................................112
10.2.4 Khai bo bin i tng .........................................................................115
10.3 Tp hp........................................................................................................116
10.3.1 Thuc tnh Controls..................................................................................117
FPT Software Solution

Trang:4/265

Gio trnh o to Visual Basic 6.0


10.3.2 Xc nh iu khin trn biu mu.........................................................117
10.4 Biu mu MDI.............................................................................................119
10.4.1 Biu mu con (Child Form).....................................................................120
10.4.2 To Instance ca biu mu.....................................................................120
10.4.3 Xc nh biu mu...................................................................................121
10.4.4 To danh sch ca s...............................................................................121
11 Cng c trong VB6........................................................................................................123

11.1 ADD-INS......................................................................................................123
11.2 Cc cng c trong ADD-INS.......................................................................123
11.2.1 Trnh ci t ng dng.............................................................................123
11.2.2 Trnh i tng d liu t ng.............................................................123
11.2.3 Trnh xy dng d liu t ng..............................................................124
11.2.4 Trnh thit k Add-ins t ng................................................................126
11.2.5 Trnh thit k t ng..............................................................................126
11.2.6 Tin ch xy dng lp..............................................................................126
11.2.7 Trnh to thanh cng c t ng.............................................................127
11.3 Trnh ng gi v trin khai ng dng........................................................127
11.3.1 Pht hnh ng dng..................................................................................127
11.3.2 Trnh ng gi v trin khai ng dng....................................................128
11.3.3 M trnh ng gi v trin khai trong VB...............................................128
11.3.4 M trnh ng gi v trin khai nh mt ng dng c lp.................128
11.3.5 Thi hnh Wizard di ch silent........................................................128
11.3.6 Setup toolkit..............................................................................................129
11.4 Bi tp...........................................................................................................130
12 Nhng khi nim c bn v CSDL............................................................................131

12.1 C s d liu l g?......................................................................................131


12.1.1 B my (Engine) c s d liu l g?......................................................131
12.1.2 Bn v trng...........................................................................................132
12.1.3 Recordset l g ?........................................................................................133
12.1.4 Cc kiu c s d liu.............................................................................133
12.1.5 To lc c s d liu......................................................................134
12.1.6 Dng Visual Basic to mt c s d liu.........................................135
12.1.7 Cc mi quan h.......................................................................................144
12.1.8 Chun ho.................................................................................................145
12.2 S dng ca s xem d liu........................................................................147

FPT Software Solution

Trang:5/265

Gio trnh o to Visual Basic 6.0


12.3 To trnh thit k mi trng d liu.........................................................149
12.3.1 To mt giao din ngi s dng vi thit k DATAENVIRONMENT
151
12.4 S dng iu khin d liu to giao din ngi s dng...................151
12.4.1 Kt ni vi mt c s d liu v lm vic vi cc mu tin.................152
12.4.2 To mt giao din ngi s dng c bn.............................................154
12.4.3 Thao tc trn cc mu tin thng qua iu khin ADO Data...................155
12.4.4 Cc thuc tnh quan trng khc ca iu khin ADO DATA................160
12.5 Tng kt........................................................................................................161
12.6 Hi v p.....................................................................................................161
13 Cc i tng truy cp d liu...................................................................................163

13.1 S dng m hnh i tng DAO ..............................................................163


13.1.1 Lp trnh vi i tng...........................................................................165
13.1.2 S dng iu khin DAO Data ..............................................................165
13.1.3 S dng thuc tnh Connect ca iu khin DAO Data truy cp
ngun d liu bn ngoi.......................................................................................165
13.2 S dng DAO lm vic vi d liu......................................................166
13.2.1 Dng i tng DataBase kt ni vi mt CSDL............................166
13.2.2 S dng i tng Recordset..................................................................167
13.2.3 Ch ra cc tu chn cho Recordset............................................................168
13.3 S dng i tng Field thao tc vi cc trng.................................168
13.4 Sdng cc phng thc duyt vi i tng Recorset ...........................169
13.4.1 S dng BOF v EOF duyt qua Recordset......................................169
13.4.2 Dng BOF v EOF xc nh mt Recordset c rng hay khng........170
13.4.3 Dng thuc tnh RecordCout xc nh s mu tin trong mt recordset
170
13.4.4 Dng phng thc Edit sa i gi tr trong mt mu tin ...............170
13.4.5 S dng phng thc AddNew v Update to mu tin mi............171
13.4.6 S dng AppendChunk ni d liu vo mt trng nh phn.........173
13.4.7 S dng phng thc Close ng Recordset ....................................173
13.5 Tm kim d liu trong Recordset v bng.................................................173
13.5.1 S dng phng thc Find nh v mu tin trong mt recordset......174
13.5.2 S dng phng thc Seek thi hnh tm kim theo ch mc............174
13.5.3 Lp qua sut tp hp Indexes ca TableDef..........................................175
13.5.4 S dng thuc tnh Bookmark ghi nh v tr trong mt Recordset...176
13.5.5 s dng tp hp Errors v i tng Error x l li........................176

FPT Software Solution

Trang:6/265

Gio trnh o to Visual Basic 6.0


13.6 To i tng thao tc trn cu trc ca mt CSDL............................177
13.6.1 To mt CSDL.........................................................................................177
13.6.2 S dng i tng TableDef thao tc vi bng................................178
13.7 Lm vic vi ti liu v ni cha CSDL.....................................................183
13.8 To v s dng cc thuc tnh hiu chnh ca i tng DataBase..........184
13.9 Tng kt........................................................................................................186
13.10 Hi v p....................................................................................................186
14 Thit lp bo co v Xut thng tin.............................................................................187

14.1 S dng thit k DataReport........................................................................187


14.1.1 Thit k vi DataReport..........................................................................188
14.1.2 Xem v xut DataReport .........................................................................189
14.2 S dng Microsoft Access lm bo co..................................................190
14.2.1 Thi hnh bo co ca Access t Visual Basic..........................................190
14.3 S dng Crystal report lp bo co ........................................................195
14.3.1 Ci t Crystal Reports ...........................................................................195
14.3.2 Dng Crystal Reports to bo co ...........................................................196
14.3.3 Thi hnh bo co trong ng dng vi iu khin ActiveX ca Crystal
Reports ..................................................................................................................198
14.3.4 S dng bn mi hn ca Crystal Reports ............................................198
15 ODBC v cc i tng d liu t xa........................................................................199

15.1 nh cu hnh v s dng ODBC.................................................................199


15.1.1 Kin trc ca ODBC................................................................................199
15.1.2 To ngun d liu...................................................................................199
15.1.3 Truy cp ngun d liu vi iu khin DAO DATA v ODBCDIRECT
202
15.2 Truy cp d liu dng iu khin d liu t xa........................................203
15.2.1 S dng RDC ..........................................................................................203
15.3 S dng RDO trong chng trnh................................................................204
15.3.1 Quy nh thuc tnh b my c s d liu dng i tng RDOENGINE.
205
15.3.2 Truy cp mi trng i tng rdoEnvironment..................................205
15.3.3 Thit lp kt ni dng i tng rdoConnection...................................206
15.3.4 p ng s kin trong RDO....................................................................208
15.4 To kt nI vi trnh thit k uerconnecttion............................................209
15.5 Truy cp truy vn vi trng thit k UserConnection ...............................211
15.5.1 Gi th tc cha sn trong mt trnh thit k UserConnection ...........211

FPT Software Solution

Trang:7/265

Gio trnh o to Visual Basic 6.0


15.5.2 Dng Microsotf Query xy dng chui SQL trong trnh thit k
UserConnection. ...................................................................................................213
15.6 S dng d liu vi i tng rdorerultset ............................................214
15.7 Thi hnh truy vn vi i tng rdoQuery..................................................214
16 Truy cp c s d liu vi lp...................................................................................216

16.1 Lm vic vi lp v i tng....................................................................217


16.1.1 To cy phn nhnh lp vi tin ch xy dng lp................................217
16.1.2 S dng biu mu nh lp.....................................................................221
16.2 To Intance bi cho biu mu.....................................................................223
16.2.1 S dng lp v i tng trong truy cp c s d liu .......................223
16.3 To cc lp cn s dng d liu.................................................................226
16.3.1 To lp xut d liu................................................................................228
16.3.2 Trin khai lp thnh Active Server .......................................................230
16.4 Tng kt........................................................................................................234
17 Truy cp d liu t xa.................................................................................................235

17.1 Client / Server v cc thnh phn..................................................................235


17.1.1 Cu trc Cilent/Server Three- Tier...........................................................235
18 i tng d liu ActiveX..........................................................................................257

18.1 Xy dng ng dng Visual basic vi ADO.................................................257


18.1.1 Tm hiu cu trc OLE DB / ADO .........................................................257
18.1.2 Ci t v thit lp tham chiu n ADO trong ng dng Visual basic
258
18.1.3 S dng ADO vi cc th vin i tng truy cp d liu khc ........259
18.1.4 Dng i tng connection ca ADO kt ni vi ngun d liu 259
18.1.5 Lm vic vi con tr................................................................................260
18.1.6 Kho bn ghi trong ADO ........................................................................262
18.1.7 S dng i tng Recordset ca ADO thao tc vi d liu .........263
18.1.8 To Recordset ngt kt ni.....................................................................264
18.2 S dng dch v d liu t xa ca ADO....................................................264

FPT Software Solution

Trang:8/265

Gio trnh o to Visual Basic 6.0

2 Lm quen vi visual basic 6.0


2.1 Xy dng ng dng ban u
2.1.1 Vit ng dng ban u
Cch tt nht hc lp trnh l vit chng trnh. Vy hy th vit chng
trnh hin th lch biu, trong cho php ngi s dng:
Hin th lch biu ca thng hin hnh
Duyt qua cc thng
Hin th ng h bo gi hin hnh
Nu bn cho rng chng trnh ny c v nng n cho ngi mi hc, ng lo
lng. Visual basic lm ht mi vic cho bn. Khc vi ngn ng C++, bn phi
vit mi th mt t, Visual basic cung cp mc cao hn ca lp trnh t ng.
Nh vy, bn c th lm nhiu th m khng phi lp trnh nhiu.
Tuy nhin, ng hiu sai khng lp trnh nhiu ngha l khng c nhiu tnh
nng mnh Visual basic l mt ngn ng rt mnh. Ta c th lp trnh lm
mi th nu cn. Ta cng c th khai thc kh nng t ng ca Visual basic
vit chng trnh tht nhanh. Chn la l ngi lp trnh. Visual basic linh
hot h tr cho ngi lp trnh t ngi mi hc n lp trnh chuyn nghip.

2.1.2 Xy dng tnh nng Calendar


By gi ta bt u xy dng cc tnh nng ca ng dng. u tin, ta cn mt
lch biu. Ta c th t to n hoc s dng lch biu c sn ca Visual basic (y
l mt iu khin ActiveX). Ta chn cch th 2.
T menu Project, chn Components. Bi v, mc nh tt c cc iu khin
ActiveX ca Visual basic khng c np t ng. Mun dng bn phi chn t
menu Components.
Trong hp thoi Components chn Windows Common Controls 2.6.0 v nhn
OK.

FPT Software Solution

Trang:9/265

Gio trnh o to Visual Basic 6.0

ActivateX l g?
ActivateX l sn phm ca Microsoft cho php ta to nhng chng trnh nh,
gi l cc thnh phn(componet) v cc iu khin (control) c th thm vo cc
chng trnh ln. c th l cc chng trnh c lp (Standalone program) hay
cc chng trnh chy trn Internet. Ta c th dng Visual basic t to cc iu
khin ActivateX. Phn ny s c trnh by trong mt ring.
n y iu khin lch c np vo thanh cng c. Tn chnh thc ca n l
iu khin ActivateX MonthView.
K tip ta a iu khin vo biu mu.
Thm iu khin MonthView vo biu mu
Chn biu tng iu khin MonthView t hp cng c
Nhn p chut ln biu tng iu khin a n vo biu mu.
Bn va to xong chng trnh nhn F5 chy.

FPT Software Solution

Trang:10/265

Gio trnh o to Visual Basic 6.0

2.1.3 Thm tnh nng Clock


Tnh nng k tip l hin th gi. Ta s dng iu khin ActivateX Timer l mt
iu khin ni ti ca Visual basic. iu khin ni ta lun c np sn trong
hp cng c.
Thm Timer vo ng dng
Chn vo biu tng trong hp cng c
Nhn chut ln iu khin Timer trn hp cng c a n vo biu mu.
hin th thi gian ta lp trnh iu khin Timer. Ta dng thuc tnh Interval
ca timer quy nh vic m thi gian. Mt n v ca Interval l 1/1000 giy.
Do , quy inh nhp m l na giy ta t Interval l 500. C mi na giy
chng trnh s lm mt vic g . y, ta mun hin th thi gian hin hnh.
Ta s dng nhn (label) hin th thi gian.
Hin th Timer
Thm Label vo biu mu.
Chn iu khin nhn t hp cng c v ko n vo biu mu.
Th tc s kin l g?
Mt th tc s kin l mt on chng trnh s thi hnh khi s kin xy
ra. V d, khi ngi s dng nhn vo nt CommandButton, s kin click() s
c sinh ra. Visual basic cung cp th tc CommandButton_Click cho ta lp trnh
ng dng phn ng i vi vic nhn nt CommandBuuton. Tng t vi
Timer. Khi ng nhp m Timer s kin Timer() s pht ra.
hin th thi gian trn nhn label ta a dng lnh sau vo th tc s kin
ca timer: Label1.Caption = time
Private Sub Timer1_Timer()
Label1.Caption = Time
End Sub

2.2 Cc tnh nng mi trong Visual basic 6.0


2.2.1 Khi qut vn tt v Visual basic 6.0
Nu bn cha quen vi Visual basic, ta ca phn ny c th lm nhm ln
i cht. R rng rng nu bn l ngi mi hc ngn ng, mi th v Visual
basic u mi c. D vy, bn khng nn b qua phn ny, nht l cc iu khin
ActivateX mi. i vi cc bn quen thuc cc phin bn Visual basic trc th
phn ny tht hu ch.
Visual basic 6.0 c rt nhiu tnh nng mi. Cc iu khin mi cho php ta
vit chng trnh ng dng kt hp giao din, cch x l v tnh nng ca Office
97 v trnh duyt WEB internet explorer. Khng nht thit phi c mt instance ca
iu khin trn biu mu, Visual basic 6 cho php ta lp trnh thm iu khin
vo n t ng v ta c th to ra cc iu khin ActivateX hiu chnh.
Mt vi ci tin cho php lm vic vi cc ng dng truy cp d liu tm c
v m lin quan n hng trm hng nghn ngi s dng qua mng Internet.

FPT Software Solution

Trang:11/265

Gio trnh o to Visual Basic 6.0

2.2.2 Khai thc th mnh ca cc iu khin m rng


2.2.2.1 s kin Validate v thuc tnh CausesValidation
Phn m rng u tin lin quan n tt c cc iu khin ActivateX c bn
l vic thm vo s kin Validate v thuc tnh CausesValidation. Trc cc phin
bn Visual basic 6, nu bn kim tra tnh hp l ca mt t nhp vo hp vn
bn, bn phi vit th tc s kin LostForcus ca TextBox. Nu nhp sai bn
phi gi phng thc SetForcus buc ngi dng nhp li d liu ng. Thnh
thong logic ca lp trnh ny lm ngi dng kh chu khi h khng bao gi nhp
ng d liu, h c th b kho cht iu khin h cng cng khng nhn c
nt help xem hng dn chi tit. S kin Validate v thuc tnh
CausesValidation gii quyt vn .
2.2.2.2 Cc ci tin ho mi lm ng dng thm sinh ng
Visual basic lun cho php bn s dng ho lm chng trnh sng ng
v Microsoft c kh nng ho m rng cho nhiu iu khin. u tin, iu
khin ImageList gi y h tr cc tp tin.gif. Phn m rng ny rt quan trng
bi v n lin quan n cc iu khin c s dng iu khin ImageList.
Cc iu khin ListView v TabStrip c phn m rng cho php s dng hnh
nh v biu tng trang tr v minh ho. iu khin listView cho php to mt
nh nn cho vng lm vic. nh nn c th c t gia tri u hoc t
mt gc bt k.
2.2.2.3 Ngy thng vi iu khin MonthView v DataTimepicker
VB6 c 2 iu khin a ra gii php mi xem xt v chn la ngy thng,
MonthView v DataTimePicker. iu l th ca cc iu khin l chng cho php
ta xem v chn ngy trong ng cnh lch biu. iu khin MonthView trnh by
mt lch biu y ta c th duyt theo tng ngy hoc tng thng. iu
khin DateTimePicker tng t nh MonthView, nhng c im khc l lch biu
s th xung khi ngi dng nhn vo mi tn xung ca iu khin.

2.3 Lm vic vi mi trng lp trnh trong Visual basic


2.3.1 Tm hiu cc phn ca IDE
IDE l tn vit tt ca mi trng pht trin tch hp (Inegreated Development
Enviroment). IDE l ni to ra cc chng trnh VB.
IDE ca VB l ni tp trung cc menu, thanh cng c v ca s to ra
chng trnh. Mi phn ca IDE c cc tnh nng anhe hng n cc hot ng
lp trnh khc nhau. Thanh menu cho php bn tc ng cng nh qun l trc tip
trn ton b ng dng. Thanh cng c cho php truy cp cc chc nng ca thanh
menu qua cc nt trn thanh cng c.

FPT Software Solution

Trang:12/265

Gio trnh o to Visual Basic 6.0

Cc biu mu (Form) - khi xy dng cc chng trnh Visual basic - xut hin
trong ca s form. Hp cng c thm cc iu khin vo cc biu mu ca
n. Project explorer hin th cc n m bn ang lm cng nh cc thnh phn
ca cc n. Bn duyt v ci t cc thuc tnh ca iu khin, biu mu v
module trong ca s property. Cui cng, bn b tr v xem xt mt hoc nhiu
biu mu trn mn hnh thng qua ca s form layout.

2.3.2 Thm v xo cc thanh cng c trong IDE ca Visual basic


Thanh cng c l tp hp cc nt bm mang biu tng cha trong mt thanh
thng t di thanh menu. Cc nt ny m nhn cc chc nng thng dng
trong cu trc menu ca Visual basic. Thanh cng c rt hu ch, thay v phi ln
lt chn qua menu v menu con, ta nhn mt nt bm no trong thanh cng c
gi mt chc nng tng t trn menu.
S dng thanh cng c debug: Thanh cng c debug dng kim tra
chng trnh v gii quyt cc li c th xy ra. Khi g ri chng trnh, ta lm
mt s vic nh chy tng dng lnh chng trnh, kim tra gi tr cc bin, v
dng chng trnh ti mt im nghi ng hoc di nhng iu kin no .
S dng thanh cng c Edit: Thanh cng c Edit c dng vit chng
trnh trong ca s code. Cc tnh nng ca thanh cng c Edit tng t nh cc tnh
nng khc menu edit. Bn c th Cut, Paste vn bn...
Mt tnh nng l th ca IDE l thanh cng c Edit dng tnh nng Coplete
Word, t ng hon tt t kho. Tnh nng Complete Word rt hu ch trnh cc
li c php.
S dng thanh cng c Form Editor: Thanh cng c form editor dng ko
gin, di chuyn v sp xp cc iu khin trn biu mu. Thanh cng c Form
editor c cc tnh nng nh menu Format.
FPT Software Solution

Trang:13/265

Gio trnh o to Visual Basic 6.0


S dng thanh cng c chun(Standard): L thanh cng c trng yu trong
IDE. Thanh cng c chun cung cp nhiu tnh nng trong menu file, Project,
Debug, v Run.

2.3.3 Thm cc iu khin vo hp cng c


Hp cng c l bng cha cc iu khin v ta thit k giao din ngi s
dng bng cch chn cc iu khin t hp cng c v a chng vo cc biu
mu.
Mt s iu khin c sn trong Visual basic v khng th g b khi hp cng
c. Mt s khc nm bn ngoi Visual basicv cha trong cc tp tin m c phn
m rng l. ocx. Cc iu khin ny c th c thm vo hoc g b khi thanh
cng c.
Chng ta s tr li chi tit v cc loi iu khin trong Visual basic trong mt
chng ring.

2.3.4 nh hng thng qua ca s form v code


Nu iu khin l nhng khi b tng m ta tp hp trong ng dng th biu
mu l nn mng ta xy dng cc khi ny.
Cc biu mu cha trong ca s Thit k biu mu. Ta s lm vic trong ca
s ny thm cc iu khin vo biu mu.
i vi tng ca s thit k mu, ta cng c th m ca s code. Ca s code
l ni ta vit cc on chng trnh chy bn di biu mu. Ta c th m ca s
code bng cch nhn p ln biu mu hoc iu khin, hoc chn code t menu.

2.3.5 Qun l ng dng vi project explorer


Project explorer trong Visual basic gip qun l v nh hng nhiu n.
Visual basic cho php t chc nhiu n trong mt nhm gi l project group. Ta
c th lu tp hp cc n trong Visual basic thnh mt tp tin nhm n. Cc
tp tin ny c phn m rng l.vbg.

2.3.6 Ca s properties
Mi thuc tnh c mt hoc nhiu gi tr. Ca s properties gip bn xem sa
i v iu khin cc thuc tnh ca cc iu khin ActivateX trong chng trnh.

2.3.7 Hin th IDE


Ta c th xem IDE ca Visual basic bng 2 cch: MDI hoc SDI. Hin th kiu
MDI(Multiple document interface) cho php trnh by tt c cc ca s thnh phn
trong IDE nh l cc ca s con cha trong mt ca s ln.
Tri li i vi hin th SDI(single document interface), cc ca s thnh phn
hin th mt cch c lp vi nhau. Khng c mt ca s chnh cha v thng
nht cc thnh phn.
Chuyn i t hin th MDI sang SDI
- Chn Tools\option\
- Trn tang Advance, chn hp nh du SDI development Enviroment; nhn
OK. IDE ca Visual basic s nh li cu hnh cho hin th SDI trong ln
khi ng tip sau ca Visual basic.

FPT Software Solution

Trang:14/265

Gio trnh o to Visual Basic 6.0


-

Nhn OK, thot v khi ng li Visual basic

2.3.8 Tr gip
Khng nhng lm ch ngn ng lp trnh Visual basic, bn cng cn phi s
dng thun thc mi trng Visual basic cng nh hiu cc thng ip m Visual
basic gi ra. Microsoft cung cp mt trong nhng h thng tr gip tt nht cho
cc cng c pht trin ng dng.
Tr gip nhy vi ng cnh
Ti mt v tr bt k trong Visual basic, bn nhn phm F1, nt tr gip. N s
kch hot h thng tr gip ca Visual basic, ni c th gii thch hoc a ra
nhng li khuyn, cng nh cc on chng trnh mu.
Visual basic c h thng tr gip l h thng th vin MSDN c s dng
rng ri cho cc cng c pht trin ca Microsoft cung cp truy cp n s tay
hng dn s dng sn phm trc tuyn.

FPT Software Solution

Trang:15/265

Gio trnh o to Visual Basic 6.0

3 Tm hiu Visual basic 6


3.1 Thuc tnh phng thc v s kin
3.1.1 i tng
Trong VB, i tng l nhng thnh phn to nn giao din gia ngi s
dng cho ng dng. Cc iu khin l nhng i tng. Nhng ni cha
(container) nh biu mu(form), khung(frame), gay hp nh (picture box) cng l
mt i tng.
VB 6 h tr mt cch lp trnh tng i mi, lp trnh hng i tng
(Object Oriented Programming).
Trong lp trnh c in, ta c kiu lp trnh theo cu trc. Nu nh ng dng
c thit k gii quyt mt vn ln, th lp trnh vin c th chia thnh
nhiu vn nh v vit cc on chng trnh nh gii quyt ring tng ci.
Vi lp trnh hng i tng, lp trnh vin s chia nh vn cn gii
quytthnh cc i tng. Tng i tng s c i sng ring ca n. N c cc
c im m ta gi l thucc tnh v nhng chc nng ring bit m ta gi l
phng thc. lp trnh vin cn a ra cc thuc tnh v phng thc m cc i
tng cn th hin.

3.1.2 Thuc tnh


Ni mt cch n gin, thuc tnh m t i tng.
Mi i tng cng u c mt b thuc tnh m t i tng. Biu mu v
iu khin u c thuc tnh. Thm ch mn hnh v my in l nhng i tng ch
cho php can thip lc thi hnh cng c thuc tnh.
Mc d mi i tng c nhng b thuc tnh khc nhau, nhng trong vn
cn mt s thuc tnh thng dng cho hu ht cc iu khin.(bn c th xem ton
b thuc tnh ca mt iu khin bng cch chn vo iu khin v m ca s
PROPERTIES trong Visual Basic)
Cc thuc tnh thng dng:
Thuc tnh Gii thch
Left
V tr cnh tri ca iu khin so vi vt cha n
Top
V tr cnh trn ca iu khin so vi vt cha n
Hieght
Chiu cao ca iu khin
Width
Chiu rng ca iu khin
Name
Mt gi tr chui c dng ni n iu khin
Enable
Gi tr logic (True hoc False) quyt nh ngi s dng c c
lm vic vi iu khin hay khng
Visible
Gi tr logic (True hoc False) quyt nh ngi s dng c thy
iu khin hay khng
Mt thuc tnh quan trng khc l BorderStyle, quyt nh cc thnh phn ca
ca s (nh thanh tiu , nt phng to thu nh) m mt biu mu s c

FPT Software Solution

Trang:16/265

Gio trnh o to Visual Basic 6.0

Bng sau y lit k 6 gi tr ca thuc tnh ny.


Hiu ng trn biu mu
Khng c cnh vin, khng thanh tiu , khng c di
chuyn. Gi tr ny thng c dng cho ca s khi ng
chng trnh
1 Fixed Single
khng th co gin ca s bng cch ko r cnh vin, nhng
c th dng nt phng to hoc thu nh. Gi tr ny c dng
cho nhng ca s c kch c c nh nhng vn xut hin
trn thanh Taskbar
2 Sizable
C th co gin ca s bng cch ko r cnh vin v dng
nt phng to hoc thu nh. Gi tr dng cho nhng ca s
thng dng
3 Fixed Dialog Khng th co gin v khng c th dng nt phng to hoc
thu nh,. Gi tr ny dng cho cc ca s n gin nh mt
khu
4- Fixed Tool tng t Fixed Dialog nhng thanh tiu ngn hn. Font
Window
trn thanh tiu v nt Close cng nh hn. gi tr ny dng
cho cc thanh cng c di ng.
5 Sizable Tool Tng t nh Fixed Tool Window nhng c th co gin
Window
c. Gi tr ny dng cho nhng ca s Properties ca
Visual Basic
Gi tr
0 None

3.1.3 Phng thc


L nhng on chng trnh cha trong iu khin, cho iu khin bit cch
thc thc hin mt cng vic no , chng hn di iu khin n mt v tr
mi trn biu mu. Tng t thuc tnh, mi iu khin c nhng phng thc
khc nhau, nhng vn c mt s phng thc rt thng dng cho hu ht cc iu
khin..
Cc phng thc thng dng
Phng thc
Gii thch
Move
Thay i v tr mt oi tng theo yu cu ca chng
trnh
Drag
Thi hnh hot ng ko v th ca ngi s dng

FPT Software Solution

Trang:17/265

Gio trnh o to Visual Basic 6.0


SetFocus
ZOrder

Cung cp tm ngm cho i tng c ch ra trong lnh


gi phng thc
quy nh th t xut hin ca cc iu khin trn mn hnh

3.1.4 S kin
Nu nh thuc tnh m t i tng, phng thc ch ra cch thc i tng
hnh ng th s kin l nhng phn ng ca i tng.
Tng t thuc tnh v phng thc, mi iu khin c nhng b s kin rt
thng dng vi hu ht cc iu khin. Cc s kin ny xy ra thng l kt qu
ca mt hnh ng no , nh l di chuyn chut, nhn nt bn phm, hic g vo
hp vn bn. kiu s kin ny c gi l s kin khi to bi ngi s dng, v
ta s phi lp trnh cho chng.
cc s kin thng dng
S kin
Change

Xy ra khi
Ngi s dng sa i chui k t trong hp kt hp hoc hp
vn bn
Click
Ngi s dng dng chut click ln i tng
Dblclick
Ngi s dng dng chut click p ln i tng
DragDrop
Ngi s dng ko r mt i tng sang ni khc
DragOver
Ngi s dng ko r mt i tng ngang qua mt iu khin
khc
GotFocus
a mt i tng vo tm ngm ca ngi s dng
KeyDown
Ngi s dng nhn mt nt trn bn phm trong khi mt i
tng ang trong tm ngm
KeyPress
Ngi s dng nhn v th mt nt trn bn phm trong khi mt
i tng ang trong tm ngm
KeyUp
Ngi s dng th mt nt trn bn phm trong khi mt i tng
ang trong tm ngm
LostFocus
a mt i tng ra khi tm ngm
MouseDown Ngi s dng nhn mt nt chut bt k trong khi con tr chut
ang nm trn mt i tng
MouseMove Ngi s dng di chuyn con tr chut ngang qua mt i tng
MouseUp
Ngi s dng th nt chut trong khi con tr chut ang nm
trn mt i tng

3.1.5 Mi quan h gia phng thc, thuc tnh v s kin


Mc d thuc tnh, phng thc v s kin c vai tr khc nhau nhng chng
thng xuyn lin h vi nhau. v d nu ta di chuyn mt iu khin bng
phng thc Move ( thng p ng mt s s kin) mt s thuc tnh nh Top,
Height, Left, Width s thay i theo. Bi v khi kch c ca iu khin thay i, s
kin Resize s sy ra.
Ph thuc ln nhau cn c ngha l ta c th t c mjc ch cng vic
bng nhiu cch: x lu trn thuc tnh hoc phng thc. V d, ta c 2 cch
di chuyn nt lnh:
a. thuc tnh

FPT Software Solution

Trang:18/265

Gio trnh o to Visual Basic 6.0


cmdMove.Left=100
cmdMove.Top=100
b. phng thc
cmdMove.Move 100,100
Mt v d khc, lm mt biu mu xut hin v bin mt trn mn hnh
c. thuc tnh
xut hin
frmMyForm.Visible =True
Bin mt
frmMyForm.Visible =False
d. phng thc
xut hin
frmMyForm.Show
Bin mt
frmMyForm.Hide

3.1.6 Ca s Properties
ca s ny cho php lp trnh vin xem xt v sa i cc thuc tnh ca biu
mu v cc iu khin trong lc thit k
Phn trn ca s l cc danh sch i tng, i tng c chn trong danh
sch ny c cc thuc tnh ca n hin th trong phn bn di ca ca s.

Thuc tnh Caption c nh du, ngha l ta c th sa i thuc tnh ny.


tng thuc tnh c mt ha tr mc nh. ta c thr sa i bng tay trong lc
thit k, hoc bng chng trnh trong lc thi hnh.
mt biu mu c khong 40 thuc tnh c hin th trong lc thit k, nhng
ta c th truy cp mt s thuc tnh khc vo trong lc thi hnh.
Ta c th xem ton b thuc tnh xp xp theo th t bng ch ci bng cch
chn vo tab Alphabetic, hoc xem theo tng nhm bng cch chn vo tab
Categozized.
ta c th m ca s Properties bng nhiu cch:
FPT Software Solution

Trang:19/265

Gio trnh o to Visual Basic 6.0


a.
b.
c.

nhn chutvo biu mu chpnj n nh mt i tng hin hnh,


nhn phm F4 hin th ca s Properties
Hoc l t menu_View, chn Properties
hoc l nhn nt phi chut ln biu mu, ta s thy mt menu hin th.
chn Properties.

3.1.7 Vit chng trnh s dng thuc tnh, phng thc v s


kin
Ta th vit chng trnh Movelt dng di chuyn ca s. Movelt c mt ca
s tn l frmMove, cha 4 nt lnh 4 gc mn hnh. khi thi hnh nhn vo mot
trong cc nt ny s lm ca s di chuyn ti gc mn hnh tng ng. gia mn
hnh s l mt nhn hiu s thng bo tc thi cc di chuyn ca chut cng nh
nt lnh no c Focus.
cc bc tng qut d to Movelt:
a. To giao din ngi s dng (GUI)
b. Vit th tc Form_Load()
c. Vit th tc click()
d. thm cc thng bo s kin
3.1.7.1 To GUI
1.
2.
3.
4.
5.

6.

t menu File, chn New Project m hp thoi n. Chn


kiu standard EXE
vo ca s Properties, sa tn biu mu thnh frmMove
thm 4 nt lnh vo 4 gc biu mu. ta s xa li v tr chnh xc
hin cho ng bng chng trnh
nhn p chut ln bi mu to th tc Form_Load()
i thuc tnh BorderStyle ca biu mu thnh 1- Fixed Single
cm biu mu co gin khi chng trnh thi hnh. sau i cc
thuc tnh Alignment ca nhn thnh 2- Center v BorderStyle ca
nhn thnh 1- Fixed Single
Lu biu mu vi tn l frmmove v lu n vi tn l
Movelt.vbp

FPT Software Solution

Trang:20/265

Gio trnh o to Visual Basic 6.0


3.1.7.2 Vit th tc Form _Load
Th tc ny chun b mt s khi to cho biu mu trc khi n c hin th
a. t thuc tnh Caption cho CommandButtion
b. Dt chui k t khi to cho nhn
c. t chui k t cho thanh tiu ca biu mu
d. t v tr cho 4 nt lnh nhn v biu mu trn mn hnh
e. a vo on chng trnh sau:
Private Sub Form_Load()
'Set the Caption property of the CommandButtons
cmdTopLeft.Caption = "Top Left"
cmdTopRight.Caption = "Top Right"
cmdBottomLeft.Caption = "Bottom Left"
cmdBottomRight.Caption = "Bottom Right"
'Clear the initial text of the label
lblNotify.Caption = ""
'Set the form's title bar text
frmMove.Caption = "MoveIt"
'The rest of the code centers the form on the
'screen, sets the position of the four
'CommandButtons, and sets the size and
'position of the label.
'Center the form on the screen. This works by
'setting the Left side of the form to the center
'of the screen, less half the width of the form.
'Also, the Top of the form is set to the center
'of the screen, less half the height of the form.
frmMove.Left = (Screen.Width - frmMove.Width) / 2
frmMove.Top = (Screen.Height - frmMove.Height) / 2
'Set the Left edge of the buttons. The 200 setting
'for the left buttons sets a space between the edge
'of the form and the buttons. The right buttons are
'set by subtracting the width of the button from
'the width of the form, and subtracting 300 to
'set a space between the button and the form edge.
cmdTopLeft.Left = 200
cmdBottomLeft.Left = 200
cmdTopRight.Left = frmMove.Width - cmdTopRight.Width - 300
cmdBottomRight.Left = frmMove.Width - cmdBottomRight.Width - 300
'Set the Top edge of the buttons. This is done
'similar to setting the Left edge.

FPT Software Solution

Trang:21/265

Gio trnh o to Visual Basic 6.0


cmdTopLeft.Top = 200
cmdBottomLeft.Top = frmMove.Height - cmdBottomLeft.Height - 500
cmdTopRight.Top = 200
cmdBottomRight.Top = frmMove.Height - cmdBottomRight.Height - 500
'Set the size of the label
lblNotify.Height = 360
lblNotify.Width = 3000
'Center the label within the form. This is done
'similar to centering the form.
lblNotify.Left = (frmMove.Width - lblNotify.Width) / 2
lblNotify.Top = (frmMove.Height - lblNotify.Height) / 2 - 200
End Sub
3.1.7.3 Vit th tc Click
Dng th tc ny di chuyn biu mu xung quanh mn hnh. Nhn p
chut ln nt lnh m ca s Code. a vo on chng trnh sau ay:
Private Sub cmdBottomLeft_Click()
'Set the value of the form's TOP property
'to the bottom of the screen but bring
'it up the height of the screen so that the
'bottom of the form is on the bottom of
'the screen
frmMove.Top = Screen.Height - frmMove.Height
'Set the value of the form's LEFT property
'to the left most of the screen.
frmMove.Left = 0
End Sub
Private Sub cmdBottomRight_Click()
'Set the value for the form's TOP property to
'the bottom of the screen, but bring the TOP
'up the HEIGHT of the form so that the bottom
'of the form is on the bottom of the screen.
frmMove.Top = Screen.Height - frmMove.Height
'Set the value of the form's LEFT property to
'the right of the screen but bring it across
'the screen, the width of the form so that the
'right side of the form is on the right

FPT Software Solution

Trang:22/265

Gio trnh o to Visual Basic 6.0


'side of the screen
frmMove.Left = Screen.Width - frmMove.Width
End Sub

FPT Software Solution

Trang:23/265

Gio trnh o to Visual Basic 6.0


Private Sub cmdTopLeft_Click()
'Set the value of the form's TOP property
'to the top of the screen.
frmMove.Top = 0
'Set the value of the form's LEFT property
'to the left of the screen.
frmMove.Left = 0
End Sub
Private Sub cmdTopRight_Click()
'Set the value of the form's TOP property
'to the top of the screen.
frmMove.Top = 0
'Set the value of the form's LEFT property to
'the right of the screen but bring it back across
'the screen the width of the form, so that the
'right side of the form is on the right
'side of the screen
frmMove.Left = Screen.Width - frmMove.Width
End Sub
i tng Screen s trong on chng trnh trn l mn hnh
Vic di chuyn biu mu ln trn hoc sang tri ch cn i thuc tnh Top hay
Left thnh 0. Gi tr ny lun ngcho cnh trn hay cnh tri mn hnh.
Cnh phi hoc cnh di phc tp hn v khng c thuc tnh Right hay
Bottom. canh phi biu mu ta phi thay i thuc tinh Left thng qua thuc
tnh Width
Tng t vi cnh di ta phi thay i thuc tinh Top thng qua thuc tnh
Height
3.1.7.4 Thm thng bo s kin
Khi ngi s dng nhn hoc th nt chuot trn biu mu chui k t trong
nhn lblNotify s thay i. Ngoi ra khi ngi s dng nhn phm Tab hoc chut
di chuyn t nt ln ny sang nt lnh khc, chui k t ca nhn cng thay
i. nh vy ta phi chng trnh cho 3 th tc khc nhau. MouseUp, mouseDown
cho biu mu v GostFocus cho tng nt lnh.
M ca s Code, chn s kin MouseDown m th tc v a vo on
chng trnh sau
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
Y As Single)
lblNotify.Caption = "MouseDown Event"

FPT Software Solution

Trang:24/265

Gio trnh o to Visual Basic 6.0


End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y
As Single)
lblNotify.Caption = "MouseUp Event"
End Sub
Private Sub cmdBottomLeft_GotFocus()
lblNotify.Caption = "cmdBottomLeft has the Focus"
End Sub
Private Sub cmdBottomRight_GotFocus()
lblNotify.Caption = "cmdBottomRight has the Focus"
End Sub
Private Sub cmdTopLeft_GotFocus()
lblNotify.Caption = "cmdTopLeft has the Focus"
End Sub
Private Sub cmdTopRight_GotFocus()
lblNotify.Caption = "cmdTopRight has the Focus"
End Sub

3.2 Lm vic vi mt n
3.2.1 nh ngha
Mt n gm c :
a. 1 tp tin n (.vbp) theo di ton b cc thnh phn
b. 1 tp tin cho biu mu (.frm)
c. 1 tp tin nh phn (.frx) cho tng biu mu. Ngi s dng khng c sa
i. Cc tp tin ny c pht sinh t ng cho mi tp tin .frm bt k v
dng cha cc thuc tnh nh phn nh Picture hay Icon.
d. 1 tp tin cho tng module lp (.cls)- tu chn
e. 1 tp tin cho tng module chun (.bas)- tu chn
f. 1 hoc nhiu tp tin cha cc iu khin Activex (.ocx)- tu chn
g. 1 tp tin ti nguyn (.res)- tu chn

FPT Software Solution

Trang:25/265

Gio trnh o to Visual Basic 6.0

3.2.2 Ca s Project Explorer


Ca s ny thng c hin th bn gc phi trn mn hnh Visual Basic.
Project Explorer gip ta t chc cc tp tin trong n v truy cp chng di
dng thit k biu mu hoc chng trnh.

lm vic vi ca s ny ta dng menu nhy vi ng cnh. menu ny xut


hin khi ta nhn nt phi chut vo mt tp tin trong ca s. Khi , ta c th:
a. xem mt tp tin di dng thit k biu mu hoc chng trnh
b. xem thuc tnh ca tp tin
c. Thm mt biu mu hoc module vo n
d. Lu tp tin hin hnh
e. Xo mt tp tin khi n
f. in tp tin
g. ghi hoc th cho ca s Project Explorer di ng trong mn hnh Visual
Basic
h. che ca s Project Explorer

3.2.3 To n
mi ln khi ng Visual Basic, ta s thy hp thoi New Project. T y, ta
c th chn loi n m ta mun to v n Open.
Khi Visual Basic c sn, ta c th to n bng cch: t menu File chn
New Project. Hp thoi New Project xut hin, ta chn loi n cn thit v
nhn OK.

3.2.4 i thuc tnh n


Mt s thng tin lin quan n nh tn n, s phin bn, chui k t dng
hin th trn thanh tiu khi ng dng hon thnh. Ta c th xem cc thng tin
khc trong hp thoai Project Properties
3.2.4.1 Hp thoi Project Properties
1. trong ca s Project Explorer, nhn nt phi chut ln tp tin n
FPT Software Solution

Trang:26/265

Gio trnh o to Visual Basic 6.0


2. trong menu ng cnh, Chn Project Name Properties. Hp thoi
Project Properties xut hin
3. Hoc l t menu Properties, chn Project Name Properties

3.2.5 Lu v t tn n
3.2.5.1 Lu n
Khi lu n tng tp tin trong n s c lu trc k tip l tp tin
n. Trong ln lu n u tin, Visual Basic ngh tn cho tng tp tin, thng
n ly tn biu mu v c phn m rrngt u thuc vo loi tp tin
1. t menu file chn Save Project
2. nu y l ln u lu n hoc ta va thm mt biu mu hoc
module, hp thoi save File as xut hin ln lt cho tng tp tin
3.2.5.2 i tn
Ta khng nht thit dng tn m Visual Basic ngh, m c th t tu . tuy
nhin nn dt tn sao cho gi nh
1. a vo mt tn v n nt save
2. Tp tin cui cng c lu l tp tin n Nu ta t tn cho
n thng qua hp thoi project properties, Visual Basic s t ng
ngh Project_Name.vbp. Lc ny, ta c th i li tn khc tu thch,
v d nh SaveTest.vbp

3.2.6 M n c sn
Ta c mt s n ang lm vic. Khi ng Visual Basic, chn menu File.
Phn di menu lit k danh sch cc n mi nht m ta lm vic, chn
n cn m. nu n khng xut hin trong danh sch, ta phi ch ra ng dn.
3.2.6.1 m tp tin vo lc khi ng Visual Basic
Ln u khi ng Visual Basic, hp thoi New project xut hin. ta c th
chn m n mi nht hoc c sn trn a ngay t hp thoi ny. nu khng
mun hp thoi ny xut hin mi ln khi ng Visual Basic, xo nh du trn
hp nh du (checkbox) nm bn di hp thoi.
3.2.6.2

M n c sn

a. T menu File, chn Open Project.


b. trn trang Existing, chuyn n th mc cha n. nu n cn m l
n lu gn nht, chuyn sang trang Recent
c. chn tn tp tin n v nhn OK

FPT Software Solution

Trang:27/265

Gio trnh o to Visual Basic 6.0

3.2.7 Thm xo v lu tp tin trong n


3.2.7.1 Thm mi tp tin
Thng thng, mt biu mu cn nhiu biu mu hc module. V d mun
thm hp thoi About, ta cn thm mt biu mu.
Di y l cc dng tp tin c th thm vo n :
a.
biu mu (form): tp tin.frm cha mt ca mt biu mu v cc iu
khin, k c cc thuc tnh ca chng. N cng cha khai bo cc hng,
bin v th tc
b.
Lp (Class) l mt trong nhng tnh nngquan trng nht ca Visual
Basic, c dng trong lp trnh hng i tng nh ngha cc
khun mu cho cc i tng.
c.
module chun cha cc khai bo kiu, hng, bin, th thuc phm vi
public hoc mc module
d.
tp tin ti nguyn; cha hnh nh, chui k t v cc d liu khc ta c
th son tho m khng cn sa li m ngun
e.
ti liu ActiveX (.dob) tng t biu mu nhng c hin th trong
trnh duyt xt WEB, nh l Internet Explorer.
f.
Module iu khin (.ctl) v module Property page (.pag) tng t biu
mu, nhng c dng to iu khin ActiveX v danh sch cc
thuc tnh ca chng hin th khi thit k
g.
iu khin ActiveX (.ocx) c th c thm vo hp cng c dng
trong biu mu. Khi Visual Basic c ci t, mt s tp tin dng ny
km theo Visual Basic s c chp vo trong my
h.
i tng, nh l Worksheet ca Excel
i.
tham chiu (Reference)
j.
trnh thit k ActiveX : l cng c dng thit k cc lp cho i
tng. giao din thit k biu mu l mt trnh thit k mc nh

FPT Software Solution

Trang:28/265

Gio trnh o to Visual Basic 6.0


cc iu khin thng dng l nt lnh iu khin khung c Visual
Basic cung cp sn.nt c th thm tp tin bng hai cch;
cch 1:
- t menu Project, chn Add, mt hp thoi xut hin
k.

nu mun to mi, chn tab new. Visual Basic cung cp cc danh


sch c sn
nu mun dng mt tp tin c sn, chn Tab Existing, chn tn tp
tin, nhn Open

cch 2:
-

Nhn nt chut trong ca s Project Explorer


Trong menu ng cnh chn Add
xut hin hp thoi nh trn

3.2.7.2 Xo tp tin
a. Chn tp tin trong ca s Project Explorer
b. T menu Project chn Remove
c. Tham chiu tp tin b xo trong n (thc cht n vn c lu trn a)
Khi mt tp tin trong n b xo Visual Basic s cp nht nhng thay i ny
trong tp tin.vbp khi ta lu n. Do nu ta xo tp tin bn ngoi Visual
Basic, tp tin n s khng c cp nht. khi ta m li n Visual Basic
s bo li l thiu tp tin
3.2.7.3 Lu tp tin
a. Chn tp tin trong ca s Project Explorer
b. t menu chn Save

FPT Software Solution

Trang:29/265

Gio trnh o to Visual Basic 6.0

3.2.8 Thm iu khin vo n


3.2.8.1 Thm iu khin ActiveX
Ta c th thm vo n mt iu khin ActiveX v cc i tng nhng
c bng cch thm n vo hp cng c
1. T menu Project chn components
2. thm mt iu khin (.ocx) hoc thm mt i tng nhng vo
hp cng c, chn vo hp nh du bn tri tn iu khin
3. Chn OK ng hp thoi. Cc iu khin nh du s hin th
trn hp cng c.
4.

thm iu khin ActiveX vo hp thoi Components, nhn nt Browse


tm ng dn cho tp tin.OCX
mi iu khin ActiveX c km theo mt tp tin m rng l.OCA Tp tin ny
cha cc thng tin cu th vin kiu lu tr v cc d liu lin quan n iu
khin. Cc tp tin.OCA cha trong cng th mc vi iu khin ActiveX v c
to li khi cn
3.2.8.2 Xo iu khin khi n
1. t menu project, chn Components
2. hp thoi Components xut hin, chn iu khin m ta mun xo,
xo hp nh du k bn n
iu khin s b xo khi hp cng c

FPT Software Solution

Trang:30/265

Gio trnh o to Visual Basic 6.0


3.2.8.3 S dng i tng ca ng dng khc
ly i tng t mt ng dng no , v d ta mun s dng th vin i
tng ca Microsoft Excel, t tham chiu n th vin i tng ca ng dng

Thm tham chiu n th vin i tng ca ng dng khc


1. t menu Project, chn References

2. Hp thoi References xut hin, chn vo hp nh du. nu tn tham


chiu cha c sn trong danh sch, nhn Browse vo ng dng v n OK
Nu khng mun tip tc s dng i tng ca th vin tham chiu. Ta nn
xo nh du tham chiu gim s tham chiu m Visual Basic ang qun l,
gim c thi gian bin dch n,.
Khi c tham chiu n th vin i tng, ta c th ly c i tng cng
vi cc thuc tnh v phng thc ca n bng cch vo menu view, chn Object
Browser
3.2.8.4 Thm tp tin ti nguyn vo n
Tp tin ti nguyn cha ton b cc hnh nh, biu tng, chui vn bn hin
th trn mn hnh v cc thnh phn khc lin quan n vic a phng ho ng
dng.
a. t menu project, chn Add File
b. Chn tp tin ti nguyn c sn (.RES) v chn Open
Mt n n gin ch c mt tp tin ti nguyn, nu thm mt tp tin.RES
th hai, Visual Basic s bo li

3.2.9 To tp tin EXE


Cc v d trn y c thi hnh thng qua nt Start ca Visual Basic hoc nhn
F5. Tuy nhin khi chng trnh hon tt, ta cn c mt tp tin thi hnh, hay tp tin
EXE
FPT Software Solution

Trang:31/265

Gio trnh o to Visual Basic 6.0


3.2.9.1 So snh trnh bin dch v trnh thng dch
ngn ng lp trnh chia lm hai trng phi: thng dch v bin dch. ngi s
dng ngn ng bin dch hay xem thng ngn ng thng dch. ngn ng thng
dch cch ly ngi s dng vi h thng, to mt lp che chn lp trnh d
dng. chng rt chm v thiu chiu su so vi ngn ng bin dch
my tnh ch hiu c cc tn hiu 0 v 1. trnh bin dch tp hp cc lnh t
kho ri chuyn chng thnh cc tn hiu 0 v 1 my c th hiu c
trnh thng dch khng lm th. N l mt chng trnh chen gia my tnh v
cc ng dng. khi thi hnh ng dng, trnh thng dch s duyt qua tng dng
chng trnh, chun i chng thnh m my. V vy qu trnh ny rt chm chp.
3.2.9.2 Ngn ng gi bin dch
Trong cc phin bn trc ca Visual Basic, khi ta bin dich ng dng, chng
c chuyn sang mt loi m d dng s l, gi l P- code. v phng din
k thut, c th gi l bin dch. Tuy nhin ta cn km theo mmt s tp tin
ca Microsoft v my tnh vn cha hiu ngn ng P- Code. nhng tp tin gi km
theo ng dng s thng dch n.
T Visual Basic 5 tr v sau, chng ta c th bin dch thc s trn cc chng
trnh Visual Basic. khng cn nhng thng dch thi hnh n: chng trnh c bin
dch thng thnh ngn ng my.
Ta c th bt hay tt chc nng ny bng cch m hp thoi Project Properties
t menu Project

3.2.10Sa i thuc tnh n


T menu Project, chn <tn n > Properties. Hp thoi Project Properties
xut hin. nhng sa i trn hp thoi ny s c lu trn tp tin.vbp

FPT Software Solution

Trang:32/265

Gio trnh o to Visual Basic 6.0

Chn la
Startup Object

Gii thch
Tn biu mu c hin th hoc tn th tc c thi
hnh u tin khi chng trnh c khi ng
Project Name
Tn n, n khng c cha du chm, khong trn
v phi bt u bng ch ci. Tn n khng c
qua s 37 k t
Help File
Tn tp tin h tr km theo n
Project Help Context s ID ca ch Help c hin th khi ngi s
ID
dng click vo nt ?
Project Description
Tn gi nh ca n. N c hin th trong
References v Object Browser

3.3 Lm vic vi nhiu n


3.3.1 S dng Project Group
Visual Basic cho php ta lm vic vi nhiu n cng lc. theo di ta dng
ca s Project Explorer v nhm n (Project Groups) l tp hp n. Nhm
n c th c lu thnh tp tin, tpng t module, biu mu, hay n. Phm m
rng l.vbg

3.3.2 Thm n vo nhm n


1. t menu File chn Add Project
2. trong hp thoi chn Add Project, m Tab New, chn kiu n
cn thm, hoc chn n c sn
3. nhn OK, Visual Basic t ng to nhm n v thm mi n

FPT Software Solution

Trang:33/265

Gio trnh o to Visual Basic 6.0

3.3.3 Xo n trong nhm n


1. Trong ca s Project Explorer, chn n cn xo
2. T menu file, chn REMOVE Project
Ta ch dng nhm n khi to cc iu khin ActiveX, vn i hi nhiu
n m cng mt lc.

FPT Software Solution

Trang:34/265

Gio trnh o to Visual Basic 6.0

4 Lm vic vi cc iu khin
4.1 Cc loi iu khin
Trong Visual Basic c ba nhm iu khin
iu khin ni ti, v d nh l cc iu khin nt lch v khung.
Cc iu khin ny c cha trong cc tp tin. EXE ca Visual
Basic. Cc iu khin ni ti lun cha sn trong hp cng c, ta
khng th g b hay thm chng vo hp cng c
iu khin ActiveX, tn ti trong cc tp tin c lp c phn m
rng l. OCX. Chng c th a ra cc iu khin hin din trong
mi n bn ca Visual Basic(v d DataCombo, Datalist,....) hoc l
cc iu khin ch hin din trong n bn Professional v
Enterprise(nh ListView,Toolbar,Animation ). Ngoi ra, cn rt nhiu
iu khin ActiveX do cc nh cung cp th ba a ra
i tng chn c, v d nh i tng bng tnh (Worksheet) ca
Microsoft Excel cha mt danh sch cc nhn vin ca mt cng ty
hay i tng lch biu (Calendar) ca Microsoft Project cha vic
lp biu thng tin cho mt n. Bi v chng c th thm vo hp
cng c, chng c th l cc iu khin c chun b chu o. Mt
vi i tng kiu ny cng cung cp phn Automation lp trnh vi
cc i tng sinh ra t nhng ng dng khc ngay trong ng dng
ca Visual Basic. Xem phn Lp trnh vi cc i tng bit
thm thng tin v Automation

4.1.1 Thao tc vi iu khin


4.1.1.1 Hp cng c
t mt hp vn bn hay nt lch vo biu mu, n gin l tr v nhn
chut. Tt c cc iu khin ni ti cha trong hp cng c
(toolbox) thng hin th bn tri mn hnh.
Mun hin th hp cng c, t menu View, chn
Toolbox hoc l nhn chut trn biu tng (icon). Khi hp
cng c hin th, ta c th dch chuyn hp cng c xung
quanh mn hnh bng cch nhn thanh tiu ca n(title
bar) ri gi chut v ko ti ni ta mun v th ra
Mun ng hp cng c, nhn chut ln nt ng(nm
trn gc phi ca thanh tiu ).
Ngoi hp cng c, ta cng cn xem mt s ca s tng t
phc v cho vic thit k ng dng nh G ri chng
trnh(Debug), vit chong trnh (Edit), thit k biu
mu(Form Editor). hin th cc ca s ny, nhn nt phi
chut trn thanh cng c(tool bar), ta s thy mt menu theo
ng cnh(context sensitive menu), chn trong menu ca s
m ta mun xem.

FPT Software Solution

Trang:35/265

Gio trnh o to Visual Basic 6.0


Cc ca s ny c th hin th theo hai cch: tri ni v c
nh. Hai cch ny c th chuyn i qua li bng ch nhn
p chut trn thanh tiu ca ca s .
4.1.1.2 a iu khin vo biu mu
Ta ly nt lch lm v d.
a.
T menu File, chn New Project to mt n mi.

b. Trong hp thoi New Project, chn Standard EXE


c. Mt biu mu trng hin th. a nt lch vo biu
mu, ta nhn chut vo biu tng nt lch trn hp cng
c.
Khi chn trong hp cng c, nu khng nh tn iu khin,
ta c th a chut ngang qua tng biu tng, tn ca n s
hin ra.
Di con tr mn hnh ti v tr ta mun, v iu khin bng cch gi nt tri
chut v r n i. Mt hnh ch nht xut hin, th hin kch c ca iu khin.
Khi ta va , ta th chut v iu khin c v trn biu mu.
Ta c th nhn vo iu khin v r n n vt tr ta mun
Nu mun hiu chnh v tr ca iu khin, ta gi nt Ctrl v dng cc phm mi tn trn bn phm.
Mi ln nhn phm, iu khin dch chuyn i mt n v mn hnh(mt im trn biu mu)

4.1.1.3 iu chnh kch c iu khin


Thng thng, khi ta th mt iu khin vo biu mu, ta c th iu chnh
kch c iu khin bng cch chn vo n ri nhn chut ln cch bin v r chut

FPT Software Solution

Trang:36/265

Gio trnh o to Visual Basic 6.0


i. Tuy nhin, mt vi iu khin khng th co gin, v d nh hp kt hp(combo
box)
C th nhn p chut ln biu tng trong hp cng c, Visual Basic s t
ng th iu khin vo biu mu vi kch thc mc nh ca n.
Nu mun hiu chnh kch c ca iu khin, ta gi phm Shift v dng cc phm mi tn trn
bn phm

4.1.1.4 Li(grid) im trong biu mu


to s thun tin cho lp trnh vin khi thit k cc iu khin, Visual
Basic hin th biu mu vi cc khung k thng hng bng cc im nh. Ta c
th sa li kch c hoc l loi b hn cc ny bng cch: t menu Tool, chn
Option, chon tab General
4.1.1.5 Kho(Lock) iu khin
gi cc iu khin c nh ti v tr ca n, ta dng tnh nng Lock.
Chn iu khin, sau , t menu Format, chn Lock Controls hoc l nhn
chut vo biu tng vo biu tng kho trn Form Editor.
Khi , ta khng th dng chut iu chnh kch c iu khin. Tuy vy, ta
vn c th dng t hp phm.
4.1.1.6 Thuc tnh v s kin
Thuc tnh (Property): l b cc thng s m ta c th gn
cho iu khin, v d nh tn, chiu rng, chiu cao,.... Ta c th xem
ton b thuc tnh ca iu khin bng cch chn vo n v nhn F4
m ca s thuc tnh
b.
Phng thc(Method): l nhng phn ng ca iu khin
c.
S kin(Event): l nhng tn hiu m iu khin c th
hiu phn ng
Th mnh ca Visual Basic l s dng cc iu khin v tn dng ti a kh
nng lp trnh ca chng
Mt iu khin thc cht l mt ca s c lp trnh sn bn trong. Khng
c g khc nhau gia mt ng dng v mt iu khin. thi hnh mt ng dng,
ta m mt ca s. ng dng s chim iu khin trn ca s v hot ng
thng qua giao din cng nh cc chc nng ca n. Mt iu khin cng thc
hin tng t nh vy.
Mt iu khin cha ng mt mt chng trnh c lp sn v chng
trnh ny c th tch hp mt cch d dng vo ng dng c s dng iu khin.
thi hnh mt ng dng, ta m ca s. ng dng s chim iu khin trn ca
s v hot ng thng qua giao din cng nh cc chc nng ca n. Mt iu
khin cng thc hin tng t nh th.
Mt iu khin cha ng mt chng trnh c lp sn v chng trnh ny
c th tch hp mt cch d dng vo ng dng c s dng iu khin. Trc y,
lp trnh vin thng phi t xy dng ton b mo-dun cn thit cho chng trnh.
iu ny c ngha l cc lp trnh vin khc cng phi lp li cng vic . Trong
khi , PC c cu to t v s thnh phn c cung cp bi nhiu nh sn
xut khc nhau, mi thnh phn c mt cng dng c bit. Khi nim iu khin
a.

FPT Software Solution

Trang:37/265

Gio trnh o to Visual Basic 6.0


ca Visual Basic cng mang tng nh th. Tng iu khin c th c hiu
chnh v c tch hp li vi nhau to thnh mt ng dng.
So vi cc iu khin c sn trong hp cng c, mt iu khin hiu chnh
(custom control), hay mt iu khin ActiveX l mt thnh phn c kh nng pht huy
cao hn v su hn cc tnh nng hin ti ca mi trng. Bng cch thm mt
iu khin ActiveX vo h thng, ta m rng nng lc v tin ch ca mi
trng Visual Basic. Ch cn ci t mt bn Visual Basic duy nht, mi lp trnh
vin c quyn thm nhng iu khin m h thch vo hp cng c.
V l nhng iu khin ActiveX nn chng c th c dng li mt cch d
dng bi cc ng dng ActiveX nh l b Office, trnh duyt Web Internet
Explorer,...Cc iu khin ny c cung cp bi cc nh sn xut phn mm.
Chng c th l mt sn phm thng mi hoc c ti xung min ph t
Internet.

4.2 Cc iu khin ni ti
Cc iu khin ni ti gm c:
iu khin
M t
Label
Hin th chui k t khng i trn biu mu
Frame
Cho php ngi s dng chn hoc khng chn mt kh
nng no .
CheckBox
Cho php ngi s dng chn hoc khng chn mt kh
nng no
ComboBox
Cho php ngi s dng chn t danh sch cc chn la hay
nhp liu mi
HscrollBar
Cho php ngi dng s dng cun ngang qua mt iu
khin cha d liu khc
Timer
Cho php chng trnh t ng thi hnh mt cng vic no
vo mt thi im, khng cn tng tc ca ngi s dng.
DirListBox
Cho php ngi s dng chn mt th mc
Shape
Hin th mt dng hnh hc trn biu mu
Image
Hin th hnh nh ho trn biu mu nhng khng th lm
ni cha
OLE Container
Cho php thm chc nng lp trnh ca mt iu khin vo
ng dng
PictureBox
Hin th hnh anh trn biu mu v c th dng lm ni cha.
TextBox
Dng trnh by vn bn, nhng cng cng cho php ngi s
dng sa i hay thm mi vn bn
CommandButton Cho php ngi s dng thc hin mt hnh ng
OptionButton
Cho php ngi s dng chn la t mt nhm c hai hay
nhiu kh nng tr ln.
ListBox
Cho php ngi s dng chn t danh sch cc phn t
VscrollBar
Cho php ngi s dng cun dc qua mt iu khin cha
d liu khc
DriveListBox
Cho php ngi s dng chn a
FileListBox
Cho php ngi s dng chn mt tp tin
Line
Hin th mt on thng trn biu mu
Data
Cho php lp trnh kt ni d liu

FPT Software Solution

Trang:38/265

Gio trnh o to Visual Basic 6.0


Sau y, ta s tm hiu v cc iu khin ni ti ph bin nht. Cc iu
khin khng c cp n trong chng ny, do nhng kh nng c bit ring
ca n, s c dnh trnh by trong cc chng ring pha sau.

4.2.1 Nt lnh
a. Phng thc: Click
b. S kin: MouseDown, KeyDown
c. Thuc tnh: Height,Font,BackColor,Caption, ShortcutKey
t tn( thuc tnh Name) cho nt lch thng bt u bng cmd. V d nh
cmdQuit, tng t vi hp vn bn l txt, vi biu mu l frm, vi nt tu
chn l opt, v.v..Trong trng hp dng mng iu khin, tt c cc nt lch
c cng tn.
Khi t tn cho iu khin, ta cn tun theo mt s quy tc. iu ny s gip chng trnh ca
ta tr nn sng sa, d c, nht l khi cn g ri chng trnh hoc ta cn c li chng trnh
sau vi thng

4.2.1.1 Phn bit hai thuc tnh Caption v Text


a. Caption: Dng cho cc i tng nh biu mu, khung, nt lnh, thng
hin th tiu cho i tng.
b. Text: Dng cho nhng iu khin thuc loi nhn d liu do ngi dng
nhp vo, nh hp vn bn, hp kt hp.
Ngoi ra ta c th quy nh phm nng cho cc iu khin c thuc tnh Caption,
bng cch t du & k bn k t. V d &Thot.

4.2.2 Hp vn bn
L mt iu khin rt thng dng dng nhn d liu t ngi s dng
cng nh hin th d liu trn mn hnh. Visual basic v Windows t ng x l
nhng hot ng nh hin th k t khi Ngi s dng g vo, chn v xo k t,
cun d liu, nh du vn bn, ct dn,...
4.2.2.1 Kim tra gi tr nhp
Hp d liu khng t kim tra d liu nhp vo, lp trnh vin phi lm vic
. Mc nh, hp vn bn nhn v hin th mi k t m Ngi s dng nhp
vo, k c khi ta mun g mt khu hoc hc mun nhn con s. Nu ta i thuc
tnh MaxLength thnh mt con s, v d 5, ta ch nhp c 5 l t. Nu i
MaxLength v 0 th ta c th nhp tu thch.
4.2.2.2 S kin KeyPress
S kin ny c pht ra khi Ngi s dng g vo hp vn bn.
Mi k t trn bn phm c mt con s duy nht, gi l m ASCII. Ta c th
xem ton b bng m ny trong ca s help.

4.2.3 iu khin thanh cun


Thanh cun(Scroll bar) cho php duyt d dng qua mt danh sch di gmd
nhiu phn t hoc mt lng ln thng tin bng cch cun ngang hoc cun dc
trong ng dng hay iu khin. y l mt iu khin thng dng ca Windows.

FPT Software Solution

Trang:39/265

Gio trnh o to Visual Basic 6.0


iu khin thanh cun dng s kin Scroll v Change theo di s dch
chuyn ca hp cun trn thanh cun.
S kin
M t
Change
Xy ra sau khi hp cun dch chuyn
Scroll
Xy ra khi hp cun dch chuyn. Khng xy ra nu mi tn cun
hoc thanh cun c nhn.
S dng s kin Scroll cho php truy cp n gi tr thanh cun khi n c
ko i. S kin Change xy ra sau khi hp cun c nh hay l khi thanh cun
hoc mi tn cun c nhn.
4.2.3.1 Thuc tnh Value
Thuc tnh Value (mc nh l 0) l mt s nguyn tng ng vi v tr ca hp
cun trong thanh cun. Khi hp cun vo gi tr nh nht n dch chuyn v bn
tri, hay pha trn cng. Khi hp cun vo gi tr ln nht, n dch chuyn v bn
phi hoc l pha di cng. Tng t, gi tr trung bnh s t hp cun vo gia
thanh cun.

4.2.4 iu khin Timer


Cc iu khin timer p ng vi thi gian tri qua, chng c lp vi ngi
s dng, v ta c th lp trnh vi chng thi hnh mt hnh ng trong cc
khong thi gian u n. Kiu p ng in hnh l kin tra gi h thng xem
n lc thi hnh nhim v no cha.
Mi iu khin Timer c thuc tnh Interval ch ra s phn nghn giy tri qua
gia hai s kin timer. ngoi tr khi n b v hiu ho, timer tip tc nhn s kin
ti cc thi khc bng khong thi gian quy nh.

4.2.5 iu khin nhn


Thng i km vi hp vn bn. Bi v hp vn bn khng c thuc tnh
caption nh nt lnh, nn nhn lm nhim v . Thng ta ch thao tc vi nhn
qua vi thuc tnh nh gn font ch, Cption, BorderStyle....

4.2.6 Checkbox:
4.2.7 Mt s thuc tinh thng dng:
Enable
Viable
Focus

4.2.8 Th t iu khin (TabIndex)

i khi dung tab iu khin thay v dng chut. Thuctnh tabIndex thc
hin iu ny.

4.2.8 4.2.9 Hp danh sch (Listbox).


Biu tng danh sch listbox trong toolbox:

FPT Software Solution

Trang:40/265

Gio trnh o to Visual Basic 6.0


Trong thc t,danh sch rt cn thit. Mt h thng nhn s cn lit k cc nhm
cng vic v tn cc phng ban a cc nhn vin vo h thng.
Ngi s dng ch thy nhng g h c php xem. H s c php
chn mt hoc mt vi phn t trong danh sch.

4.2.9.1 Sp xp
VB mc nh cc phn t c sp xp theo th t m chng c nhp
vo danh sch.
Mun sp xp theo th t ABC ta i thuc tnh Sorted thnh TRUE, thuc tnh
ny ch c i trong khi thit k khng c i trong lc thi hnh.
Nhng thuc tnh ny lm chm i qu trnh thm phn t vo danh sch. Ta
c th thm phn t v ng thi ch ra v tr mt mun thm:
List.AddItem Zebra,3
(Thm phn t c tn l Zebra vo v tr th 4
ca danh sch v ListIndex l 3).
chc chn gi tr dung l hp l ta dung listcount:
NNewPosition=6
If Listcount > 6 Then
List.AddItem Zebra,nNewPosition
End If

4.2.9.2 Thm mt phn t vo danh sch.


S dung lnh:

List.AddItem <Tn phn t,Index>


4.2.9.3Xo mt phn t t danh sch.
S dung lnh:
List.RemoveItem <Ind>
4.2.10 Hp kt hp (Combo Box)
Biu tng hp kt hp Combo Box:
4.2.11 iu khin OLE
Biu tng trong tool box:
OLE l tn gi tt ca Oject Linking and Embedding. N cho php ta nhng ton b
ng dng v d liu ca n vo chng trnh ca ta.
Cc iu khin mi

4.3 Cc iu khin M i

iu khin ADO data


iu khin Coolbar
iu khin D ata grid
iu khin Datalist, DataCombo
iu khin DataRepeater
iu khin DataTimePicker
iu khin Flat Scollbar

FPT Software Solution

Trang:41/265

Gio trnh o to Visual Basic 6.0

iu khin Hierarchical FlexGrid


iu khin ImageComBo
iu khin Month View

FPT Software Solution

Trang:42/265

Gio trnh o to Visual Basic 6.0

5 Nhp mn lp trnh
Cc iu khin trn biu mu ch l mt phn nh ca qu trnh lp trnh pht
trin ng dng, nhm to ra giao din cho ng dng. Sau , bn cn vit chng
trnh ng dng hot ng. Do , chng ny s i su vo phn cng vic
chnh ca Visual Basic, vit chng trnh.
Visual Basic l ngn ng lp trnh da trn i tng. Nu bn l ngi mi
hc, chng ny s gii thiu cc khi thit k c bn xy dng chng trnh.
Khi hiu c cc khi nim c bn, bn c th to ra cc ng dng rt mnh
bng Visual Basic.

5.1 Chun lp trnh (Coding convention)


5.1.1 Coding conventions
Object Naming Conventions
Object name has 2 parts: prefix and description.
The prefix that makes it easy to identify the type of object, the description mentions
name of objects.
- Conventions of description part are:
+ In English.
+ Can contain many words, each word is contiguous to others (No hyphen).
+ No acronym except listed in table Acronyms (see 4. Acronym).
+ Capitalize the first letter of each word.
(Note: These conventions will be applied to all of name types mentioned after in this
document)
- Prefix conventions for some of the objects supported by Visual Basic are listed
below (Sorted by control name):
Control type
3D Panel
ADO Data
Animated button
Check box
Combo box, drop-down list
box
Command button
Common dialog
Communications
Control
(used
within
procedures when the specific
type is unknown)
Data

FPT Software Solution

Prefix
Pnl

Example

Ado
Ani
Chk

pnlGroup
adoBiblio
aniMailBox
chkReadOnly

Cbo

cboEnglish

Cmd
dlg
com

cmdExit
dlgFileOpen
comFax

ctr

ctrCurrent

dat

datBiblio

Trang:43/265

Gio trnh o to Visual Basic 6.0


Data-bound combo box
Data-bound grid
Data-bound list box
Data combo
Data grid
Data list
Data repeater
Date picker
Directory list box
Drive list box
File list box
Flat scroll bar
Form
Frame
Gauge
Graph
Grid
Hierarchical flexgrid
Horizontal scroll bar
Image
Image combo
ImageList
Label
Lightweight check box
Lightweight combo box
Lightweight command button
Lightweight frame
Lightweight horizontal scroll
bar
Lightweight list box
Lightweight option button
Lightweight text box
Lightweight vertical scroll bar
Line
List box
ListView
MAPI message
MAPI session
MCI
Menu
Month view
MS Chart
MS Flex grid
MS Tab
OLE container
Option button
Picture box
Picture clip

FPT Software Solution

dbcbo
dbgrd
dblst
dbc
dgd
dbl
drp
dtp
dir
drv
fil
fsb
frm
fra
gau
gra
grd
flex
hsb
img
imgcbo
ils
lbl
lwchk
lwcbo
lwcmd
lwfra

dbcboLanguage
dbgrdQueryResult
dblstJobType
dbcAuthor
dgdTitles
dblPublisher
drpLocation
dtpPublished
dirSource
drvTarget
filSource
fsbMove
frmEntry
fraLanguage
gauStatus
graRevenue
grdPrices
flexOrders
hsbVolume
imgIcon
imgcboProduct
ilsAllIcons
lblHelpMessage
lwchkArchive
lwcboGerman
lwcmdRemove
lwfraSaveOptions

lwhsb

lwhsbVolume

lwlst
lwopt
lwtxt
lwvsb
lin
lst
lvw
mpm
mps
mci
mnu
mvw
ch
mfg
mst
ole
opt
pic
clp

lwlstCostCenters
lwoptIncomeLevel
lwoptStreet
lwvsbYear
linVertical
lstPolicyCodes
lvwHeadings
mpmSentMessage
mpsSession
mciVideo
mnuFileOpen
mvwPeriod
chSalesbyRegion
mfgClients
mstFirst
oleWorksheet
optGender
picVGA
clpToolbar

Trang:44/265

Gio trnh o to Visual Basic 6.0


ProgressBar
Remote Data
RichTextBox
Shape
Slider
Spin
StatusBar
SysInfo
TabStrip
Text box
Timer
Toolbar
TreeView
UpDown
Vertical scroll bar

prg
rd
rtf
shp
sld
spn
sta
sys
tab
txt
tmr
tlb
tre
upd
vsb

prgLoadFile
rdTitles
rtfReport
shpCircle
sldScale
spnPages
staDateTime
sysMonitor
tabOptions
txtLastName
tmrAlarm
tlbActions
treOrganization
updDirection
vsbRate

Prefix conventions for menus


Menu control prefixes will be extended beyond the initial "mnu" label by adding an
additional prefix for each level of nesting, with the final menu caption at the end of
the name string. The following table lists some examples.
Menu caption sequence

Menu handler name

File Open
mnuFileOpen
File Send Email
mnuFileSendEmail
File Send Fax
mnuFileSendFax
Format Character
mnuFormatCharacter
Help Contents
mnuHelpContents
Variable naming conventions
Variable name must describe data type, scope and identifier of a variable.
Variable data types
Data type

Prefix

Boolean
Byte
Currency
Date (Time)
Double
Error
Integer
Long
Object
Single
String
User-defined type
Variant

bln
byt
cur
dtm
dbl
err
int
lng
obj
sng
str
udt
vnt

Example

Variable scope prefixes

FPT Software Solution

Trang:45/265

Gio trnh o to Visual Basic 6.0


Scope

Prefix Example

Note

Global

This variable is global and string type


This variable is module and boolean
type
This variable is local and double type

Module-level M
Local
to
None
procedure

gstrUserName
mblnCalcInProgre
ss
dblVelocity

Constants
The constant names will be UPPER_CASE with underscores (_) between words. For
example:

Example

Note

USER_LIST_MAX
NEW_LINE
Prefixes for ActiveX Data Objects (ADO)
Use the following prefixes to indicate ActiveX Data Objects.
ADO object

Prefix

Example

Command
Connection
Field
Field Collection
Parameter
Parameter Collection
Recordset

Cm
Cn
Fld
flds
prm
prms
Rs

cmTitles
cnTitles
fldName
fldsTitles
prmTitleName
prmsNames
rsTitles

Structured Coding Conventions


In addition to naming conventions, structured coding conventions, such as code
commenting and consistent indenting, can greatly improve code readability.
Code Commenting Conventions
All procedures and functions should begin with a brief comment describing the
functional characteristics of the procedure (what it does). Input, output patameters
passed to a procedure should be described. Function return values and global
variables that are changed by the procedure must also be described at the beginning of
each procedure.

FPT Software Solution

Trang:46/265

Gio trnh o to Visual Basic 6.0

Section heading Comment description


Purpose
Inputs
Outputs
Returns
Author

What the procedure does (not how).

Describe roles of input parameters


Describe roles of output parameters
Explanation of the values returned by functions.
Author of module

Remember the following points:


Every important variable declaration should include an inline comment
describing the use of the variable being declared.
Variables, controls, and procedures should be named clearly enough that inline
commenting is only needed for complex implementation details.
At the start of the.bas module that contains the project's Visual Basic generic
constant declarations, we should include an overview that describes the
application, enumerating primary data objects, procedures, algorithms,
dialogs, databases, and system dependencies. Sometimes a piece of
pseudocode describing the algorithm can be helpful.
Formatting Your Code
Here are a few pointers:
Standard, tab-based, nested blocks should be indented four spaces (as the
Visual
Basic
default).

The functional overview comment of a procedure should be indented one


space. The highest level statements that follow the overview comment should
be indented one tab, with each nested block indented an additional tab. For
example:

'*****************************************************
' Purpose:
Locates the first occurrence of a
'
specified user in the UserList array.
' Inputs:
'
strUserList():
the list of users to be searched.
'
strTargetUser:
the name of the user to search for.
' Returns:
The index of the first occurrence of the
'
rsTargetUser in the rasUserList array.
'
If target user is not found, return -1.
'*****************************************************
Function FindUser (strUserList() As String, strTargetUser As _
String)As Integer
Dim inti As Integer
' Loop counter.
Dim blnFound As Integer
' Target found flag.
intFindUser = -1
inti = 0
While inti <= Ubound(strUserList) and Not blnFound
If strUserList(inti) = strTargetUser Then
blnFound = True
intFindUser = inti
End If
Wend
End Function

Grouping Constants

FPT Software Solution

Trang:47/265

Gio trnh o to Visual Basic 6.0


Visual Basic generic constants will be grouped in a single module to separate them
from application-specific declarations.
& and + Operators
Always use the & operator when linking strings and the + operator when working
with numerical values. Using the + operator to concatenate may cause problems when
operating on two variants. For example:
vntVar1 =
vntVar2 =
vntResult
vntResult

"10.01"
11
= vntVar1 + vntVar2
= vntVar1 & vntVar2

'vntResult = 21.01
'vntResult = 10.0111

Creating Strings for MsgBox, InputBox, and SQL Queries


When creating a long string, use the underscore line-continuation character to create
multiple lines of code so that you can read or debug the string easily. This technique
is particularly useful when displaying a message box (MsgBox) or input box
(InputBox) or when creating an SQL string. For example:
Dim Msg As String
Msg = "This is a paragraph that will be " _
& "in a message box. The text is" _
& " broken into several lines of code" _
& " in the source code, making it easier" _
& " for the programmer to read and debug."
MsgBox Msg
Dim QRY As String
QRY = "SELECT *" _
& " FROM Titles" _
& " WHERE [Year Published] > 1988"
TitlesQry.SQL = QRY

Other conventions
Error trapping in development progress must follow these rules:
- Cascading error trapping. That mean all called functions will return system error
codes, and showing message box will be implemented at the most exterior
function/procedure.
- All system message will be located in resource file.
- Showing message boxes are implemented by pass parameters to a showing message
global function.
- Error code contains 3 number.
- Versioning all modules: form module, code module...
- Display solution: 800x600 pixels
- Font size setting: Large font
- All of file name (*.vbp, *.frm, *.bas...) must less than 3 characters.
- Error code = 0 is OK.
- Error code < 0 is error.
- Error code >0 is warning.
- Function names should begin with a verb, such as InitNameArray or CloseDialog.

5.1.2 Form design standard


Common conventions in form design
Items

FPT Software Solution

Conventions

Note

Trang:48/265

Gio trnh o to Visual Basic 6.0


Interface
Font name
Font size
Font color
Font style
Distance between command buttons
Command buttons alignment
Label alignment
All labels in a form must be collected in an
array
All command buttons in a form must have
same width
Caption of OK button
Caption of Cancel button
Caption of Help button
Caption of Add button
Caption of Delete button
Caption of Edit button
Caption of Close button
Caption of Save button
Order of buttons in from (Left to right):
Thm mi-Ghi-Sa-Xo-Chp nhn-Thot-Hng dn
Default button
Cancel button

In Vietnamese
MS Sans serif Default
Default
Black
Default
Normal
Default
100 Points
Right
Left

Chp nhn
Thot
Hng dn
Thm mi
Xo
S a
ng
Ghi

Chp nhn
ng

Sample:

Form controls appearance conventions


Control

Property

Value

All colors

Default

Height
All colors

315
Default

Height

375 Points

Note

Check box
Combo box,
down list box

drop-

Command button

FPT Software Solution

Trang:49/265

Gio trnh o to Visual Basic 6.0


Back color

Button face

VB Default

Border style
Back color
Startup position

Fixed length
Button face
CenterScreen

VB Default

Back color

Button face

VB Default

Width

260 Points

Height

260 Points

Height

255 Points

Height
All color

285 Points
Default

Form

Label
Vervical scroll bar
Horizontal scroll bar
Option button
Text box

FPT Software Solution

Trang:50/265

Gio trnh o to Visual Basic 6.0

5.1.3 Report design standard (for Crystal Report)


Common conventions in report design
Items

Conventions

Note

Above of each total row must be a line, called


Grouping line
Report boder
Only title row is
bordered
Colour of all objects in report (line, Black
character...)
Report objects appearance conventions
Object

Property

Setting

Note

Font name
Font style
Justify
Space
between
report title and
collumn heading

.VnArialH
Bold
Paper center
50 Points

Font name
Font style
Font size
Justify
Before
row
spacing
After row spacing

.VnArialNarrow
Bold
10
Column left
6 Points

Font name
Font style
Font size
Justify

.VnArialNarrow
Bold
9
Depend on column data type
(Number: right, string: right,
date: center)
0

Report title

Should be
reviewed

Colunm
heading

Report
(data)

6 Points

body

Row spacing
Total row
Font name
Font style
Font size
Justify
Position

FPT Software Solution

.VnArialNarrow
Bold
9
Right
Under
data
block
summarized

that

Trang:51/265

Gio trnh o to Visual Basic 6.0


Grouping line
Width

1 Point

Report boder
Width
1 Point
Boder
column
title only
Page number
Font name
Font size
Font style
Position

.VnArial

Style

9
Normal
Right, bottom of page (Report
footer)
Page/Total page

Font name
Font size
Font style
Justify

.VnArial
10
Normal
Margin left

Font name
Font size
Font style

.VnArial
10
Normal

Left sub title

Right sub title

Sample:
Left subtitle
Column heading 1

Report title
Column heading 2

Right subtitle

Column heading 3

Column heading 4
Report body 4
Report body 4

Report body 1
Report body 1

Report body 2
Report body 2

Report body 3
Report body 3

Reportbody1
Reportbody1

Reportbody2
Reportbody2

Reportbody3
Reportbody3

Total row 4

Reportbody4
Reportbody4

Total row 4
(Pagenumber)1/5

5.1.4 Database design standards


All of object names (include: table names, view names, field names...) in database
must follow these conventions:
- In English.
- Can containts one or more words and no underscore between these words.
- No acronym except listed in table Acronyms bellow.
- The first letter of each word must be capitalized.

FPT Software Solution

Trang:52/265

Gio trnh o to Visual Basic 6.0

5.2 Thit k trc khi vit chng trnh


C l khu quan trng nht trong lp trnh l thit k. Sau khi thit k giao
din, bn cn thit k cu trc chng trnh. Cch thit k khc nhau s dn n
cch hot ng khc nhau v bo tr, theo cng khc nhau.
Code trong VB c t chc theo dng cy phn nhnh. Mt ng dng thng
thng cha mt hoc nhiu m-un. Mi biu mu c mt m-un, c th thm
nhng m-un chun cha nhng on chng trnh dng chung, v cng c th c
thm m-un lp.

5.3 Cc thao tc thng dng trong ca s Code


5.3.1 Son tho Code
Ngoi kh nng son tho vn bn vit chng trnh, ca s Code cn h
tr mt s chc nng khc nh:
nh du (bookmarks)
Dng nh du cc dng chng trnh trong ca s Code d dng xem li
v sau. bt tt kh nng ny, cng nh tm kim du hin hnh, chn
Bookmarks t menu Edit, hoc chn t thanh cng c Edit.
Dng phm trong ca s Code
Chc nng
Phm tt
Xem ca s Code
F7
Xem ca s Object Browser
F2
Tm kim
CTRL + F
Thay th
CTRL + H
Tm tip
SHIFT + F4
Tm ngc
SHIFT + F3
Chuyn n th tc k tip
CTRL + DOWN ARROW
Chuyn n th tc trc
CTRL + UP ARROW
Xem nh ngha
SHIFT + F2
Cun xung 1 mn hnh
CTRL + PAGE DOWN
Cun ln mt mn hnh
CTRL + PAGE UP
Nhy v v tr trc
CTRL + SHIFT + F2
Tr v u ca m-un
CTRL + HOME
n cui m-un
CTRL + END
Chc nng
Phm tt
Di con tr sang phi 1 t
CTRL + RIGHT ARROW
Di con tr sang tri 1 t
CTRL + LEFT ARROW
Di con tr v cui dng
END
Di con tr v u dng
HOME
Ly li hnh ng trc
CTRL + Z
Xo dng hin hnh
CTRL + Y
Xo 1 t
CTRL + DELETE
Canh tri
TAB
B hnh ng canh tri trc
SHIFT + TAB
Xo tt c cc im dng (break- SHIFT + SHIFT + F9
points)
Xem menu cm ng cnh
SHIFT + F10
FPT Software Solution

Trang:53/265

Gio trnh o to Visual Basic 6.0

5.3.2 Mt s chc nng t ng


5.3.2.1 Auto Syntax Check
T menu Tools, chn Option Hp thoi xut hin
Khi Auto Syntax Check khng bt ln, nu ta vit 1 dng chng trnh nh
sau:
Form1.left =
ri nhn phm Enter. VB s hin th dng chng trnh sai vi mu . Tuy
nhin, n khng gii thch thm v ta c th tip tc g ch ng trnh. Nu Auto
Syntax Check c bt ln, khi ta va nhn phm Enter, VB lp tc cho ta bit mt
s thng tin v li v hin th con tr ngay dng chng trnh sai ch ta sa.
Trong trng hp ny, VB cn mt gi tr bn phi du bng.

5.4 Bin hng v cc kiu d liu


Dng cha d liu tm thi cho tnh ton, so snh cc hot ng khc
Ta dng ton t (=) tnh ton v cha gi tr vo bin

5.4.1 Khai bo bin


khai bo bin ta dng lnh Dim:
Dim <Tn bin > [As<kiu d liu>]
Bin khai bo trong th tc ch tn ti khi th tc thi hnh. N s bin mt khi
th tc chm dt. Gi tr ca bin trong th tc l cc b i vi th tc , ngha
l ta khng th truy nhp bin t bn ngoi th tc. Nh , ta c th dng trng
tn bin cc b trong nhng th tc khc nha.
Kiu d liu trong khai bo Dim c th l nhng kiu c bn nh Integer,
String hoc Currency. Ta cng c th dng i tng ca VB (nh Object, Form1,
TextBox) hoc ca cc ng dng khc.
Khai bo bin trong phn Declarations ca mt m-un ngha l bin tng
ti v c tm hot ng trong m-un .
Khai bo bin vi t kho Public ngha l bin tn ti v c tm hot ng
ca ton ng dng .
Khai bo bin cc b vi t kho Static ngha l mc du bin bin mt khi
th tc chm dt, nhng gi tr ca n vn c gi li tip tc hot ng khi
th tc c gi trong ln sau.

5.4.2 Khai bo ngm


Ngha l ta khng cn khai bo tng minh trc khi s dng bin.
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TempVal)
End Function
Mc d cch ny c v thun tin nhng c th gy li nu ta g nhm tn
bin.
Function SafeSqr(num)
TempVal = Abs(num)
SafeSqr = Sqr(TemVal)
End Function
FPT Software Solution

Trang:54/265

Gio trnh o to Visual Basic 6.0


Hm ny tr v zero. Khi VB gp tn mi, n to ra mt bin khc vi tn .

5.4.3 Khai bo tng minh


trnh nhng rc ri trn, ta nn quy nh VB phi bo li khi gp mt tn
bin khng khai bo. Ta t dng lnh :
Option Explicit
Trong phn Declarations ca m-un. Mt cch khc, t menu Tools, chn
Options, chn tab Editor v nh du vo tu chn Require Variable Declaration.
VB t ng chn dng lnh Option Explicit vo mt m-un mi, nhng khng
phi l nhng m-un c to. Do , i vi cc m-un ny, ta phi thm
dng lnh bng tay.
Option Explicit ch hot ng trn tng m-un. V vy, ta phi thm dng ny
vo mi m-un ca biu mu, m-un chun, hay m-un lp.
5.4.3.1 Tm hot ng ca bin
Tm hot
ng
Th tc
M-un

Private

Public

Bin ch tn ti v hot ng trong


th tc
Bin ch tn ti v hot ng trong
m-un

Khng c
Bin tn ti v hot
ng trn mi m-un

5.4.4 Khai bo bin Static


khai bo tt c cc bin cc b trong mt th tc l Static, ta t t kho
Static vo tn th tc:
Static Function RunningTotal(num)
VB s hiu rng tt c cc bin khai bo trong th tc ny u l Static, d cho
chng c khai bo l Private, l Dim hoc thm ch khai bo ngm.
T kho Static c th t u th tc Sub hoc Function, k c th tc x l
s kin hoc nhng hm Private.

5.4.5 Hng
Dng cha nhng d liu tm thi nhng khng thay i trong sut thi gian
chng trnh hot ng. S dng hng s lm chng trnh sng sa v d c
nh nhng tn gi nh thay v cc con s. VB cung cp mt s hng nh ngha
sn, nhng ta c th t to hng.
Ta c th dng ca s Object Browser xem danh sch cc ng dng hng c
sn ca VB v VBA( Visual basic for Application). Cc ng dng khc cung cp
nhng th vin i tng, nh Microsoft Exel, Microsoft Project, hoc cc th
vin ca iu khin ActiveX cng c hng nh ngha sn.
Trong trng hp trng tn hng trong nhng th vin khc nhau, ta c th dung
cch ch r tham chiu hng:
[<Libname>][<tn m-un>]<tn hng>
Libname l tn lp, tn iu khin hoc tn th vin.

FPT Software Solution

Trang:55/265

Gio trnh o to Visual Basic 6.0


5.4.5.1 Khai bo hng
|Public|private|Const<tn hng>[As<kiu d liu>]= <biu thc>
Tm hot ng
Hng cng c tm hot ng tng t bin:
Hng khai bo trong th tc ch hot ng trong th tc
Hng khai bo trong m-un ch hot ng trong m-un
Hng khai bo Public trong phn Declarations ca m-un chun c tm
hot ng trn ton ng dng.Khai bo Public khng th dng trong mun ca biu mu hoc m-un lp.
5.4.5.2 Kiu d liu
Kim sot ni dung ca d liu. VB dng kiu Variant nh l kiu mc nh.
Ngoi ra, mt s kiu d liu khc cho php ti u ho v tc v kch c
chng trnh. Khi dng Variant, ta khng phi chuyn i gia cc kiu d
liu. VB t ng lm vic .
Mt dng lnh c th kt hp nhiu kiu khai bo :
Private I as Interger, Amt as double
Private YourName as String, BillsPaid as Currency
Private Test,Amount, J as integer
5.4.5.3 Kiu s
Integer, Long, Double v Currency. Kiu s tn t vng cha hn kiu Variant.
Tt c bin kiu s c th c gn cho nhau v cho bin Variant. VB lm trn
thay v cht b phn thp phn trc khi gn n cho s Integer.
Kiu Integer tn t vng nh hn cc kiu khc, n thng dng lm bin m
trong cc vng lp For....Next.
Kiu Single, Double, Currency dng cho cc s c phn thp phn. Currency h
tr n 4 ch s phn thp phn v 15 ch s cho phn nguyn, n cho cc tnh
ton tin t.
Cc gi tr du chm ng c th hin l :A*10B.V d:
1.2341E12=1.2341 *1012
3.402823E+38 cho s Single hoc 1.7976931486232D+308 cho s Double
Ta dng cc php cng (+), tr(-) nhn(*), chia(/ hoc\). Du / l s chia thp
phn. V d: 5/3 cho kt qu l 1.66666666667. Trong khi 5/3 cho kt qu l 1,
phn thp phn b cht b. Php tnh ny c bit nhanh khi s dng trong vng
lp.
5.4.5.4 Kiu Byte
Thng dng cha d liu nh phn. Tt c cc thao tc trn kiu Integer c
th thc hin trn kiu Byte, ngoi tr du. V Byte l kiu khng du (trong
khon t 0-255), n khng th nhn ra s m.
5.4.5.5 Kiu String
Mc nh, bin hay tham s kiu chui c chiu di thay i, n c th tng hoc
gim tu theo ta gn d liu. Ta c th khai bo chui c chiu di c nh:
Dim EmpName As String *50

FPT Software Solution

Trang:56/265

Gio trnh o to Visual Basic 6.0


Nu ta gn mt chui ngn hn 50 k t, EmpName s c thm vo phn ui
cc k t khong trng cho y 50 k t, nu chui gn vo di hn 50 k t, VB
t ng cht b.
Khi lm vic vi chui, ta cn dng cc ham Trim v RTrim ct b cc k t
trng khng cn thit. Ngoi ra mt s hm thng dng thao tc trn chui nh:
a. Len: Ly chiu di chui
b. Mid$: Trch chui con t chui gc
c. Left$: Trch chui con t phn u chui gc.
d. Right$:Trch chui con t phn ui ca chui gc.
e. InStr: Tm chui con trong chui gc. Nu hm InStr tr v 0, ngha l khng
tm thy.
Tm kim khng phn bit c ch. Nhng nu tham s th 3 l vbBinaryCompare
th y l tm kim chui c phn bit ch in hoa v ch in thng.
f. Replace: Tm v thay th chui. Replace(Peter PeterWright, Peter ,John,6)
Chui kt qu l John Wright, bt u t v tr th 6. Nu mun gi li phn
u ta lm nh sau:
Left$(Peter Peter Wright,5)&Replace (Peter Peter Wright,Peter,John,6)
Mt tham s khc l s ln thay th:
Replace(Peter Peter Peter Wright,Peter,Hooray,1,2)
Kt qu l Hooray Hooray Peter Wright, ngha l hai ln thay th. THam s ny
mang gi tr mc nh l -1, ngha l thay th ton b.
Tham s cui cng tng t hm Instr(), cho bit n c phn bit ch in hoa v
ch
thng hay khng
Replace(Peter Wright, Peter, P.,1,-1,vbTextCompare)
Kt qu l P.Wright.
Chui c chiu di c nh c khai bo Public hay Private trong m-un chun.
Trong m-un ca biu mu hoc m-un lp, n phi c khai bo Private.
VB cho php chuyn i mt chui thnh thnh mt s nu chui ang th hin
mt con s. Ngc li, ta cng c th chuyn mt s thnh chui. Tuy nhin nn
cn thn, v chuyn i mt chui c gi tr khng phi s s gy li chng trnh
thi hnh.
Mt s lp trnh vin Visual Basic thch dng du + ni chui thay v
dng du &. Mc d khng khc nhau lm, nhng thc ra dng du + c im bt
tin. V l php ton, n c kim tra kiu. Nu ta c mt s v mt chui ni vi
nhau, n s chuyn i t s sang chui trc khi thc s kt ni. Hn na, vic
chuyn i ny c lm t ng, khng h bo li khi bin dch.
5.4.5.6 Kiu Boolean
Nu ta c mt bin c hai gi tr True/False, Yes/No,On/Off, ta nn dng kiu
Boolean. Gi tr mc nh ca Boolean l False.
Dim blnRunning as Boolean
Check to see the tape is running.
If recorder.Direction = 1 Then
blnRunning = True
End if

FPT Software Solution

Trang:57/265

Gio trnh o to Visual Basic 6.0


5.4.5.7 Kiu Date
Khi cc kiu d liu khc c chuyn sang Date, gi tr ng trc du chm l
ngy, gi tr ng sau du chm l gi. Na m l 0, gia ngy l 0,5. Du m th
hin ngy trc 30/12/1999. Kiu Date gii quyt vn Y2K
Nhn Ctrl-G hin th ca s Immediate.
G vo:
01/02/98 v nhn Enter.
Nu hiu theo ngi M, 01/02/98 c ngha l ngy 2 thng Ging nm 1998, nu
hiu theo ngi Anh th y l ngy 1 thng 2 nm 1998. Nu dng ngy nh trong
hnh trn th VB hiu rng ly 1 chia cho 2 ri ly kt qu chia cho 98!
Tr li ca s Immediate g vo: ?#01/02/98#
Du # cho bit l d liu kiu Date, khng phi mt biu thc ton hc. Tuy
nhin, nh dng ngy thng hin th ph thuc vo quy nh ca Windows.
Hp thoi ny hin th khi ngi s dng nhp p chut vo biu tng Regional
Setting trong ca s Control Panel ca Windows. N cho php quy nh kiu ngy
thng tu thuc quc gia. Bn trong chng trnh VB x l ngy thng theo kiu
M #01/02/98# l ngy 2 thng Ging nm 1998, nhng nu my ang dng theo h
Anh th n s hin th trn ca s Immediate l 2/1/98
5.4.5.8 Kiu Object
Bin kiu Object cha mt a ch 4 byte (32bit) tr n i tng trong ng dng
hin hnh hoc cc ng dng khc. Dng lnh Set ch ra i tng thc s:
Dim objDb As Object
Set objDb=OpenDatabase(c:\vb5\Biblio.mdb)
Khi khai bo bin i tng, nn ch ra tn lp tng minh, nh TextBox thay v
Control, Database thay v Object). ng dng s chy nhanh hn, ta c th xem danh
sch cc lp trong ca s Object Browser.
5.4.5.9 Kiu Variant
C th cha mi loi d liu, s, thm ch mng. Ta khng cn chuyn i kiu
d liu, VB lm vic mt cch t ng.
Dim Somevalue 'Variant by default
Somevalue = "17"
'SomeValue contains "17"(a two character string).
Somevalue = Somevalue 15
'somevalue now cotains the numeric value 2.
Somevalue = "U" & Somevalue 'somevalue now cotains.
Variant cng thun tin khi ta khng bit trc kiu d liu
Private Sub cmdExplore_click()
Dim VarVariant As Variant
VarVariant = 12
Form1.Print VarType(VarVariant)
VarVariant = "Peter"
Form1.Print VarType(VarVariant)
VarVariant = True
Form1.Print VarType(VarVariant)
VarVariant = #1/1/2001#
Form1.Print VarType(VarVariant)
End Sub

FPT Software Solution

Trang:58/265

Gio trnh o to Visual Basic 6.0


Hm VarType kim tra kiu d liu
Gi tr VarType
0 vbEmpty
1 vbNull
2 vbInteger
3 vbLong
4 - vbsingle
5 vbDouble
6 vbCurrency
7 vbDate
8 vbString
9 vbObject
10 vbError
11 vbBoolean
12 vbVariant
13 vbDataObject
14 vbDecimal
17 vbByte
36 UserDefinedType
8192 - vbArray

Gii thch
Khng cha g c
Khng c d liu hp l
D liu Integer dng chun
D liu kiu Long Integer
D liu kiu chm ng single
D liu kiu chm ng Double
Kiu Currency
Kiu ngy gi
Kiu chui n gin
Kiu i tng
C mt i tng Error
Kiu gi tr Boolean chun
Kiu Variant
Kiu DAO chun
Gi tr thuc h thp phn Decimal
Kiu Byte
Kiu do ngi dng nh ngha
Kiu mng

Tuy nhin cn ch khi dng bin Variant:


Nu mun thi hnh cc hm s hc, Variant phi cha gi tr s.
Nu mun ni chui, dng ton t & thay v ton t +.
Gi tr Empty
i khi ta cn kim tra mt gi tr c c gn cho bin hay cha. Bin Variant c
gi tr Empty trc khi n c gn gi tr. Gi tr Empty l mt gi tr c bit
khng phi zero, khng phi chui rng(), khng phi gi tr Null. Ta dng ham
IsEmpty kim tra gi tr Empty:
If IsEmpty(z) then z =0
Khi mt bin Variant cha gi tr Empty, ta c th dng n trong biu thc. N c
th c xem l 0 hoc chui rng tu theo biu thc.
Gi tr Empty bin mt khi c mt gi tr bt k c gn cho Variant. Mun tr
v gi tr Empty, ta gn t kho Empty cho Variant.
Gi tr Null
Bin Variant cha gi tr Null dng trong nhng ng dng c s d liu th hin
khng c d liu hoc d liu khng xc nh.
Dng hm IsNull kim tra bin Variant c cha Null hay khng. Bin khng bao
gi mang gi tr Null nu ta khng gn trc tip cho n. V vy, khng cn phi
dng hm IsNull.
Nu gn Null cho mt bin khc kiu Variant, VB s bo li.
Gi tr Error
Trong mt bin Variant, Error l mt gi tr c bit th hin mt iu kin li
va xy ra trong th tc. Tuy nhin, khng nh cc li khc, cc x l li thng
thng ca ng dng khng xy ra. Do , ta c th x l da trn cc gi tr li.
Gi tr Error c sinh ra bng cch chuyn i gi tr li dng cho hm CVErr.

FPT Software Solution

Trang:59/265

Gio trnh o to Visual Basic 6.0


5.4.5.10

Chuyn i gia cc kiu d liu

Hm chuyn i
Cbool
Cbyte
Ccur
CDate
CDbl
Cint
CLng
CSng
Cstr
Cvar
CVErr

i sang kiu
Boolean
Byte
Currency
Date
Double
Integer
Long
Single
String
Variant
Error

Lu rng gi tr truyn cho hm phi hp l, ngha l phi thuc khong ca


kiu kt qu. Nu khng VB s bo li.
5.4.5.11

Kiu mng(Array)

Mng l mt xu cc bin c cng tn v cng kiu d liu. Dung Array lm


chng trnh n gin v rt gn, v ta c th dng vng lp. Mng c bin trn v
bin di, v cc thnh phn trong mng l lin tc gia 2 bin.
Khi nim mng y khc vi mng cc iu khin (Control Array). Control
Array khng cho php np hay thot khi mt thnh phn gia Array.
C 2 loi bin mng mng c chiu di c nh v mng ng, c chiu di thay
i lc thi hnh. Mng c chiu di c nh c th c khai bo Public trong ng
dng. Private trong m-un hoc Private trong mt th tc.

5.4.5.11.1

Mng c chiu di c nh

Bin trn v bin di


Bin trn c xc nh ngay lc khai bo .
Dim counters(14) As Integer
Public sums(20) As Double
Mc nh, bin di l 0. Ta c th khai bo tng minh bin di:
Dim counter(1 To 15) As Integer
Dim sums(100 To 120) As String
a. Hm UBound tr v phn t cui ca mng(Upper Bound).
b. Hm LBound tr v phn t u tin ca mng (Lower Bound).
Mng trong mng
Private Sub command1_click()
Dim intX As Integer
'Declare and populate an integer array
Dim countersA(5) As Integer
For intX = 0 To 4
countersA(intX) = 5
Next intX
'Declare and populate a string array
FPT Software Solution

Trang:60/265

Gio trnh o to Visual Basic 6.0


Dim countersB(5) As String
For intX = 0 To 4
countersB(intX) = "Hello"
Next intX
Dim arrX(2) As Variant 'Declare a new two-member
arrX(1) = countersA()
arrX(2) = countersB()
MsgBox arrX(1)(2) ' display a member of each array
MsgBox arrX(2)(3)
End Sub
Mng nhiu chiu
Ta khai bo mt mng 2 chiu c 10 phn t
Static MatrixA(9, 9) As Double
Static MatrixA(1 To 10, 1 To 10) As Double
Dim MultiD(3, 1 To 10, 1 To 15)
Khai bo ny to ra mt mng 3 chiu c kch c 41015, l s phn t ca ma
trn,600
Nn thn trng trong khi s dung cc mng nhiu chiu, nht l cc mng cc
Variant v n ln hn cc kiu d liu khc.

5.4.5.11.2

Mng ng(dynamic Array)

Mng ny c th thay i kch c. l mt trong nhng u im ca Visual Basic,


mng ng gip qun l b nh mt cch hiu qu. Ta c th dng mt mng ln
trong thi gian ngn, sau xo b tr vng nh cho h thng
Khai bo
Khai bo Public hoc Dim trong m-un, hoc khai bo Static hay Dim trong
th tc. Khai bo mt mng ng bng cch cho n mt danh sch khng
theo chiu no c.
Dim DynArray(0
Cp pht s phn t thc s bng dng lnh ReDim.
ReDim DynArray(x+1)
S dng ReDim
Dng lnh ReDim ch c th xut hin trong th tc. Khc vi Dim hay Static,
ReDim l mt dng lnh thi hnh, n lm ng dng phi thc hin mt hnh ng
lc chy chng trnh. S dng ReDim tng t trong mng c chiu di c nh,
dng thay i s phn t cng nh bin trn hoc bin di. tuy nhin, s chiu
khng thay i.
ReDim DynArray(4 to 12)
Dim Matrix1() as integer
Sub CalcValuesNow()
ReDim Matrix1(19,29)
End sub
Mi ln gi ReDim, tt c cc gi tr cha trong mng hin hnh b mt. Vb khi
to li gi tr cho chng (Empty i vi mng Variant, 0 cho mng s, chui rng
cho mng chui, hoc nothing cho mng cc i tng). Cch ny tin li khi ta
mun thm d liu mi hoc mun xo bt vng nh. i khi, ta mun thay i

FPT Software Solution

Trang:61/265

Gio trnh o to Visual Basic 6.0


kch c ca mng m khng mt d liu. Ta dng ReDim vi t kho Preserve. V
d, m rng mng thm mt phn t v khng mt d liu:
ReDim Preserve DynArray(UBound(DynArray)+1)
Tuy nhin ch c bin trn ca chiu cui cng trong mng c thay i khi ta
dng Preserve. Nu thay i chiu khc, hoc bin di ca chiu cui cng VB
s bo li.

5.4.5.11.3

Mt s tnh nng m rng ca mng

Khng nhng gn mng cho mt mng, ta cn to cc hm tr v mng v cc


thuc tnh tr v mn. Trong nhiu trng hp, nhng k thut ny s ci tin
ng k tc x l chng trnh
Sao chp mng
Trong Visual Basic 5, sao chp t mt mng sang mt mng khc, ta phi dung
vng lp For Each qut qua mng ngun, ri tun t ReDim li mng ch copy
tng phn t.
Tuy nhin cch ny ch p ng cho mng Dynamic m thi. Khi gn bin, c mt s
quy lut m ta cn nh. V d: Ta c th gn mt gi tr kiu Integer vo bin long,
khng vn nhng gn Long cho Integer s gy li trn. Ngoi quy lut v kiu
d liu, vic gn mng cng c nhng quy lut lin quan n s chiu, kch thc
ca chiu v lai mng g (mng c chiu di c nh hay mng ng)
Gn mng vi chiu v kiu d liu khc nhau c th khng thnh cng, do nhng
nguyn nhn sau:
Mng bn tri du gn(=) l mng chiu di c nh hay mng ng
S chiu ca mng bn tri c ng nht vi s chiu ca mng bn phi
khng
S phn t trn mi chiu ca mi bn c tng thch khng. Chiu c th
tng thch thm ch khi khai bo khc nhau, v d nh mt mng bt u
t s 0 trong khi mng kia bt u t s 1 min l chng c cng s phn
t
Kiu d liu cu cc phn t mi bn phi tng thch.

5.5 Hm v th tc
Chia nh chng trnh thnh nhiu phn logic, gip g ri d dng.
Th tc c th c s dng li trong mt ng dng khc.
Cc loi th tc
a.
Th tc khng tr v gi tr
[Private | Public | Static] Sub <Tn th tc> (Tham s)
Cc dng lnh
End sub
b.
Hm lun tr v gi tr:
[Private | Public | Static] Function <Tn hm> (Tham s) [As <Kiu d liu>]
Cc dng lnh
End Function
Trong trng hp khng khai bo As <type>, mc nh, VB hiu l kiu variant
c.
Th tc thuc tnh
C th tr v v gn gi tr, hay t tham chiu n i tng.
Xem th tc trong modul hin hnh

FPT Software Solution

Trang:62/265

Gio trnh o to Visual Basic 6.0


Trong ca s code, chn Genaral trong hp Object, v chn tn th tc trong
hp Procedure.
xem th tc x l s kin chn tn i tng t hp Object trong ca s
code, sau chn tn s kin trong hp procedure
Thot khi th tc / hm
Exit sub dng thot khi th tc, Exit Function dng thot khi hm.

5.6 Cu trc iu khin


5.6.1 Cu trc chn
So snh mc nh trong Visual basic mc nh l so snh c phn bit c ch.
Nu mun tt ch ny, ta thm dng khai bo sau vo chng tnh
Option Copare Text
Nu mun tr v trng thi ban u, c 2 cch:
a dng khai bo:
Option Compare Binary
Ch cn xo dng khai bo Option Compare Text
Cc biu thc so snh
K hiu ngha
=
Bng
<>
Khc
>
Ln hn
<
Nh hn
>=
Ln hn hoc
bng
<=
Nh hn hoc
bng
5.6.1.1 If.. Then
Mt dng lnh
If <iu kin> Then <dng lnh>
Nhiu dng lnh
If <iu kin> Then
<dng lnh>
End if
iu kin l mt so snh hay mt biu thc mang gi tr s. Visual basic thng
dch gi tr ny thnh True / False. Nu True th Visual basic thi hnh dng lnh sau
t kho Then.
5.6.1.2 If.. Then...Else
If <iu kin 1> Then
[Khi lnh - 1]
ElseIf <iu kin 2> Then
[Khi lnh - 2]
......
Else
[Khi lnh - n]

FPT Software Solution

Trang:63/265

Gio trnh o to Visual Basic 6.0


End if
5.6.1.3 Select Case
Gii quyt trng hp c qu nhiu ElseIf c dng, gip chng trnh sng
sa d c. Biu thc so snh c tnh ton mt ln vo u cu trc. Sau
Visual basic so snh kt qu biu thc vi tng Case. Nu bng n thi hnh khi
lnh trong Case .
Select Case <biu thc kim tra>
Case <danh sch biu thc 1>
Khi lnh 1
Case <danh sch biu thc 2>
Khi lnh 2
....................
Case else
Khi lnh n
End Select
Mi danh sch biu thc cha mt hoc nhiu gi tr, cc gi tr cch nhau bng
du phy. Mi khi lnh c th cha t 0 n nhiu dng lnh. Nu c hn mt
Case tho mn iu kin th Case u tin c thc hin. Case else khng nht
thit phi c, dng trong trng hp cn li ca cc Case trc.

5.6.2 Cu trc lp
5.6.2.1 Do..loop
Thi hnh mt khi lnh vi s ln lp khng nh trc, tng , mt biu
thc iu kin dng so snh quyt nh vng lp c tip tc hay khng. iu
kin phi quy v False hoc True.
Kiu 1:
Do While <iu kin>
<khi lnh>
Loop
Kiu 2:Vng lp lun c t nht mt ln thi hnh khi lnh
Do
<Khi lnh>
Loop While <iu kin>
Kiu 3: Lp trong khi iu kin l False
Do until <iu kin>
<khi lnh>
Loop
Kiu 4: Lp trong khi iu kin l False v c t nht mt ln thi hnh khi
lnh
Do
<khi lnh>
Loop Until

FPT Software Solution

Trang:64/265

Gio trnh o to Visual Basic 6.0


5.6.2.2 For...Next
Bit trc s ln lp. Ta dng bin m tng dn hoc gim dn trong vng
lp.
For <bin m> = <im u> To <im cui> [Step <bc nhy>]
<Khi lnh>
Next [<Bin m>]
Bin m, im u, im cui v bc nhy l nhng gi tr s.
Bc nhy c th l m hoc dng. Nu bc nhy l dng, im u phi
nh hn hoc bng im cui, nu bc nhy l m th ngc li.
5.6.2.3 For Each...Next
Tng t vng lp For... Next, nhng n lp khi lnh theo s phn t ca
mt tp cc i tng hay mt mng thay v theo s ln lp xc nh. Vng lp
ny tin li khi ta khng bit chnh xc bao nhiu phn t trong tp hp.
For Each <phn t> In <Nhm>
<khi lnh>
Next <phn t>
5.6.2.4 Vng lp While...Wend
Tng t vng lp Do...While, nhng ta khing th thot vng lp bng lnh
Exit. V vy, vng lp kiu ny ch thot khi biu thc iu kin sai.
While <iu kin>
<khi lnh>
Wend
5.6.2.5 Cu lnh GoTo
c dng cho by li.
On Error Goto ErrorHandler
Khi c li, chng trnh s nhy n nhn ErrorHandler v thi hnh lnh

5.6.3 Lm vic vi cu trc


Ta c th lng cc cu trc vi nhau v d c th lng nhiu vng For Nex
vi nhau. thot khi cu trc ta dng lnh Exit, Exit for cho php thot khi
vng For, Exit do cho php thot khi Do loop.

5.7 G ri chng trnh


Khng mt chng tnh no l khng c li. Tuy nhin, gim kh nng li n
mc ti thiu l c th lm c. c chng trnh tt, ta cn c thit k cht
ch. Sau , chng trnh phi c vit sao cho c t sinh li v nu c th d tm.

5.7.1 Mt s gii php gim li

Thit k cn thn, ghi ra cc vn quan trng v cch gii quyt


cho tng phn. Ghi ra tng th tc v mc ch ca n.
Ch thch r rng trong chng trnh

FPT Software Solution

Trang:65/265

Gio trnh o to Visual Basic 6.0

i tng c tham chiu tng minh thay v kiu chung chung nh


Object, Control

Tun th Coding convention

Mt tng nhng nguyn nhn gy li l g sai tn bin hoc nhm ln


iu khin. Dng Option Explicit trnh trng hp ny.
Truyn gi tr khi gi th tc
L mt trong nhng cch gim thiu kh nng li. Tuy nhin, tr ngi duy nht
ca n l tiu tn nhiuvng nh hn truyn a ch, lm chng tnh chy
chm hn.
i tng Err
L i tng do Visual basic cung cp sn. N c v s thuc tnh. Sau y l
nhng thuc tnh thng dng:
Thuc tnh Gii thch
Number
Gi tr mc nh, s hiu li
Description M t li
Source
Tn i tng gy ra li

5.7.2 G ri
C th tm dng chng trnh bng cch chn Break t menu Run hoc nhn
trn thanh cng c, hoc nhn trn t hp phm Ctrl-Break. Ta cng c th t
dng lnh Stop trong chng trnh nhng s c cch khc tt hn.
Ca s Immediate

Ca s ny cho php ta xem cc gi tr ca cc bin trong form khi ta ch g ri


Ca s Watch
Hin th cc gi tr ca mt bin, thuc tnh hay biu thc bt k. Thm ch c
th buc chng trnh tm ngng sau mt s ln lp.

FPT Software Solution

Trang:66/265

Gio trnh o to Visual Basic 6.0


i qua tng dng chng trnh
Thanh Debug

Th t nt bm t tri sang phi nh sau:


- Start: thi hnh chng trnh
- Break: tm dng chng trnh
- End: Kt thc chng trnh
- BreakPoint: im nh du dng lnh tm dng chng trnh.
Nt ny c s dng bt tt ch breakpoint. Khi c li xy
ra v ta cha khoanh c khu vc nghi ng, th Breakpoint l gii
php tt nht c lp vng chng trnh b li.
- Step Into: Nu dng lnh hin hnh ang gi mt th tc, nhn F8
s nhy vo bn trong th tc.
- Step Over: Nu dng lnh hin hnh ang gi mt th tc, nhn
Shipt-F8 s chy qua th tc.
- Step Out: Nu im dng ang trong mt th tc, nhn Ctrl-ShiftF8 s chy ht th tc v dng dng k tip sau lnh gi th tc
- ......

5.8 By li
5.8.1 Lnh On Error
Lnh On Error dng trong hm hay th tc bo cho Visual basic bit cch x k
khi li xy ra.
On Error GoTo <Nhn>
Dng On error Goto 0 tt x l li.

5.8.2 Kt thc by li

FPT Software Solution

Trang:67/265

Gio trnh o to Visual Basic 6.0

6 Lp trnh x l giao din


6.1 Menu

C 2 loi menu:
- Menu th xung(Drop-down menu): l dng menu thng dng nht.
- Menu bt ra (Popup menu): Thng hin th khi ta nhn nt phi chut
Menu cng l mt loi iu khin, nhng windows s kim sot vic v menu.
Lp trnh vin ch qun l phn x l cc s kin m thi.

6.1.1 Dng trnh son tho menu to menu


Menu khng cha trong hp cng c nh nhng iu khin khc, m c
thit k bng trnh son tho menu. T menu tools, chn Menu editor m rng
chng trnh ny hoc dng Ctrl + E hoc nhn biu tng
trong menu ca
Visual basic
Ch nu cha c biu mu th biu tng ny khng xut hin trn thanh
cng c.
6.1.1.1 Cc thuc tnh ca menu
Thuc tnh ca menu khng cha trong ca s thuc tnh nh cc iu khin
khc m t trong trnh son tho menu.
Thuc tnh caption: L chui k t hin th trn menu.
Thuc tnh name: Phi c t duy nht v d nh. C 2 cch t tn:
- Nhm cc mc c cng cha trn menu vo chung mt dy cc iu khin v
dng chung mt tn. Cch ny c Visual basic ht sc khuyn khch.
- Mi mc c mt tn ring, nhng nn bt u bng mnu. v d mnuFile
Thuc tnh index: Dng vi dy cc iu khin menu. Trong , v c nhiu
mc cng tn nn index c dng cho phn bit gia chng vi nhau.
Thuc tnh shortcut: Ngi s dng c th nhn chut chn menu theo
cch bnh thng, hoc dng phm tt. VD: nhn Ctrl+C thay v chn Copy.
Thuc tnh Windows list: dng trong cc ng dng MDI. y l nhng ng
dng c mt biu mu chnh v nhiu biu mu con. Thuc tnh windowsList
ra lnh cho Visual basic hin th tiu ca cc ca s con trn menu.
Thuc tnh Checked: Nu chn thuc tnh ny, trn menu s hin th mt du
bn cnh. Tuy nhin, thuc tnh ny khng c gn cho nhng mc menu ang
cha menu con.
Thuc tnh enable: Nu thuc tnh ny khng c chn ngi s dng khng
th chn v c.
Thuc tnh Visible: Nu thuc tnh ny khng c chn mc ny s bin
mt khi mn hnh.
Thuc tnh NegotiatePosition: Qun l v tr gn menu trong trng hp s
dng cc i tng ActivateX.

FPT Software Solution

Trang:68/265

Gio trnh o to Visual Basic 6.0


Tch nhm menu: Nu menu c kh nhiu mc, tt nht ta nn chia chng
thnh nhiu nhm nh.

6.1.2 Vit chng trnh iu khin menu


lp trnh cho menu, ta m ca s thit k biu mu v nhn chut ln mc
m ta mun x l.
6.1.2.1 Pop-up menu
V d mu - to pop-up menu
Bn to ra mt menu file c Open, Save, Save as...
M ca s code, trong s kin mouseUp ca biu mu, a vo dng lnh
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y
As Single)
If Button = vbRightButton Then
PopupMenu mnuFile, vbPopupMenuLeftAlign
End If
End Sub
Tt thuc tnh Visible ca menu file.
Chy chng trnh, khi ta nhn chut mt menu pop-up s hin th.
6.1.2.2 Menu ng
Mng iu khin
L mt mng vi cc phn t l nhng iu khin. Ln u bn gp mng
iu khin l khi bn copy iu khin trn biu mu. Visual basic s hi:
Nu ta dn mt iu khin trng tn vi mt iu khin khc, lable1 chng
hn, c sn, Visual basic cho rng ta mun to mng iu khin. Nu nhn
Yes, VB s t tn cho mng lable1, v thuc tnh index ln lt l 0 v 1. Nu
thm mt iu khin na, Visual basic t ng tng index. N khng nhc li v ta
c mng iu khin. Mc d trng tn nhng ta c th xc nh cc phn t mt
cch d dng nh thuc tnh index m Visual basic to cho n.

6.2 Hp thoi
Hp thoi( dialog) l mt trong nhng cch thc windows giao tip vi
ngi s dng, c 4 kiu hp thoi:
- Thng ip
- Hp nhp
- Cc hp thoi thng dng
- Hp thoi hiu chnh.

6.2.1 Thng ip(Message box)


L dng hp thoi n gin nht, gm hai loi:
- Ch cung cp thng tin
- Tng tc vi ngi s dng.

FPT Software Solution

Trang:69/265

Gio trnh o to Visual Basic 6.0


6.2.1.1 Chiu di thng ip
Windows t ng ct chui khi n qu di, nhng i khi vic ny khng ng
mun ca lp trnh vin. Ta c th lm bng tay:
MsgBox This is a multi-line & chr$(10) & message.
Hm chr$() tr v k t c m ASCII l tham s truyn vo chr$(10) tr v
dng k t mi.
6.2.1.2 Cc loi thng ip
Hng s
vbOKOnly
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
vbRetryCancel

Th hin
OK
OK, Cancel
Abort, Retry, Ignore
Yes, No, Cancel
Yes, No
Retry, Cancel

6.2.2 Hp nhp(Input box)


Input box t c dng. L do l:
- Khng c cch no kim nh d liu m ngi s dng a vo khi h
cha nhn Enter. Nu dng biu mu do chnh mnh thit k, ta c th a
vo hp vn bn v vit chng trnh x l s kin lin quan n vic
kim tra d liu m vi Input box khng th lm c.
- InputBox ch cho ngi s dng nhp rt t thng tin. Mun ly ra c
nhiu thng tin, nn dng biu mu t thit k.

6.2.3 Cc hp thoi thng dng(Common dialog)


Bi v cc hp thoi ny xut hin mi ni, nn thay v phi vit chng
trnh nhiu ln, Windows cha chng trong mt DLL, Comdlg32.Dll hay
Comdlg32.ocx
C 6 hp thoi:
- M tp tin
- Lu tp tin
- Chn mu
- Chn fonts
- In n
- Tr gip
Tuy nhin khi thit k mu ta ch thy duy nht mt iu khin l
CommonDialog.
Tn
Phng thc
Open file
Showopen
Save file
Showsave
Color
Showcolor
Font
ShowFont
Print
ShowPrint
Help
ShowHelp

FPT Software Solution

Trang:70/265

Gio trnh o to Visual Basic 6.0

6.2.4 Hp thoi hiu chnh


u im ca hp thoi ny l ta c th thit k theo thch. Tr ngi ca n
khi thi hnh l tng biu mu s dng ti nguyn h thng nh b nh, thi gian
CPU. Nu dng nhiu hp thoi hiu chnh trong ng dng c th mt dn ti
nguyn v kh nng chng li treo my l rt yu.

6.3 Thanh cng c(ToolBar)


6.3.1 Trong ng dng n gin
L tnh nng chun ca cc ng dng chy trn windows. N cho php truy cp
nhanh n cc chc nng ca menu. To toolbar c h tr cho phin bn
profestional v Enterprice.

6.3.2 Nhng i tng


Khi nhng mt i tng vo ni cha v i tng ang c chn, menu v
toolbar ca i tng s c hin th trong ni cha.
Ta c th cho php hin th menu hay toolbar ca i tng nhng bng thuc
tnh NegotiateMenus ca biu mu. Khi thuc tnh ny l True (mc nh), v ni
cha c dng menu hoc thuc tnh ny l False, menu ca i tng khng th
trn c.
Lu thuc tnh ny khng c trong biu mu MDI.
Thuc tnh NegotiateToolbars ca biu mu MDI quyt nh toolbar ca i
tng nhng c c t trong biu mu cha hay khng. Nhng n i hi ni
cha phi c toolbar. Nu thuc tnh ny l True toolbar ca i tng nhng c
hin th trong ni cha. Nu l False Toolbar c hin th di ng trong ni
cha.
Lu rng thuc tnh ny ch p dng cho biu mu MDI.
Nu biu mu MDI c toolbar, ngha l n c mt hp hnh. Thuc tnh
Negotiate ca hp hnh quyt nh toolbar ca ni cha vn hin th hoc s b
thay th bng toolbar ca i tng nhng khi n c chn. Nu Negotiate l
True, toolbar nhngs trn vo toolbar chnh. Ngc li toolbar nhng thay th toolbar
chnh.

6.4 Thanh trng thi


iu khin thanh trng thi (statusBar) cung cp mt ca s, thng phn
cui cng ca ca s chnh, trn , ng dng c th hin th cc trng thi d liu
khc nhau. StatusBar c th c chia ti a thnh 16 panel dng cha hnh nh
hay vn bn. Thuc tnh kim sot cch th hin ca tng panel bao gm Width,
Alignment (ca vn bn v hnh nh) v Bevel. Ngoi ra ta c th dng mt trong 7
gi tr ca Style t ng hin th d liu thng dng nh ngy, giv trng thi
bn phm.
Vo lc thit k, ta c th to cc bng bo v hiu chnh cch th hin ca
chng bng cch i cc gi tr trong tab panel ca hp thoi Property page. Hp
thoi ny c m thng qua ca s thuc tnh ca iu khin Statusbar.
Vo lc thi hnh, cc i tng Panel c th c cu hnh li phn nh cc
chc nng khc nhau, tu theo trng thi ca ng dng.

FPT Software Solution

Trang:71/265

Gio trnh o to Visual Basic 6.0


Thanh cng c v thanh trng thi cung cp nhng cng c gip to ra mt giao
din tit kim m y thng tin.

6.5 X l chut v bn phm


6.5.1 s kin chut
S kin
MouseDown
MouseUp
MouseMove

Gii thch
Xy ra khi ngi s dng nhn mt nt chut bt k.
Xy ra khi ngi s dng th mt nt chut bt k.
Xy ra khi con tr chut di chuyn n mt im mi trn m
hnh

Biu mu hoc iu khin c th bt s kin chut khi con tr chut i qua.


Tham s truyn
Tham s
Gii thch
Button
Cho bit nt chut no c nhn
Shift
Cho bit phm SHIFT, CTRL hay ALT c nhn
x.y
V tr con tr chut, vi h to ca i tng bt s kin.

6.5.2 Hiu chnh con tr chut


Ta c th dng thuc tnh MousePointer v MouseIcon hin th mt biu
tng con tr mn hnh hay con tr chut hiu chnh.
Thuc tnh MousePointer cho php chn mt trong 16 kiu con tr. Sau y l
mt vi con tr thng dng.
Con tr chut Hng
M t
vbHourglass
Th hin mt hot ng ang tin hnh v
yu cu ngi s dng ch.
vbSizePointer Thng bo chc nng thay i, v d n cho
ngi s dng bit rng c th hiu chnh
ca s.
vbNoDrop
Cnh bo vi NSD rng hnh ng ny khng
th thi hnh c.
Gi tr mc nh ca thuc tnh MousePointer l 0-Default v hin th theo kiu
Windows quy nh.

6.5.3 S kin bn phm


S kin chut v bn phm c vai tr ch yu trong hot ng tng tc gia
ngi s dng v chng trnh.
Mc d h iu hnh cung cp mt s chc nng c bn cho bn phm nhng
ta c th khai thc v pht trin cc th mnh ca chng.
Ta c th kim sot phm nhn theo 2 mc: iu khin hoc biu mu. Mc
iu khin cho php lp trnh vi iu khin, mc biu mu cho php ta lp trnh
vi ng dng.
S kin bn phm
Xy ra
KeyPress
Khi mt phm c m ASCII c nhn
FPT Software Solution

Trang:72/265

Gio trnh o to Visual Basic 6.0


KeyDown
Khi mt phm bt k c nhn
KeyUp
Khi mt phm bt k c th.
Ch c s kin ang forcus mi bt s kin bn phm. i vi biu mu, n ch
bt c khi n c kch hot v mi iu khin trn biu mu u khng c
forcus. iu ny ch xy ra vi biu mu trng hoc biu mu c iu khin b
cm. Tuy nhin nu quy nh thuc tnh KeyPreview ca biu mu thnh True,
biu mu s nhn mi s kin bn phm ca mi iu khin trn n trc khi cc
iu khin ny nhn c. Cch ny hu dng khi ta mun thi hnh cng mt hot
ng khi mt phm bt k c nhn, bt k iu khin no ang forcus.
KeyDown v KeyUp c th pht hin nhng tnh hung m KeyPress khng th
pht hin:
- T hp phm SHIFT, CTRL v ALT
- Phm nh hng ( ) lu rng mt s iu khin (nt lnh, nt
tu chn, v hp nh du) khng bt s kin phm nh hng. Thay vo
, cc phm ny gy ra s dch chuyn ca mt iu khin khc.
- PAGEUP v PAGEDOWN
- Phn bit c phm s bn phm phi vi phm s bn phm tri
- p ng khi th phm
- Phm chc nng khng trng vi menu.
S kin bn phm khng loi tr nhau. Khi ngi s dng nhn mt phm, c
KeyDown v KeyPress cng pht. Khi ngi s dng nhn mt trong nhng
phm m KeyPress khng pht hin c, ch c keydown v xy ra, l
KeyUp.
Trc khi dng KeyUp, KeyDown phi m bo rng KeyPress khng lm
c. S kin ny pht hin cc phm c m ASCII chun: Ch ci, ch s,
du ngt cu, Enter, TAB v BACKSPAGE. Ni chung, vit chng trnh cho
s kin KeyPress th d hn.

FPT Software Solution

Trang:73/265

Gio trnh o to Visual Basic 6.0

7 X l tp tin
7.1 M hnh FSO(File System Object model)
Cung cp cho ng dng kh nng to, thay i, di chuyn, xo cc th mc, d
tm xem chng c tn ti hay khng, nu c th u. N cng cho php ly cc
thng tin v th mc nh tn, ngy to, ngy sa i gn nht...
M hnh FSO cha trong th vin kch bn (Scripting type library- csrrun.dll),
h tr to v thao tc vi tp tin vn bn thng qua i tng TextStream. N cha
h tr tp tin nh phn, ta phi dng lnh Open vi c Binary.
M hnh ny cha cc i tng sau:
i tng
Gii thch
Drive
Cho php thu thp thng tin v a nh dung lng, tn
chia s... Lu rng khng nht thit l cng. N c th l
CD-ROM, l a RAM, hoc l mng.
Folder
Cho php to, xa, di chuyn th mc hay thu thp cc thng
tin h thng nh tn th mc, ng dn...
Files
Cho php to, xo, di chuyn tp tin hay thu thp cc thng
tin h thng....
FileSystemObject Cc thuc tnh v phng thc cho php to xa, thu thp
thng tin v a, th mc, tp tin.
TextStream
Cho php c v ghi vn bn
Nu cha c sn tham chiu n FSO bn c th reference n n t menu
Project\reference...

7.2 X l cc tp tin vi cc dng lnh v hm I/O c in


Mc d c FSO, cc lnh c in vn c h tr y trong Visual basic.
Nu ta thit k ng dng lm vic vi c s d liu, ta s khng cn cung cp
cc truy cp n tp tin. iu khin d liu v rng buc d liu cho php c v
ghi d liu trc tip trn c s d liu, d dng hn truy cp n tp tin.

7.2.1 Cc kiu truy cp tp tin


Tp tin l mt dy cc byte lu trn a. Khi ng dng truy cp n tp tin, n
xem cc byte nh l k t, bn ghi,s, chui...C 3 kiu truy cp tp tin:
- Tun t: c v ghi cc tp tin vn bn theo c chui lin tc.
- Ngu nhin: c v ghi tp tin vn bn hoc nh phn c cu trc theo cc
bn ghi c chiu di xc nh
- Nh phn: c v ghi cc tp tin c cu trc khng xc nh.
Hm truy cp tp tin
Hm/ dng lnh Tun t
Ngu nhin
Nh phn
Close
X
X
X
Get
X
X
Input()
X
X
Input #
X
Line Input #
X
Open
X
X
X

FPT Software Solution

Trang:74/265

Gio trnh o to Visual Basic 6.0


Print #
Put
Type.. End type
Write #

X
X
X

7.2.1.1 Tp tin tun t

7.2.1.1.1 M tp tin tun t


Open pathname For | Input | Output | Append | As filenumber | Len =
buffersize|
Khi m mt tp tin tun t vi Input, tp tin phi c sn. Nu khng Visual
basic s bo li. Khi ta m mt tp tin cha c sn vi Output hoc Append lnh
Open s to mi tp tin v m n.
Tham s tu chn Len ch ra s k t trong vng m khi sao chp d liu gia
tp tin v chng trnh.
Sau khi m tp tin vi Input, Output hoc Append ta phi ng n bng lnh
Close.

7.2.1.1.2 Son tho tp tin


Trc ht, c ni dung tp tin vo bin, sa bin v ghi bin vo tp tin.
c chui t tp tin
M tp tin vi Input. Sau , dng dng lnh line Input #, Input() hoc Input #
sao chp ni dung tp tin vo bin. Visual basic cung cp nhng hm c ghi
1 k t hoc mt dng vo tp tin. on code sau c tng dng:
Dim LinesFromFile, NextLine As String
Do Until EOF(FileNum)
Line Input #FileNum, NextLine
LinesFromFile = LinesFromFile + NextLine + Chr(13) + Chr(10)
Loop
Mc d Line Input# nhn ra cui chui khi n c n k t xung dng,
nhng n khng ly k t ny khi a v bin. Nu mun ly k t xung dng ta
phi t x l code.
Ta cng c th dng Input # c mt danh sch gm cc s hay chui trong
tp tin. V d, c mt dng trong tp tin danh sch th in t:
Input #filename, name, street, city,state,zip
Dng Input sao chp mt s k t t tp tin vo bin:
LinesFromFile = Input(n, Filename)
copy ton b tp tin vo bin, dng InputB copy tng byte. V InputB tr
v chui ANSI, ta phi dng StrConv chuyn i t ANSI sang UNICODE.
LinesFromFile= StrConv(InputB(LOF(FileNum), FileNum), vbUnicode)
Ghi chui v tp tin
ghi ni dung bin vo tp tin, m tp tin vi Output hay Append, sau
dng Print #. V d, tnh son tho vn bn copy ni dung ca hp vn bn vo tp
tin:
Print #FileNum, Thebox.text
Visual basic cng h tr lnh Write #, dng ghi mt danh sch cc s, chui
vo tp tin. Du phy c dng tch bit:
Dim strString as String, intNumber as Integer

FPT Software Solution

Trang:75/265

Gio trnh o to Visual Basic 6.0


strString = AnyCharacters
intNumber = 23456
Write #Filenum, strString, intNumber
on code ny ghi mt chui v mt s vo mt tp tin c ch ra bi
FileNum.
7.2.1.2 Tp tin tun t
M hnh FSO khng h tr tp tin ngu nhin. Cc byte trong tp tin truy cp
ngu nhin c dng bn ghi ng nht, mi bn ghi cha mt hoc nhiu trng.
Mi trng c kiu v kch thc xc nh. Mi bn ghi c nhiu trng tng
ng kiu ngi dng nh ngha. V d: Kiu worker to mu tin 19 bytes gm
3 trng:
Type worker
LastName As String *10
Tilte As String * 7
Rank As String *2
End Type

Sau khi nh ngha kiu mu tin, khai bo cc bin m ng dng cn x l 1


tp tin m truy cp ngu nhin:
Public Employee as worker

7.2.1.2.1 M tp tin ngu nhin


Open pathname [ For Random ] As filenumber Len = reclength
V Random l kiu mc nh t kho For random l tu chn.
Biu thc Len = reclength ch ra kch thc tnh bng byte ca mt bn ghi.
Lu rng mi bin chui trong Visual basic cha mt chui Unicode v ta phi
ch ra chiu di tnh bng byte ca chui . Nu reclength nh hn chiu di thc
s ca bn ghi ghi n tp tin, li s sinh ra. Nu reclength ln hn chiu di thc
s ca bn ghi, bn ghi s c ghi, mc d mt s khong trng a b lng ph.
7.2.1.3 Tp tin truy cp nh phn
Trong m hnh FSO khng h tr tp tin ny. Dng tp tin nh phn khi yu cu
kch thc tp tin nh. Khi thao tc nn dng bin byte thay v String, v d liu nh
phn khng th cha ng vo bin String.

7.2.1.3.1 M tp tin nh phn


C php lnh:
Open pathname For Binary As filenumber

7.2.1.3.2 Cha thng tin trong cc trng hp c di thay i


Ta c th gim thiu vic s dng khong trng a bng tp tin nh phn.
Type Person
ID As Integer
MonthlySalary As Currency
LastReviewDate As Long
FirstName As String
LastName As String
Tilte As String
FPT Software Solution

Trang:76/265

Gio trnh o to Visual Basic 6.0


End Type
Public Empl As Person
Mi bn ghi ch cha mt s byte cn thit do cc trng c chiu di bin
i. Tr ngi l ta khng th truy cp bn ghi mt cch ngu nhin, m ta phi truy
cp tun t theo di ca mi bn ghi. ta c th tm mt byte trong tp tin,
ngng khng th bit byte thuc bn ghi no.

7.3 Cc iu khin trn h thng tp tin


- Hp danh sch a
- Hp danh sch th mc
- Hp danh sch tp tin
iu khin h thng tp tin ly thng tin t ng t h iu hnh, ta c th
truy cp hoc quyt nh nn hin th nhng phn no thng qua cc thuc tnh
ca chng.

7.3.1 Hp danh sch a


L hp danh sch kiu drop down a. Mc nh l a hin hnh c hin
th trn h thng ca ngi s dng. khi iu khin c forcus, NSD c th gx vo
mt tn a hp l hoc nhn chut chn mt a trong danh sch cc a.
Nu Ngi s dng chn mt a mi tn mi s hin th nn u danh sch.
Ta c th dng code quy nh a c chn.
Drive1.Drive = C:\
Chn mt a khng lm thay i ic hin hnh, tr phi ta ly thuc tnh
Drive gn cho hm ChDrive
ChDrive = Drive1.Drive

7.3.2 Hp danh sch th mc


Hp danh sch th mc hin th cu trc th mc ca a hin hnh trn h
thng, bt u bng th mc gc. Cu trc th hin hnh cy phn nhnh. Th
mc hin hnh tr thnh m v tht vo so vi th mc cha v c th tht vo
cho n th mc gc. Khi ngi s dng di chuyn chut ln xung, mi th mc
tr thnh m.
7.3.2.1 Xc nh tng th mc
Mi th mc trong hp c mt s hiu km theo. Kh nng ny khng c
h tr trong hp thoi thng dng. Th mc ch ra bi thuc tnh Path (Dir1.Path)
lun c listIndex l -1. Th mc ngay st bn trn n c listIndex l -2, k tip l
-3....n gc. Th mc con u tin ca Dir1.Path c listIndex l 0. Nu c nhiu
th mc con mc ny th k tip n c ListIndex l 1, tip theo l 2...
7.3.2.2 nh th mc hin hnh
Dng thuc tnh Path ca hp danh sch th mc xem hoc quy inh th
mc hin hnh (ListIndex =-1). V d gn C:\Luong vo Drive1.Path th Luong l
th mc hin hnh.
Tng t, ta c th gn thuc tnh Path ca hp danh sch th mc l thuc
tnh Drive ca hp danh sch a.
Dir1.Path = Drive1.Drive
FPT Software Solution

Trang:77/265

Gio trnh o to Visual Basic 6.0


Khi , hp danh sch th mc hin th tt c th mc trn, v cc th mc
ngay ngay mc hin hnh ca . Tuy nhin n khng quy nh th mc hin hnh
mc h iu hnh, n ch lm ni bt v cho n gi tr ListIndex = -1.
nh th mc hin hnh dng lnh ChDir.
ChDir Dir1.Path
Trong mt ng dng dng cc iu khin tp tin, ta c th nh th mc hin
hnh l th mc cha tp tin EXE thng qua i tng Application:
ChDrive App.Path
ChDir App.Path
Ch thuc tnh Path ch c th c s dng trong lc chy chng tnh
khng c sn vo lc thit k.
7.3.2.3 Nhn chut vo mt thnh phn trong Hp danh sch th mc
Khi nhn chut vo mt thnh phn th n tr thnh m. Khi ng s dng
nhn p chut ln , n c gn xo thuc tnh Path, v ListIndex c i
thnh -1. Hp danh sch th mc c i li hin th cc th mc con.
7.3.2.4 Tm v tr tng i ca th mc
Thuc tnh ListCount tr v s th mc bn di th mc hin hnh, khng
phi tng s thnh phn trong hp danh sch th mc.

7.3.3 Hp danh sch tp tin


lit k cc tp tin cha trong th mc ch ra bi thuc tnh Path. Ta cng c th
hin th cc tp tin trong th mc hin hnh trn a hin hnh:
File1.Path = Dir1.Path
Ta c th hin th cc tp tin thng qua iu kin lc dng thuc tnh Pattern V
d:
File1.Pattern = *.frm; *.bas
Visual basic h tr k t ? VD: ???.txt hin th tt c cc tpt in c phn
m rng l .txt
Lm vic v thuc tnh ca tp tin
Thuc tnh bao gm: Archive, Normal, System, Hidden v ReadOnly. Ta c th
dng thuc tnh ch ra loi tp tin no s c hin th trong danh sch. Bi
mc nh, gi tr ca cc thuc tnh System v Hidden l False; Normal, Archive v
ReadOnly l True.
hin th ch nhng tp tin ReadOnly ch cn i thuc tnh ny l true v cc
thuc tnh khc l False

7.4 iu khin richtextbox


Cho php Ngi s dng nhp vn bn v thc hin mt s thao tc nh dng
ging nh np, ghi d liu trong mt trnh son tho vn bn.
Ta cng c th nh du on vn bn, chuyn thnh k t m, nghing...ta
cng c th canh tri, canh phi cc on vn bn.
iu khin cho php m v ghi tp tin dc dng rtf v ascci thng qua hm
loadfile v Savefile.
dng iu khin RichTextBox ta thm tp tin Richtx32.ocx v n. khi
chy ng dng ci tp tin ny trong th mc system ca windows.

FPT Software Solution

Trang:78/265

Gio trnh o to Visual Basic 6.0

7.4.1 Phng thc loadfile


C php: Object.LoadFile pathname, filetype
Pathname l ng dn n tp tin
fileType: Tu chn, l hng s th hin kiu tp tin:
Hng
Gi tr
Gii thch
rtfRTF
0
(Mc nh) RTF, tp tin lu phi l tp tin.rtf hp l
rtfText
1
Vn bn, iu khin ang lu tp vn bn.
Khi np mt tp tin dng LoadFile, ton b ni dung ca iu khin c thay
th bng ni dung tp tin. iu ny lm gi tr ca thuc tnh Text v rftText thay
i
Ta cng c th dng hm Input v thuc tnh TxtRTF v selRTF c tp
tin.rtf v d, ta c th c ni dung tp tin vo iu khin nh sau:
Open Mytext.rtf For Input As 1
RichTextBox2.TextRTF = strconv(InputB$(LOF(1),1), vbUniCode)

7.4.2 Phng thc savefile


Lu ni dung ca iu khin RichTextbox vo tp tin
C php: Object.SaveFile( pathname, filetype)
Pathname l ng dn n tp tin
fileType: Tu chn, l hng s th hin kiu tp tin:
Hng
Gi tr
Gii thch
rtfRTF
0
(Mc nh) RTF, tp tin lu phi l tp tin.rtf hp l
rtfText
1
Vn bn, iu khin ang lu tp vn bn.
Ta cng c th dng hm Write v thuc tnh TextRTF v SelRTF ghi vo
tp tin.rtf. Ta cng c th lu ni dung c nh du trong iu khin vo tp
tin.rtf:
Open Mytext.rtf For Output As 1
Print #1,RichTextBox2.SelRTF

FPT Software Solution

Trang:79/265

Gio trnh o to Visual Basic 6.0

8 S dng DLL v Windows API


8.1 DLL v cu trc ca Windows
8.1.1 Cc hp thoi thng dng
DI y l mt hp thoI m tp tin
Hp thoI ny khng ch tit kim thI gian cho chng ta, m cn to nn mt
giao din ngI s dng gn gi v thng nht vI mi trng Windows
Hp thoI ny do Windows cung cp, nm trong th vin
\Windows\System\comdlg32.Dll. Tp tin ny cha cc on chng trnh to ra
cc hp thoI thng dng khc nhau. Do tp hp lI trong mt th mc dng chung
l Windows\system, n cho php mI ng dng Windows c quyn truy cp v
thm ch bn thn Windows cng vy.
Cc tp tin DLL ny c bin dch vI C/C++.

Hnh 9.1
Windows
8.1.1

Hp thoI m tp tin l mt trong nhng hp thoI thng dng ca

Th vin lin kt ng

i vi cc ngng ng lp trnh c in nh C, khi bin dch chng trnh,


ta c mt tp tin EXE duy nht c th c thi hnh m khng cn bt c tp tin
no khc (tp tin.vbp ca Visual Basic khng phI trng hp ny, v n ch chy
trong mi trng Visual Basic). Ton b chng trnh cn thit c cha ht
trong mt tp tin EXE. Tuy nhin, cng c rt nhiu th vin C c dng rng
ri. Vn l lm sao s dng lI cc on chng trnh vit sn trong chng
trnh ca ta. chnh l lin kt (link). C hai loI lin kt : lin kt tnh ( static
link) v lin kt ng (dynalic link).

FPT Software Solution

Trang:80/265

Gio trnh o to Visual Basic 6.0


Lin kt tnh
Cung cp mt kt nI nn vng gia chng trnh v module vit sn ngay lc
thit k; tng t ta to module trong Visual Basic v gI th tc trong , ch
khc l lin kt tnh th cha bn ngoi Visual Basic. Tuy nhin, s dng lin
kt tnh, ta c n copy phn chng trnh vit sn ca th vin vo tp tin chng
trnh khi bin dch. T tr i, chng tr thnh mt phn ca chng trnh v b
kho cht vI chng trnh.
Lin kt ng
L giI php linh hot hn lin kt tnh. Tp tin th vin bn ngoi khng b
rng buc vI bn ngoi. N cha mt ni sao cho tp tin EXE c th tm ra v
gI thng ip cho n. Khi thi hnh, cc thng ip ny l nhng cuc gI n cc
hm/th tc, yu cu phn chng trnh no ca DLL c thi hnh.
Cc DLL ca Visual Basic
C l Visual Basic l mt minh ho cho vic s dng DLL. Vo th
mc \Windows\system, ta s thy mt lot cc tp tin cu to nn c ch thi hnh
ca VB. V d, VB5DB.DLL cha chng trnh kin kt vI DAO (I tng truy
cp d liu) lc thi hnh ng dng c th tm kim cc c s d liu cc b.
Khi ta xy dng mt ng dng c s d liu v bin dch n, tp tin EXE
khng bit g v c s d liu. Thay vo , n s dng mt s on chng trnh
ca VB cho php np th vin VB5DB.DLL lc thi hnh v gI cc hm trong .
Th mnh ca DLL
Nht qun : NgI s dng a chung Windows v n khng t th nhiu c
mt giao din ngI s dng ph bin cho mI ng dng. V d cc hp
thoI thng dng, cc menu, thanh cng c ca Office97 Ngha l c
nhng on chng trnh chung to ra chng.
D bo tr : Nhng thay I hoc b sung nu c s th hin trn mI ng
dng.
Tp tin EXE nh hn : Do mt phn cng vic cha ni khc, v khng
gn kt cng nhc nh lin kt tnh, kch c tp tin EXE c gim nh.
Ch c iu l DLL cn cha nhiu phn khc, khng ch l nhng g
chng trnh ca ta cn.
Cu trc Windows
DLL l nn tng ca thit k Windows. Windows thc cht l tp hp cc
DLL cc ng dng khc nhau c th dng chung. Bn trong cc DLL ny l
hng trm hm/th tc. Ta gI chng l Windows API.

8.2 WIN API


Giao din lp trnh ng dng (Application Programmers Interface) l tp hp cc hm/th tc c sn ca Windows.
Chng gn gi vI ngn ng C/C++ hn.

Visual Basic c thit k theo kiu che bt cc cng vic bn dI h thng.


Phn ln cc cuc goi n cc hm API c lng trong cc dng lnh Visual
Basic, t kho, phng thc v thuc tnh. Chng s c thng dch thnh
WinAPI bn trong ca Visual Basic.
Tuy nhin, vn c mt s hm API m Visual Basic khng c phn tng
ng. V d, Visual Basic chun khng c cch no cho ngI lp trnh iu

FPT Software Solution

Trang:81/265

Gio trnh o to Visual Basic 6.0


khin h thng multimedia ca Windows, nhng vI WinAPI, ta c th t c
kt qu. Hiu r WInAPI, ta c th khm ph nhng nng lc tim tng ca
chng.
Lp bc API v cc iu khin hiu chnh
iu khin hiu chnh (OCX hay ActiveX) bn thn chng l nhng lp bc
API, chng chuyn giao cc chc nng theo kiu Visual Basic mt cch thn thin.
iu khin ActiveX v OLE Automation Servers a chng trnh vo cc
n m khng cn phI c mt DLL thc s.
Ta cng c th gI API trong cc module lp, ngha l a nng lc API vo I
tng Visual Basic.

8.3 S dng API


8.3.1 Tm kim API
Ta c th tm cc API thng qua tp tin Tr gip (Help) ca Visual Basic, qua
sch tra cu
Trnh duyt API (Text API Viewer)
c cung cp sn khi ci Visual Basic. Khi ta cn tra cu c php chnh xc
ca hm API, ta dng Text API Viewer. Tuy nhin, c thng tin chi tit hn nh
hm API lm g, truyn tham s g, tr v gi tr g, ta cn c quyn sch tra cu.
Ngoi ra, chng trnh ny cn cho php copy nI dung API n clipboard
dn vo chng trnh.

8.3.2 Cc DLL ca Windows


Cc API c t chc trong bn DLL chnh ca Windows:
a. KERNEL32:
L DLL chnh, m nhim qun l b nh, thc hin chc nng a nhim
v nhng hm nh hng trc tip n hot ng ca Windows.
b. USER32:
Th vin qun l Windows. Th vin ny cha cc hm x l menu, nh
gi, truyn tin, tp tin v nhiu phn khng c hin th khc ca Windows.
c. GDI32:
Giao din thit b ho (Graphics Device Interface). Th vin ny cung
cp cc hm v trn mn hnh, cng nh kim tra phn biu mu no cn v li.
d. WINNM:
Cung cp cc hm multimedia x l m thanh, nhc, video thI gian
thc, ly mu, v.v N l DLL 32 bit. (Th vin 16 bit tn l MMSYSTEM)

FPT Software Solution

Trang:82/265

Gio trnh o to Visual Basic 6.0

Ta c th tm cc tp tin ny trong th mc \Windows\system. Ngoi ra, cn c


cc DLL nh hn, cng c dng ph bin cung cp cc dch v c bit cho
ng dng.
Trn y l cc tn DLL 32 bit. Phin bn VB4 l bn cuI cng cn h tr 16
bit.

8.3.3 Gi API
Gi API khng khc g vi gi hm/ th tc trong module ca n. V d ta
c th tc:
Public sub FindText(obiDataControl as Control, _
SFilename as String)
Code to implement function here
End sub

gI th tc ta dng :

FindText datTitles, Titles

Ch c iu API l mt th tc khng ch nm ngoi module m cn nm


ngoi Visual Basic.
8.3.3.1

Khai bo mt cuc gI API:

Trc khi dng hm ca DLL, ta cn khai bo hm . Visual Basic cn bit:


- Tn hm / th tc.
- Tp tin DLL cha n.
- Tham s truyn.
- Kiu d liu truyn v nu l hm.
Khai bo API tng t khai bo hng/ th tc thng thng. Ta vn bt u
bng t kho Sub/Function, ch khc l trc phI c t kho Declare.

V d mu - To ca s nhp nhy bng cch gI API


1. To n chun mI
2. V iu khin nh gi (timer) trn biu mu v nh thuc tnh
Interval l 10. N s gy ra mt s kin timer mI 10 mi-li-giy.
Hnh 9.2 Biu tng iu khin Timer trn hp cng c.
3. Nhn p ln ca s ny m Ca s Code

Private Sub Timer1_Timer()


Dim nReturnValue As Integer
nReturnValue = Flash(Form1.hWnd, True)
End Sub

4. Khai bo hm Flash trong General Declarations:


Private Declare Function Flash Lib "User32"
Alias "FlashWindow" _
(ByVal hWnd As Long, _

FPT Software Solution

Trang:83/265

Gio trnh o to Visual Basic 6.0


ByVal bInvert As Long) As Long

5. Thi hnh chng trnh. Khi biu mu xut hin, tiu ca n


nhp nhy.
Mc d ta thy chng trnh ny rt n gin, nhng nu vit bng cc hm
Visual Basic thng thng, n rt phc tp v tn rt nhiu chng trnh.
T kho Declare bo VB bit y l khai bo mt hm ca DLL.
Sau Declare l t kho Sub hay Function, cho bit y l th tc hay hm. Ta
ch c mt trong hai la chn.
T kho Lib cho bit tn DLL ang cha hm/ th tc . y l th vin
User32. T kho Alias cho bit tn thc s ca th tc / hm trong th vin. N c
th khc vI tn ta khai bo trc t kho Lib.
CuI cng l khai bo cc tham s truyn, cng vI kiu d liu hm tr v.
y tham s c truyn l :

(ByVal hWnd As Long, ByVal bInvert As Long) As Long

Tham s u, hWnd, l handle, xc nh ca s cn nhp nhy. Tham s th


hai, bInvert l gi tr Boolean. Nu bInvert c truyn vo c gi tr True, thanh
tiu s nhp nhy. tr v trng thi u, ta phI gI lI ln na, vI
bInvert mang gi tr False.
VI nhiu hm API, tn Alias trng vI tn thc. Khi Visual Basic s t
ng loI b phn Alias. V d:
Private Declare Function FlashWindow Lib "User32"
Alias "FlashWindow" _
(ByVal hWnd As Long, _
ByVal bInvert As Long) As Long

Visual Basic s I thnh:

Private Declare Function FlashWindow Lib "User32"


(ByVal hWnd As Long, _
ByVal bInvert As Long) As Long

Tuy nhin mt s c tn khng hp l I vI Visual Basic, nh _lopen, mt s


khc c nhiu phin bn, v d c k t A v W cuI tn. Ni chung, tt nht nn
dng tn thc ca API. Mt s lp trnh vin dng Alias thay th tn hm, hoc
thm ch khai bo hai tn cho hai phin bn hm nhn cc tham s truyn khc
nhau.
nReturnValue = Flash(Form1.hWnd, True)

Sau khi khai bo hm API, ta c th gI API nh mt hm hoc th tc Visual


Basic thng thng. GI Flash l gI n API trong DLL, v ta lu gi tr tr v
trong bin nReturnValue.
I vI cc hm thng thng, ta c th khng cn s dng gi tr tr v ca
hm. Tuy nhin, ta vn cn cha gi tr tr v vo mt bin d ta khng c nh
s dng n. Phn ln API tr v m lI kiu s, v ta c th dng n kim tra
mI vic c hot ng chnh xc hay khng.

FPT Software Solution

Trang:84/265

Gio trnh o to Visual Basic 6.0

Trong thc t, b qua gi tr tr v khng ch l lI bing m cn thc s


nguy him nu ta ang gI nhiu API.
S dng API sai c th dn n treo Windows, nu khng ni l treo my. Khi
lm vic vI cc API phc tp, nh nhng hm cn cp pht nhiu vng nh v ti
nguyn h thng. Khng nn bt chic cc lp trnh vin cu th b qua cc gi tr
tr v. V hm DLL nm ngoi ng dng, chng t kim tra li ta ch bit c sai
st thng qua gi tr tr v.
8.3.3.2 Handle
Ly biu mu lm v d. Windows dng mt cu trc lu gi thng tin ca
biu mu. Thng tin ny ng nht vi thng tin cha trong ca s Properties.
Windows cha cu trc ca tng ca s trong mt danh sch di gm cc cu trc
d liu lin quan n mi ca s ca mi chng trnh ang chy. xc nh
cu trc no thuc ca s no, n dng handle. N khng dng tn biu mu v tn
cng l mt thuc tnh ca biu mu. Handle chnh l s ID ca mt i tng
trong Windows.
Khi ta bt u dng API, nht l nhng API c x l vi biu mu, ta s
thng xuyn lm vic vi handle. Visual Basic cha handle nh mt thuc tnh ch
c c, c th dng lm tham s truyn cho nhng hm ca Windows khi cn.
Thuc tnh ny gi l hWnd (handle n mt ca s), ch c th truy cp lc thi
hnh. Mc d n khng mang ngha trong chng trnh, nhng n c th c
c, v truyn nh mt tham s n API. Cc API c lin quan hin th ca s s
cn tham s hWnd bit chnh xc ca s m n cn x l.
8.3.3.3

Khai bo tham s truyn

im quan trng trong khai bo tham s truyn cho API l t kho Byval.
Vi chng trnh thng thng, nu truyn gi tr cho hm, Visual Basic bit
rng n ch x l vi bn sao ca tham s.
Function Square(Byval Number as Double) as Double

Mt cch khc truyn tham s l truyn tham chiu. tham s truyn l bin
ch khng phi l bn sao ca n. Do nu hm thay i tham s, cc thay i
ny s nh hng ln bin truyn vo. Nu khng ch r Byval, VB s t ng
xem l truyn tham chiu.
Nu l hm hoc th tc do ta vit, nu c sai st dothiu Byval, hu qu
khng nghim trng, Windows khng b treo.
Tuy nhin, vi cc DLL, tnh hnh nguy him hn nhiu. Nu ta qun Byval, VB
t ng truyn mt con tr n bin. N cho bit a ch ca bin trn vng nh.
Sau hm ny n a ch v ly gi tr v.
Nu mt hm ca DLL ch mt kt qu trong khong t 0 n 3, v ta truyn
mt bin tham chiu, gi tr thc s truyn vo c th l 1002342, l a ch vng
nh ca bin. Hm ny s x l s 1002342 thay v s thuc khong (0-3), kt qu
l h thng treo.
Khng h c thng bo li y; ta ch bit c API b li khi h thng ri
lon v treo cng. Mt trong nhng kinh nghim khi lm vic vi API l lu li.
V chng ta ang mo him ra ngoi vng an ton ca Visual Basic, khi b li, h
thng treo v ta mt ht d liu. Lun lun lu n trc khi chy on chng

FPT Software Solution

Trang:85/265

Gio trnh o to Visual Basic 6.0


trnh goin API. T menu Tools, chn Options m hp thoi Options. Chn tab
Environment, nh du vo tu chn Save Changes.
8.3.3.4 S dng lp vi API
S dng ring l tng hm API s gy kh khn cho nhng ngi c chng
trnh nu h khng phi l ngi lp trnh ban u, nht l i vi cc ng dng
ln.
Gii php ca Visual Basic 6 l chuyn cc API thnh cc lp (cc iu khin
ActiveX). Tng API c th xp vo nhng nhm tu thuc lnh vc n x l. Cc
nhm ny c th chuyn thnh cc lp ca Visual Basic. V d, to mt lp c cc
chc nng v multimedia ca cc API v lnh vc ny.

8.4 Dng API khai thc kh nng Multimedia


8.4.1 Lp multimedia
Lp ny cha mt b cc lnh multimedia thng dng. Khi mt i tng
c to t lp, n mang nhng chc nng tng t mt iu khin c th xem
hay quy nh thuc tnh, cc phng thc. N che i cc lnh gi API.
Cc phng thc m lp ny h tr:
Phng thc
MmOpen
MmClose
MmPause
MmStop
MmSeek
MmPlay

M t
M tp tin (video, m thanh, nhc, v.v...) chun b Play
ng tp tin ang m, ngn cm hot ng Play
Dng Play trn tp tin hin hnh
Dng hn Play
Tm mt v tr trong tp tin
Play tp tin ang m, pht ra m thanh trong loa

Cc phng thc ny l nhng hm ring r trong lp MMedia.cls v cho php


s dng cc API theo nhiu cch.
Sau y l cc th tc thuc tnh trong tp tin ngun:
Thuc tnh
Filename
Length
Position
Satus
Wait

M t
Tn ca tp tin ang m
Chiu di ca tp tin ang m
V tr hin hnh trong tp tin ta c th kt hp vi thuc
tnh Length hin th trng thi Play
Mt t cho bit trng thi tp tin (Play, dng tm, dng
hn, v.v... )
Nu l True, chng trnh s ch n khi Play xong mi lm
tip. Nu l False, n thi hnh theo kiu a nhim

V d mu - S dng lp Multimedia
1) M tp tin TestMM.vbp
2) iu chnh kch c biu mu chnh v v mt nt lnh v mt iu khin
hp thoi thng dng:

FPT Software Solution

Trang:86/265

Gio trnh o to Visual Basic 6.0

Hnh 9.3 Thit k biu mu

Nu khng thy iu khin hp thoi thng dng trn hp cng c, t menu


Project, chn Components, v chn vo hp nh du Microsoft Common Dialog
Control 6.0.
3) hp thoi (thng dng) bt ra khi nhn vo nt lnh, ta x l s kin
Click trn nt lnh bng cch g vo:

Private Sub Command1_Click()


With CommonDialog1
.Filter = "WaveAudio (*.wav)|*.wav|Midi
(*.mid)|*.mid|Video files (*.avi)|*.avi"
.FilterIndex = 0
.ShowOpen
End With
End Sub

4) Chy chng trnh v nhn nt lnh, ta s thy hp thoi m tp tin quen


thuc xut hin cho ta chn tp tin multimedia:

Hnh 9.4 Chn m tp tin multimedia


5) K tip ta chuyn lp multimedia thnh mt i tng.
Private Sub Command1_Click()
FPT Software Solution

Trang:87/265

Gio trnh o to Visual Basic 6.0


Dim Multimedia As New MMedia
With CommonDialog1
.Filter = "WaveAudio (*.wav)|*.wav|Midi
(*.mid)|*.mid|Video files (*.avi)|*.avi"
.FilterIndex = 0
.ShowOpen
End With
If CommonDialog1.Filename <> "" Then
Multimedia.mmOpen CommonDialog1.Filename
Multimedia.mmPlay
End If
End Sub

Thi hnh chng trnh. Tm mt tp tin multimedia trn a cng (thng cha
trong th mc \Windows\Media) v play.
Lu rng play cc tp tin m thanh nh WAV v MID, ta cn c card m
thanh trn my
.
Trong dng u ca s kin click, ta to mt i tng multimedia dn xut t
lp MMedia. y l bc chuyn t mt lp sang mt i tng.
Private Sub Command1_Click()
Dim Multimedia As New MMedia

Bn dng k s dng i tng multimedia m tp tin dng phng thc


mmOpen v Play bng phng thc mmPlay.
If CommonDialog1.Filename <> "" Then
Multimedia.mmOpen CommonDialog1.Filename
Multimedia.mmPlay
End If

To lp bao bc cc API lm vn n gin hn. Nu lp ny c em


thng mi ho, ngi s dng n s khng cn phi hiu v API, h ch cn
bit cch thc hot ng ca lp m thi.
8.4.1.1 Tm hiu lp Multimedia
Windows c nhiu phn h, mi phn h m nhim mt chc nng nht nh.
Mt trong nhng phn ny l MCI. MCI l tn gi tt ca Multimedia Control
Interface, cung cp mt gii php c lp vi thit b s dng cc tnh nng ca
Windows thng qua chng trnh.
Khi vit chng trnh tr chi trn DOS, ta phi x l vi nhiu chun card m
thanh v hnh nh khc nhau. Tnh nng c lp vi thit b, v cc chng trnh
iu khin thit b cung cp bi Windows cho php ta lm vic vi bt k card m
thanh, hnh nh no vi cng chng trnh, min l chng c h tr bi
Windows.
MCI cung cp lp m gia lp trnh vin v cc thit b dng x l d liu
multimedia nh cc card m thanh, hnh nh.
MCI s lm vic vi cc chng trnh iu khin thit b ca Windows, v
cui cng l phn cng multimedia. Lp trnh vin, yu cu MCI dng hm API
mciSendString. Lnh ny sau c gi xung chng trnh iu khin thit b,
ta khng cn quan tm.

FPT Software Solution

Trang:88/265

Gio trnh o to Visual Basic 6.0


MCI l mt i tng c lp. N c th c lp trnh v c ngn ng lp
trnh ring. Khi ta dng mciSendString, ta ang lp trnh MCI.
8.4.1.2 S dng mciSendString
C php ca mciSendString:
<ResultCode> = mciSendString(<Command>, _
<ReturnString>, <ReturnLength>, <CallbackHadle>)
<ResultCode> l mt s long integer, v thay i tu theo dng lnh.
<Command> t trong u trch dn, phi l mt t di dng chui k t
v l lnh gi n MCI; nh l Play play mt tp tin, Open me tp tin,
v.v...
Mt s lnh MCI tr v mt chui k t. Lnh Status tr v mt chui cho
bit tp tin dng hn (Stopped), hay ang chi (Playing), hay dng tm (Pause),
v.v...
API cn bit bao nhiu d liu c cha trong bin chui, tham s k tip l
chiu di chui. Do , nu ta pht lnh n MCI tr v mt chui, ta phi truyn
mt bin chui c chiu di nht nh v cho bit chiu di ca n:
Dim sReturnString As String * 255
Dim nReturn As Long
nReturn = mciSendString("status waveaudio mode",
sReturnString, 255, 0)

Thm * 255 vo khai bo sReturnString cho bit chiu di ca n l 255.


8.4.1.3 S dng hm Callback trong Visual Basic
Hm Callback thc ra ch p dng cho C/C++, Delphi, hay mt s ngn ng
bin dch cp thp, khng dng vi Visual Basic. Tuy nhin, VB6 cho php ta s
dng hm Callback m khng cn thm cc chng trnh ph c bit nh trong
cc phin bn trc.
Khi ta dng API, chng trnh ca ta khng th no bit c iu g ang xy
ra khi hm ang chy. Ta phi ch n khi n kt thc, v kim tra gi tr tr v.
tng ca hm Callback l mt API m khi chy, n c th gi n mt hm hoc
th tc ca chng trnh ta ang vit.
Ta phi to mt hm Public trong mt module chng trnh ca Visual Basic,
vi cc tham s truyn cn thit ca API. Sau , khi gi API, ta gi mt con tr
(pointer) - a ch vng nh ca hm Callback. Ta phi dng ton t mi AddressOf:
nResult = someAPIFunction(ParamOne, ParamTwo, _
AddressOf MyCallback)

Khi API chy, n gi mmt hm trong chng trnh ca chng ta v gi cc


tham s cn thit. Thng n c c dng cp nht thanh trng thi, ly
danh sch font h thng, v cc cng vic khc.
Nh ni, chng ta s khng ni thm v cc hm Callback. Cc hm ny lm
phc tp hn cho chng trnh v nhiu khi lm treo h thng. Tuy nhin, tr gip
ca Visual Basic s cung cp mt s v d nu bn un tm hiu k hn.
FPT Software Solution

Trang:89/265

Gio trnh o to Visual Basic 6.0

8.4.1.4 M tp tin Media


Ta gi tn tp tin cho lnh Open m tp tin. y l tn chun nh:
C:\Video.avi.
Open <filename> Type <typestring> Alias <aname>
...
...
Issue command to do something to the file
...
...
Close <aname>
Sau t kho Type l kiu tp tin. Kiu chun ca Windows l WaveAudio i
vi tp tin WAV, AVIVideo i vi AVI, v Sequencer i vi MID.
Alias dng thay th tn tp tin m:
Open c:\video.avi Type AVIVideo Alias Peter

Nu ta gi dng lnh ny n MCI bng MCISenString, n yu cu MCI m


tp tin C:\video.avi nh mt tp tin video ca Microsoft, v n s dng tn Peter
ch ra tp tin ny.
Mi ln m tp tin, lnh MCI c th dng b danh chi tp tin, dng hn
hay tm dng, hoc hin th trng thi, v.v... V d:
Play Peter
Pause Peter
Stop Peter

Sau , ta cn ng tp tin bng cch gi lnh Close, theo sau l b danh ca


tp tin.
nReturn = mciSendString(Close Peter, ,0,0)

V d mu - Hin th trng thi v v tr ca tp tin Multimedia


1. M n TestMM.vbp
2. Chng ta s thm mt s iu khin xem thuc tnh Status v
Position ca lp MMedia. Thm mt iu khin thanh din tin
(ProgressBar), mt nhn, mt iu khin nh gi (timer):
Hnh 9.5 Thit k biu
mu

N u
khng thy iu khin
ProgressBar trn hp cng c, t
menu

FPT Software Solution

Trang:90/265

Gio trnh o to Visual Basic 6.0

Project, chn Components,


chn vo hp nh du Microsoft
Windows Common Controls 6.0 .

FPT Software Solution

Trang:91/265

3. M ca s Properties ca iu khin Timer, i thuc tnh Enabled


thnh False, v Interval l 500. Xo Caption ca iu khin nhn.
4. Nhn p chut ln nt lnh m s kin Click:
Private Sub Command1_Click()

...
...

If CommonDialog1.Filename <> "" Then


Multimedia.Wait = False
Multimedia.mmOpen
CommonDialog1.Filename
ProgressBar1.Value = 0
ProgressBar1.Max = Multimedia.Length
Timer1.Enabled = True
Multimedia.mmPlay
End If
End Sub

5. Tr v biu mu, nhn p chut ln iu khin Timer1 m s


kin Timer.
Private Sub Timer1_Timer()
ProgressBar1.Value = Multimedia.Position
Label1 = "Status: " & Multimedia.Status
If ProgressBar1.Value = ProgressBar1.Max Then
Multimedia.mmClose
Timer1.Enabled = False
End If
End Sub

C mt vn nh. Ta nh ngha bin ch n instance ca lp MMedia


trong hm s kin command1_Click(). By gi chng ta li mun ch n n t
trong Timer1_Timer().
GHI CH Bn s c gii thch khi nim instance trong chng 13 - Lp
trnh hng i tng
6. Trong s kin Click ca nt lnh, chn dng khao bo bin
Mutilmedia, nhn phm Ctrl-X ct n vo Clipboard v xo n khi
s kin Command1_Click. Sau , chn vo danh sch (General) trong
ca s Code, nhn phm Ctrl V dn n vo vng General
Declarations. Bin khai bo t trong vng ny s l bin ton cc i
vi biu mu ny.
7. Thi hnh chng trnh. Nhn nt Load and Play a file, v chn mt
tptin AVI, v d tp tin video Welcome to windows 95.
8. Ta s thy thanh din tin cho thy bao nhiu phn trm ca tp tin
ang chi. Khi video kt thc ta thy kt qu hin th: Stopped.
Khi ta mi nhn nt lnh, chng trnh thit lp cc khi to cho thuc tnh
trc khi chi tp tin:
If CommonDialog1.Filename <> "" Then
Multimedia.Wait = False

Multimedia.mmOpen CommonDialog1.Filename
ProgressBar1.Value = 0
ProgressBar1.Max = Multimedia.Length
Timer1.Enabled = True
Multimedia.mmPlay
End If

i tng multimedia c thuc tnh tn l Wait. Thuc tnh ny quyt nh


chng trnh c tip tc thi hnh (a nhim) trong khi chi tp tin, hay phi dng
v ch n n khi n hon tt. Phng thc mmPlay theo di gi tr ca bin
bWait. Nu bin ny c gi tr True, n thm Wait vo lnh gi mciSendString:
Public Sub mmPlay()
Dim nReturn As Long
If sAlias = "" Then Exit Sub
If bWait Then
nReturn = mciSendString("Play " & _
sAlias & " wait", "", 0, 0)
Else
nReturn = mciSendString("Play " & sAlias,
"", 0, 0)
End If
End Sub

Lm sao bit gi tr bWait ? Nhc li rng ta c th cung cp cc hm thuc


tnh cho php c hoc quy nh gi tr ca bin ni b:
Property Get Wait() As Boolean
' Routine to return the value of the object's
wait property.
Wait = bWait
End Property
Property Let Wait(bWaitValue As Boolean)
' Routine to set the value of the object's wait
property
bWait = bWaitValue
End Property

Bc k l m tp tin ta mun chi. Ta dng phng thc mmOpen


m tp tin.

8.4.1.4.1 M tp tin
Trc ht, ta khai bo mt cp bin cc b gi gi tr tm thi.
Public Sub mmOpen(ByVal sTheFile As String)
Dim nReturn As Long
Dim sType As String
If sAlias <> "" Then
mmClose
End If
Select Case UCase$(Right$(sTheFile, 3))

Case "WAV"
sType = "Waveaudio"
Case "AVI"
sType = "AviVideo"
Case "MID"
sType = "Sequencer"
Case Else
Exit Sub
End Select
sAlias = Right$(sTheFile, 3) & Minute(Now)
If InStr(sTheFile, " ") Then
sTheFile = Chr(34) & sTheFile & Chr(34)
End if
nReturn =mciSendString("Open " & sTheFile _
& " ALIAS " & sAlias & " TYPE " & sType _
" wait", "", 0, 0)
End Sub

&

Trc ht, hm mmOpen kim tra bin mc module gi l sAlias.


If sAlias <> then
mmClose
End if

Lm vic vi MCI, ta nn dng b danh cho tng tp tin m. y lp


MMedia thit lp mt tn cho b danh v cha b danh vo bin sAlias. Khi ta tip
tc m mt tp tin k tip bng mmOpen, hoc ch ra thuc tnh tn tp tin,
chng trnh kim tra iu ny v gi mt th tc khc ng tp tin th nht.
ng tp tin khi ta cn gii phng vng nh v tng tc chi tp tin.
Cu trc Select Case kim tra tng loi tp tin.
Lnh wait cho php chng trnh tip tuch chy cho n khi np thnh cng.
Nu khng c wait, trn mt my nhanh vi a cng chm, c th c vn . Ta
c th c chi tp tin trc khi n c np xong, n gin bi v chng trnh
chy nhanh hn a cng. Lu rng n khng ging thuc tnh Wait trc y
iu khin chng trnh tip tc chy khi tp tin ang chi ch khng phi ang
np.

8.4.1.4.2 Ly chiu di tp tin


Dng mciSendString ly hoc quy nh chiu di. Thuc tnh Length ca
lp MMedia ch c tnh cht c php c m thi, v ta khng cung cp hm
Property Let.
Property Get Length() As Single
Dim nReturn As Long, nLength As Integer
Dim sLength As String * 255
If sAlias = "" Then
Length = 0
Exit Property
End If
nReturn = mciSendString("Status " & sAlias _
& length", Length, 255, 0)
nLength = InStr(sLength, Chr$(0))

Length = Val(Left$(sLength, nLength - 1))


End Property

Trc ht sAlias c kim tra xem tp tin c ang m hay khng ? Nu cha
m, gi tr tr v t th tc thuc tnh l 0. Nu tp tin m ri, lnh Status
Length ca MCI c dng.
Ta khng lo v cch tnh chiu di tp tin, v n v o ph hp vi thanh din
tin.
Lnh Status l lnh MCI c bit, c th kt ni vi cc t kho nh Length,
Position, Mode xc nh cc thng tin v tp tin hin hnh. N tr v cc thng
tin ny trong mt chui k t c chiu di nht nh c truyn vo
mciSendString. Trong v d ny chui tr v l sLength v di 255 k t.
D nhin, n khng lun cha 255 k t tr v t lnh Status. Dng hm InStr
ct b cc k t 0 lp y khong trng.
Chiu di cha trong chui c trch chui v chuyn i sang kiu s trc
khi gn cho Length.

8.4.1.4.3 Ly v tr hin hnh


Lnh Status Position c th c gi nhiu ln xc nh v tr hin hnh
ca tp tin ang chi:
Property Get Position() As Single
Dim nReturn As Integer, nLength As Integer
Dim sPosition As String * 255

If sAlias = "" Then Exit Property


nReturn = mciSendString("Status " & sAlias _
& " position", sPosition, 255, 0)
nLength = InStr(sPosition, Chr$(0))
Position = Val(Left$(sPosition, nLength - 1))
End Property

Thay v gi Status Length, ta gi Status Position.

8.4.1.4.4 Ly trng thi hin hnh


ly chui k t trng thi cn gi l mode, ta truy vn thuc tnh Status ca
lp. Ta cng s dng hm thuc tnh Property Get hu ng nht vi thuc tnh
Position trn y.
Ch khc l ta gi Status Mode thay v Status Length hay Status Position cho
mciSendString. D nhin, khng cn chuyn i sang kiu s:
...
nReturn = mciSendString("Status " & sAlias &
" mode", sStatus, 255, 0)

nLength = InStr(sStatus, Chr$(0))


Status = Left$(sStatus, nLength - 1)

...
Tr li s kin Command1_Click. Cho ti gi, ta nh ngha thuc tnh
Wait., m tp tin, thit lp thanh din tin. Trc khi chi tp tin, ta quy nh
Timer. Sau , ta chi tp tin bng cch gi phng thc mmPlay ca i tng
Multimedia.
If CommonDialog1.Filename <> "" Then
Multimedia.Wait = False
Multimedia.mmOpen CommonDialog1.Filename

ProgressBar1.Value = 0
ProgressBar1.Max = Multimedia.Length
Timer1.Enabled = True
Multimedia.mmPlay
End If

8.4.1.4.5 Chi trn tp tin


Trc ht, kim tra tp tin m thng qua bin sAlias; sau nu tho iu
kin, n thi hnh lnh Play ca MCI.
Public Sub mmPlay()
Dim nReturn As Long
If sAlias = "" Then Exit Sub
If bWait Then
nReturn = mciSendString("Play " &
sAlias & " wait", "", 0, 0)
Else
nReturn = mciSendString("Play " & _
sAlias, "", 0, 0)
End If
End Sub

8.4.1.4.6 Cp nht thanh din tin v iu khin nhn.


Cng vic sau cng l cp nht thanh trng thi v nhn trn biu mu, khi tp
tin ang chi. Trc khichi tp tin, t iu khin Timer vi Interval l 500. Vy
n s kch hot m mi na giy. Khi , on chng trnh sau c thi hnh:
Private Sub Timer1_Timer()
ProgressBar1.Value = Multimedia.Position
Label1 = "Status: " & Multimedia.Status
If ProgressBar1.Value = ProgressBar1.Max Then
Multimedia.mmClose
Timer1.Enabled = False
End If
End Sub

Cui cng cn phi ngng li khi t n cui tp tin. C th thc hin iu


ny bng cch so snh gi tr hin hnh v gi tr Max ca thanh din tin. Khi
chng bng nhau, tp tin c ng bng phng thc mmClose. Sau , cm
Timer ngn hm ny chy cho n khi m tp tin khc.

8.4.1.4.7 Tm tt cc lnh ca MCI


Lnh
Play
Pause
Stop
Seek
Status Mode
Status Position
Status Length

M t
Chi mt tp tin
Tm dng chi, sn sng bt u mi lc
Dng hn - cn chuyn n mt v tr no tip tc chi
Theo sau l mt con s, chuyn n v tr trong tp tin
Tr v mt chui k t th hin trng thi tp tin(ang choi,
ang m, tm dng, dng hn....)
Tr v v tr tp tin m playback t n
Tr v chiu di tp tin v h tr da con s tr v t

Close

Status Position vo mt ng cnh c ngha no .


ng tp tin v gii phng vng nh n chim trc

Ngoi ra MCI cn h tr mt s lnh khc v mt s lnh c bit cho mi


nh dng tp tin.

Thm tr gip vo ng dng

9.1 Thm h tr cho Help


Thm h tr cho Help vo ng dng VB gn nh kh n gin. Tt c nhng g ta
cn lm l ch ra mt thuc tnh, HelpFile (v d nhin, vit v bin dch tp tin
Help) hin th Help khi ngi s dng nhn phm F1 hay yu cu Help t
Menu. Mt thuc tnh khc l HelpContextID, dng cung cp ch Help theo
ng cnh cho bt k giao din ngi s dng no trong chng trnh. Qu trnh
gn thm Help l nh nhau trong c WinHelp v HTML Help.

9.1.1 Thuc tnh HelpFile


Thuc tnh HelpFile ca i tng App c dng ch ra tn ca tp tin Help
cho ng dng. N i hi mt tp tin hp l ca WinHelp (.hlp) hoc l HTML
Help (.chm). Nu tp tin khng tn ti, li s xy ra.
9.1.1.1 Ch ra thuc tnh HelpFile
1. Chn Project Properties t menu Project m hp thoi Project
Properties.
2. Trong trng Help File Name ca tab General, g vo ng dn v tn ca
tp tin Help ca ng dng (.hlp hay.chm).
Ta cn c th ch ra HelpFile bng cch lp trnh. on chng trnh sau y ch ra
mt tp tin HTML Help cha trong cng th mc vi tp tin thi hnh ca ng
dng:
Private Sub Form_Load()
App.HelpFile = App.Path & \foo.chm
End Sub
i tng ErrObject cng c thuc tnh HelpFile, cho php ta ch ra mt tp tin
Help khc cho cc thng bo li. V d, nu ta c mt vi ng dng s dng chung
cc thng bo li, ta c th t Help cho cc thng bo li trong mt tp tin Help
duy nht v gi n bng thuc tnh Err.HelpFile trong mi ng dng.

9.1.2 Thuc tnh HelpContextID


Thuc tnh HelpContextID c dng lin kt mt phn giao din ngi s
dng (nh l iu khin, biu mu hay menu) vi mt ch lin quan trong tp
tin Help. Thuc tnh HelpContextID phi c kiu l mt s Long tng ng vi
Context ID ca mt ch trong tp tin WinHelp (.hlp) hay HTML Help (.chm).
V d, ta c th nhp 10000 vo thuc tnh HelpContextID ca hp vn bn. Khi
ngi s dng chn hp vn bn v nhn F1, VB tm kim ch c Context ID
l 10000 trong tp tin Help c ch ra thuc tnh HelpFile ca ng dng. Nu n
tm thy, mt ca s Help s c m v hin th ch ; nu khng, li s xut
hin v ch mc nh ca tp tin Help s c hin th.
Ta nn s dng HelpContextID duy nht cho mi ch Help trong tp tin Help.
Trong mt s trng hp, nu mun, ta c th gn cng HelpContextID cho mt
i tng nu nh chng s dng chung mt ch Help.

Ta khng nht thit phi nhp mt HelpContextID cho mi iu khin trn biu
mu. Nu ngi s dng nhn F1 trn iu khin vi HelpContextID 0 (gi tr
mc nh), VB s tm kim mt HelpContextID hp l cho ni cha ca iu
khin.
9.1.2.1 Gn HelpContextID cho mt iu khin hay biu mu.
1. Chn mt iu khin hay biu mu m ta mun nhp vo HelpContextID.
2. Nhn p HelpContextID trong ca s Properties v g vo gi tr Long hp
l.
Theo di gi tr m ta nhp vo sao cho ta c th dng cng gi tr cho Context ID
ca ch Help tng ng.

Ch : i vi iu khin CommonDialog v c l i vi mt s iu khin khc, tn ca thuc tnh ny l


HelpContext thay v HelpContextID.

9.1.2.2 Gn HelpContextID cho menu


1. Chn Menu Editor t menu Tools.
2. Chn mc menu m ta mun nhp vo mt HelpContextID.
3. Nhp vo mt gi tr Long hp l trong hp Select the HelpContextID.
Theo di gi tr m ta nhp vo sao cho ta c th dng cng gi tr cho Context ID
ca ch Help tng hp.
HelpContextID cn c th c nhp vo bng cch lp trnh:
Private Sub Form_Load()
Command1.HelpContextID = 12345
MenuHelp.HelpContextID = 23456
Err.HelpContext = 34567
End Sub

9.2 Thm h tr cho WHATS THIS HELP


VB cho php ta thm Whats This Help vo cc ng dng mt cch d dng. Whats
This Help cung cp phn truy cp nhanh n vn bn Help trong mt ca s bt ra
m khng cn phi m Help Viewer. Whats This Help ch yu c s dng
cung cp tr gip n gin cho cc phn giao din ngi s dng nh l cc
trng d liu nhp. VB h tr cc ch Whats This Help trong cc tp tin
WinHelp (.hlp) v HTML Help.
Vic gn gi tr True cho thuc tnh WhatsThisHelp ca biu mu lm cho Whats
This Help hot ng c. Khi , phn Help theo ng cnh cho biu mu s b
v hiu ho.

9.2.1 Kch hot Whats This Help cho biu mu


1. Vi biu mu c chn, nhn p ln thuc tnh WhatsThisHelp trong
ca s Properties nh gi tr cho n l True.
2. Ci t cc thuc tnh sau y thm mt nt Whats This vo thanh tiu
ca biu mu:
Thuc tnh
Ci t
BorderStyle
1-Fixed Single hay 2-Sizable
MaxButton
False
MinButton
False

WhatsThisButton
True
3. Chn mt iu khin m ta mun cung cp Whats This Helpv gn mt
gi tr duy nht cho thuc tnh WhatsThisHelpID ca iu khin.
Theo di gi t m ta nhp vo sao cho ta c th dng cng gi tr cho Context ID
ca ch Help tng ng.
Ta cng c th cho php Whats This Help m khng dng nt Whats This bng
cch ch ra thuc tnh WhatsThisHelp ca biu mu l True v gi phng thc
WhatThisMode ca biu mu hay phng thc ShowWhatThis ca iu khin.

9.3 Cung cp help cng vi ng dng


Bc cui cng trong vic thm Help vo ng dng l chc chn rng n s n
tay ngi s dng. Cc yu cu cho vic cung cp Help cng vi ng dng c hi
khc gia WinHelp v HTML Help.

9.3.1 Cung cp WinHelp


Bi v mi h thng Windows u c ci t sn Trnh xem Tr gip ca
Windows (Windows Help Viewer), ta ch cn phi cung cp tp tin Help (.hlp).
Trnh ng gi v Trin khai (Package and Deployment Wizard) t ng thm cc
phn ph thuc cho tp tin Help c tham chiu bi ng dng. Nu ta to ra
phn ci t bng cc cng c khc, ta phi bo m rng tp tin.hlp c a
vo v c ci t vo ng v tr (thng l trong cng thu mc vi ng dng
hoc l th mc Windows\Help).

9.3.2 Cung cp HTML Help


HTML Help l mt k thut tng i mi, do , ta khng th gi nh rng mi
ngi s dng c nhng tp tin cn thit xem HTML Help. Trnh ng gi
v Trin khai (Package and Deployment Wizard) s thm cc phn lin quan i
vi tp tin HTML Help (.chm) c tham chiu bi ng dng; nhng n khng
thm tt c cc phn lin quan n tp tin HTML Help Viewer. Ta cn phi sa li
phn ci t a cc tp tin ny vo. Tra cu cc ti liu cho cng c HTML
Help hiu thm v cc tp tin no c yu cu trong mt tnh hung cho
trc.

10 Lp trnh hng i tng


10.1 Gii thiu v i tng
T u quyn n gi, chng ta ch s dng bin cha nhng d liu tm thi
trong ng dng, chng hn nh nhng gi tr do ngi s dng nhp vo qua giao
din. Tuy nhin, y ch l mt phn nh ca VB. VB 6 thc cht l mt cng c
lp trnh hng i tng rt mnh.
Bn c th cho rng k thut ny vt qu kh nng mt ngi mi hc lp trnh
VB. Tuy nhin, khng hn nh vy. Lp trnh hng i tng (Object Oriented
Programming OOP) gip lp trnh d dng hn.
Cc v d dng trc y c lp trnh theo kiu lp trnh c in. iu ny
khng c g sai bi v y l nhng chng trnh nh v vic s dng OOP cho
chng cng khng ph hp. Vi kiu lp tnh c in, cn gi l Pht trin phn
mm theo cu trc (Structured Software Development), ta phi xc nh d liu
cng nh cch thc x l d liu trong ng dng. Mt giao din ngi s dng
c cung cp hin th v nhn d liu t ngi s dng, sau , cc hm v
th tc con c xy dng thc s x l d liu. iu ny c v n gin.
gii quyt mt vn ln, ng dng chia thnh nhiu vn nh gii quyt
mt vn ln, ng dng chia thnh nhiu vn nh gii quyt trong cc
hm / th tc.
OOP hi khc mt cht. Vi lp trnh c cu trc, cch thc xy dng ng dng,
cch chng kt hp mc chng trnh rt khc bit vi thc t cuc sng. Ly
mt ng dng tnh lng lm v d. Khi nhn vin c nhn vo lm vic, cc
thng tin v nhn vin s c nhp vo h thng tnh lng. S dng k thut
lp trnh c cu trc, ta s dng mt biu mu cha cc thng tin ca nhn vin
v vit chng trnh copy tt c thng tin nhp vo biu mu vo CSDL
cha u trn mng cng ty. to ra phiu tr lng, ta cn c mt biu
mu in phiu tr lng cho php NSD chng trnh chn mt nhn vin s tr
lng, ri vit chng trnh thu thp tt c thng tin t CSDL v nh dng n
ri a ra my in.
Ta c th thy rng, gii php ny nng v k thut v nghing v x l my tnh
hn l cch thc hin trong thc t cuc sng. Lp trnh hng i tng s lm
cho mi chuyn tr nn n gin hn nhiu.
Vi OOP, ta vit mt chng trnh da trn cc i tng ca thc t cuc sng.
V d, nu ta ang vit mt ng dng tnh lng, i tng m ta cn lm vic s
l phng ban v nhn vin. Mi i tng ny c cc thuc tnh: v d, mt nhn
vin c tn v s; mt phng ban c v tr v trng phng. Thm vo , c mt s
phng thc phng pht lng p dng cho cc i tng trn - mi thng mt
ln, n quyt nh p dng phng thc pht lng cho cc i tng nhn vin.
Lp trnh OOP cng tng t nh th: Ta quyt nh i tng no l cn thit,
i tng c nhng thuc tnh no, v ta s p dng nhng phng thc no cho
i tng.
Ta c th thy rng, y l gii php ht sc gn gi vi nhng vn ca thc t
cuc sng m ta thng xuyn gp phi. Nhn vin c xem l i tng trong
mt ng dng, v phng ban l i tng c lin quan vi nhn vin.
Vi lp trnh c cu trc, ta c xu hng xem d liu v cch thc x l d liu l
hai phn tch bit nhau, hon ton khc vi cc i tng v cch x l trong thc

t cuc sng m ta vn thng lm. Vi OOP, ta ng gi d liu v cc chc


nng x l d liu trong mt i tng (Object) ging ht vi i tng trong
thc t cuc sng. Nhn vin c tn v a ch, v vy, y s l cc thuc tnh ca
i tng Nhn vin - d liu. Nhn vin c th c nhn vic v b ui vic, v
vy, y s l cc phng thc ca i tng Nhn vin chc nng.
Bng cch chia ng dng thnh nhiu i tng v pht trin trn cc i tng, k
thut ny gn gi hn vi i sng. N gip to ra nhng chng trnh d c d
bo tr. K thut ny cng l chn la ca nhiu cng ty ln pht trin trong phn
mm.

10.1.1i tng trong VB


Nh vy cc l thuyt trnh by trn y th hin nh th no trong VB? Khi ta
quyt nh t mt hp vn bn vo biu mu, ta c phi gi th tc con to
hp vn bn, mt th tc con khc t hp vn bn vo v tr, ri gi mt th
tc con khc na nh gi tr khi ng? Ta c phi lun gi mt hm mi khi
ngi s dng nhp mt gi tr bt k vo hp vn bn? D nhin khng phi nh
vy.
Nhng g ta cn lm l ko v th mt i tng (hay mt iu khin), chng hn
nh hp vn bn vo biu mu, ri dng cc thuc tnh sa i cch th hin
chng. Khi ngi s dng nhp d liu vo hp vn bn, hp vn bn s thng
bo cho ta bit thng qua cc s kin Change v s kin KeyPress. Mc d trc
y, bn khng nhn ra iu ny, nhng mt mc no , bn thc hin
lp trnh hng i tng ri .
Ngoi cc i tung hay iu khin c cung cp sn, VB cn cho php lp trnh
vin to ra cc i tng thng qua c ch modul lp (Class module). Trong lp
Modul, ta nh ngha cc thuc tnh v phng thc ca mt i tng. Sau khi
hon tt, s dng i tng, trc ht, ta to ra i tng v gi cc hm / th
tc trong modul lp.
Cc i tng ny c mt s c tnh chung:

Tng i tng phi c chc nng tng qut, c nh ngha va


hiu nhng kh mm do c th s dng c; nhng cho php pht trin
thm tu theo yu cu. V d, mt nt lnh phi c chc nng chung l nhn
vo thi hnh mt cng vic g . Tuy nhin, cch th hin v hot ng ca
n trong tng trng hp c th thay i cht t tu theo cch ta ci thuc tnh
v vit code cho phng thc phn nh vi s kin.

i tng giao tip bn ngoi thng qua thuc tnh, phng thc, v s
kin c nh ngha trc cho n. T hp ca 3 khi nim ny gi l giao
din (Interface). l nhng yu t cn bit v mt i tng s dng
chng.

C th s dng nhiu i tng trong mt n, ta cng c nhiu th hin


khc nhau ca mt kiu i tng.

Ngi s dng i tng khng cn quan tm n cch lp trnh bn trong


i tng.

Bi v ngi s dng ch thy i tng iu khin, ta c th thay i


hot ng bn trong ca i tng sao cho nhng thay i ny khng nh
hng n ng dng ang dng, ngha l khng thay i Interface.

10.1.2Modul Lp
Khun mu to i tng l modul lp. Sau ny, modul lp cn c dng
to iu khin ActiveX, mt k thut cao hn ca lp trnh hng i tng.
Trong bc lp trnh cn bn vi VB, ta dung modul cha cc hm hay th tc.
Tu theo tm hot ng ca hm / th tc ny, ta c th gi chng trc tip t
modul.
Nhng modul lp th khng bao gi c gi trc tip. s dng mt lp, ta
phi to i tng t lp thng qua lnh New.
y i tng c to t lp MyClass, cn bin i tng MyObject cung cp
mt tham chiu n i tng.
Dim MyObject As New myClass
Dng lnh trn to mt i tng gi l MyObject theo m t ca lp MyClass.
Hnh ng ny gi l to mt Instance t lp.Trong ca s Properties, ta c th
phn bit tn lp v tn i tng. Combo1 l tn i tng, trong khi ComboBox
l tn lp.
Ta c th to ra v s Instance t mt lp. Mi Instance c th khc nhau mt cht
tu theo cch ta quy nh thuc tnh v s dng phng thc.
10.1.2.1 Thuc tnh v phng thc ca lp
Bn trong mt lp, ta c th tc phng thc (Method Procedures) v th tc
thuc tnh (Property Procedures). Quy nh mt thuc tnh, ngha l ta ang gi
hm x l s kin Property Let.
Trong VB4, modul lp cn rt th s. n VB5, n bt u h tr gn gi hn cho
lp trnh hng i tng. V d: ta c th to ra nhng iu khin c th kt hp
trong mi trng pht trin VB (v nhng ngn ng khc). Thuc tnh ca chng
hin th trong ca s Properties, nhng s kin ca chng xut hin trong danh
sch th xung cha trong c s Code.
Trong VB6, phin bn Professional v Enterprise h tr Trnh xy dng Lp (Class
Builder) gip lp trnh vin lm vic rt d dng vi lp. N cung cp mt lot cc
hp thoi, hng dn ta tng bc to lp. Tuy nhin, trong v d ny, hiu
t chc mt lp, ta s to bng tay.

V d mu - Thit k lp c chc ng di chuyn hp trn mn hnh:

1. To n mi, kiu Standard EXE.


2. T menu Project, chn Add Class Module.
3. Chn Class Module v nhn Open. Ca s Code s hin th. Nu nhn vo
ca s Project Explorer, ta s thy mt lp mi xut hin.
4. V ta mun to mt lp Box, nn ta i tn lp Class1 sao cho gi nh:
clsBox. Cm t cls th hin y l lp, nh , chng trnh tr nn d c
hn. thc hin iu ny, tm lp Class1 trong ca s Properties, i thuc
tnh Name ca n thnh clsBox.

10.1.2.1.1 Thuc tnh ca Lp Public v Private


Lp Box c 4 thuc tnh l to gc tri trn (X,Y), chiu cao ( Height) v chiu
rng (Width). By gi ta cn khai bo cc thuc tnh trn l Public hay Private.

Khi mt thuc tnh c khai bo l Public trong mt lp, n s c s dng bi


bt k on chng trnh no c s dng lp ny. Tri li, nu thuc tnh l
Private trong mt lp th n s khng c truy cp bi bt c on chng trnh
no khc.
Ta th tm hiu v thuc tnh Public. So snh cch khai bo ca mt thuc tnh
Public vi mt bin Public. y, bin Public trong mt lp ging nh mt bin
Public bt k no khc, ch c iu l khi ta x l n trong chng trnh th ging
nh ta ang x l vi mt thuc tnh.
V d, nu ta khai bo thuc tnh X l mt bin Public, sau , khai bo mt i
tng gi l MyBox da trn lp ny, ta c dng lnh sau:
MyBox.X = 1000
Tham chiu n X tng t nh khi ta x l vi mt thuc tnh thng thng trn
cc i tng hoc iu khin bt k khc. Nhng nhng g chng ta lm l cho
php ngi s dng i tng ca chng ta i X thnh gi tr m h mong mun.
By gi ta s khai bo X l thuc tnh Public, n cng tng t. Nhng n cng
khng ging hn. i vi thuc tnh Public, mi khi n b i gi tr, mt on
chng trnh bn trong lp s thi hnh. Trong on chng trnh ny, ta c th
quyt nh ta mun gi tr no m ngi s dng ch ra, v nu khng th lm
mt tc v g . Do , s khc nhau gia bin v thuc tnh l: thuc tnh lun c
mt on chng tnh chy bn trong mi khi n c truy cp.
Dng thuc tnh thay cho bin cng hn ch kh nng sai st v gi tr truyn vo
lp c kim nghim nh on chng trnh kim tra bn trong lp.
Trong thc t, thuc tnh hu dng hn bin v i khi ta cn mt x l hn l ch
gn gi tr. V d, i thuc tnh Color ca mt hp vn bn hiu chnh lm n i
mu trn mn hnh. y l mt tc v khng th thc hin c vi bin. on
chng trnh bn trong s gi mt phng thc thi hnh tc v ny.
V d mu Thm thuc tnh vo lp.
1. Ta khai bo bin cha gi tr thuc tnh
Option Explicit
Private mvarX As Integer
Bin ny c tm hot ng bn trong modul lp.
2. Thm chng trnh vo thuc tnh X:
Public Property Let X(ByVal vData As Integer)
mvarX = vData
End Property
Public Property Get X() As Integer
X = mvarX
End Property
on chng trnh ny khng thi hnh trc tip tr phi n c gi thng qua thuc
tnh i tng.
Dim MyBox As New clsBox
MyBox.X = 100
Khi ta gn gi tr 100 cho thuc tnh X, thc cht, ta ang gi th tc Property Let
X:
Public Property Let X(ByVal vData As Integer)
mvarX = vData
End Property

Gi tr 100 truyn cho tham s vData. Sau , n c gn cho bin cc b mvarX,


ngha l thuc tnh c thay i v cha vo i tng. xem gi tr thuc
tnh, ta gi:
New_Position = MyBox.X
Ngha l th tc Property Get X thi hnh:
Public Property Get X() As Integer
X = mvarX
End Property
o Th tc Property Let c gi khi i gi tr thuc tnh. Gi tr i s c
cha vo mt bin cc b bn trong lp.
o Th tc Property Get c gi khi cn c gi tr thuc tnh. Gi tr cha
trong bin cc b c tr v Property Get.
Tuy nhin, hai th tc thuc tnh ny ch lm vic vi cc kiu d liu c bn nh
Variant, String, Integer...i vi thuc tnh cha i tng, thay v dng Property
Let, ta dng Property Set. V d:
Public Property Set Font (Byval New_Font As stdFont)
Set mvarFont = New_Font
End Property
nh thuc tnh Font ca i tng MyObject t ng dng, ta gi cho n i
tng Font myFont. Tuy nhin, m bo VB dng th tc Property Set, ta t
t kho Set trc thuc tnh:
Dim myFont As New StdFont
myFont.Name=Courier
myFont.Bold=True
Set MyObject.Font = myFont
Tng t, ta hon tt cc thuc tnh cn li ca lp clsBox.
3. Trong phn General Declarations, thm cc bin cc b.
Option Explicit
Private mvarY As Integer
Private mvarWidth As Integer
Private mvarHeight As Integer
4. Thm cc th tc tip theo:
Public Property Let Y(ByVal vData As Integer)
mvarY = vData
End Property
Public Property Get Y() As Integer
Y = mvarY
End Property
Public Property Let Width(ByVal vData As Integer)
mvarWidth = vData
End Property
Public Property Get Width() As Integer
Width = mvarWidth
End Property
Public Property Let Height(ByVal vData As Integer)
mvarHeight = vData

End Property
Public Property Get Height() As Integer
Height = mvarHeight
End Property
5. Lu modul thnh tp tin clsBox.cls
6. n y, ta cn 2 phng thc na l v hp (DrawBox) v xo hp
(ClearBox). C 2 phng thc c mt tham s truyn l i tng v hp
ln. N c th l biu mu, hp hnh...

10.1.2.1.2 Phng thc ca Lp

V d mu Thm phng thc cho lp

Thm on chng trnh sau vo modul lp:


Public Sub DrawBox(Canvas As Object)
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + mvarHeight),,
B
End Sub
on chng trnh ny s dng phng thc Line ca i tng Canvas. Phng
thc Line s v mt hp trn biu mu nu ta a vo tham s cui cng B (B c
ngha l hp box).
8. K n, ta thm ClearBox vo Lp:
Public Sub ClearBox(Canvas As Object)
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight), Canvas.BackColor, B
End Sub
9. Lu modul vi tn clsBox.cls
V 2 th tc ny s c dng lm phng thc ca i tng, nn chng c
khai bo Public, ngha l chng c th c gi t bn ngoi modul.
7.

10.1.2.2 To Instance cho lp

V d mu - To hot hnh vi i tng hp

1. Nu bn ang m n trong v d trc, ch cn nhn p chut ln biu


mu m ca s Code. Nu khng, to n mi kiu Standard EXE. T
menu Project, chn Add Class Module; sau , chn tab Existing trong hp thoi
v chn clsBox.cls.
2. Tm s kin Click trong hp danh sch v a on chng trnh sau vo:
Dim A_Box As New clsBox
Bin i tng A_Box s gi mt Instance ca lp. T kho New rt quan trng,
nu thiu n, VB s cho rng ta mun to mt bn sao ca i tng clsBox hin
hnh. Khi tham chiu n n, ta s gp li.
3. a on chng trnh s dng i tng:
Private Sub Form_Click()
Dim A_Box As New clsBox
Dim nIndex As Integer
With A_Box
.Y = 0
.Width = 1000
.Height = 1000
For nIndex = 0 To 1000

.ClearBox Me
.X = nIndex
.DrawBox Me
Next
End With
End Sub
4. Thi hnh chng trnh. Nhn chut vo biu mu, ta s thy hp trt dc
theo biu mu.

10.1.2.2.1 Kim tra gi tr thuc tnh


Trong th tc thuc tnh Property Let X, nu ta truyn vo chui k t Hello
World, trnh bin dch s bo li.
Public Property Let X(ByVal vData As Integer)
mvarX = vData
End Property
Tuy nhin, nu ta truyn vo s -7983, hp chc chn s khng hin th trn biu
mu. Ta c th cm iu ny bng cch:
Public Property Let X(ByVal vData As Integer)
if vData >0 Then mvarX = vData
End Property
i tng s b qua gi tr m truyn vo.

10.1.2.2.2 Thuc tnh ch c c (Read Only)


i vi thuc tnh ch c c, ta khng th thay i gi tr thuc tnh. Mun vy,
ta ch cn loi b th tc Property Let trong modul lp.

10.1.3Tham s tu chn
Ta c th s dng tham s tu chn trong cc phng thc, thm ch cc th tc
ca thuc tnh. V d, ta c th thm tham s mu cho phng thc DrawBox. Khi
, ch vi phng thc DrawBox, ta c th v hoc xo hp m khng cn gi
ClearBox.
V d mu Dng tham s tu chn
1. Dng chng trnh. Trong ca s Project Explorer, nhn p chut ln
clsBox m ca s Code.
2. Tm phng thc ClearBox, nh du khi th tc v nhn phm Delete
xo n i.
3. Sa phng thc DrawBox thm vo tham s tu chn mu:
Public Sub DrawBox(Canvas As Object, Optional lColor As Long)
If IsMissing(lColor) Then
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight),, B
Else
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight), lColor, B
End If
End Sub

4. n y, chng trnh cha th bin dch, v vn cn mt dng lnh tham


chiu n phng thc ClearBox.
.DrawBox Me
Xo dng ny v thay th bng dng lnh
.DrawBox Me, Me.BackColor
5. Thi hnh chng trnh. Khng c thay i trong kt qu.
T kho Optional cho bit tham s pha sau n khng nht thit phi truyn khi gi
phng thc. bit c khi no c tham s c truyn, ta dng hm
IsMissing. Hm ny tr v gi tr True/False. Nu khng c tham s truyn, n tr
v True; nu c, n tr v False. Tu theo trng hp m ta c x l tng ng.
y, khi c tham s truyn, ta gi hm Line c ch nh mu.
Lu rng tham s tu chn phi l tham s cui cng trong danh sch c
truyn. V d, dng lnh sau y khng c chp nhn:
Public Sub MyRoutine (Optional sName As String, nAge As Integer)
Ta phi sa thnh:
Public Sub MyRoutine (nAge As Integer, Optional sName As String)
Thn trng:
Mc d tham s tu chn c tnh linh hot, gip ta gim s dng chng trnh,
nhng n cng cho ta nhng rc ri km theo.
Mt trong nhng l do chuyn t lp trnh theo cu trc sang lp tnh hng i
tng l lm cho chng tnh d c, d hiu, d xy dng v d bo tr. Tham s
tu chn lm gim tnh an ton v tng phc tp ca chng trnh khi ta cn g
ri.
Tham s tu chn cung cp tnh nng ti s dng chng trnh, gip to ra cc i
tng hay thnh phn a mc ch nhng ta phi cn thn v t hi: thm vo th
c li ch g cho th tc ca ta, hay l chng trnh s tt hn nu ta khng dng
n?

10.1.4S kin ca lp
nh ngha s kin cho lp c trong VB5. N vn hu dng vi VB6. Chng hn
ta mun mi ln hp c v trn mn hnh, s kin Draw gy ra hot ng cp
nht trn mn hnh.
V d - nh ngha v kch hot s kin
1. nh ngha s kin Draw. Mt trong nhng thng tin cn cp nht l to
(x,y) ca hp. M ca s Code v thm dng lnh sau vo phn General
Declarations:
Public Event Draw(X As Integer, Y As Integer)
Tuy nhin, dng lnh ny cha th hin lc no th s kin c kch hot.
2. Ta mun s kin Draw c sinh ra mi khi hp c v trn biu mu.
Tm phng thc DrawBox v thm dng lnh in m vo cui ca phng
thc ny:
Public Sub DrawBox(Canvas As Object, Optional lColor As Long)
If IsMissing(lColor) Then
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight),, B
Else
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight), lColor, B
End If

RaiseEvent Draw(mvarX, mvarY)


End Sub
3. Tm th tc x l s kin Click ca biu mu. Tm v xo dng lnh to
i tng A_Box v thm mt dng vo phn General Declarations:
Private WithEvents A_Box As clsBox
Private Sub Form_Click()
Dim nIndex As Integer
With A_Box
.Y = 0
.Width = 1000
.Height = 1000
For nIndex = 0 To 1000
.DrawBox Me, Me.BackColor
.X = nIndex
.DrawBox Me
Next
End With
End Sub
4. Thm mt dng vo s kin Form_Load:
Private Sub Form_Load()
Set A_Box = New clsBox
End Sub
5. Chn A_Box t danh sch trong ca s Code. Chn s kin Draw t danh
sch cc s kin.
6. Trong s kin ny, ta dng lnh Print in ra to ca hp trong ca s
g ri (hay cn gi l ca s Immediate)
Private Sub A_Box_Draw(X As Integer, Y As Integer)
Debug.Print "The box just got drawn at " & X & ", " & Y
End Sub
7. Thi hnh chng trnh. Nhn chut trn biu mu, ta thy hp trt qua
mn hnh. ng thi trong ca s Immediate, ta thy cc dng vn bn hin th
to hin hnh ca hp.
y, ta dng phng thc RaiseEvent yu cu VB pht ra s kin Draw, v
truyn 2 gi tr ca 2 bin thuc tnh mvarX v mvarY cha to (x, y) ca hp
cho s kin Draw mi.
c th x l cc s kin ca mt i tng t to, ta cn khai bo i tng
hi khc mt cht. Trc ht, n phi c khai bo l Private trong biu mu
(hoc modul), thay v l Private trong mt th tc. Sau , ta phi dng t
WithEvents thay v Dim:
Private WithEvents A_Box As clsBox
T kha WithEvents bo cho VB bit ta ang khai bo mt i tng c s kin, v
ta d nh vit chng trnh x l nhng s kin ny.
Ch t kho New b loi b trong dng lnh WithEvents. Khi ta vit:
Dim A_Box As New clsBox
Ngha l khng ch thng bo cho VB rng ta sp s dng mt i tng da theo
lp clsBox, ta cn yu cu VB cp pht vng nh cho i tng v to n. Tuy
nhin, do hn ch ca VB, iu ny khng c thc hin vi t kho
WithEvents. Thay vo , ta phi to i tng ring, bng cch thm dng lnh
vo s kin Form_Load.
Tm li, i vi s kin, ta cn nh:

o
Khai bo s kin dng Public Event.
o
Pht s kin dng RaiseEvent
o
To i tng vi Dim WithEvents, khng dng New.
o
To i tng nh sau:
Set <i tng> = New <lp>
o
Vit chng trnh bt s kin tng t x l s kin ca iu
khin.

10.1.5Hu i tng
Sau khi s dng mt i tng v khng cn dng na, ta cn hu n i. iu ny
c bit quan trng khi ta s dng nhiu i tng trong ng dng. Nu khng
hu i tng, s hao ht vng nh s lm gim kh nng hot ng ca ng
dng. Ta dng dng lnh sau:
Set <i tng> = Nothing
Ni l tng hu mt i tng l trong s kin Unload ca biu mu.
V d:
Private Sub Form_Unload (Cancel As Integer)
Set A_Box = Nothing
End Sub

10.2 Bin i tng


Cho n by gi, ta ch tham chiu n iu khin hay biu mu thng qua tn ta
t cho chng lc thit k. Cch lm ny ch ph hp i vi cc chng tnh n
gin. t i tng vo bin v tham chiu n n bng tn bin cho php ta s
dng cng on chng trnh cho v s cc instance khc nhau ca mt kiu i
tng.
Vi bin i tng ta c th:
o
To iu khin mi trong lc thi hnh.
o
Copy iu khin sinh ra mt instance mi ca iu khin hin
hnh.
o
To bn sao biu mu cng tn, cng iu khin v chng trnh;
nhng tng biu mu cha v x l nhng d liu khc nhau tng t
nhiu ti liu trong ng dng ca Word hay nhiu bng tnh trong Excel.
Bin i tng cung cp kh nng xy dng cc th tc tng qut x l vi
nhng iu khin nht nh. V d, mt th tc kim tra d liu ca hp vn bn
ch dng trong trng hp tn iu khin c ch ra trong chng tnh. Tuy nhin,
th tc tr thnh c lp vi iu khin bt k, ta xem iu khin nh mt
bin i tng.
Dim NewEmployee As New cEmployee

10.2.1To iu khin lc thi hnh


Cch n gin nht l to mt mng iu khin vo lc thit k, sau , m rng
mng bng chng trnh lc thi hnh. Nu ta nh thuc tnh Index ca iu khin
u tin l 0 lc thit k, ta c thm iu khin lc thi hnh. iu khin to lc thi
hnh c cng tn, kiu, v th tc x l s kin nh iu khin ban u.

Tng t bin mng, ta c th m rng hoc rt gn mng iu khin. im khc


nhau l ta khng Redim mng iu khin nh vi bin mng. Thay vo , ta phi
Load bn instance mi ca iu khin vo mng. Khi mun xo iu khin, ta
Unload chng.
V d mu - To iu khin lc thi hnh
Th to mt dy cc nt lnh trn biu mu. V mt nt lnh lc thit k v dng
chng trnh to phn cn li.
1. To n mi v v mt nt lnh trn biu mu.
2. i thuc tnh Index thnh 0. Khi y mt mng iu khin c mt phn t
c to ra.
3. a on chng tnh sau vo th tc Click ca nt lnh:
Private Sub Command1_Click(Index As Integer)
Static sNextOperation As String
Dim nIndex As Integer
For nIndex = 1 To 5
If sNextOperation = "UNLOAD" Then
Unload Command1(nIndex)
Else
Load Command1(nIndex)
With Command1(nIndex)
.Top = Command1(nIndex - 1).Top + Command1(nIndex - 1).Height
.Caption = nIndex
.Visible = True
End With
End If
Next
If sNextOperation = "UNLOAD" Then
sNextOperation = "LOAD"
Else
sNextOperation = "UNLOAD"
End If
End Sub
4. Thi hnh on chng trnh v nhn trn nt lnh vi ln. Mi ln nhn, 5
nt lnh c to hoc xo.
5. Lu vo a vi tn NewCtrl.vbp
Vng lp For...Next to hoc xo nt lnh ny tu theo ni dung bin
sNextOperation. Trc ht, ni dung ca sNextOperation c kim tra xem
cn Load hay Unload cc phn t. Ln u, sNextOperation cha c gn, n ri
vo phn False, ngha l Load.
Bi mc nh, iu khin mi to lc thi hnh xut hin ti cng v tr vi iu
khin gc, v khng hin th. Do , ta c th i v tr v iu chnh kch c m
khng ngi s dng thy. N cng cm Windows v li mi ln np cc iu
khin, khng nhng lm chm chng trnh m cn hin th khng c trt t trong
khi ta ang di chuyn chng. Ta ch cho chng hin th sau khi c v tr mi.

10.2.2S kin ca mng iu khin


Mc d hin th khc nhau, 6 phn t vn chia s mt th tc x l s kin, v
nhn vo mt nt bt k, chng p ng nh nau. Ta c th x l cc s kin
theo tng nt lnh phn bit, da trn Index ca mng iu khin.
V d mu - X l s kin vi mng iu khin
1. M n NewCtrl.vbp v chn s kin Click trn nt lnh.
2. Thm on chng trnh sau vo:
Private Sub Command1_Click(Index As Integer)
Static sNextOperation As String
Dim nIndex As Integer
Select Case Index
Case 0
For nIndex = 1 To 5
If sNextOperation = "UNLOAD" Then
Unload Command1(nIndex)
Else
Load Command1(nIndex)
With Command1(nIndex)
.Top = Command1(nIndex - 1).Top + Command1(nIndex - 1).Height
.Caption = nIndex
.Visible = True
End With
End If
Next
If sNextOperation = "UNLOAD" Then
sNextOperation = "LOAD"
Else
sNextOperation = "UNLOAD"
End If
Case 1, 2, 3, 4, 5
MsgBox "You pressed Button " & Index
End Select
End Sub
3. Thi hnh chng trnh. Nhn chut trn tng nt lnh, mt thng ip xut
hin cho bit th t nt nhn.

10.2.3Qun l iu khin nh bin i tng


Khng ch dng bin i tng nh mng iu khin, ta cn c th truyn bin i
tng v mng i tng vo th tc hay hm.
V d, ta c khong 30 hpp vn bn trn biu mu, tng ci nhn d liu khc
nhau. Mt s ch nhn kiu s, mt s ch nhn ch ci, s khc chp nhn c hai,
trong khi s cn li kim tra s k t nhp vo xem c vt qu s lng quy nh
khng? Nu x l ring r tng iu khin, ta s tn rt nhiu on chng tnh.
Gii php l xem hp vn bn nh mt i tng, v truyn n n mt th tc
tng qut.

10.2.3.1 Hm kim tra hp vn bn


Hm ny s t ng bit kiu d liu m mi hp vn bn cng nh chiu di ti
a ca d liu.
V d mu - Kim tra hp vn bn
1. To n mi v v mt biu mu gm cc iu khin nh sau:

2. Thit lp thuc tnh cho hp vn bn nh sau:


M t
Thuc tnh Gi tr
Hp alphabetic only (ch Name
txtValidate
nhn ch)
Index
0
Tag
A12
Hp Numbers (ch nhn Name
txtValidate
s)
Index
1
Tag
N5
Hp Anything (nhn mi Name
txtValidate
th)
Index
0
Tag
*4
Lu rng ch ci trong thuc tnh Tag trong ca s Properties phi l ch in hoa,
nu khng v d khng hot ng.
3. Phn cn li l vit chng trnh. M ca s Code, a on chng trnh
sau vo:
Option Explicit
Private Sub ValidateKeyPress(txtControl As TextBox, nKeyAscii As Integer)
Dim sMaxLength As String
Dim sKey As String * 1
If nKeyAscii < 32 Or nKeyAscii > 126 Then Exit Sub
sMaxLength = Right$(txtControl.Tag, Len(txtControl.Tag) - 1)
If Len(txtControl.Text) >= Val(sMaxLength) Then
Beep
nKeyAscii = 0
Exit Sub
End If

Select Case Left$(txtControl.Tag, 1)


Case "A"
sKey = UCase(Chr$(nKeyAscii))
If Asc(sKey) < 65 Or Asc(sKey) > 90 Then
Beep
nKeyAscii = 0
Exit Sub
End If
Case "N"
If nKeyAscii < 48 Or nKeyAscii > 57 Then
Beep
nKeyAscii = 0
Exit Sub
End If
End Select
End Sub
4. Thi hnh chng trnh.
ValidateKeyPress l th tc mc biu mu v c khai bo trong phn General.
nKeyAscii l m ca phm nhn. V t kho ByVal khng c nu ra, nn tham s
c truyn bng tham chiu. i KeyAscii v 0 trong s kin KeyPress ngha l
phm nhn.
Thuc tnh Tag c dng nh mt nhn ring a nng cho cc iu khin. N cho
bit kiu d liu c cho php trong mi hp vn bn. K t u tin nh ngha
kiu d liu cho php, A ngha l ch c ch ci, N ngha l s, cn li l cc
kiu khc. Con s k tip quy nh s k t ti a trong mi hp vn bn.
Ta c th i kiu d liu ca mi hp vn bn bng cch i thuc tnh Tag trong
ca s Properties.
Giai on u tin, chng tnh kim tra nKeyAscii cho cc k t c bit. Nu
chng c nhn, phm s c b qua.
If nKeyAscii < 32 Or nKeyAscii > 126 Then Exit Sub
Dng lnh k ly gi tr t thuc tnh Tag a vo bin sMaxLength.
Sau , kim tra chiu di ti a:
If Len(txtControl.Text) >= Val(sMaxLength) Then
Beep
nKeyAscii = 0
Exit Sub
End If

Select Case so snh phm k t vi kiu d liu quy nh trong thuc tnh Tag. Hm
Chr$ chuyn m k t nKeyAscii thnh chui k t tng ng. Hm Asc lm
ngc li v tr v m k t ASCII ca mt k t.

10.2.4Khai bo bin i tng


Ta c th khai bo mt bin i tng mt cch tng minh nh khai bo bin
thng thng bng cch cung cp mt kiu d liu m VB nhn ra.
Dim txtControl As TextBox
Chng trnh s hiu qu, d g ri v chy nhanh hn khi khai bo bin i
tng tng minh. Tuy nhin, VB cng cho php khai bo mt bin i tng
n:
Dim cltControl As Control
Tham s hm v th tc c th khai bo kiu ny. N cho php ta truyn mt iu
khin bt k. Sau , dng dng lnh TypeOf kim tra kiu iu khin lin
quan n mt i tng.
Nu khai bo tng minh, VB kim tra thuc tnh ca i tng ngay lc bin dch.
Nu khai bo n, VB ch kim tra thuc tnh lc thi hnh.
10.2.4.1 Kiu ca bin i tng
Sau y l danh sch cc kiu i tng tng minh m VB c th nhn ra:
CheckBox
Data
Grid
Label
OptionButton
TextBox

ComboBox
DirListBox
Frame
Line
OLE
Timer

CommandButton
DriveListBox
HscrollBar
ListBox
PictureBox
VscrollBar

MDIForm
FileListBox
Image
menu
Shape
Form

y l nhng i tng chun. Chng l nhng tn lp v c t k bn tn iu


khin trong ca s Properties.
V d mu So snh khai bo tng minh v n
1. To n mi. V biu mu nh sau:

2. t tn iu khin nhn trng l lblTime, nt lnh l cmdExplicit v


cmdImplicit.
3. M ca s Code, a on chng trnh sau vo:
Private Sub cmdExplicit_Click()
Dim varTime As Variant
Dim nIndex As Integer
varTime = Now
For nIndex = 1 To 15000

Time_Explicit cmdExplicit, nIndex


Next
cmdExplicit.Caption = "&Explicit"
lblTime.Caption = Minute(Now - varTime) & " Mins, " & _
Second(Now - varTime) & " Secs"
End Sub
Private Sub cmdImplicit_Click()
Dim varTime As Variant
Dim nIndex As Integer
varTime = Now
For nIndex = 1 To 15000
Time_Implicit cmdImplicit, nIndex
Next
cmdImplicit.Caption = "&Implicit"
lblTime.Caption = Minute(Now - varTime) & " Mins, " & _
Second(Now - varTime) & " Secs"
End Sub
a 2 th tc sau vo phn (General)
Private Sub Time_Explicit(cmdCommand As CommandButton, nNumber As Integer)
cmdCommand.Caption = nNumber
End Sub
Private Sub Time_Implicit(cmdCommand As Control, nNumber As Integer)
cmdCommand.Caption = nNumber
End Sub
4. Thi hnh ng dng bng cch nhn F5.
5. Khi biu mu xut hin, nhn nt Explicit. Chng trnh bo thi gian hin
th lin tc 15000 tiu khc nhau trn nt lnh. Nt lnh l mt bin i
tng c khai bo tng minh.
6. Nhn chut trn nt Implicit. Mi vic xy ra tng t, nhng ln ny nt
lnh l mt bin i tng c khai bo n.
bn s thy nhn trn Implicit chm hn nhn trn Explicit khong 10%.

10.3 Tp hp
Mi biu mu trong ng dng c mt tp hp cc iu khin ni ti. Trong lc thi
hnh, ta c th dng tp hp truy cp n iu khin trn biu mu. Ta khng
cn bit tn ca mi iu khin, thm ch kiu iu khin. Khc vi mng iu
khin, ta khng cn khai bo, v tt c iu khin trn biu mu c t ng
xem nh mt phn ca biu mu. Khi thm hay xo mt iu khin trn biu
mu, VB t ng qun l vic thm hay xo iu khin trong tp hp.
Truy cp phn t trong tp hp tng t truy cp phn t trong mng thng
thng.
Tp hp rt tin li cho cc biu mu nhp liu. V d, ta c th vit mt th tc
chung duyt qua tp hp ny v tm kim ch nhng iu khin d liu v sau
gn cho thuc tnh CSDL ca chng mt ng dn n tp tin CSDL ca
khch hng.

Khc vi mng iu khin, tp hp iu khin khng h tr cc s kin. Tuy


nhin, tng iu khin trong tp hp u c nhng thuc tnh, phng thc v s
kin.

10.3.1Thuc tnh Controls


Thuc tnh Controls ca biu mu ch c truy cp thng qua chng tnh. N
thc cht l mt mng cc bin i tng, trong , mi phn t ca mng l mt
iu khin n: phn t s 0 l iu khin u tin trn biu mu, phn t s 1 l
iu khin th 2...
S th t trong mng c gn t ng khi ta v iu khin ln biu mu trong lc
thit k. Nu c 2 hp vn bn trn biu mu, ta c th i thuc tnh Text ca
tng iu khin nh sau:
Form1.Controls(0).Text=Control 0
Form1.Controls(1).Text=Control 1
C php:
<tn biu mu>.Controls(<s th t>).<thuc tnh>=<gi tr>

10.3.2Xc nh iu khin trn biu mu


Mng Controls c mt thuc tnh gi l Count, xc nh s iu khin trn biu
mu. Lu rng mng c nh s t 0. Nu Count l 3, ngha l cc phn t s
nh s ln lt l 0,1,2.
Ta c th dng TypeOf x l vi nhm cc iu khin tng t. Mc d khng
ch ra chnh xc mt phn t, nhng ta c th xc nh cc iu khin cng kiu.
For cControlNo = 0 To Form1.Controls.Count 1
If TypeOf Form1.Controls(nControlNo) Is TextBox Then
:
:
End if
Next
Ta duyt qua tng phn t ca tp hp trn Form1 t 0 n phn t cui cng,
Count 1. Vi tng iu khin, ta dng TypeOf kim tra xem n c phi l hp
vn bn hay khng.
Tuy nhin, lm vic trn ch mc hi th thin, ta dng cch khc trc quan hn:
For Each objControl In Form1.Controls
If TypeOf objControl Is TextBox Then
:
:
End if
Next
V d mu -i mu
Dng mng iu khin i mu cc iu khin trn biu mu.
1. To n mi v v cc iu khin ln biu mu nh sau:

Lu rng ta cn t 2 iu khin khung ln biu mu, sau thm cc iu


khin khc ln trn. Khi , mi ln di chuyn khung, iu khin cng s di
chuyn theo.
2. t tn biu mu l frmColors v tn nt lnh ln lt l cmdBackground,
cmdForeground, cmdQuit. Tn hp nh du ln lt l chkCheckBoxes,
chkFrames, chkTextBoxes v chkLabels.
3. Thm mt iu khin hp thoi thng dng vo biu mu v t tn l
dlgColors.
Lu rng nu iu khin cha c trong hp cng c, chn Components... t
menu Project, sau , nh du chn Microsoft Common Dialog Control 6.0.
4. Vit chng trnh cho nt Background:
Private Sub cmdBackground_Click()
Dim nColor As Long
Dim FormControl As Control
On Error GoTo BackcolorError
dlgColors.CancelError = True
dlgColors.Flags = &H1&
dlgColors.ShowColor
nColor = dlgColors.Color
For Each FormControl In frmColors.Controls
If TypeOf FormControl Is TextBox And chkTextBoxes.Value = 1 Then
FormControl.BackColor = nColor
If TypeOf FormControl Is Frame And chkFrames.Value = 1 Then
FormControl.BackColor = nColor
If TypeOf FormControl Is Label And chkLabels.Value = 1 Then
FormControl.BackColor = nColor
If TypeOf FormControl Is CheckBox And chkCheckBoxes.Value = 1 Then
FormControl.BackColor = nColor
Next
Exit Sub
BackcolorError:
MsgBox ("You pressed the cancel button.")

End Sub
5. Chng trnh cho nt Foreground:
Private Sub cmdForeground_Click()
Dim nColor As Long
Dim FormControl As Control
On Error GoTo ForecolorError
dlgColors.CancelError = True
dlgColors.Flags = &H1&
dlgColors.ShowColor
nColor = dlgColors.Color
For Each FormControl In frmColors.Controls
If TypeOf FormControl Is TextBox And chkTextBoxes.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is Frame And chkFrames.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is Label And chkLabels.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is CheckBox And chkCheckBoxes.Value = 1 Then
FormControl.ForeColor = nColor
Next
Exit Sub
ForecolorError:
MsgBox ("You pressed the cancel button.")
End Sub
6. Vit chng trnh cho nt Quit:
Private Sub cmdQuit_Click()
' Quit the application by unloading the form
Unload frmColors
End Sub
7. Thi hnh chng trnh. Chn vo hp nh du chn kiu iu khin ta
mun i mu, nhn nt Background hay Foreground thi hnh vic i.
Mt hp thoi mu xut hin cho php ta chn mu.
Thuc tnh CancelError ca iu khin hp thoi thng dng c quy nh l
True, ngha l li s 32755 c pht s gi chng trnh trc tip by li.
Vng lp For Each...Next duyt qua tng iu khin trong tp hp, t tng phn
t vo bin i tng FormControl Dng TypeOf kim tra kiu iu khin.
Lu dng t kho Is vi TypeOf thay v dng du kim tra bng.

10.4 Biu mu MDI


Biu mu MDI cho php nhm cc biu mu v chc nng trong mt ca s ln.
Tuy nhin, biu mu MDI c mt s nhc im: ch c mt vi iu khin c
v trn biu mu MDI. l iu khin nh gi v hp hnh. Trong phin bn
Professional v Enterprise ta c th v thm thanh trng thi v thanh cng c. Hp
hnh v trong biu mu MDI lun c cng b rng vi biu mu v t ng c
t phn trn cng hoc di cng ca biu mu. Ta khng th iu chnh bng
tay. Nu ta c canh tri hoc canh phi, hp hnh s chim ton b biu mu MDI.

10.4.1Biu mu con (Child Form)


Thuc tnh MDIChild ca mt biu mu l mt gi tr True/False cho bit biu mu
c phi l biu mu con trong mt biu mu MDI hay khng. Bi v VB ch cho
php tn ti mt biu mu MDI trong ng dng, biu mu con t ng nhn bit
ca s cha v khi thi hnh, n ch hot ng bn trong ca s cha.
Vo lc thit k, khng th phn bit ca s c lp vi ca s con, ch khc nhau
ch thuc tnh MDIChild m thi. Thuc tnh ny khng gn c vo lc thi
hnh, nu khng, ta s nhn thng bo li trc khi chng trnh treo.
V d mu - Ca s con
1. To n mi v t tn biu mu mc nh l frmChild. i thuc tnh
MDIChild thnh True.
2. T menu Project, chn Add MDI Form to mt ca s MDI v t tn
cho n l frmParent.
3. Thm menu cho biu mu MDI gm 2 mc: New v Exit. t tn cho chng
l mnuFNew v mnuFExit.
4. Thm menu cho ca s con bao gm: File, Edit, View, Options.
5. Vit chng trnh cho menu New
Private Sub mnuFNew_Click()
Load frmChild
End Sub
6. T menu Project, chn Project1 Properties v chn biu mu khi ng l
biu mu MDI.
7. Thi hnh ng dng. Khi mi xut hin, ca s MDI cha c ca s con v
hin th menu ca chnh n. Nu ta chn New t menu File, ca s con hin th.
menu ca biu mu MDI c thay th bng menu ca ca s con. Trng thi
u ca ca s MDI s c phc hi ton b c s con b tt.
8. Lu n vi tn MDIChild.vbp.

10.4.2To Instance ca biu mu


S dng bin i tng to ra nhng bn sao ca mt biu mu. Tng bn sao
c cc iu khin v menu nh nhau, nhng c nhng d liu khc nhau. Mc d
chng trnh cng nh tn bin v tn iu khin nh nhau, nhng d liu c
cha nhng ni khc nhau trong b nh.
V d mu - To Instance ca biu mu
1. M li n MDIChild.vbp. Chon biu mu frmParant.
2. Chn New t menu File ca biu mu MDI. M ca s Code v a on
chng trnh sau vo:
Private Sub mnuFNew_Click()
Dim OurNewForm As New frmChild
OurNewForm.Show
End Sub
3. on chng trnh trn dng bin i tng to mt instance cho ca
s frmChild.
4. Xo ton b menu ca ca s con.
5. Thi hnh chng trnh. Mi ln nhn New, mt ca s mi c to.
6. Lu n vi tn mi bng cch chn Save File Form As... v Save Project
As... t menu File. t tn l MDIChild1.vbp

10.4.3Xc nh biu mu
V ta c th to ra 10 biu mu ng nht c cng tn, nn vic xc nh ca s l
cn thit. T kho Me cho php ta tham chiu n ca s hin hnh, l ca s
ang c focus, hay ni cch khc, l ca s nhn c mi phm nhn hay click
chut bt k.
Ta c th dng:
activeform.txtEmployee.text = Peter
nhng dng me l cch thng dng nht.

10.4.4To danh sch ca s


V d mu - To danh sch ca s
1. M n MDIChild1.vbp. Chn hin th biu mu frmParent
2. To tu chn Window trn menu

a on chng trnh sau vo:


Private Sub mnuWArrange_Click()
frmParent.Arrange vbArrangeIcons
End Sub
Private Sub mnuWCascade_Click()
frmParent.Arrange vbCascade
End Sub
Private Sub mnuWTile_Click()
frmParent.Arrange vbTileHorizontal
End Sub
3. Thi hnh ng dng vi cc menu c to.

Sp xp ca s
Dng phng thc Arrange vi biu mu MDI sp xp cc ca s con. Cc
hng ni ti sau y l cc kiu sp xp c s do VB cung cp:
Gi tr
0

Hng
vbCascade

vbTileHorizontal

vbTileVertical

vbArrangeIcons

M t
Xp cc ca s con theo kiu thc nc tri t
gc tri trn qua gc bn phi di.
Dn u cc ca s con sao cho chng chia mn
hnh thnh nhng di ngang.
Dn u cc ca s con sao cho chng chia mn
hnh thnh nhng di dc.
Cc ca s con c thu nh thnh nhng biu
tng v c xp thng hng.

11 Cng c trong VB6


tmhiuvcccngctrongVBchngtascp
ti
Addin
Cccngctrongaddin
Trnhnggivtrinkhaingdng
VisualBasicchophpnpvgbccAddindngm
rngmitrngtrongphttrinVisualBasic.

11.1 ADD-INS
TmenuAddins,chnAddinsmanager..hpthoiAddin
xuthin

11.2 Cc cng c trong ADD-INS


11.2.1Trnh ci t ng dng
LTrnhnggivtrinkhaingdngscnir
phnsau

11.2.2Trnh i tng d liu t ng


ChctrnphinbnProfessionalvEnterprisecaVB6
Trnhitngdliu(DataObjectWizard)tngto
raccitngtnggia(middletierobject)rng
bucvimitrngdliu(DataEnvironment)hoccc
UserControl.

Nchoph pphtsinh cc onch ngtr nh to ra


ngundli u hi uch nhvUserControlhinthv
thaotcccdliuthngquaccthtclutr.
Lurng,trchttaphitomtDataEnvironmentvi
cclnhlyvhocthaotctrndliutrckhi
dngWizardny.
Cclnhnybaogm:
DnglnhSELECT
CclnhtuchnnhINSERT,UPDATE,DELETE
AddIncdngkhitacn:

ToccRecordsetchophpcpnhttccthtc
lutr
To cc User Control hin th v thao tc vi
CSDL
T ng pht sinh chng trnh ca VISUAL BASIC
thhinmilinhgiaccdliu.
Tocciukhinchophphinthvthaotc
viccmilinhtmkim.
Dngmtbngvnbndhiuthayvmtgitr
khhiu.
CmtvnbndhiuchogitrNull.

11.2.3Trnh xy dng d liu t ng


ChctrnphinbnProfessionalvEnterprisecaVB6
Trnhxydngbiumudliu(DataFormWizard)c
kthpvitrnhtongdng(Applicationwizard),
tobiu(Chart)vli(FlexGrid).
Wizardnycthitktngphtsinhccbiumu
VisualBasicchacciukhinrngbucdliuvcc
thtcdngqunlthngtindnxuttccbngv
cccutruyvn.
TacthdngWizardtoccbiumutmtbnghay
mtcutruyvn,hocmtbiumukiuMaster/Detail
chaccmiquanhphctploimtnhiu.Nus
dnginkhintacthdngbiumukiulihaykiu
mng(datasheet).Wizardchcdngktnivikiu
ADO.
DngWizard:

Thitknhanhchngccbiumuvicciukhin
rngbucvingundliu.
To cc biu mu Master/Detail kiu mt mu tin,
kiuli.

To nhanhchngcc khunm uchobi um udatrn


dli u .

11.2.3.1

To biu mu vi mt bng hay kiu li ( hay datasheet)

Xc nhlo i csdli u :LODBChayAccess


Chntntptincsdliuvkiurngbuctamun
sdngtrnbiumu.Bcnydngchonhngcsd
liukhngphiODBC.
Chnkiubiumu:Cnhiukiu:
Mtmutin:mtthiim,chmtmutinhinth.
ylmcnh.
Bngdliu(Datasheet):Biumuhinthnhngtrng
cchntheodnhbngdliu(Datasheet)dngiu
khinDataGrid.
Master/Detail:MutinMastercnhdnglmtmu
tinvmutinDetaillmtbngdliu(Datasheet).
KhidliutrongMasterthayi,dliutrongDetail
tngthayitheodolinktgia2phnny.
MSHflexGrid:Biumuhinthdliuxptheobng.
MSChart:Biumuhinthdliutheobiu.
Chnrngbuc
iukhinADO
DngchngtrnhcaADO
Dnglpdliu(Dataclass)
Chnngunchomutin
Chniukhintamunxuthintrnbiumuvcho
phpWizardtochngtrnhchochng.lccntAdd,
Update,Edit,Refresh,Close,ShowDataControl.
Ktthc.
11.2.3.2

To biu mu Master/ Detail

XcnhcsdliulODBChayAccess
Chnbiumu(tngtphntobiumutrc)
XcnhngundliuchophnMaster
XcnhngundliuchophnDetail
Xcnhdliuchoktnimtnhiugia Master
vDetail.
Chniukhintamunxuthintrnbiumuv
chophpWizardtochngtrnhchochng.lcc
nt Add, Update, Edit, Refresh, Close, Show data
control.
Ktthc

Biu mu cha iu khin d liu ADO


Thuthpccthngtin cnth i t k tnivi m tngun
dli u ODBCvchophpchnkiurngbuc.Bcnych
xuthinnutachnRemoteODBCbcnhdngcs
dliu.

11.2.4Trnh thit k Add-ins t ng


C trn mi phin bn ca VB 6
Trnh to ng dng t ng ( Application Wizard ) cho php ta lu cc chn la
thnh mt profile dng li v sau, cho php to nhiu ng dng vi cng mt
nh dng. Ta cn c th phng Data form Wizard v Toolbar Wizard t trong Trnh
to ng dng t ng to cc biu mu d liu v thanh cng c. Menu gi
y hon ton c th c hiu chnh.

11.2.5Trnh thit k t ng
Ch c trn phin bn Professional v Enterprise ca VB 6.
Dng trnh thit k Add-in t ng ( Add-in Designer ) bt u quy trnh lp
trnh cho mt Add-in bng cch ch ra cch np mc nh tn, m t, ng dng sau
cng, v cc phin bn. Trnh thit k h tr mt s on chng trnh cho cc
tp tin DLL hay EXE ng k Add-in cho ng dng sau cng.
11.2.5.1

Khi to mt add-in mi

To mt Add-is bng cch chn New Project t menu File. Sau , chn Add-in
trong hp hi thoi New Project.
Trn Tab General, a vo cc thng tin c bn v m t add-in, cc thc np v
cho bit ng dng no qun l n.
Chn Tab Advanced a vo nhng thng tin b sung v cc ti nguyn v cc
gi tr trong Registry.
thm chng trnh cho add-in, nhn p chut ln Add-in Designer.
bin dch add-in, chn Meke exe hay Make add t menu File

11.2.6Tin ch xy dng lp
Ch c trn phin bn Professional v Enterprise ca VB.

Tin ch xy dng lp
Tin ch xy dng lp ( Class Buider Utility ) h tr paramArray, Optional, ByVal
v cc gi tr Default trong danh sch tham s v h tr cc Enums. Tin ch t
chc cc lp theo phn nhnh trong mt n ca Visual basic. N theo di cc lp
v pht sinh cc on chng trnh n gin thao tc trn cc lp, bao gm
thuc tnh, phng thc, s kin v enum.
Nhn ln mt lp v tp hp cho php sa i n. Tng ng vi lp c chn
bn tri v danh sch cc thuc tnh, phng thc v s kin xut hin bn phi.
Enum hin th trong Tab All.

11.2.7Trnh to thanh cng c t ng


C trn mi phin bn ca VB 6.
Khi ta np to ng dng t ng ( Application Wizard ), trnh thanh cng c t
ng ( Toolbar Wizard ) t ng m khi ta mun thm mt thanh cng c c th
hiu chnh vo biu mu.
Ta c th:
To mt thanh cng c.
i th t cc nt nhn.
Thm Bitmap hay biu tng m ta mun thm chc nng.

11.3 Trnh ng gi v trin khai ng dng


11.3.1Pht hnh ng dng
Sau khi vit xong mt chng trnh Visual Basic ta cn pht hnh n. Ta c th
pht hnh qua a, CD, qua mng, Internet hay Intranet.
C 2 bc thc hin vic pht hnh :
ng gi : ng gi cc tp tin ca chng trnh thnh nhng tp tin.CAB
c th trin khai chng nhng ni c chn, v ta phi to chng
trnh ci t tng ng vi kiu ng gi.
Trin khai: Chuyn ng dng c ng gi n ni m ngi s
dng c th ci t t . iu ny c ngha l sao chp phn ng gi
xung a mm, mng hay trin khai trn Web site no .

11.3.2Trnh ng gi v trin khai ng dng


Trnh ng gi v trin khai ng dng ( Package and deployment Wizard ) c sn
trn mi n bn VB6.
Trong cc phin bn c, n l Setup Wizard, cho php trin khai cc tp tin .CAB
ln Web server. a mng hay nhng th mc khc. Gi y, Trnh ng gi v
trin khai ng dng h tr c ADO, OLE DB, RDO, ODBC v DAO cng nh cc
ng dng IIS v HTML. N cng x l tt hn cc nhm trong menu Start v cc
biu tng cho chng trnh ci t. N c th c chay trong VB nh mt Addin, hay trn dng lnh vi tp tin.BAT.
Ngoi ra, ta c th dng Setup Toolkit (c cung cp khi ta ci t VB ) hiu
chnh cc ht hin trong quy trnh ci t.

11.3.3M trnh ng gi v trin khai trong VB


M n ta mun pht hnh
Lu rng nu bn ang lm vic vi mt nhm cc n hoc c nhiu n ang c np, bn phi bo m rng
n em ng gi l n hin hnh trc khi m Wizard.

Dng Add-in Manager np trnh ng gi v trin khai ng dng, nu cn : T


menu Add-ins, chn Add-in Manager, chn Package and Deployment Wizard t
danh sch, nhn OK.
Chn Package and Deployment Wizard t menu Add-ins phng Wizard.
Trn mn hnh chnh chn mt trong cc tu chn sau:
Nu ta mun to mt ng gi chun, ng gi kiu Internet hay cc tp tin
lin quan cho ng dng, chn Package.
Nu mun trin khai ng dng, chn Deploy.
Nu mun xem, son tho, hay xo kch bn, chn Manager Scripts.
Thc hin ln lt qua cc mn hnh ca Wizard.

11.3.4M trnh ng gi v trin khai nh mt ng dng c lp.


Nu n ta mun ng gi ang m,lu n li v thot khi Visual Basic.
Nhn nt Start, chn vo Package and Deployment Wizard t nemu con ca VB.
Trong danh sch Project ca mn hnh khi to, chn n ta mun ng gi.
Lu : Ta c th nhn nt Browse nu n cha c trong danh sch.
Trn mn hnh chnh, chn mt trong nhng tu chn sau :
Nu mun to mt ng gi chun, ng gi kiu Internet, hay cc tp tin
kin quan, chn Package.
Nu mun trin khai ng dng, chn Deploy.
Nu mun xem, son thao, hay xo kch bn, chn Manage Scripts.
Thc hin ln lt qua cc mn hnh ca Wizard.

11.3.5Thi hnh Wizard di ch silent


S dng kch bn ta c th ng gi v trin khai ng dng di ch Silent.
Trong , Wizard t ng thi hnh v ta khng cn tng tc chn la hay di
chuyn trn mn hnh. N s dng cc chn la cha trong kch bn.

Ch Silent c bit hu dng nu ta ng gi v trin khai ng dng bng tp


tin. BAT. Ta c th dng n kim tra kt qun vi mt thu mc tm thi.
M du nhc DOS
Nhp vo tn tp tin thi hnh (. EXE ) ca trnh Wizard, pdcmdln. Exe, k tip
l ng dn v tn tp tin ca n VB, cc i dng lnh tng ng. V d :
pdcmdln.Exe c:\project1\project1.vbp /p Internet Package /d Deploymentl /L
c:\project1\Silent mode.log
Lu : bn ch th dng c /p v / d thi hnh trong ch Silent. Nu khng,
dng mt trong hai.
Tham s
M t
/p Packageingscript
Theo sau /p l tn kch bn ng gi cha cc la
chn thi hnh trong ch silent.
/d Deploymentscript
Theo sau /d l tn kch bn ng gi cha cc la
chn thi hnh trong ch silent.
/l Path
Wizard s cha tt c kt qu ca n chng hn
nh l thng bo li, bo co thnh cng vo mt
tp tin thay v hin th ra mn hnh. Sau /l l ng
dn v tn ca tp tin . Nu tp tin ny cha c.
wizard t ng tao ra.
Lu : Tn tp tin hoc tn kch bn c cha khong trng t trong du
trch dn ( du nhy kp ).

11.3.6Setup toolkit
Setup toolkit l mt n ci t vi VB v c s dng bi Trnh ng gi v
trin khai khi n to chng trnh setup. n Setup toolkit cha cc biu mu v
chng trnh m chng trnh setup dng ci t tp tin cho ngi s dng. Khi ta
dng Trch ng gi v trin khai. Wizard bao gm setup1. exe m n setup
toolkit to ra. Tp tin ny c dng lm mt tp tin ci t chnh.
Setup toolkit cn dng iu chnh cc mn hnh hin th trong qu trnh ci t
nu ta cn thm nhng tnh nng khng cp sn bi Wizard.
Setup Toolkit cha trong th mc con \Wizards\PDWizard\Setup1 ca th mc ci
t VB.
Thn trng: Cc tp tin trong n ny s c s dng bi kt qu ca trnh
ng gi v trin khai. Trc khi sa i cn phi sao mt bn d phng trong
mt th mc khc. Nu bn sa i Setup1. exe, chng trnh setup c to bi
Trnh ng gi v trin khai s dng bn chnh sa ny thay v bn gc.
S dng Setup Toolkit bng cc np n Setup1. vbp vo Visual Basic v tin
hnh sa i trn cch hin th cng nh tnh nng ca n. Khi lm vic ny, ta
cn ln lt i qua tng bc.
11.3.6.1

Cc bc sa i trnh ng gi v trin khai

Khi mun sa i Setup Toolkit nhm thay i kt qu to ra bi Trnh ng gi


v trin khai, ta lm nh sau :
Sa n Setup Toolkit cha cc li nhc, mn hnh, chc nng chng trnh
hay nhng thng tin khc. Khi hon tt, bin dch n to setup1. exe.
Thi hnh trnh ng gi, l theo cc li nhc trn mn hnh to ra mi trng
pht hnh.

11.3.6.2

Cc bc to mt chng trnh Setup hiu chnh

Khi mun to chng trnh setup mt cch th cng dng setup Toolkit thay v
Trnh ng gi v trin khai, ta lm nh sau:
1. Nu cn sa n Setup Toolkit cha cc li nhc, mn hnh,
chc nng, chng trnh v cc thng tin khc.
2. Xc nh tp tin no cn phn pht, bao gm cc tp tin thi hnh, ci
t v cc tp tin lin quan.
3. Xc nh th mc ci t trn my ngi dng
4. To th cng tp tin setup.lst a ra tn v th mc ci t ca
tt c cc tp tin cha trong n.
5. Xc nh cch thc ci t tp tin.
6. To tp tin.CAB cho n, dng tin ch Makecab.
Mo: Bn c th dng Trnh ng gi v trin khai to tp tin.CAB sau
sa chng bng tay. Khi Wizard to mt tp tin.CAB, n to mt tp tin.
DDF v mt tp tin.BAT trong th mc con \Support ca th mc n.
sa i tp tin.CAB, sa trn tp tin. DDF, sau chy tp tin.BAT.
Tp tin.BAT s chy Makecab.exe to li tp tin.CAB.
7. To setup1.exe cho n bng cch bin dch dng Setup Toolkit.
8. Sao chp tp tin vo mi trng phn pht, hoc a ln Web side
dng trnh pht hnh Web (Web publishing Wizard )

11.4 Bi tp
Dng trnh to ng dng t ng to ng dng kiu Explorer.
Dng trnh xy dng d liu t ng to biu mu Master/Detail.

12 Nhng khi nim c bn v CSDL


C s d liu l g ?
S dng ca s xem d liu
To trnh thit k mi trng d liu
S dng cc iu khin d liu to giao din ngi s dng
C s d liu l phn ct li ca nhiu ng dng phn mm kinh doanh. C
s d liu rt ph bin trong th gii kinh doanh v chng cho php truy cp tp
trung n cc thng tin theo mt cc nht qun, hiu qu v tng i d dng cho
vic pht trin v bo tr. Chng ny tm hiu v cc khi nim c bn thit
lp v bo tr mt c s d liu cho mt doanh nghip, bao gm c s d liu l
g, ti sao c s d liu hu dng v dng c s d liu nh th no to ra cc
gii php cho doanh nghip.
Nu bn tng dng Visual Basic v tng lp trnh vi c s d liu. Bn s
thy chng trnh ny kh c bn, tuy nhin n s gip bn c c mt nn tng
tt ca mt h qun tr c s d liu ni chung.
Mc d cc khi nim c s d liu gn nh tng t gia cc h qun tr c
s d liu, cc nh cung cp cc h qun tr c s d liu thng c cc tn gi
khc nhau cho cc sn phm ring ca h. V d, nhiu nh lp trnh Client / Server
cp n truy cn cha trong c s d liu nh l View ; trong khi cc nh lp
trnh Access v Visual Basic li gi truy vn l QueryDef. C hai khi nim ny
u l nh nhau.
Nu bn tng dng phin bn c ca VB - nht l Visual Basic 3, ta cn bit
mt vi im mi trong lp trnh c s d liu. Visual Basic cha phin bn mi
nht ca B my c s d liu Jet ( Visual Basic chia s vi Microsoft Access ).
Phin bn ny ca Jet a ra cc b sung cho b my c s d liu s c trnh
by trong chng ny. Ngoi ra, vic b sung ADO (i tng d liu ActiveX
ActiveX Data Object ), cng nh cc cng c lin quan trong mi trng pht trin,
th hin nhng thay i cho cc nh lp trnh Visual Basic. Nu quen vi pht
trin d liu 32 bit trong Visual Basic, Bn c th nhy thng n chng i
tng d liu ActiveX ADO.

12.1 C s d liu l g?
C s d liu l mt kho cha thng tin. C nhiu loi c s d liu, nhng ta
ch cp n c s d liu quan h, l kiu c s d liu ph bin nht hin
nay.
Mt c s d liu quan h:
Cha d liu trong cc bng, c cu to bi cc dng cn gi l cc mu
tin, v ct gi l cc trng.
Cho php ly v ( hay truy vn ) cc tp hp d liu con t cc bng
Cho php lin kt cc bng vi nhau cho mc ch truy cp cc mu tin lin
quan vi nhau cha trong cc bng khc nhau.

12.1.1B my (Engine) c s d liu l g?


Chc nng c bn ca mt c s d liu c cung cp bi mt b my c s
d liu, l h thng chng trnh qun l cch thc cha v tr v d liu.

B my c s d liu trnh by trong ti liu ny l Microsoft Jet, Jet khng


phi l mt thng phm, thay vo , n l mt h thng con c nhiu ng
dng ca Microsoft s dng. Microsoft ln u tin a b my ny vo s dng
vi Visual Basic 3.0 v Access 1. Sau nhiu ln nng cp, phin bn Jet dng vi
quyn sch ny l Jet 3.51, i km vi Visual Basic v Access.
Ch : Ngoi Jet, cn nhiu b my c s d liu khc, nh v Visual Basic h
tr Jet mt cc ni ti nn quyn sch ny u tin ni v Jet. Hn na Jet cn h
tr cc b my c s d liu khc. Trong chng Lm quen vi SQL Server gii
thiu mt b my hon ton khc SQL Server 6.5

12.1.2Bn v trng
Cc c s d liu c cu to t cc bng dng th hin cc phn nhm d
liu. V d, nu ta to mt c s d liu qun l ti khon trong cng vic kinh
doanh ta phi to mt bng cho khch hng, mt bng cho Ho n v mt bng
cho nhn vin. Bng c cu trc nh ngha sn v cha d liu ph hp vi cu
trc ny.
Bng: Cha cc mu tin l cc mu ring r bn trong phn nhm d liu.
Mu tin: Cha cc mi trng. Mi trng th hin mt b phn d liu trong
mt mu tin. V d nh mi mu tin th hin mt mc trong danh b a ch cha
trong trng Tn v h, a ch, thnh ph, tiu bang, m ZIP v s in thoi.
Ta c th dng chng trnh Visual Basic tham chiu v thao tc vi c s d
liu, bng, mu tin v trng.
12.1.2.1

Thit k c s d liu

to mt c s d liu, trc ht ta phi xc nh thng tin g cn theo di. Sau


, ta thit k c s d liu, to bng cha cc trng nh ngha kiu d liu s
c. Sau khi to ra cu trc c s d liu, to bng cha cc trng nh ngha kiu
d liu s c. Sau khi to ra cu trc c s d liu, c s d liu c th cha d
liu di dng mu tin. Ta khng th a d liu vo m khng c bng hay nh
ngha trng v d liu s khng c ch cha.Do , thit k c s d liu cc
k quan trng, nht l rt kh thay i thit k mt khi ta to xong n.
V d ta to mt bng sau :
Bng khch hng
tblCustomer
ID
FirstName
LastName
Company
Address
City
State
Zip
Phone
Fax
Email

Bng tblRegion
TblRegion
State
RegionName

C quan h gia 2 bng thng qua trng State (Trng thi ). y l mi quan
h mt - nhiu, i vi mt mu tin trong tblRegion, c th khng c, hoc c
nhiu mu tin tng ng trong bng tblCustomer.
Cm t tbl th hin tn bng, tn trng hin th y , khng cha
khong trng hay nhng k t c bit khc nh du gch di.
Bng ho n :
TblOrder
ID
CustomerID
OrderDate
ItemID
Amount

12.1.3Recordset l g ?
Mt khi ta c kh nng to bng, ta cn phi bit cch thao tc chng.
Thao tc trn cc bng lin quan n vic nhp v ly v d liu t cc bng
khc cng nh vic kim tra v sa i cu trc bng. thao tc vi cu trc
bng, ta dng cc cu lnh inh ngha d liu hoc mt i tng TableDef (c
gii thiu trong chng Cc i tng truy cp d liu ). thao tc d liu,
trong mt bng, ta dng Recordset.
Mt Recordset l mt cu trc d liu th hin mt tp hp con cc mu tin
ly v t c s d liu. V khi nim, n tng t mt bng, nhng c thm mt
vi thuc tnh ring bit quan trng.
Cc RecordSet c th hin nh l cc i tng, v khi nim tng t nh
l cc i tng giao din ngi s dng ( nh l cc nt lnh v hp vn bn )
m ta lm quen vi Visual Basic trong cc chng trc. Cng nh cc kiu i
tng khc trong Visual Basic, cc i tng Recordset c cc thuc tnh v
phng thc ring.
Lu : Ta c th lp trnh to v s dng cc recordset theo mt trong ba
th vin truy cp d liu Cc i tng truy cp dliu ( DAO ), cc i tng
truy cp d liu t xa ( RDO ) v cc i tng d liu ActiveX ( ADO ).

12.1.4Cc kiu c s d liu


C s d liu ni ti ca Visual Basic, Jet, cung cp 21 kiu d liu khc nhau.
Kiu d liu
Binary
Boolean
Byte
Currency
Date/Time
Double
GUID

M ta
Dng cha cc khi d liu ln nh l ho v cc tp
tin m thanh s ho.
Gi tr logic ng hoc sai
Gi tr s nguyn mt byte t 0 n 255
Trng s c thuc tnh c bit cha cc tr tr tin t
Gi tr 8 byte th hin ngy hoc gi t ngy 1/1/100 n ngy
31/12/9999
Ki d liu s 8 byte du phy ng
L mt s 128 bye, cng c gi l nh danh ton th duy

Integer
Long
Long binary
( OLE Object )
Meno
Single type
Text
VarBinary

nht. Ta dng s ny nhn dng duy nht cc mu tin. S


ny c dng trong cc bn sao
S 2 byte u t -32768 n 32767
S 4 byte y t -2,147,483,648 n 2,147,483,647
Trng gi tr ln nht c th cha cc gi tr thp phn nh l
hnh nh hay tp tin
Kiu OLE Object nhng trong c s d liu c th ln ti 1
gigabyte.
Trng g tr ln c th cha n 65,535 k t. Ta khng cn
thit phi khai bo trc chiu di ca trng ny.
D liu s 4 byte, du phy n
Kiu d liu co chiu di c nh, i hi ta phi khai bo
chiu di ca trng khi ta khai bo kiu d liu. Trng vn
bn c th di t 1 n 255 k t.
Mu d liu nh phn bin i ( dng vi ODBCDirect )

Khng c s tng ng mt-mt gia kiu d liu Visual Basic v kiu d


liu trng c s d liu. V d, ta khng th quy nh mt trng c s d liu
l kiu nh ngha bi ngi dng hay bin Object ca Visual Basic. Hn na nu
ta dng Microsoft Access to c s d liu s dng trong cc ng dng Visual
Basic, lu rng mt s kiu d liu hu dng trong ng dng Visual Basic
khng xut hin trong thit k bng ca Microsoft Access. Bi v Visual Basic h
tr lp trnh c s d liu khc vi nhng g to bng Microsoft Access.

12.1.5To lc c s d liu
Mc d vic to danh sch cc bng v trng l cch tt nht xc nh cu
trc c s d liu, ta cn c mt cch xem cc bng v tng di dng
ho. Sau , khng ch xem c cc bng v trng hin c m cn thy c
mi quan h gia chng. lm c iu ny, ta to lc .
Lc l s cc con ng trong c s d liu. Lc th hin cc
bng, trng v mi quan h trong c s d liu. C lc c s d liu l
phn quan trng trong tht k phn mm bi v n cho ta mt cch nhn nhanh v
nhng g trong c s d liu.
Cc lc vn c v tr quan trng lu di sau khi qu trnh thit k c s d
liu hon tt. Ta s cn n lc thi hnh cc cu truy vn trn nhiu bng.
Mt lc tt s tr li c cc cu hi nh l, Nhng bng no cn ni vi
nhau a ra danh sch cc ho n trn $50.00 t cc khch hng Minnesota
trong 24 gi qua ?
Khng c phng php chnh thc to lc , mc d cng c nhiu cng
c thc hin. Cng c v Visio rt uyn chuyn, nhanh v d dng. Hn na
n tch hp vi cc ng dng Windows khc, nht l Microsoft Office.
Phn ny xem visio nh mt cng c v ghi chp v c s d liu. Nhung
ta cn c th dng Visio nh mt cng c pht trin. Vi Visio Professional, ta c
th thit k c s d liu bng ho. Sn phm c kh nng ly thit k
ho v to ra c s d liu thc s. Tham kho thng tin v Visio ti a ch http://
WWW.Visio.Com

12.1.6Dng Visual Basic to mt c s d liu


Sau khi to xong lc v chnh sa thit k, n lc ta phi to c s d
liu thc s. o c s d liu Jet dng Visual Basic, ta c th dng tin ch gi l
Visual Data Manager. Tin ch ny trong n bn Visual Basic Professional v
Enterprise cho php ta to cc c s d liu tng thch vi Microsoft Access.
Lu : Do Visual Basic v Access 97 chia s cng b my c s d liu ta
c th hoc l dng Visual Basic hoc l dng Access to mt c s d
liu. C s d liu cui cng u nh nhau.
chy Visual Data Manager, ta theo cc bc sau :
1. T menu ca Visual Basic chn mc Add-ins, Visual Data Manager, ca
s Visual Data Manager s xut hin.
2. T menu ca Visual Data Manager, chn File, New. T menu con, chn
Microsoft Access, Version 7.0 MDB. Mt hp thoi tp tin xut hin :
Lu : Version 2.0 MDB l phin bn ca Jet tng thch vi phin bn
16 bit ca Access v Visual Basic
3. Chn th mc ta mun lu c s d liu c s d liu mi ri g tn. ( V
mc ch minh ho cho cun sch ny, bn c th chn tn c s d liu l
novelty.mdb )
4. Nhn chut vo nt Save. C s d liu mi c to v Visual Data
Manager s hin th mt vi ca s cho php ta lm vic vi c s d liu
c hin th nh hnh di y.

Ca s Visual Data Manager

12.1.6.1

S dng ca s c s d liu

Ca s DataBase ca Visual Data Manager cha tt c cc thnh phn ca c


s d liu. Trong ca s ny ta c th xem cc thuc tnh, kim tra cc bng v cc
phn t khc v thm cc thnh phn mi vo c s d liu.
xem cc thuc tnh ta va to, nhn chut vo du cng bn tri ca mc
Properties. Mc ny s m ra nh hnh di y.

Xem cc thuc tnh ca c s d liu mi.


12.1.6.2

To bng

Mt c tnh ca Visual Data Manager l n khng th cho ta cch r rng


to bng mi trong c s d liu m ta va to. Bi v cc phn t xut hin
trong ca s Database ca Visual Data Manager rt nhy vi vic nhn chut phi.
Nhng mt khi ta dng nt chut phi vic to mt bng mi tht l n gin.
V d : to mt bng mi ta theo cc bc sau:
1. Trong ca s Database ca Visual Data Manager, nhn chut phi vo
Properties. Menu ng cnh ca ca s s xut hin.
2. Chn New Table. Hp thoi Table Structure s xut hin nh hnh di
y.

Hp thoi Table Structure.


Trong hp thoi Table Structure, ta c th to cu trc bng, ch nh cc
trng, kiu d liu v ch mc. V d, ta s to cu trc bng cha khch
hng.
lm c iu ny, theo cc bc sau:
1. G tblCustomer trong Table Name.
2. Nhn chut vo nt Add Field. Hp thoi Add Field s xut hin, c
hin th nh hnh di y.

Hp thoi Add Field.

Hp thoi Add field cho php ta thm mt trng vo mt bng to bi hp


thoi Table structure ca Visual Data Manager.
3. Trong Name g First Name. y s l tn ca trng m ta to trong bng
khch hng.
4. Trong size g 25. iu ny ch ra rng tn c th ln n 25 k t, nhng
khng th di hn. iu ny c ngha l c s d liu s cha cc tn hiu
qu hn.
5. Chn Fixed Field ch ra rng u khng phi l trng c chiu di bin
i, ri nhn nt OK. ( Lu rng rt kh sa i mt trng mt khi ta
to xong n.V vy, phi chc chn rng mi th ta quy nh l chnh
xc.) Trng c thm vo cu trc c s d liu. Cc hp vn bn trong
hp thoi Add Field s c xo. Cho php ta thm vo mt trng khc
ngay lp tc.
6. By gi ta c th thm cc trng khc vo cu trc bng. S dng Add
Field, thm cc trng vo tblCustomer cc trng sau y :
Tn trng
First Name
ID
LastName
Company
Address
City
State
Zip
Phone
Fax
Email

Kiu d liu
Text
Long, AutoInerField=true
Text
Text
Text
Text
Text
Text
Text
Text
Text

Kch c d liu
25
N/A
45
100
100
100
2
9
25
25
255

Fixed
Yes
N/A
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes

7. Cn kim tra hp AutoInerField khi to trng ID m bo rng mi


khch hng ta to u c s hiu duy nht. Bi v b my c s d liu
tng s trong trng mt cch t ng, ng dng c s d liu s khng
phi t sinh ra s hiu duy nht.
8. Khi ta hon tt vic nhp trng, nhn nt bm Close.
12.1.6.3

Ch nh ch mc v kho chnh

n y ta va to xong mt bng c bn, phn cn li l ta cn ch ra cc ch


mc. Mt ch mc l mt thuc tnh ta c th gn cho mt trng to s d
dng cho b my c s d liu khi ly v thng tin cha trong trng . V d,
trong c s d liu theo di khch hng, ng dng c th tm kim cc khch hng
theo h, m Zip v cc s hiu ID c nhn. Do , cn thit phi to cc ch mc
trn nhng trng ny gip cho quy trnh ly mu tin da trn cc trng ny
nhanh hn.
Mt khi ta nhn ra li ch ca cc ch mc trong vic thit k c s d liu,
ta c th t t ra cc cu hi nh : Nu cc ch mc gip vic tm kim nhanh
hn, ti sao ta khng t mt ch mc trong tt c cc trng ca mi bng ? Cu
tr li l cc ch mc lm cho c s d liu ca ta phnh to hn v mt vt l, v
vy, nu ta c qu nhiu ch mc, s lng ph b nh v lm cho my tnh ca ta
chy chm hn. iu ny hin nhin lm mt i cc li th ban u. Khng c quy

nh v vic nn to bao nhiu ch mc cho mi bng, nhng ni chung, ta nn to


mt ch mc da trn cc trng m ta ngh l dng thng xuyn trong cc cu
truy vn.
Hnh 1.
Kho chnh L kiu ch mc c bit. Mt trng c coi l
mt kho chnh va bng phc v cho vic xc nh duy nht mu tin. V
vy, khng nh cc kiu ch mc khc, s khng c hai mu tin trn cng mt
bng m c cng gi tr cho trng kho chnh. Tng t, khi thit k mt
trng lm kho chnh, khng c mu tin no cha gi tr rng, gi tr NULL
trng ny. Khi ch ra mt trng lm kho chnh ca bng, ta c th to
mi quan h gia bng ny vi cc bng khc trong c s d liu.
Mi bng m ta thit k phi c t nht mt kho chnh, v n phi c nh s
ch mc trn nhng trng m ta mong i s c truy vn nhiu nht. Trong
trng hp ca bng tblCustomer, cng nh vi nhiu bng c s d liu, kho
chnh s l trng ID. Cc ch mc ph l trng LastName v FirstName
to cc ch mc v cc kho chnh, theo cc bc sau :
1. Trong hp thoi Table Structure, nhn chut vo nut Add Index. Hp thoi
Add Index xut hin

Hp thoi Add Index.


Trc ht ta s to kho chnh cho bng.
2. G Primary Key trong hp vn bn Name
3. Nhn p chut vo trng ID trong danh sch cc trng c sn. ID c
thm vo danh sch cc trng c ch mc. Hp nh du Primary v
Unique phi c chn theo mc nh.
4. Nhn OK, Hp vn bn b xo v kho chnh c thm vo thit k bng.
Lu rng ch mc c tn nh tn trng ( mc d quen vi Microsoft
Access m ta c th khng bit iu ny, bi v Access che tn ch mc trn
giao din ngi s dng ). Truy cp n tn ca mt trng ch mc th
tht thun tin cho mt mc nh no .
Gi y ta c th to thm hai ch mc cho cc trng FirstName v LastName.
lm c iu ny ta lm theo cc bc sau :
1. G tn ch mc FirstNameIndex trong hp vn bn Name
2. Nhn p chut trn trng FirstName trong danh sch cc trng hin c,
FirstName c thm vo trong danh sch cc trng c ch mc.
3. B chn cc hp nh du Primary v Unique, sau nhn nut OK.

Cnh Bo : Nu ta hp nh du Unique c chn, ta s khng th


thm hai ngi c cng tn vo c s d liu.
4. Lp li quy trnh ny vi trung LastName, to mt ch mc l LastIndex.
5. Nhn nt chut Close. Ta s gp li hp hi thoi Table Structure.
6. to bng, nhn nt Build the Table. Bng s c to v thm vo ca
s Database ca Visual Data Manager

To bng cho c s d liu.


12.1.6.4

Thay i thuc tnh ca cc trng c sn

Visual Data manager c v hi kh sa i phn li cc thuc tnh quan


trng ca mt bng ( khng ging nh Microsoft Access cho php ta thay hu ht
cu trc bng mi lc ). Ni chung, khi ta mun sa i thuc tnh ca trng
bng cch s dng Visual Data Manager ta phi xo trng to li.

12.1.6.4.1

Sa i chiu di ca trng LastName

Gi nh rng ta mun sa i chiu di ca trng LastName. lm c


iu ny, theo cc bc sau :
1. Trong cc ca s Database ca Visual Data Manager, nhn chut phi ln
tblCustomer.
2. T menu ng cnh, chn Design. Hp thoi Table Structure xut hin.

12.1.6.4.2

Xo ch mc

xo trng LastName, ta phi xo ch mc ca n trc. lm c iu


ny, theo cc bc sau :
1. Chn LastNameIndex trong danh sch cc ch mc

2. Nhn nt RemoveIndex
3. Khi mt thng ip hi ta mun xo ch mc ny khng, nhn Yes. Ch mc
c xo

12.1.6.4.3

Xo trng LastName

By gi ta c th xo trng ny. lm c iu ny, theo cc bc sau:


1. Chn trng LastName trong danh sch cc trng.
2. Nhn nt Remove Field. Khi xut hin thng ip hi ta mun xo trng
ny hay khng, nhn Yes. Trng ny s b xo khi bng.
By gi th ta c th sa i trng bng cch thm n tr li bng, ln ny
vi chiu di 50. ng qun thm ch mc cho trng ny sau khi thm n tr
li bng.
Mo vt : Tin trnh sa mt trng c sn trong Visual Data
Manager c v kh phc tp. Trong Microsoft Access, vic sa i
trn nhng trng c sn tht d dng, v l do , cc nh lp
trnh c s d liu kho lo trong Visual Basic s gi mt bn sao
ca Access u phng h.
12.1.6.5

Dng Visual Data Manager to giao din

Mt u im ca Visual Data Manager so vi Microsoft Access l kh nng to


cc biu mu Visual Basic da trn cu trc d liu c to.
Gi nh rng ta hon tt khu thit k tblCustomer v mun thm mt biu
mu Visual Basic vo n da trn thit k bng . lm c iu ny, theo
cc bc sau :
1. T menu Visual Data Manager chn Utility, Data Form Design. Hp thoi
Data Form Design xut hin.
2. Trong hp thoi vn bn Form name, g Customer
3. Trong hp kt hp RecordSource, chn tblCustomer, Data Form Design
in danh sch cc trng tm thy trong tblCustomer vo Available Fields

Hp thoi Data Form Design


4. Nhn nt mi tn phi cho tt c cc trng hin c tr ID thm chng
vo biu mu. ( Khng c thm trng ID vo biu mu v ngi s
dng khng th s trng ID ).
5. Chn trng v nhn mi tn ln, xung sp xp cc trng.

Sp xp cc trng
6. Nhn nt Build the Form. Biu mu c to trong Visual Basic.
7. Nhn Close.
K tip ta mun thot khi Visual Data Manager xem biu mu ca ta nh
th no. Nhng ta mun quay tr li thm cc phn t mi vo c s d liu
hoc mun s i nhng ci ta va lm. thng bo cho Visual Data Manager la
ta mun m c s d liu li trong ln k tip, theo cc nc sau :
1. chn Utility, Preferences. T Menu con, chn Open Last Database t Startup.
2. Thot Visual Data Manager bng cch chn File, Exit, Khi ta tr v Visual
Basic m ta s thy biu mu mi gi l frmCustomer

Thit k biu mu theo thit k bng.


lm vic vi biu mu mi c to, ta s phi t n lm biu mu khi
ng ca n. lm c iu ny, theo cc bc sau:

1. T menu Project ca Visual Basic, chn Project1 Properties. Hp thoi


Project Properties xut hin.

Hp thoi Project Properties.


2. Trong hp kt hp StartUp Object, chn frmCustomer v nhn nt OK.
3. T menu Run ca Visual Basic, chn Start. ng dng thi hnh, n s hin
th giao din nhp liu trong frmCustomer.
By gi ta c th nhp liu vo giao din m Visual Basic cung cp cho ta.
lm c iu ny, theo cc bc sau :
1. Nhn nt Add. Ta s thy rng ng dng khng c phn hi mt cch trc
quan cho thy rng mt iu g thay i . Tuy nhin, phi tin rng
bn ang sa i mt mu tin mi.
2. Nhp d liu vo mi hp vn bn trong biu mu.
3. Khi ta lm xong, nhn nt Update. Mu tin s c lu tr. Ch c mt
thng tin phn hi ta thy l iu khin d liu hin th Record 1

Chng trnh lc thi hnh.


Giao din nhp liu c bn c to bi Data Form Designer cho ta ngha
ca chng trnh m ta phi vit c mt ng dng mnh m bng chch s
dng iu khin Data.Mc d iu khin data c coi l mt gii php
Khng cn lp trnh , nu ta cn mi rng tnh nng ca n ( nh thi hnh cc
hnh ng tm kim, xo cc mu tin ) chng trnh c th khng trc quan i
vi nhng ngi mi hc. Chng ta s tm hiu thm thng tin v chng trnh
ny, cch hot ng v chnh sa n nh th no to ra mt ng dng vi
y tnh nng hn sau ny.

12.1.7Cc mi quan h
Mi quan h l mt cch inh ngha chnh thc hai bng lin h vi nhau nh
th no . Khi ta nh nghia mt mi quan h, ta thng bo vi b my c s d
liu rng hai trng trong hai bng lin quan c ni vi nhau.
Hai trng lin quan vi nhau trong mt mi quan h l kho chnh c
gii thiu phn trc v kho ngoi. Kho ngoi l kho trong bng kin quan
cha bn sao ca kho chnh ca bng chnh.
V d, gi nh rng ra c cc bng cho phng ban v Nhn vin. C mt mi
quan h mt - nhiu gia mt phng ban v mt nhm nhn vin. Mi phng ban
c mt ID ring, tng t vi nhn vin. Tuy nhin, ch ra mt nhn vin lm
vic phng ban no, ta cn phi to mt bn sao ca ID ca phng ban cho mi
mu tin ca nhn vin. V vy, phn bit mi nhn vin l mt thnh vin ca
mt phng ban, bng Employees phi c mt trung gi l DepartmentID cha
ID ca phng ban m nhn vin lm vic. Trng DepartmentID trong bng
Employees c tham chiu nh 1 kho ngoi ca bng Employees bi v n s
cha bn sao ca kho chnh ca bng Departments.

Sau mi quan h bo cho b my c s d liu hai bng lin quan vi nhau


trong mi quan h v kho ngoi no lin quan vi kho chnh no. B my Access/
Jet khng i hi ta phi khai bo tng minh cc mi quan h ny, nhng s c
li hn nu lm iu ny bi v n lm n gin ho cng vic ly v d liu da
trn cc mu tin ni qua hai hay nhiu bng.
Ngoi vic ghp cc mu tin lin quan trong cc bng ring bit, ta cn nh
ngha mi quan h tn dng th mnh ca tnh ton vn tham chiu, mt thuc
tnh ca b my c s d liu duy tr cc d liu trong mt c s d liu nhiu
bng lun lun nht qun. Khi tnh ton vn tham chiu tn ti trong mt c s d
liu, b my c s d liu s ngn cn ta xo mt mu tin khi c cc mu tin khc
tham chiu n n trong c s d liu.
Sau khi nh ngha mt mi quan h trong c s d liu, vic nh ngha mi
quan h ny s c lu tr cho n khi ta xa n.
Lu : Ta khng th to mt mi quan h c s d liu bng cch dng
Visual Data Manager tuy nhin ta c th to mt mi quan h s dng
Microsoft Access hay Lp trnh.
12.1.7.1

S dng tnh ton vn tham chiu duy tr tnh nht

qun
Khi cc bng ni kt vi nhau thng qua mi quan h, d liu trong mi bng
phi duy tr s nht qun trong cc bng lin kt. Tnh ton vn tham chiu qun l
cng vic ny bng cch theo di mi lin h gia cc bng v ngn cm cc kiu
thao tc no trn cc mu tin.
V d, gi nh rng ta c mt bng gi l tblCustomer v mt bng khc l
tblOrder. Hai bng ny quan h vi nhau qua trng chung l ID.
Gi thit y l ta to cc khch hng cha trong tblCustomer ri to cc ho
n trong tblOrder. Nhng iu g s xy ra nu ta tin hnh xo mt khch hng
c ho n cha x l cha trong bng ho n ? Hoc l nu ta to mt ho n
m khng c mt CustomerID hp l gn lin vi n ? Mc ho n khng c
CustomerID th khng th gi i, bi v a ch gi l mt trng ca mu tin trong
tblCustomer. Khi d liu tron cc bng quan h gp phi rc ri ny, ta ni n
trng thi khng nht qun.
Mt iu rt quan trng l c s d liu khng c tr nn khng nht qun,
b my c s d liu Jet cung cp mt cch ta nh ngha mi quan h trong cc
bng. Khi ta nh ngha mt mi quan h chnh thc gia hai bng b my c s
d liu s gim st mi quan h my v ngn cm bt k thao tc no vi phm tnh
ton vn tham chiu. Hot ng ca c ch ton vn tham chiu l pht sinh ra li
mi khi ta thi hnh mt hnh ng no lm cho d liu ri vo trng thi khng
nht qun. V d, trong c s d liu c tnh ton vn tham chiu ang hot ng,
nu ta c to mt ho n cha mt ID ca khch hng i vi mt khch hng
khng tng ti, ta s nhn mt thng bo li v ho n s khng th to ra.

12.1.8Chun ho
Chun ho l mt khi nim lin quan n mi quan h. V c bn, nguyn tc
ca chun ho pht biu rng cc bng c s d liu s loi tr tnh khng nht
qun v gim thiu s km hiu qu.

Cc c s d liu c m t l khng nht qun khi d liu trong mt bng


khng tng ng vi d liu nhp vo trong bng khc. V d, Nu phn na s
ngi ngh rng A min Trung Ty v mt na ngh rng n nm pha Nam v
nu c hai nhm nhn vin nhp liu theo kin ring ca h, khi y bo co c
s d liu trnh by nhng vic xy ra min Trung Ty l v ngha.
Mt c s d liu km hiu qu khng cho php ta trch ra csc d liu chnh
xc m ta mun. Mt c s d liu cha ton b d liu trong mt bng c th
buc ta phi vt v duyt qua mt lng ln tn cc khch hng, a ch v lch s
lin h ch ly v 1 s in thoi ca mt khch hng no . Mt khc, mt
c s d liu c chun ho y cha tng mu thng tin ca c s d liu
trong bng ring v xa hn, cc nh tng mu thng tin duy nht thng qua kho
chnh ca n.
Cc c s d liu chun ho cho php ta tham chiu n mt mu thng tin
trong mt bng bt k ch bng kho chnh ca thng tin .
Ta quyt nh cch thc chun ho ca mt c s d liu khi t tht k v khi
to mt c s d liu. Thng thng, mi thu v ng dng c s d liu - t
thit k bng cho n thit k truy vn, t giao din ngi s dng n cch hot
ng ca bo co - u xut pht t cch chun ho c s d liu.
Lu : L mt lp trnh vin c s d liu, thnh thong bn s cht ny
ra ngh v c s d liu vn cha c chun ho v l do ny hay l do
khc. S thiu chun ho c th do ch , hoc c th l do kt qu ca s
thiu kinh nghim hoc s khng thn trng trong vic thit k c s d
liu ban u. D mc no, nu chn chun ho mt c s d liu
tn ti, ta nn thc hin sm ( bi v mi th khc thc hin trong c s
d liu u ph thuc vo cu trc bng ca c s d liu ). Hn na, ta
s thy nhng cu truy vn hnh ng l cng c rt hu ch trong vic
sp xp li mt c s d liu thit k thiu st. Truy vn l hnh ng cho
php ta i chuyn cc trng t bng ny sang bng khc ch l thm, cp
nhtv xo mu tin t cc bng da trn cc tiu ch nu ra.
12.1.8.1

Quan h Mt - Mt

L loi quan h d hiu v d thc hin nht, bi v trong nhng mi quan h


nh vy, mt bng s ly v tr ca mt trng trong mt bng khc, trng lin
quan cng d nhn dng. Tuy nhin, quan h mt - mt khng phi l mi quan h
thng dng nht trong ng dng c s d liu. Do 2 nguyn nhn:
1. Hu nh ta khng cn biu din mi quan h mt mt vi hai bng. Ta c
th dng n ci tin kh nng hot ng, v d ta mt tnh linh hot khi
cha cc d liu lin h trong mt bng tch bit. Trong v d trc, thay
v c cc bng nhn vin v cng vic cha trong bng nhn vin.
2. Th hin quan h mt - nhiu th cng kh d ( nhng linh hot hn
nhiu ) quan h mt mt.
12.1.8.2

Quan h mt - nhiu

Ph bin hn quan h mt - mt, trong , mi mu tin trong mt bng ny


khng c, hoc c mt, hoc nhiu mu tin trong mt bng lin h.
V d, ta gn tng khch hng cho mt ngi bn hng. thc hin iu ny,
ta cn mt bng cho ngi bn hng :
Bi v mt ngi bn hng c trch nhim vi nhiu khch hng, ta c th ni
c mi quan h mt - nhiu gia ngi bn hng v khch hng.

thc hin mi quan h ny trong thit k c s d liu, ta phi copy kho


chnh ca pha mt n bng cha pha nhiu trong quan h.
Trong mt thit k giao din ngi s dng, ta thc hin qu trnh copy kho
chnh ca mt bng n kho ngoi ca mt bng lin h nh mt iu khin hp
danh sch hay hp kt hp. tm hiu thm thng tin v t chc giao din.
12.1.8.3

Quan h nhiu nhiu

Quan h nhiu - nhiu l bc pht trin ca quan h mt - nhiu v d c


in ca quan h nhiu nhiu l hc sinh v lp. Mi hc sinh c nhiu li, mi
lp c nhiu hc sinh ( Tuy nhin,c lp khng c hoc ch c mt hc sinh, v c
th hc sinh ch c mt hoc khng c lp ).
thit lp quan h nhiu nhiu, ta c th sa li v d trc sao cho c s
d liu c th cha nhiu ngi bn cho mt ngi mua. Mi ngi bn c nhiu
khch hng, v mi khch hng c nhiu ngi bn.
Giao din ngi s dng pht trin trong Microsoft Access ch yu thc hin
quan h mt - nhiu v quan h nhiu - nhiu bng cch dng biu mu con. i
vi mt nh lp trnh VB, mt biu mu con Access tng t mt biu mu trong
biu mu : Biu mu chnh hin th pha mt trong quan h mt nhiu, trong khi
biu mu con hin th cc mu tin pha nhiu . Thun tin ca biu mu con l
n khng i hi phi d quan h gia 2 bng c nht qun ; ta ch quy nh
thuc tnh trnh by kho chnh v kho ngoi.
Khc vi Microsoft Access, VB khng h tr biu mu con t ng hin th
tt c cc mu tin lin quan vi mt mu tin nht nh . Thay vo , ng dng
Visual Basic ch yu yu cu ta lp trnh thc hin mt giao din ngi s
dng da trn quan h nhiu nhiu.

12.2 S dng ca s xem d liu


im mi trong Visual Basic 6.0 l ca s Data View, cho php ta lm vic vi
mt c s d liu khng cn phi s dng cng c bn ngoi hay cng c b xung
Add-in.
1. dng ca s Data View, hay nhn nt Data View trn thanh cng c
chun ca VB.
2. Ca s Data View xut hin, Ca s cho ta hai th mc, Data Links v
Data Environment Connections.
kim tra mi quan h hot ng nh th no, ta theo cc bc sau:
1. ng v lu ca s Relationship.
2. M bng tblOrder v nhp v mt mu tin cho mt khch hng khng tn
ti trong bng tblCustomer.
B my c s d liu s sinh ra li. Bi v li ny c sinh ra mc b my
c s d liu, ging nh loi li sinh ra khi c vn v tnh ton vn tham chiu
trong Access hoc trong mt ng dng Visula Basic s dng c s d liu ny.
Lin kt d liu ( data link ) l mt cch kt ni mi trng pht trin ca
Visual Basic vi mt c s d liu no . Mt kt ni d liu ( Data
Environment connection ) l mt cch s dng c s d liu trong mt n VB.
im khc bit gia hai thnh phn ny l khi to mt lin kt d liu,n xut
hin trong ca s data view mi khi ca s hin th trong Visual Basic, ngay c khi
ta ng n hin hnh v m mt n mi. Tri li, trnh thit k ni kt mi

trng d liu gn lin vi n ta ang lm vic. N tr thnh mt sn phm


nh phn to ra khi bin dch v c th c chia s gia nhiu n.
Mun dng mt lin kt d liu duyt d liu, theo cc bc sau:
1. Trong ca s Data View, nhn nt phi chut ln th mc Data Links. T
menu bt ra, chn Add a Data Link.
2. Ca s Data Link Properties xut hin.

3. Chn trnh cung cp Microsoft Jet, ri nhn Next.


4. Tab Connection xut hin. Nhp ng dn v tn tp tin c s d liu ta
mun dng.
5. Nhn nt Test Connection to phn di ca ca s . Ta s c mt thng
ip thng bo kt ni n c s d liu thnh cng .
6. Nhn OK, lin kt d liu c thit lp, v ca s Data View nhc ta
nhp vo tn ca lin kt. G vo Novelty, ri nhn Enter.

Lin kt d liu cung cp mt cch nhn tm lc v ngun d liu. Mi ln


ta to mt lin kt d liu, ta c th duyt bng cch s dng phn t trong
danh sch tm lc. Thc hin iu ny bng cch nhn vo du cng bn tri
mi phn t. C s d liu m rng y trong ca s xem d liu.
( Tu theo cng c ta dng to c s d liu, ta c th thy thm mt s
bng trong danh sch.
Gi y, ta c th xem cc d liu sng ng. Thc hin iu ny bng cch
nhn p chut ln bng tblCustomer trong ca s Data view.
Cch th hin khi u ca d liu th khng c sc lm, v ta cha nhp
mu tin no c. Tuy nhin, ta c th nhp mu tin bng cch g vo trn li.

12.3 To trnh thit k mi trng d liu


Ta c th to mt thit k DataEnvironment qun l mt cch trc quan
kt ni vi mt c s d liu. Khi ta c mt thit k DataEnvironment c
cha trong tp tin nh phn ca ng dng lc bin dch, v vy khng cn lo ngi
v nhng ph thuc bn ngoi.
Lu : L im mi trong VB6, thit k DataEnvironment v mt quan
nim tng t nh thit k UserConnection ca RDO (i tng d liu
t xa Remove Data Object ) ta tng dng trong VB5. Tuy nhin, thit k
DataEnvironment da trn ADO v cung cp nhiu chc nng hn. Nu ta
cso mt ng dng hin hnh dng RDO, ta c th tip tc dng thit k
UserConnection.
Chng ny trnh by cch dng thit k DataEnvironment to mt giao
din ngi s dng c iu khin vi c s d liu. Tuy nhin, c nhiu cch
thc hin.

thm mt thit k DataEnvironment vo ng dng dng ca s Data View, theo


cc bc sau :
1. Trong ca s Data View, nhn nt Add Data Environment.
2. Thit k DataEnvironment mi s xut hin trong n. Mt kt ni mc
nh, gi l Connection1 xut hin trong thit k

Thit k DataEnvironment.
C th iu chnh mt cch th cng kt ni mc nh trong mt thit k
dataenvironment n tr n c s d liu. Nhung nu c s d liu c sn
trong ca s Data View, ta ch cn ko v th bng vo thit k . thc hin
iu ny, ta lm nh sau:
1. Khi ng ca s Data view, chn mt bng trong th mc Tables ( nh l
tblCustomer )
2. Ko bng ln trn thit k DataEnvironment.
3. Mt kt ni mi gi l Connection2 xut hin trong thit k, vi bng xut
hin di y.
n y, ta c th ko cc bng khc vo thit k nu thch. Khi hon tt, ta
c :

Ko bng vo ca s thit k.

12.3.1To

mt

giao

din

ngi

dng

vi

thit

DATAENVIRONMENT
Ta c th to mt giao din ngi s dng nhanh chng bng cch dng thit
k DataEnvironment. Thit k kt hp vi c ch biu mu ca VB, cho php ta
dng k thut ko v th to mt giao din ngi s dng iu khin bng c
s d liu. thc hin iu ny, ta theo cc bc sau :
1. M biu mu ta mun dng lm giao din ngi s dng.
2. Chn bng trong thit k Data Environment ( Khng phi trong ca s Data
View ).
3. Th bng vo biu mu.
Mt giao din ngi s dng rng buc d liu s c to trn biu mu.

To dao din ngi s dng rng buc d liu.


Thi hnh ng dng xem mu tin th nht trong c s d liu. Tuy nhin,
khng c chc nng duyt t mu tin ny sang mu tin khc. thc hin iu ,
ta phi lp trnh hoc dng mt iu khin d liu, m t trong phn sau.

12.4 S dng iu khin d liu to giao din ngi s


dng
Ta c th dng mt iu khin d liu qun l kt ni gia biu mu
Visual Basic v mt c s d liu. iu khin d liu cn cung cp chc nng
duyt d liu n gin, cho php ng dng duyt qua mt recordset, thm v cp
nht mu tin. Phin bn trc ca VB cung cp 2 loi iu khin d liu. DAO
Data, thng c kt ni vi c s d liu trn my c nhn nh Microsoft
Access v iu khin Remove Data ( RDC ), dng cho d liu Client / Server. VB6
thm mt iu khin d liu mi , ADO Data, cho php ta truy cp mi loi d
liu v khng thuc m hnh quan h.
Vy ta nn dng iu khin d liu no ? i vi cc ng dng c s d liu
mi trong VB6, ta c th dng ADO Data. Nhung ta cng c th dng m hnh c
hn, nh l DAO hay RDO bo tr mt c s chng trnh hin hnh. V cc

kiu iu khin d liu hot ng tng t nhau, ta ch trnh by iu khin d


liu ADO.
Lu : iu khin Data c sn cho mi n bn ca Visual Basic. Trong phin
bn Learning, tnh nng ca iu khin ny rt hn ch. V d, ta khng th dng
i tng Recordset ca iu khin Data to mt i tng recordset khc.
Do hn ch ny ca iu khin data trong n bn Learning, s dng iu
khin vi y chc nng, ta gi s rng iu khin data y l bn dnh cho
Professional v Enterprise.
iu khin d liu l cch n gin nht truy cp n c s d liu trong
Visual Basic, d cho l Access hay mt h Client / Server.
Hnh sau y minh ho cch thc iu khin ADO Data kt ni ng dng
vi mt c s d liu.
Biu
mu VB

Cc thuc tnh
Cha DataSource
DataField ca
iu khin rng
buc d liu

Kt ni

Cc thuc tnh
ConnectionString,
RecordSource ca
iu khin ADO
Data
kt ni vi
C s d
liu

Cch thc ca mt iu khin ADO Data kt ni vi c s d liu trong ng


dng.
Lu : Mc d iu khin ADO Data l gii php d dng kt ni ng
dng vi mt c s d liu, nhung khng phi l gii php duy nht. Sau khi
quen vi cch truy cp c s d liu trong Visual Basic, ta s xem xt vic dng
chng trnh qun l kt ni vi v s d liu.

12.4.1Kt ni vi mt c s d liu v lm vic vi cc mu tin


To mt ng dng dng iu khin ADO Data rt n gin . Thc ra, nu
nhng g ta quan tm ch l duyt c s d liu th ta khng cn phi lp trnh g
c . y l mt quy trnh gm 2 bc quy nh thuc tnh ConnectionString v
RecordSourse ca iu khin Data, sau rng buc iu khin vi iu khin
giao din ngi s dng. thc hin iu ny ta theo cc bc sau :
1. Bt u mt n mi ca Visual Basic.
2. Dng menu Project Components, lp mt tham chiu n Microsoft ADO
Data Control 6.0 ( OLEDB ) bng cch chn vo hp nh du trong danh
sch.
3. Nhn nt OK, iu khin ADO Data xut hin trn thanh cng c ca
Visual Basic. Nhn p chut ln iu khin to mt instance ca iu
khin trn biu mu.
4. Di chuyn v iu chnh iu khin cho n nm gc phi di ca
biu mu, chim cng t khong trng cng tt.

5. Nhn nt phi chut ln iu khin. T menu bt ra, chn ADODC


Properties.
6. Hp thoi Properties ca iu khin xut hin. Chn nt tu chn User
Connection String ri nhn Build.
7. Hp thoi Data Link Properties xut hin. y l hp thoi ta dng kt
ni vi c s d liu trong v d S dng Data View phn trc. S
dng cng cc bc k ni n c s d liu Novelty v nhn OK khi hon
tt.
8. n y bn quay li hp thoi Properties Pages ca iu khin ADO
Data. K tip, ta thng bo cho iu khin bng no s c dng. Chn
tab RecordSource, ri chn 2 adCmdTable t hp kt hp CommandType.
9. Chn hp kt hp Table or Stored Procedure Name. Hp kt hp hin th
danh sch tt c cc bng trong c s d liu. Chn tblCustomer ri nhn
OK.
Kt ni n c s d liu xy ra khi ng dng thi hnh. Tuy nhin, kt ni
khng c thng bo, bi v khng c cch no hin th d liu. hin th
d liu tr v t mt iu khin d liu, ta phi to cc iu khin kt ni
rng buc vi iu khin d liu. thc hin iu ny, theo cc bc sau :
1. To 2 hp vn bn trn biu mu.
2. Quy nh thuc tnh DataSource ca hp vn bn l ADODC1, tn ca iu
khin.
3. Chn hp vn bn th nht v quy inh thuc tnh DataField ca n l mt
trng ca bng trong c s d liu, chng hn ta chn FistName, mt ln
na ging nh vi thuc tnh RecordSource ca c s d liu ta chn mt
thuc tnh DataField ca iu khin rng buc s hin th l mt danh sch
x xung trnh by danh sch nhng g c sn trong c s d liu.
4. Quy nh thuc tnh DataField ca hp vn bn th hai l tn ca mt
trng khc trong c s d liu, chng hn nh l LastName.
5. Thi hnh ng dng.
12.4.1.1

S dng iu khin Data kt ni vi mt c s d liu.

Sau khi t iu khin ADO Data trn biu mu, ngi s dng c th duyt
qua cc mu tin bng cch nhn cc nt ca iu khin. iu khin gm 4 nt.
Lu rng trng thi mc inh, iu khin d liu khng cho php ngi s
dng thm,xo mu tin. Nu mun thc hin iu ny hay lm mt hnh ng no
khc, ta phi lp trnh.
Ch : Mt s iu khin ActiveX ca cc nh cung cp th 3 c thit
k thay th v m rng kh nng ca iu khin d liu cung cp bi
Visual Basic.
12.4.1.2

S dng iu khin ADO Data cp nht mu tin

Ta khng cn lp trnh vi iu khin ADO Data thc hin vic cp nht


mt c s d liu. Khi ngi s dng sa i mt mu tin hin th bi iu
khin, mu tin c cp nht ngay khi ngi s dng di chuyn sang mu tin
khc ( gi nh rng recordset c th cp nht c ). Nu quen thuc vi cch
cp nht mu tin di dng biu mu v li ca Microsoft Access, chc chn
bn s ch i mt phn ng nh vy.

Cn c nhng cch khc thao tc trn mt RecordSet bng chng trnh.


Cch d nht thc hin iu ny l sa i gi tr ca iu khin giao din
ngi s dng rng buc vi iu khin d liu ; ta cn c th thao tc vi i
tng Recordset cha trong iu khin d liu cp nht mu tin.

12.4.2To mt giao din ngi s dng c bn


Trong phn trc, ta tm hiu v cch dng trang thuc tnh ca iu khin
ADO Data to mt giao din ngi s dng n gin. Trong phn ny, ta t
to mt giao din ngi s dng, cng dng iu khin ADO Data, nhng bng
cch t th cng cc thuc tnh qu l ng dn ca c s d liu. Qunh trnh
ny cho php ta hiu chnh ng dng v thm chc nng b xung cho n.
kt ni mt iu khin cn dng d liu vi mt iu khin d liu, ta
theo cc bc sau:
1. Bo m rng biu mu cha mt iu khin ADO Data m thuc tnh
RecordSource v ConnectionString ca chng c quy n l ngun d liu
hp l. Chui kt ni ti thiu ta cn dng l :
Provider = Microsoft.Jet.OLEDB.3.51; Data
Source = App.parth & \novelty.mdb

2. Quy nh thuc tnh DataSource ca iu khin cn dng d liu l tn ca


iu khin Data. ( Khi ta dng ca s Properties ca Visual Basic thc
hin iu ny, thuc tnh DataSource hin th tn ca tt c cc iu khin
Data trn biu mu hin hnh).
3. Nu iu khin cn dng d liu c mt thuc tnh DataField, quy nh n
l tn trng ta mun iu khin hin th. Mt ln na, ta lu rng nu
mi th c thit lp ng, mt danh sch cc trng s c x xung
trong thuc tnh DataField khi ta chn thuc tnh ny trong ca s Properties
ca Visual Basic.
Lu : Phn ln nhng khng phi mi iu khin cn dng d liu
u c thuc tnh DataField. V d iu khin DataGrid i km vi
Visual Basic khng c thuc tnh DataField, bi v iu khin c th
hin th tt c cc trng trong mt ngun d liu.
12.4.2.1

iu khin cn dng d liu

Mt iu khin cn dng d liu l mt iu khin bt k c thuc tnh


DataSource. Thuc tnh DataSource tham chiu n mt iu khin d liu ; thuc
tnh ny kt ni iu khin giao din ngi s dng vi iu khin d liu (n
phin n li kt ni, hay rng buc giao din ngi s dng vi c s d liu ).
iu khin giao din ngi s dng c ni l rng buc vi c s d liu
thng qua iu khin d liu.
Sau y l danh sch ca cc iu khin cn dng d liu i km vi Visual
Basic:
CheckBox : iu khin cung cp mt iu kin ng / sai. N ch yu
rng buc vi trng Boolean, hay Yes/ No trong mt c s d liu.
ComboBox : y l hp kt hp x xung chun ca Visual Basic. Ta
khng dng iu khin ny cho mc nh truy cp d liu, bi v phn danh
sch ca n khng th rng buc vi mt ngun d liu, ch c phn vn

bn m thi. Nu ta mun dng mt iu khin giao din ngi s dng


rng buc cho mc ch ny, ta cn nhc dng iu khin mnh hn,
DBCombo.
DBCombo : iu khin cn dng d liu ny h tr mt danh sch x
xung tng t iu khin hp kt hp chun ca Visual Basic, nhng n
c th in vo danh sch cc d liu ly t mt bng ca c s d liu.
DataGrid : Li hin th d liu ca c s d liu theo dng v ct. Phin
bn thng phm ca iu khin ny l iu khin Apex True DB Grid.
DateTimePicker : iu khin ny c th rng buc ngy hoc gi trong
mt c s d liu. N gip ngi s dng chn ngy, gi mt cch d
dng di dng ho.
DBList : iu khin hp danh sch ny tng t iu khin hp danh sch
chun ca Visual Basic, nhng n c th in d liu vo danh sch t mt
bng c s d liu.
Hierarchical FlexGrid : Tng t iu khin FlexGrid trong VB5, iu
khin ny cho php thao tc vi nhiu mu tin quan h trong mt iu
khin li.
Image : iu khin ny tng t iu khin PictureBox, nhng thiu mt
vi tnh nng ca n.
Label : iu khin ny cho php trnh by vn bn t mt trng c s d
liu, nhnhng ngn cn ngi s dng s i n.
ListBox : y l hp danh sch chun ca Visual Basic, ta khng s dng
iu khin ny cho mc ch truy cp c s d liu m s dng iu khin
mnh h DBList.
MaskedEdit : iu khin ny tng t mt hp vn bn, nhng cung cp
mt chc nng kim tra ni ti cng nh mt hin th mc nh gi cho
ngi s dng iu kin nhp vo hp vn bn.
MSChart : iu khin Mschart l mt iu khin chun i km vi Visual
Basic. Ci khc trong VB6 l kh nng rng buc biu trc tip vi mt
iu khin d liu.
MSFlexGrid : iu khin ny cho ta trnh by d liu di dng li. Ta
cn c th s dng iu khin x l d liu, gp nhm v sp xp.
Phin bn thng phm ca iu khin ny l VideoSoft VSLEX.
TextBox : iu khin thng dng ny cho php ngi s dng nhp d
liu trc tip.

12.4.2.2 Cc iu khin cn dng d liu ca cc nh cung cp th 3


Ngoi cc iu khin cn dng d liu i km vi Visual Basic, ta cn c cc
iu khin c cung cp bi cc nh cung cp th ba. Thng thng, khi mt
iu khin l nhn thc d liu, nh cung cp thng dng t cn dng d liu
hay rng buc, ch r iu khin c th rng buc vi mt ngun d liu.

12.4.3Thao tc trn cc mu tin thng qua iu khin ADO Data


Ngoi kh nng cho php duyt qua Recordset, iu khin ADO Data cho php
ta thi hnh cc hot ng khng i hi lp trnh. Ta c th dng chng trnh vi
iu khin d liu duyt qua tng mu tin, xo mu tin, v to mu tin mi.
Phn ln, chng trnh phi vit khi lm vic vi iu khin d liu u tp
trung trn i tng Recordset. Mt i tng Recordset tr nn sn sng khi ta

quy nh thuc tnh ConnectionString v RecordSource cho n. truy cp mt


thuc tnh hay phng thc ca mt i tng Recordset ca iu khin d liu
trong chng trnh, ta tham chiu n iu khin d liu, ri tham chiu n i
tng Recordset.
V d: di chuyn n mu tin th nht ca Recordset cha trong iu
khin d liu tn l datCustomer, ta dng on chng trnh sau:
DatCustomer.Recordset.MoveFirst
Ti sao khng dng datCustomer.MoveFirst ? Cu tr li l iu khin d liu
khng ging nh d liu, thao vo , iu khin d liu di dng i tng
Recordset. Cc thuc tnh bn thn ca iu khin d liu gn lin vi s xut
hin v cc phn ng ca n, trong khi i tng Recordset c cc thuc tnh v
phng thc gn lin vi chnh d liu.
12.4.3.1

Dng iu khin d liu to mu tin mi

to mt mu tin mi ta c 2 tu chn:
Quy nh thuc tnh EOFAction ca iu khin d liu l 2 AddNew. Gii
php ny khng i hi lp trnh.
Dng phng thc AddNew v Update ca i tng Recordset ca iu
khin d liu. Gii php ny phc tp hn, nhung cho ta kh nng iu
khin trn nhng g xy ra khi ngi s dng mun to mu tin mi. N
cng thch hp cho trng hp ta mun che du iu khin d liu i vi
ngi s dng.
cho php iu khin d liu to mu tin mi m khng cn lp trnh, ta lm
nh sau:
1. Trong n iu khin Data, quy nh thuc tnh EOFAction ca iu
khin Data l 2 AddNew.
2. Thi hnh n.
3. Nhn nt MoveLast ca iu khin data, ri nhn Next, Thay v di chuyn
n mu tin cui cng trong Recordset, iu khin d liu to mt mu tin
mi. Ta c th ni rng mu tin ny mi v tt c cc iu khin rng buc
trn biu mu u rng.
4. Nhp d liu trong cc iu khin rng buc.
5. Dng nt Previous ca iu khin Data, di chuyn n mu tin trc .
Mu tin mi c lu vo c s d liu.
Mun s dng phng thc AddNew v Update to mt mu tin mi, ta
lm nh sau :

1. Thm cc nt lnh v cc iu khin khc v giao din th hin phng


thuc AddNew v Update.
2. Trong s kin Click ca nt Update, a vo dng chng trnh sau
DatCustomer.Recordset.Update
3. Trong s kin Click ca nt Update, a vo dng chng trnh sau:
DatCustomer.Recordset.AddNew
4. Khi ngi s dng nhp liu, h c th tu chn nhn Update Record
ghi nhn mu tin mi vo c s d liu. H cn c th di chuyn sn mu
tin khc lu n, iu ny cng ng vi cp nht mu tin.

im quan trng cn cn hiu l khi ngi s dng to mt mu tin mi trong


giao din nhp liu s dng iu khin d liu, nhiu hot ng s l khng hp
l bi v cha c mu tin hin hnh.
V d, nu ng dng cho php ngi s dng to mt mu tin bng cch quy
nh thuc tnh EOFAction ca iu khin d liu l AddNew, ri cho php
ngi s dng thi hnh phng thc Delete trn mu tin hin hnh, ng dng s
bo li.
Li xy ra bi v khng c mu tin b xo. trnh tnh hung ny, ta c mt
vi la chn. Nu ta quen vi Visual Basic, la chn hin nhin l by li v
cm phng thc Delete. Nhng c mt phng thc tt hn trnh rc ri
ny : v hiu ho nt Delete ngn cn ngi s dng nhn n trong ln u tin
.
12.4.3.2

Dng s kin moveComplete cp nht giao din ngi

s dng
Ta c th dng s kin MoveComplete ca iu khin ADO Data khi ng
sa i trong ng dng khi ngi s dng di chuyn t mu tin ny sang mu tin
khc.
S kin MoveComplete c kch hot sau khi mt mu tin mi tr thnh hin
hnh. y l mt trong vi s kin c kch hot khi iu khin di chuyn t mt
mu tin ny sang mu tin khc. Cc s kin khc bao gm WillChange, c kch
hot khi iu khin di chuyn t mu tin ny san mu tin khc, hay thay i mt
mu tin v s kin RecordChangeComplete, xy ra khi mt mu tin c sa i
thnh cng trong c s d liu nh mt kt qu ca hot ng trong iu khin
d liu.
Ta ch yu dng s kin RecordChangeComplete thc hin cc tc v sau:

Thi hnh mt cu truy vn trn cc mu tin lin quan n mu tin chnh


Microsoft Access gi n l giao din biu mu chnh/ biu mu con.
Tnh ton mt gi tr dn xut t mt hay nhiu gi tr trong mu tin.
Qun l nhiu vn v giao din ngi s dng p ng vi trng
thi Recordset ca iu khin d liu, thi hnh nhng cng vic nh l che
giu hoc v hiu ho tnh nng no nu mt mu tin hp l vng mt.
Lu : iu khin DAO Data cung cp cc s kin tng t nhng
s kin m t y. Cc s kin Will ca iu khin ADO Data (
nh l WillMove v WillChange ) gn ging vi s kin Validate
ca iu khin DAO Data, trong khi cc s kin Complete ca
iu khin ADO Data ( nh l RecordChangeComplete v
MoveComplete ) th tng t vi s kin Reposition ca iu khin
DAO Data.
V d : Ta quan tm n vng m khch hng c ng. Ta c th vit chng
trnh quy nh chia cc Tiu bang, mi tiu bang l mt vng. Cc Tiu
bang khng c quan h kinh doanh s c gn gi tr Aunassigned. Ta c
th dng iu khin ADO Data trnh by vng ca tng mu tin trong
biu mu nh sau:

1. Trn biu mu ca ng dng iu khin d liu, ta to mt iu


khin nhn v t tn n l lblRegion.
2. Trong th tc s kin MoveComplete ca iu khin ADO Data,
a vo on chng trnh sau:
Option Explicit
Private Sub datCusstomer_MoveComplete ( ByVal AddReason
as ADODB.EventReasonEnum, ByVal pError Ass ADODB.Error,
asStatus As ADODB.EventStatusEnum, ByVal Rs as
ADODB.Recordset )
Dim strST as String
Dim StrRegion as String
If rs.BOF = false and Rs.EOF =False Then
strST = RS.Field(State) &
end if
Display region
Select Case strST
Case VT, NH, CT
strRegion = Northeast
Case NC, KY, AR
strRegion = South
Case OK, MN, MI, OH
strRegion = Midwest
Case MT
strRegion = West
Case Else
strRegion = Unassigned
End Select
lblRegion.Caption = strRegion
End Sub.

3. Thi hnh ng dng, ta s thy cc vng c hin th khi ta thay i


t mu ny sang mu khc.
12.4.3.3

Dng iu khin Data xo mu tin

xo mu tin trong mt ng dng s dng iu khin d liu, ta dng


phng thc Delete ca i tng Recordset ca iu khin d liu:
datCustomer.Recordset.Delete

C mt cnh bo quan trng lin quan n vic s dng phng thc Delete
ca i tng Recordset vi iu khin Data. Khi xo mt mu tin, khng c mu
tin hin hnh xut hin thay th, recordset khng c ch ng. V vy, gii
quyt rc ri ny, ta phi di chuyn sang mu tin khc trong Recordset ( ch yu
dng phng thc MoveNext hay MoveLast ca Recordset )
Lu : Nh ni trong phn to mu tin v dng cc s kin ca iu
khin d liu, ta phi bo m rng c mt mu tin hin hnh trong
recordset ca iu khin d liu khi ta thi hnh phng thc Delete, hoc
l ng dng s bo li. trnh li ny ta phi thit k giao din ngi
dng sao cho ngi s dng khng th xo mu tin khng hin hu . Gii
php hu hiu l kim tra thuc tnh EOF v BOF ca recordset trc khi
tin hnh phng thc Delete, nu BOF hay EOF l True, th phng thc
Delete s tht bi.

12.4.3.4

Dng s kin WillChangeRecord bo m d liu hp

l
Trong lp trnh c s d liu, vic kim tra d liu hp l (Validation)
m bo rng d liu nhp vo h thng tun th cc iu kin xc nh bi thit
k ng dng.
Mt cch thi hnh vic kim tra ny khi lp trnh vi iu khin ADO Data
l vit chng trnh trong s kin WillChangeRecord ca iu khin. S kin ny
c kch hot ngay sau khi mu tin c hin th bi iu khin d liu b thay
i. Mt tnh hung hay gp l ngi dng kch hot s kin bng cch di chuyn
sang mu tin khc sau khi sa i hay to mt mu tin.
Khc vi phin bn trc ca Visual Basic vn s dng iu khin DAO Data,
iu khin ADO Data bo li theo tng kiu hot ng ca iu khin Data. iu
khin DAO Data ch pht s kin Validate v Reposition vn c kch hot vi
mt s l do. Chng trnh phi x l thm xc nh ti sao s kin c kch
hot.
12.4.3.5

Validation mc b my c s d liu

Ngoi vic x l cc Validation b xung khi d liu c nhp, ta cn c th


thi hnh Validation mc b my c s d liu. Cc validation ny tin cy hn,
bi v n c p dng bt chp qu trnh sa i d liu g. Nhng validation
mc ny km linh hot, bi v n gn nh khng can thip c. Hn na ta ch c
th thi hnh validation trn c s d liu ch vi mc trng, ta khng th tin
hnh validation so snh gia 2 trng.
Validation mc b my c s d liu l mt chc nng ca thit k c s
d liu. i vi c s d liu Jet, to cc quy tc cho validation trong phn
design view ca bng trn Access l d dng nht.
V d, ta mun bo m mu tn kho khng bao gi c nhp vo bng
Inventory m khng c s catolog. thc hin iu ny i vi Microsoft
Access ta t trong thuc tnh Allow Zero Length l No.
12.4.3.6

Lm cho validation r rng hn bng Validation Text

Do ngi nhp liu thiu kinh nghim s gp thng bo li do b my c s


d liu pht ra khi h vi phm quy tc Validation. ta c th hin th thng bo quen
thuc hn khi ngi dng nhp d liu sai. Ta thc hin iu ny bng thuc tnh
Validation Text ca ca s nh ngha bng.
V d : thng bo mt cch thn thin hn khi ngi s dng phm quy tc
validation ca CatalogNumber, ta lm nh sau:
1. Trong Access, m thit k ca bng tblInventory.
2. Trong thuc tnh Validation Text ca trng CatalogNumber, nhp vo
chui k t sau :
Ch : Bn phi g mt s catalog bt u bng mt k t t A n M
3. Lu v ng thit k bng v tr v Visual Basic.
Khi ta c sa gi tr trong trng Catolog Number thnh mt gi tr hp l -. V
d, sa thnh Z12 mt thng bo li xut hin.

12.4.4Cc thuc tnh quan trng khc ca iu khin ADO DATA


iu khin ADO Data c mt s thuc tnh b sung qun l cch hot ng
ca n, ta c th quy inh hu ht cc thuc tnh vo lc thit k. V vy, ta khng
cn lp trnh.
12.4.4.1

Thuc tnh CommandType

Thuc tnh CommandType xc nh kiu lnh m iu khin ADO Data pht


ra trn ngun d liu ly v cc mu tin. V d trong chng ny s dng
CommandType l 2- adCmdTable m v lm vic trc tip vi bng. Tuy nhin,
ta c th dng lnh dng vn bn hay th tc lu tr cung cp d liu cho
iu khin d liu.
Lnh dng vn bn l mt chui, c to ra trong m ngun ca ng dng,
v c a vo b my c s d liu x l.i vi cc c s d liu quan
h ( nh Microsoft Jet, cng nh nhiu h c s d liu khc ), chui ny c
cu to di cu truy vn SQL. Tuy nhin ADO cho php ta dng ngn ng bt k
m ngun d liu c th hiu c nh l lnh danh vn bn.
Mt th tc lu tr l mt cu truy vn hay cc lnh khc c nhng trong
bn thn c s d liu. Ta ch yu to mt th tc lu tr ( store procedure )
tn dng kh nng qun l tp trung ca th tc truy cp c s d liu, cng
nh ci tin kh nng hot ng ca cu trc truy vn. C s d liu Jet ca
Microsoft cung cp mt dng c bn ca th tc lu tr gi l QueryDef.
Microsoft SQL Server cung cp mt b my y cc m rng n SQL cho
php ta lp trnh cc th tc lu tr.
12.4.4.2

Thuc tnh EOFAction

Thuc tnh EOFAction xc nh nhng g iu khin d liu thc hin khi


ngi s dng di chuyn n cui ca Recordset. Nu ta quy nh thuc tnh l 2
AddNew, iu khin to mt bn ghi mi khi ngi s dng i qua phn cui
cng ca mu tin hin hnh. ( Ni cch khc, gi tr ny lm cho giao din hot
ng tng t biu mu ca Microsoft Access ). Tuy nhin, nh rng gi tr ny
khng phi l hot ng mc nh ca iu khin d liu ca Visual Basic ; ta
phi thay i thuc tnh lc thit k m bo rng iu khin c phn ng nh
vy.
to mt mu tin mi khi thuc tnh EOFAction ca iu khin d liu
c quy inh AddNew, ta nhn nt MoveLast, ri nhn nt MoveNext.
12.4.4.3

Dng thuc tnh Mode kim sot truy cp n d liu

Bng cch quy nh thuc tnh Mode ca iu khin ADO Data, ta c th kim
sot xem nhng ngi s dng khc c truy cp c s d liu hay khng khi ng
dng ang thi hnh. V d, bng cch quy nh thuc tnh Mode l 12
adModeShareExclusive, ng dng s c tng cng kh nng truy cp loi tr
n d liu - khng ngi s dng no khc c th truy cp n n khi ng dng
ang thi hnh.
Ta cn c th m mt ngun d liu ch c ( Read only ) bng cch quy nh
thuc tnh Mode l 1 adModeRead ; ng dng ca bn s nhn c kh nng
truy cp ch c c d liu. u im ca gi tr ny l, ci tin kh nng hot
ng, bi v b my c s dliu khng cn quan tm n nhng vn rc ri

nh l kho mu tin hay kt ni nhiu ngi s dng xy ra khi c nhiu hn mt


ng dng truy cp n cng mt mu tin.

12.5 Tng kt
Chng ny trnh by nhng khi nim c bn ca c s d liu ni chung,
cng nh cch thc kt ni d dng nht ca ng dng Visual Basic vi c s d
liu Microsoft Access.
Cn nh rng, mc d Visual Basic v Microsoft Access chia s cng mt b
my c s d liu, c s d liu kiu Access khng phi l kh nng duy nht ca
Visual Basic.

12.6 Hi v p
Hi : Ta thy rng Visual Data Manager khng mnh v d s dng nh Microsoft
Access, vy ti sao ta li dng n ?
p : Nu ta khng c hoc khng th dng Microsoft Access th ta c th dng n.
Hi : Th cn iu khin DAO Data th sao ?
p : Trong quyn sch ny, ta tp trung vo phin bn ADO ca iu khin bi
v n mnh hn iu khin DAO Data. Mc d vy, ta vn c th dng DAO khi
khng th dng DAO khi khng th dng ADO. tm hiu chi tit v iu ny,
tham kho mt s mo lin quan n iu khin DAO Data.
Hi : iu khin d liu c v d s dng nhng chng c v b hn ch v ri
rm trong vi trng hp. C cch no thc hin cc chc nng c s d liu
trong Visual Basic.
p : Chc chn bn c Microsoft cung cp iu khin DAO Data ( k t
Visual Basic 3.0 ) nh l mt gii php khng cn lp trnh. i vi cc hn ch
ca iu khin d liu, ta c th c gii php l kt hp 1 hay nhiu iu khin
d liu vi lp trnh hoc ch s dng chng trnh.
Hi : C cch no dng cc iu khin cn dng d liu m khng dng iu
khin d liu khng ?
p : C, mc d, nu ta khng dng iu khin d liu, ta s phi vit chng
trnh qun l kt ni vi c s d liu mt cch th cng hay dng thit k
DataEnvironment ( nh trnh by trong phn Dng thit k DataEnvironment
to giao din ngi s dng trong chng ny ). iu ny khng phi l khng
lm c nhng hi phc tp. Ta s dng chng trnh i tng ( DAO, RDO
hay ADO ) x l vic tr v v cp nht mu tin. ( Ta cn c th dng kiu lp
trnh ny cho php cc iu khin khng cn dng d liu, nh l iu khin
TreeView ca Visual Basic, trnh by d liu t c s d liu ).
Hi : Ta c th dng i tng Recordset ca iu khin d liu vo mc ch
khc khng ?
p : c, i tng Recordset ca iu khin ADO Data tng t cc i
tng Recordset khc trong ADO. Ta c th gn mt recordset to ra trong chng
trnh ADO vi mt i tng Recordset ca i tng ADO Data.

13 Cc i tng truy cp d liu

S dng m hnh i tng DAO.


S dng DAO lm vic vi d liu.
To i tng thao tc vi cu trc c s d liu.

Ta c th dng DAO ( i tng truy vn c s d liu Data Access Object)


thao tc vi c s d liu thng qua lp trnh vi Visual Basic. Vi DAO, ta c th
thi hnh cc cu truy vn, cp nht gi tr trong cc bng c s d liu v to cu
trc c s d liu bao gm cc bng , cc cu truy vn cha sn v mi quan h
gia cc bng.
DAO c cc nh lp trnh Visual Basic s dng truy cp cc c s d liu
trn my tnh c nhn hay Client / Server. Nhng vi s ra i ca ADO, gi y n
ch thch hp dng c s d liu Jet m thi. Cn i vi vic pht trin cc h
Client / Server mi, ch yu ta tn dng th mnh ca ADO.

13.1 S dng m hnh i tng DAO


M hnh i tng DAO kh phc tp vi hng trm yu t. Hng t kiu tp hp
cha hng t i tng, mi i tng li c thuc tnh, phng thc v cc i
tng con ca ring n.
Sau y l m hnh cy phn cp ca i tng DAO:

DBEngine
DBEngine
Workspace

Database

TableDef

QueryDef

Field

Field

Index

Parameter

Recordset

Container

Field

Relation
Field

Document

Field
object only
object only
User
Object and Collection
Group
Group
User

Error

Hnh 13.1 M hnh cy phn cp DAO, trnh by mi qua h gia cc i tng c


s d liu.
Mt cch phn loi s phc tp ca m hnh i tng DAO l bt u bng
i tng Database v xem xt cc tp hp ca n. Tp hp l nhng b cc i
tng quan h vi nhu; i tng Database c cc tp hp cc i tng nh
sau:
Thng qua cc tp hp s hu bi i tng Database, ta c th thao tc trn d
liu v cu trc ca mt c s d liu, to cc i tng c s d liu mi, v
kim tra cu trc v d liu cha trong mt c s d liu.
Trong lp trnh DAO, c mt tp hp ct li gm cc k thut thng dng c s
dng gn nh cho mi chng trnh. Chng bao gm:
Thi hnh cu truy vn SELECT ly v cc d liu t c s d liu
Duyt qua tng mu tin trong mt recordset.
Thi hnh cu truy vn hnh ng (bao gm cc cu truy vn update, delete
v append).
Sa i cu trc c s d liu.
X l li pht sinh bi truy cp c s d liu.
K thut ny lm vic rt tt vi c s d liu Access.

13.1.1Lp trnh vi i tng


s dng tt cc i tng ca DAO bn phi hiu cn bn v i tng. Tt
c i tng bao gm cc phn t sau:

Cc thuc tnh : l nhng d liu gn lin vi i tng gm 1 kiu d


liu chun (nh interger, string..) hay 1 tp hp i tng trong n. V d :
Recordset cha trong n l tp hp Fields.
Cc phng thc : l cc hnh ng m i tng c th thi hnh. Chng c
th hot ng nh cc hm ( tr v d liu ) hay cc th tc con
Cc s kin: l cc thng ip m i tng c th gi n cc ng dng
ang s dng i tng. DAO cng c cc s kin ring.

13.1.2S dng iu khin DAO Data


Ta c th s dng iu khin DAO data kt ni vi mt c s d liu Jet ca
Microsoft. Mc d vi s xut hin ca iu khin mnh hn, ADO Data, vic s
dng iu khin DAO Data b gim bt, nhng vn tn ti l do s dng iu
khin c in DAO data. Ngoi ra, n cn c kh nng kt ni vi cc ngun d
liu nh cc tp tin dBASE, vn bn, bng tnh Excel m khng cn phi dng
ODBC (ni kt c s d liu m).
Lu : Nguyn l c bn ca iu khin DAO tng t vi iu khin ADO
Data, ch khc phn chi tit. s dng iu khin, ta gn tn ca tp tin c s
d liu vo thuc tnh DatabaseName ri chn mt bng hoc mt ngun d liu
no khc trong thuc tnh RecordSource. Sau cng, ta s rng buc cc iu khin
giao din ngi s dng nh l cc hp vn bn vi iu khin bng cch ch ra
gi tr cho thuc tnh DataSource v DataField ca tng iu khin giao din
ngi s dng

13.1.3S dng thuc tnh Connect ca iu khin DAO Data


truy cp ngun d liu bn ngoi
Thuc tnh Connect xc nh loi c s d liu kt ni n iu khin Data. Theo
mc nh, thuc tnh ny c ch nh l Microsoft Access., nhng ta c th sa
i ch nh ny nu ta mun kt ni vi mt kiu d liu khng phi Access. Cc
kiu d liu ny c gi l cc kiu d liu bn ngoi.
Jet h tr cc kiu c s d liu trn my tnh c nhn sau y:
dBASE III,IV v 5.0
Phin bn Excel 3.0, 4.0, 5.0 v 8.0
Phin bn Foxpro 2.0, 2.5, 2.6 v 3.0
Lotus spreadsheet vi nh dng WK1, WK3 v WK4.
Phin bn Paradox 3.x, 4.x v 5.x
Tp tin vn bn ASCII c phn cch.
V d : S dng iu khin Data ni vi file excel 5.0 l excel-db.xls
Thuc tnh : Connect = Excel 5.0; DatabaseName= excel-db.xls; RecordSource =
Sheet$ ..

Lu : DAO khng h tr mt s hot ng trn c s d liu bn ngoi. c


bit, c s d liu khng h tr cc th tc DAO nh to c s d liu,
trng , nh ngha truy vn. Chng ch h tr vi c s d liu Jet.

13.2 S dng DAO lm vic vi d liu


DAO c dng ch yu thao tc trn d liu trong mt c s d liu c.
Thi hnh truy vn, cp nht mu tin, v thi hnh cc hot ng bo tr l s trng
ca DAO.

13.2.1Dng i tng DataBase kt ni vi mt CSDL


i tng Database l ni ng dng bt u phn ln cc truy cp c s d
liu ca n. dng i tng Database, ta bt u lp tham chiu n Microsoft
DAOs trong menu Project References ca Visual Basic .. iu ny s cho php ng
dng tng cng truy cp n mi i tng do DAO cung cp.
thc hin iu ny, ta theo cc bc sau:
1. T menu Project, chn References.
2. Hp thoi References xut hin. T danh sch cc th vin, chn vo hp
nh du Microsoft DAO 3.5.1 Object Library.
3. Nhn OK. Gi y, ta c th dng i tng c cung cp bi th vin
i tng DAO.
Bc k tip l khai bo mt bin i tng c s d liu trong chng trnh :
Dim db As Database
Nu ng dng c thit k lm vic vi mt c s d liu duy nht, tt nht
ta nn khai bo bin Database mc m-dun ca biu mu chnh ca ng dng.
Nu nhiu biu mu ng dng cn truy cp n mt c s d liu, ta nn to
mt lp qun l kt ni n c s d liu.
13.2.1.1

S dng phng thc OpenDatabase to mt i

tng Database
y l phng thc ca i tng Workspace
Ta dng phng thc OpenDatabase to mt i tng Database. Phng thc
ny tr v mt i tng Database ( do , trc khi dng OpenDatabase, ta phi
khai bo mt bin i tng c kiu l Database cha gi tr tr v ca
phng thc ).
Dim db As Database
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Msgbox The database & db.Name & is now open.
Phng thc OpenDatabase c tham s bt buc tn ca c s d liu ta mun
m.
C php : (i tng Workspace c mc nh )
OpenDatabase(dbName, [options], [readonly],[connect])
Tham s
Options

M t
Nu tham s ny l true,c s d liu m trong ch loi tr;
khng ai c th m c s d liu trong ch loi tr. Nu gi

Readonly
Connect

13.2.1.2

tr ny l false, nhng ngi khc c th m c s d liu.


Nu tham s ny l True, ta khng th sa i c s d liu.
mt chui ch ra cch thc kt ni vi c s d liu; chui
thng ch c dng cho nhng ngun d liu Client / Server v
ODBC.
2.1.2 S dng phng thc Execute thi hnh truy vn

hnh ng
S dng Execute ca i tng Database thi hnh mt cu lnh SQL trn SQL.
Phng thc ny nn dng :
Cp nht, xo hay sao chp mu tin (trong Access / Jet, ta gi l cc truy vn
hnh ng )
Sa cu trc d liu
Cc cu truy vn SELECT c thi hnh qua phng thc OpenRecordset ca
Database.

13.2.2S dng i tng Recordset


Ta s dng i tng Recordset thao tc vi cc mu tin trong DAO. i tng
Recordset cung cp mt giao din hng i tng cho m hnh c s d liu
quan h lin quan n cc bng c chia thnh nhng mu tin v trng.
to mt recordset, ta ch yu s dng phng thc OpenRecordset.
13.2.2.1

S dng phng thc OpenRecordset to mt i

tng Recordset
Trong DAO, cc i tng Database, Connection, QueryDef, TableDef, v
Recordset u c phng thc OpenRecordset. Tt c u c dng vi cng
mc ch; truy cp d liu cha trong c s d liu.
Phng thc OpenRecordset thc s l mt hm tr v mt i tng Recordset,
ta cn khai bo mt i tng Recordset trc khi s dng OpenRecordset.
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("tblCustomer")
Tham s bt buc duy nht ca phng thc OpenRecordset l ngun d liu.
y l chui k t, theo nguyn tc l tn ca mt bng hoc mt nh ngha truy
vn cha sn. Nhng n cng c th l mt cu lnh SELECT SQL:
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblCustomer" & _
" Order By [LastName]")

Trnh dng du trch dn

13.2.2.2

Ta thng c cu lnh SQL:


SELECT * FROM tblCustomer WHERE [LastName]="Smith"
Lm th no a vo OpenRecordset m khng b nhm du ":
Gii php s dng du n :
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblCustomer" & _
" WHERE [LastName]='Smith'")
Nu tn ngi s dng l nhp vo t text box txtLastName.Text th a vo th
no :
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblCustomer" & _
" WHERE [LastName]='" & txtLastName.Text &"'")

13.2.3Ch ra cc tu chn cho Recordset


Tham s Options ca phng thc OpenRecordset xc nh mt s cch thc thao
tc vi mu tin.
Hng

ngha

dbOpentable

Trong mt workspace ca Microsoft Jet, to mt i


tng Recordset kiu bng ( bng c nh ch mc ch
s dng mt bng )

dbOpenDynamic

Trong mt workspace kiu ODBCDirect, m mt i


tng Recordset kiu dynamic ( cp nht c d liu
khi ngi khc sa i v truy vn d liu qua nhiu
bng )

dbOpenDynaset

M mt i tng kiu Dynaset ( tham chiu n


recordset ca nhiu bng hoc t nhiu c s d liu
khc)

dbOpenForwardonly M mt i tng Recordset m con tr ca n ch c th


di chuyn ti

13.3 S dng i tng Field thao tc vi cc trng


i tng Field th hin mt trng trong mt cu trc d liu. Cc i tng
TableDef, Recordset, Relation v Index u cha cc tp hp trng.

Ta c th ly gi tr ca mt trng bng cch kim tra gi tr ca thuc tnh


Value ca mt i tng Field . (Bi v thuc tnh Value l thuc tnh mc nh
ca i tng Field, ta ch cn tham chiu n i tng Field; ta khng nht
thit phi tham chiu tng minh n thuc tnh Value).

13.4 Sdng cc phng thc duyt vi i tng Recorset


Sau khi to xong mt i tng Recordset, ta c th dng cc phng thc duyt
di chuyn qua tng mu tin trong recordset. Ta ch yu thc hin iu ny
trong trng hp cn ly v d liu t mi mu tin trong mt recordset, mc d ta
cn c th s dng chng cho php ngi s dng ch duyt qua cc mu tin.
Cc phng thc duyt ca mt i tng Recrdset gm c:

MoveFirst : di chuyn n mu tin u tin trong recordset.


MoveNext : di chuyn n mu tin k tip trong recordset.
MovePrevious : di chuyn v mu tin trc trong recordset.
MoveLast: di chuyn n mu tin cui cng trong recordset.
Move : di chuyn mt s mu tin c ch nh trc.

13.4.1S dng BOF v EOF duyt qua Recordset


Ngoi cc phng thc trn, i tng Recordset cung cp 2 thuc tnh cho ta bit
khi ta di chuyn v u hoc v cui recordset.

Thuc tnh EOF(end of file) l True khi ta di chuyn qu mu tin cui cng
ca recordset.
Thuc tnh BOF(begin of file) l True khi ta di chuyn n mt v tr trc
mu tin th nht trong recordset.
BO F
M utin1
M utin2
...
EO F

Hnh 13.2 BOF v EOF trong mt Recordset.


Do until EOF
perform action on the data or read values from fields
rs.MoveNext
Loop

13.4.2Dng BOF v EOF xc nh mt Recordset c rng hay


khng
Thuc tnh BOF v EOF lun c sn, thm ch trong mt recordset khng c mu
tin. Trn thc t, cch tt nht xem recordset c cha mu tin hay khng l
kim tra gi tr ca c hai thuc tnh EOF v BOF. Nu c BOF v EOF u l
True, recordset khng cha mu tin.

13.4.3Dng thuc tnh RecordCout xc nh s mu tin trong


mt recordset
Ta dng thuc tnh RecordCount xc nh s mu tin trong mt recordset. Nhng
lu rng gi tr ca RecordCount s khng hp l nu ta cha chuyn n mu
tin cui cng trong Recordset.
Bi v Jet x l truy vn trn 2 giai on. Giai on u ch tr v d liu cho
ng dng hot ng m khng b chm tr trong x l. Giai on th hai thi hnh
bn di, tr v ton b d liu yu cu truy vn hon chnh. Jet thc hin
iu ny ch nhm mc tiu tng kh nng hot ng, v vy, vic thi hnh ng
dng khng b cn tr trong khi ch tr v mt khi lng d liu ln. Ta khng
iu khin trc tip qu trnh ny, nhng ta cn bit rng n tn ti v cch thc
lm vic vi n khi ta mun bit chnh xc c bao nhiu mu tin ang c trong mt
recordset chng hn.
Option Explicit
' References: Microsoft DAO 3.51 Object Library
Dim db As Database
Private Sub Form_Load()
Set db = OpenDatabase("..\..\db\novelty.mdb")
End Sub
Private Sub cmdCount_click()
Dim rs As Recordset
Set rs = db.OpenRecordset("tblInventory")
rs.MoveLast
MsgBox "There are " & rs.RecordCount & _
" items in inventory.", vbInformation
End Sub
Lu : Nu mun xc nh s mu tin l 0 dng thuc tnh BOF v EOF thay v
dng RecordCount

13.4.4Dng phng thc Edit sa i gi tr trong mt mu tin


Ta c th sa i mu tin hin hnh trong mt i tng Recordset cp nht c
bng cch dng phng thc Edit v Update ca recordset. mung sa i gi tr
ca mt trng trong mt Recordset, theo cc bc sau :

1. Dng cc phng thc duyt ca i tng Recordset di chuyn n


mu tin cn sa i.
2. Thi hnh phng thc Edit ca recordset.
3. Dng tp hp Fields ca i tng Recordset gn gi tr cho trng
trong mu tin :
rs.Fields(LastName)= Smith
hoc
rs!LastName = Smith
4. Lu mu tin vo c s d liu bng cch dng phng thc Update ca
Recordset.

13.4.5S dng phng thc AddNew v Update to mu tin


mi
Ta c th to mt mu tin mi trong i tng Recordset cp nht c bt k
bng cch dng phng thc AddNew v Update. To mt mu tin mi trong mt
recordset l qu trnh 3 bc:
1. Thi hnh phng thc AddNew ca RecordSet. N thm mt mu tin mi,
trng vo cui ca recordset.
2. Gn gi tr cho mu tin mi bng cch s dng cu lnh gn m ta thng
dng vi cc trng c s d liu.
3. Dng phng thc Update ghi mu tin vo c s d liu.
Option Explicit
' References: Microsoft DAO 3.51 Object Library
Private Enum TextBoxes
txtProduct = 0
txtCatalogNumber = 1
txtWholesalePrice = 2
txtRetailPrice = 3
End Enum
Private db As Database
Private rs As Recordset
Private x As Integer
Private Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Set rs = db.OpenRecordset("tblInventory")
For x = txtProduct To txtRetailPrice
TextBox(x).Enabled = False
Next x

cmdSave.Enabled = False
cmdNew.Enabled = True
End Sub
Private Sub cmdNew_Click()
' Create a new record
rs.AddNew
' Enable data entry controls
For x = txtProduct To txtRetailPrice
TextBox(x).Enabled = True
Next x
TextBox(txtProduct).SetFocus
cmdSave.Enabled = True
cmdNew.Enabled = False
End Sub
Private Sub cmdSave_Click()
' Map UI controls to fields
rs.Fields("Product") = TextBox(txtProduct)
rs.Fields("CatalogNumber") = TextBox(txtCatalogNumber)
rs.Fields("WholesalePrice") = TextBox(txtWholesalePrice)
rs.Fields("RetailPrice") = TextBox(txtRetailPrice)
' Commit data to database
rs.Update
' Clear out UI
For x = txtProduct To txtRetailPrice
TextBox(x).Text = ""
TextBox(x).Enabled = False
Next x
cmdSave.Enabled = False
cmdNew.Enabled = True
End Sub

13.4.6S dng AppendChunk ni d liu vo mt trng nh


phn
Ta c th cha d liu nh phn vo trong c s d liu. D liu nh phn bao gm
hnh nh hay tp tin m thanh ngha l bt k nhng g ta mun cha khng ch l
gi tr s hay chui k t.
Lu : Microsoft Access tham chiu n trng nh phn nh l trng OLE
Object (i tng OLE). Ngoi ra, ta c th dng k thut AppendChunk ny
ni thm d liu vo mt trng memo cng nh trng nh phn. Cc phng
thc thao tc trn trng nh phn tn ti gn nh ng dng trong c 3 m hnh
i tng truy cp d liu DAO, RDO v ADO.
Khi ta gn mt gi tr cho trng nh phn trong chng trnh, ta cn thi hnh mt
s bc b sung ly d liu trong trng. Bi v d liu nh phn khng c
chiu di c nh nh cc kiu d liu khc; mt mu d liu nh phn c th ln
n hng mega- byte hoc hn.
V vy, t mt mu d liu nh phn trong c s d liu, trc ht ta phi
chia n thnh nhiu on d liu nh phn, ta ni n vo trng bng cch dng
phng thc AppendChunk ca i tng Field ca recordset.

13.4.7S dng phng thc Close ng Recordset


Ta thc hin iu ny khi chng trnh hon tt s dng i tng Recordset:
rs.Close
im c bit quan trng khi ng mt i tng Recordset l nu i tng t
mt kho (lock) trn bng . ng mt Recordset s nh kho ng dng thit lp
trn i tng c s d liu, cho php ngi s dng khc truy cp n n.
Lu rng trong DAO, Workspace, Connection, Database v QueryDef u c
phng thc Close

13.5 Tm kim d liu trong Recordset v bng


Sau khi to mt c s d liu v nhp liu, ta cn mt cch nh v cc mu tin
ring r trong mt recordset. Qu trnh nh v mt mu tin ring r trong recordset
theo mt tiu ch ch nh trc no trong chng trnh gi l tm kim.
Tm kim khc vi truy vn l mt truy vn th tr v mt recordset. Tm kim
duyt qua cc mu tin trong recordset hin hnh tm ra mt mu tin tho mn
tiu ch ch nh.
C mt s k thut tm kim d liu. S dng phng thc no l tu thuc vo
loi cu trc d liu ta ang truy cp :

Nu ta ang lm vic vi mt recordset, ta dng cc phng thc FindFindFirst, FindNext, FindLast v FindPrevious.
Nu ta truy cp trc tip n mt recordset kiu bng, ta c th dng
phng thc Seek nh v mu tin. Phng thc ny kh lp trnh hn,
nhng n nhanh hn v ta c th dng mt ch mc ca bng vi phng
thc Seek.

13.5.1S dng phng thc Find nh v mu tin trong mt


recordset
tm mt mu tin trong mt Recordset, ta dng mt trong bn phng thc tm
kim ca i tng Recordset :
FindFirst
FindLast
FindNext
FindPrevious
C php ca bn phng thc nh nhau - s dng mt trong bn phng thc
tm kim ny, ta truyn mt mnh WHERE ca SQL vo phng thc ch ra
thng tin ta cn tm kim. Sau khi thi hnh phng thc, mu tin hin hnh trong
i tng Recordset tr thnh mu tin tho mn tiu ch WHERE. Nu tm kim
khng nh v c mu tin yu cu, thuc tnh NoMatch ca i tng Recordset
c gi tr l True.
Loi phng thc ta dng cng xc nh cch thc tm thy mu tin. V d, nu
dng FindFirst , b my c s d liu s di chuyn n mu tin th nht trong
recordset tho tiu ch. FindNext v FindPrevious, ngc li, tm cc mu tin hin
hnh.
im quan trng cn lu l, khc vi mt cu truy vn SELECT ca SQL, tm
kim khng sinh ra mt recordset. Khi b my c s d liu tm ra mu tin tho
tiu ch tm kim, n di chuyn n mu tin ; mu tin tr thnh mu tin hin
hnh. Nu khng c mu tin tm thy, mu tin hin hnh s c gi nguyn v
thuc tnh NoMatch ca i tng Recordset c gi tr l True.

13.5.2S dng phng thc Seek thi hnh tm kim theo ch


mc
tin hnh mt tm kim trn mt ch mc, trc ht bng phi c mt ch mc.
V d sau y, gi nh rng ta c mt bng tblCustomer vi mt ch mc trn
trng LastName. Tn ca ch mc l LastNameIndex.
Option Explicit
' References MS DAO 3.51 Object Library
Private db As Database
Private rs As Recordset
Private Sub Form_Load()
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("tblCustomer", dbOpenTable)
End Sub
Private Sub cmdSeek_Click()
rs.Index = "LastNameIndex"
rs.Seek "=", txtLastName.Text

If rs.NoMatch Then
' not found
MsgBox "No customer by that name was found.", vbExclamation
Else
' return info
MsgBox rs!Address & vbCrLf & _
rs!City & ", " & rs!State & " " & _
rs!Zip & vbCrLf & _
rs!Phone, _
vbInformation, _
rs!FirstName & " " & rs!LastName
End If
End Sub
im hn ch ca phng thc Seek l kh nng tm kim trn mt trng duy
nht v n phi c nh ch mc. Ngoi ra n ch s dng cc ton t sau :
>;<;>=;<=;=
Khc vi phng thc Seek , vn hn ch th phng thc Find cho php ta s
dng cc ton t c sn ca SQL nh Like , in .

13.5.3Lp qua sut tp hp Indexes ca TableDef


xc nh cc ch mc tn ti trong mt bng, ta c th lp qua sut tp hp
Indexes ca i tng TableDef.
Option Explicit
' References MS DAO 3.51 Object Library
Private db As Database
Private rs As Recordset
Private Sub Form_Load()
Set db = OpenDatabase("..\..\db\novelty.mdb")
End Sub
Private Sub cmdShowIndexes_Click()
Dim td As TableDef
Dim ind As Index
Dim f As Field
Set td = db.TableDefs("tblCustomer")
For Each ind In td.Indexes
Debug.Print ind.Name
For Each f In ind.Fields

Debug.Print " On field: " & f.Name


Next
Next
End Sub
Lu :C th dng on chng trnh tng t nh trn lp qua sut cc tp
hp khc ca DAO. V d, c th dng chng trnh ny xem tt c c s d
liu trong mt workspace, cc nh ngha truy vn QueryDef trong mt c s d
liu, hoc l cc trng trong mt TableDef.

13.5.4S dng thuc tnh Bookmark ghi nh v tr trong mt


Recordset
Khi ta tin hnh cc tc v trn mt i tng Recordset, ta thng di chuyn y
trong recordset. Dng thuc tnh Bookmark ca i tng Recordset gi li
mt v tr sao cho ta c th quay li v tr sau ny.
Thuc tnh Bookmark cho ta mt cch hiu qu di chuyn gia hai hay nhiu mu
tin. S dng bookmark th nhanh hn l lp i lp li phng thc Find di
chuyn qua tng mu tin.
Mi mu tin trong mt recordset c th nh du bookmark c c mt s hiu
bookmark duy nht ta c th c ra hay ghi vo ti mt thi im bt k. Tuy
nhin, bookmark khng c cha trong c s d liu; n c pht sinh t ng
khi mt i tng recordset c to v b hu b khi i tng recordset b hu.
s dng bookmark, ta theo cc bc sau:
1. Di chuyn n v tr trong recordset ta mun nh du bookmark.
2. gn gi tr thuc tnh bookmark ca i tng Recordset cho mt bin
chui. N s lu bookmark duy nht cho mu tin hin hnh.
3. Khi ta mun quay li mu tin, i thuc tnh Bookmark ca recordset l gi
tr ca bin chui. Mu tin hin hnh s c i sang mu tin bookmark.
Lu : Khng phi mi kiu i tng Recordset u h tr thuc tnh
Bookmark. xc nh xem ta c th nh du bookmark trn mt kiu recordset
hay khng , kim tra gi tr ca thuc tnh bookmarkable. Nu thuc tnh ny l
True, ta c th nh du bookmark trn Recordset.

13.5.5s dng tp hp Errors v i tng Error x l li


ng dng c th x l li trong DAO bng cch s dng i tng Error v tp
hp Errors. Bi v Errors c sn trong lp trnh c s d liu, mt hot ng no
u c th pht sinh nhiu hn mt li. (iu ny chnh xc vi lp trnh Client
/ Server , trong , v d nh khi server b treo, tng trung gian b nh hng theo
v trnh iu khin ODBC s b tht bi). C 3 tng ny u pht sinh thng bo
li ca ring chng, nhng ta s khng thy cc thng bo li ny tr phi ta c mt
tp hp duyt qua).
Tp hp Errors, thay v i tng Error duy nht, cho php ta duyt qua tt c li
xc nh nguyn nhn vn .
V d sau y trnh by cch lp xuyn qua tp hp Errors ca DBEngine xem
cc li pht sinh.

Option Explicit
' References: MS DAO 3.51
Dim db As Database
Dim rs As Recordset
Private Sub cmdBadFileName_Click()
On Error GoTo ErrHandler
Set db = OpenDatabase("..\..\DB\slez.mdb")
Exit Sub
ErrHandler:
Dim DBError As Error
Debug.Print "Contents of DBEngine Errors Collection"
Debug.Print "--------------------------------------"
For Each DBError In DBEngine.Errors
Debug.Print DBError.Description
Next
End Sub

13.6 To i tng thao tc trn cu trc ca mt CSDL


DAO cung cp cc th tc rt phong ph dng to c s d liu, bng, trng,
v cc nh ngha truy vn. Ngoi ra, DAO cn cho php ta to kiu d liu hiu
chnh mi trong ng dng, chng hn nh cc thuc tnh hiu chnh ca cc i
tng c s d liu v nhng kiu ti liu c s d liu mi.

13.6.1To mt CSDL
Ta c th s dng phng thc CreateDatabase ca i tng DBEngine trong
DAO to c s d liu Jet ca Microsoft.
Khi to mt c s d liu, ta phi cung cp tn mt tp tin (thng c phn m
rng l MDB) v mt locale. Locale l mt chc nng ca ngn ng c dng bi
ngi s dng ng dng; n ch ra th t i chiu cho c s d liu. Th t i
chiu xc nh cch thc lu tr cc d liu dng vn bn trong c s d liu theo
mc nh.
Lu : Phng thc CreateDatabase ca i tng DBEngine thay th dng lnh
CreateDatabase thng dng trong cc phin bn c ca DAO. Nhng bi v
DBEngine l mt trong nhng i tng DAO m ta khng cn tham chiu tng
minh trong chng trnh, ta c th tip tc s dng CreateDatabase nh cch c,
khng c tham chiu n i tng DBEngine trc n. Tuy nhin, nu mun
chnh xc 100%, ta dng DBEngine.CreateDatabase thay v CreateDatabase.
V d sau to mt c s d liu. Ngoi ra, n cn ni thm mt bng duy nht vi
2 trng vo c s d liu .
Option Explicit

' References MS DAO 3.51


Private db As Database
Private td As TableDef
Private f As Field
Private Sub cmdCreate_Click()
On Error GoTo ErrHandler
Set db = DBEngine.CreateDatabase("..\..\DB\newdb.mdb", dbLangGeneral)
Set td = New TableDef
Set f = td.CreateField("LastName", dbText, 50)
td.Fields.Append f
Set f = td.CreateField("FirstName", dbText, 50)
td.Fields.Append f
td.Name = "tblSupplier"
db.TableDefs.Append td
Set db = Nothing
MsgBox "The database newdb.mdb has been created."
Exit Sub
ErrHandler:
If Err = 3204 Then
MsgBox "Try deleting the database 'newdb.mdb' first, pal."
Else
MsgBox Err.Description
End If
End Sub
Bi v phng thc CreateDatabase pht ra mt li nu c s d liu c sn,
chng trnh ny cha phn x l li thng bo cho ngi s dng nhng g cm
lm khi c s d liu c sn. Cng lu rng ta khng cn to mt i tng
DBEngine. N lun c sn s dng bi ng dng.

13.6.2S dng i tng TableDef thao tc vi bng


Ta s dng i tng TableDef thao tc vi cu trc ca cc bng trong ng
dng. Ta c th dng i tng TableDef to bng mi hoc thay i bng
hin hnh.
13.6.2.1

S dng i tng TableDef to mt bng mi

to mt bng mi, ta to mt i tng kiu TableDef v sau ni n vo


tp hp TableDefs bng cch s dng phng thc Append ca tp hp. (Cch

lm ny tng t cho nhiu kiu i tng DAO khc dng to cc thnh phn
c nh ca mt c s d liu ).
V d sau y dng TableDef to mt bng mi. on chng trnh ny s
dng i tng Field v tp hp Fields; s c trnh by trong phn sau. Lu
rng nu ta dng on chng trnh ny to mt bng c sn, ta s b bo li
thi hnh. Do , nu ta c sn mt bng l tblEmployee, ta ch ra gi tr cho thuc
tnh Name ca i tng TableDef l tblEmployeeNew.
Option Explicit
' References: Microsoft DAO 3.51 Object Library
Dim db As Database
Private Sub Form_Load()
Set db = OpenDatabase("..\..\db\novelty.mdb")
End Sub
Private Sub cmdCreate_Click()
On Error GoTo ErrHandler
Dim td As TableDef
Dim f As Field
Set td = New TableDef
Set f = New Field
f.Name = "FirstName"
f.Type = dbText
td.Name = "tblEmployeeNew"
td.Fields.Append f
db.TableDefs.Append td
MsgBox "Lo, the table has been created."
Exit Sub
ErrHandler:
If Err.Number = 3010 Then
MsgBox "You can't create the table twice, chief."
Else
MsgBox Err.Description
End If
End Sub
Ta c th to bng v trng theo cch chnh quy. Ta c Microsoft Access v Visual
Data Manager ca Visual Basic lm vic ny.

Ngoi ra, to bng v cc trng trong bng cng nh mi quan h ca bng


bng chng trnh ta dng thm phng thc CreateField ca TableDef to i
tng Field v s dng phng thc CreateRelation ca i tng Database.
to ch mc s dng phng thc CreateIndex ca i tng TableDef.
13.6.2.2

S dng i tng QuyryDef thao tc trn truy vn

cha sn
Ta c th s dng i tng QueryDef ca DAO to v sa i cc truy vn
cha sn. Ngoi vic to cc truy vn cha sn, i tng QueryDef cn cho php
thi hnh cc truy vn tham s ho; y l mt ly do ph bin truy cp cc i
tng QueryDef thng qua lp trnh DAO.
Ta cn c cch khc to cc truy vn cha sn thng qua DAO. l s dng
Microsoft Access hay Visuald Data Manager ca Visual Basic to cc truy vn
cha sn.
Ta to nh ngha truy vn trong c s d liu bng cch s dng i tng
QueryDef ca DAO. Cc nh ngha ny c th l tm thi, ngha l chng s bin
mt khi hon tt hoc l vnh vin cha trong c s d liu.
Ta to mt i tng QueryDef bng on chng trnh sau:
Option Explicit
' References MS DAO 3.51
Dim db As Database
Dim qd As QueryDef
Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
End Sub
Private Sub cmdCreate_Click()
On Error GoTo ErrHandler
Set qd = New QueryDef
qd.SQL = "SELECT * FROM tblCustomer " & _
"WHERE LastName Like 'L*' " & _
"ORDER BY [LastName], [FirstName]"
qd.Name = "qryCustomerSortName"
db.QueryDefs.Append qd
MsgBox "Whaddya know, the query was created."
Exit Sub
ErrHandler:
MsgBox "There was an error creating the querydef. (" & _
Err.Description & ")"
End Sub

Ta ch ra tn ca QueryDef cn to bng cch s dng thuc tnh Name ca i


tng QueryDef. Nu ta c to mt QueryDef c sn, n s kch hot mt li by
c.
ng qun t tn cho QueryDef mi; nu khng, ta s khng c cch no tham
chiu n n ( v Jet khng th lu n). Nh rng, ta cn xc nh truy vn no c
sn trong c s d liu ti thi im bt k bng cch lp qua tp hp QueryDefs.
13.6.2.3

S dng i tng QueryDef thi hnh truy vn

Ta c th thi hnh truy vn bng cch s dng cc phng thc ca i tng


QueryDef . Ta thng thc hin iu ny trong nhng trng hp m ta cn lm
mt cng vic bt thng no trc khi thi hnh truy vn, nh l ch nh mt
tham s, hoc khi ta cn thi hnh mt truy vn hnh ng dng cp nht, xo
hay sa i cc mu tin trong c s d liu.
thi hnh mt QueryDef, ta s dng phng thc OpenRecordset ca i tng
QueryDef ( thi hnh mt truy vn hnh ng ).
thi hnh mt QueryDef , ta theo cc bc sau:
1. To mt instance ca i tng QueryDef bng lp trnh
2. To mt chui SQL nh ngha nhng g QueryDef s lm khi n thi hnh.
3. Gn chui SQL cho thuc tnh SQL ca QueryDef.
4. Ni QueryDef vo tp hp QueryDefs ca i tng Database.
V d :
Private Sub cmdRun_Click()
On Error GoTo ErrHandler
Dim rs As Recordset
Dim qd As QueryDef
Set qd = db.QueryDefs("qryCustomerSortName")
Set rs = qd.OpenRecordset
Do Until rs.EOF
lstCustomer.AddItem rs!LastName & " " & _
rs!FirstName & " " & _
rs!Address
rs.MoveNext
Loop
Exit Sub
ErrHandler:
MsgBox "There was an error running the query. " & _
"Are you sure you created it?"
End Sub

13.6.2.4

S dng i tng QueryDef to truy vn

Ta c th to mt QueryDef bng cch lp trnh. to mt QueryDef, ta to mt


i tng QueryDef mi bng cch s dng phng thc CreateQueryDef ca i
tng Database. Phng thc ny cho php cung cp mt tn cho truy vn v gn
cho n mt chui SQL. Thi hnh phng thc ny cng lu QueryDef vnh vin
trong c s d liu.
Dim db As Database
Dim qd As QueryDef
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Set qd = db.CreateQueryDef(qryCustomer , Select * from tblCustomer)
Mi ln to QueryDef, ta c th thao tc vi n trong chng trnh nh ta vn
thng lm. Cho QueryDef mt tn l xc nh xem truy vn c c cha vnh
vin trong c s d liu hay khng. Nu ta mun to mt QueryDef m khng
cha vnh vin trong c s d liu, ch cn truyn mt chui rng thay cho tham
s th nht ca phng thc CreateQueryDef.
13.6.2.5

S dng i tng Parameter to truy vn tham s ho

Tp hp Parameters ca mt QueryDef cho php ta tin hnh mt truy vn tham s


ho. Cc truy vn ny c xy dng vi mt hay nhiu thnh phn c b qua;
cc thnh phn ny c phi cung cp khi truy vn thi hnh.
Ta to cc truy vn tham s ho bi v chng thi hnh nhanh hn cc truy vn xy
dng trong SQL cha trong chng trnh Visual Basic. iu ny xy ra v b my
c s d liu bin dch mt truy vn trc khi ta thi hnh, gip ti u ho thi hnh
ca truy vn.
Chng 12 trnh by c php ca mt truy vn tham s ho
SELECT * FROM tblCustomer WHERE ID=pID
Tham s trong truy vn ny l pID. Di c php SQL ca Jet, pID c thng dch
thnh mt tham s bi v n khng hng ng tn ca trng hoc bng bt k
trong c s d liu.
truy vn thi , ta cung cp mt gi tr cho tham s ny. Ta cung cp mt tham s
trong chng trnh bng cch ch ra thuc tnh Value ca i tng Parameter thch
hp.
Option Explicit
' References MS DAO 3.51
Private db As Database
Private qd As QueryDef
Private rs As Recordset
Private Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Set qd = db.QueryDefs("qryCustomerByID")
End Sub

Private Sub cmdQuery_Click()


qd.Parameters("pID").Value = txtID.Text
Set rs = qd.OpenRecordset
If rs.EOF And rs.BOF Then
MsgBox "Sorry, no customers with that " & _
"ID are in the database."
Else
MsgBox rs!Address & vbCrLf & _
rs!Phone, _
vbInformation, _
"Info for " & rs!FirstName & _
" " & rs!LastName
End If
End Sub
tm ra mt khch hng vi ng dng ny, ngi s dng nhp s ID ca khch
hng trong hp vn bn. Nu ng dng tm thy mt khch hng vi ID trong
c s d liu, n s hin th a ch v s in thoi cu khch hng . Nu ng
dng xc nh rng khng c mu tin p ng tiu ch tm kim, n s thng bo
cho ngi s dng.
Lu : Bi v tham s ca mt QueryDef l mt hm ca cu lnh SQL nh ngha
truy vn, ta khng th tham s mi vo tp hp Parameters ca mt QueryDef nh
cch ta thng lm thm mt i tng vo tp hp trong DAO.

13.7 Lm vic vi ti liu v ni cha CSDL


Ti liu c s d liu l mt cu trc DAO cho php ta tham chiu n cc phn
t ca c s d liu mt cch tng qut. Chng cn cung cp kh nng m rng
cc tnh nng ca c s d liu Jet. Ta truy cp cc thuc tnh ca mt ti liu c
s d liu thng qua i tng Container.
i tng Container s hu b cc i tng Document.
Tng t nh nhiu i tng khc c sn trong DAO, ta c th dng lp trnh
DAO lp xuyn qua ni cha v ti liu. V d sau y trnh by cch lp xuyn
qua cc i tng Collection v Document trong mt c s d liu Jet.
Option Explicit
' References DAO 3.51
Private db As Database
Private con As Container
Private doc As Document
Private Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")

End Sub
Private Sub cmdView_Click()
lstOutput.Clear
For Each con In db.Containers
lstOutput.AddItem con.Name
For Each doc In con.Documents
lstOutput.AddItem "

" & doc.Name

Next
Next
End Sub
Cn phi hiu im khc bit gia ti liu c s d liu v tp hp DAO. V d,
mt tp hp ca TableDef tham chiu n tt c cc TableDef ta m ra trong
chng trnh. Tri li, ti liu Tables cha cc tham chiu n tt c cc ti liu
bng trong c s d liu m ta m. Trong Jet, ni cha Tables bao gm cc ti liu
nh l truy vn cha sn v cc bng h thng (bt u bng MSys).
Ta s dng cc i tng Container v Document trong nhng trng hp sau:

Ta mun gn vic cho php bo mt cho mt i tng trong mt c s d


liu bo mt .
Ta mun to hoc ly v cc thuc tnh hiu chnh cho tt c cc thnh
phn ca mt c s d liu bng cch lp xuyn qua cc tp hp
Ngoi vic kim tra ni dung ca cc ti liu c s d liu hin hnh, DAO cn
cho php ta nh ngha v t to cc ti liu, chng c th cha trong c s d liu
cng vi ti liu mc nh.
Cc ti liu hiu chnh bao hm trong m hnh i tng Jet h tr cc m rng.
tng chung l ngn nga m hnh i tng hin hnh cm cc tnh nng
mi.

13.8 To v s dng cc thuc tnh hiu chnh ca i tng


DataBase
Ta c th tham chiu n cc thuc tnh ca DAO mt cch tng qut. iu ny
cho php kh nng m rng, cho php ta thm cc thuc tnh ring v c thuc tnh
ca cc i tng hin hnh d cho ta c bit nhng g chng c gi hay khng.
Ta truy cp n danh sch tng qut cc thuc tnh ca DAO thng qua tp hp
Properties v i tng Property. Ta c th to mt thuc tnh mi bng cch s
dng phng thc CreateProperty ca i tng Document. Cc thuc tnh c
cung cp bi tp hp Properties c gi l thuc tnh ng bi v chng c th
khc nhau gia mt c s d liu ny v mt c s d liu khc hay gia cc
phin bn khc nhau ca b my c s d liu.
V d sau y trnh by cch thc tp hp Properties hot ng. y l th tc pht
sinh danh sch cc thuc tnh mc nh hin c trong mt c s d liu.
Option Explicit

' References: Microsoft DAO 3.51


Dim db As Database
Dim pr As Property
Private Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
End Sub
Private Sub cmdShow_Click()
On Error Resume Next
lstOutput.Clear
For Each pr In db.Properties
With pr
lstOutput.AddItem .Name & _
": " & .Value
End With
Next
End Sub
C 13 thuc tnh mc nh ca mt i tng Database hin c thng qua tp hp
Properties, bao gm nhng phn c nh nh l Name, Version, v Connect, cng
nh cc thuc tnh khng th truy cp trc tip, nh l AccessVersion v Build.
V vy, ta c th vit chng trnh nh sau:
MsgBox db.Name
Vy, ti sao ta khng vit chng trnh truy cp mt thuc tnh ca c s d
liu :
MsgBox db.Properties (Name)
Cu tr li l ta c th tto cc thuc tnh hiu chnh v gn chng n bt kfy
DAO no ( khng ch n i tng Database), V d sau to mt thuc tnh mi
trong c s d liu.
Private Sub cmdCreate_Click()
On Error Resume Next
Dim prp As Property
Set prp = db.CreateProperty("DateLastBackedUp", dbDate, Now)
db.Properties.Append prp
cmdShow_Click ' update list of properties
End Sub
Sau y l c php y ca phng thc CreateProperty:
obj.CreateProperty ([propertyName], [datatype] , [value], [ddl] )

Tham bin PropertyName l mt chui ch ra tn ca mt thuc tnh mi

Tham bin DataType ch ra kiu d liu ca thuc tnh mi.


Tham bin Value cung cp mt gi tr khi to cho thuc tnh.
Tham bin ddl l mt gi tr boolean ch ra thuc tnh mi c phi l mt i
tng DDL hay khng. Nu ng, nhng ngi s dng khng c quyn
sa i cu trc c s d liu, s khng th sa i thuc tnh hiu chnh.
ly v thuc tnh hiu chnh sau khi to ra, ta ch cn truy cp n thng qua
tp hp Properties ca i tng Database.

13.9 Tng kt
Chng ny gii thch v l thuyt thng nht v quan trng ca lp trnh DAO.
Nu l ngi x l gii, ta c th tin hnh phn ln cc hot ng ta tng lm
trong th gii truy cp c s d liu ca Visual Basic.

13.10Hi v p
Hi: Dng DAO c ph hp vi lp trnh CLient / Server khng ?
p: C th s dng DAO cho lp trnh Client / Server, nhng tt hn nn dng
ADO. ADO cung cp mt giao din chng trnh tng t nh DAO, nhng
mt s tnh nng mi b sung (nh l kh nng truy cp n trnh cung cp d
liu khng quan h, cc kt ni v truy vn khng ng b, v mt m hnh i
tng n gin hn. )
Hi: Ti ang to mt ng dng da trn Jet. Vy ti nn tip tc dng DAO
hay l chuyn sang dng ADO ?
p: Nu ng dng ca bn hot ng tt vi DAO, bng mi cch, gi li
k thut DAO. l m hnh i tng dnh cho c s d liu Jet. ADO c
mt s ch khng th lm c nh DAO lm, v d, bn c th to ra mt
c s d liu Jet trong DAO, nhng bn khng th lm c iu vi ADO.

14 Thit lp bo co v Xut thng tin


S dng thit k DataReport
s dng Microsoft Access lm bo co
S dng Crystal report lp bo co
Thiy lp bo co trn c s d liu khng ch n gin l hin thd liu
t c s d liu. hu ht cc bo co c s d liu lin quan mt s hot
ng khc trn d liu.
a. Truy vn d liu tr v, hin th v in ra nhng phn ta mun. ta
gi l lc
b. Sp xp Sao cho n xut hin heo mmt th t c ngha
c. Phn nhm d liu hin th mt cch gn gng.
Chng ny s phn bit gia cc bo co v xut thng tin
Visual Basic cho php truy cp n mt s k thut Client / server mi h tr
truy cp c s d liu hiu qu hn - c bit khi n dng xut thng tin hay
thit lp bo co

14.1 S dng thit k DataReport


L im mi trong Visual Basic 6, thit k DataReport l cch trc quan to
ra nhng bo co thch hp trong mi trng pht trin Visual Basic. Thit k
DataReport, cung cp cc chc nng ht sc c bn, nhng n c u im rt d
dng.
to thit k DataReport, ta theo cc bc sau:
1. trong n, t menu Project, chn Add DataReport.

2. Thit k DataReport c thm vo n.


DataReport cha mt s phn on;
Report Header hin th mt ln u bo co.
Report foodter hin th mt ln cui bo co
Page header hin th ti u mi trang

page footer hin th ti cui mi trang


Detail section hin th cc dng d liu
mt hay nhiu group header hay foodter hin th ti u hoc cui
ca mt phn on nhm.
D nht l to DataReport dng trn thit k DataEnvironment. Vi
DataEnvironment, ta c th dng cch ko th thit k bo co

14.1.1Thit k vi DataReport
Mi ln to ra thit k DataReport, ta phi rng buc n vi mt c s d liu
hin th d liu. ta thc hin iu ny thng qua mt b gm cc iu khin
rng buc ch hot ng trong ng cnh thit k DataReport.
Cc iu khin trc quan ca thit k DataReport bao gm:
iu khin nhn
iu khin hp vn bn
iu khin nh
iu khin on thng v iu khin hnh dng
iu khin hm cho php chn cc tnh ton tm tt v bo co
bi v cc iu khin ca DataReport c thit k c bit hot ng
trong ng cnhca thit k DataReport, chng c nhng tn gi khc nhau. V d
tn lp chnh thc ca iu khin hp vn bn l Rpttextbox; tn lp iu khin
nh l RptImage
S n gin hn nhiu nu ta dng k thut ko th to bo co
1. T menu Project, chn Add DataReport
2. To thit k Data Enviroiment
3. Trong thit k Data Enviroiment, to mt cu lnh truy vn da trn bng
tblCcustomer
4. Thit k Data Enviroiment hin th danh sch cc trng d liu trong
bng tblCustomer. Chn v ko r trng Customer_ID t thit k Data
Enviroiment vo phn on Detail ca thit k DataReport
5. Mt iu khin nhn v mt hp vn bn rng buc vi trng d liu
Customer_ID xut hin trn thit k DataReport

Nu ko iu khin phn on Page Header, n s c hin th mt ln trn


mi trang. Nu thc hin vic ny vi nhiu trng, ta s c bo co tng t
nh sau:

Khi c nhiu iu khin c chn, iu chnh kch c mt iu khin s lm


kch c cc iu khin khc b diu chnh theo
Ko v th trng d liu t thit k Data Enviroiment vo bo co, ta phi
thm mt s bc ch ra ngun d liu cho rng buc
Bc 1: Chn thit k DataReport bng cch chn vo n trong danh sch dropdown ca ca s Properties
bc 2: Trong ca s Properties, quy nh thuc tnh DataSource ca
DataReport l tn ca trnh thit k Data Enviroiment
Bc 3: Nu ang s dng trnh thit k Data Enviroiment, quy nh thuc tnh
Data member ca DataReport l lnh d liu m ta mun

14.1.2Xem v xut DataReport


Ta c th xem bo co trong ch Print Preview bng cch thi hnh phng
thc Show. V d nu DataReport c gi l drCustomer th ta c th chy n
bng dng lnh:
drCustomer.Show
bo co c hin th nhe hnh di y:

14.2 S dng Microsoft Access lm bo co


Microsoft Access cho php vit bo co c s d liu. N h tr giao din d
dng v trc quan m hu ht lp trnh vin Visual Basic u a thch. tng t
Crystal Report, bo co Microsoft Access cho php phn nhm v sp xp d liu,
cng nh s dng cc biu thc hiu chnh trong bo co.

14.2.1Thi hnh bo co ca Access t Visual Basic


C hai k thut thc hin iu ny:
s dng Automation phng mt instance ca Microsoft Access, thi
hnh bo co trc tip t trong ng dng. Automation l mt k thut
cho php giao tip gia cc ng dng trong Windows. y Access
s lm Automation server
Dng sn phm VSREPORT ca Videosoft cho php ngi s dng
thi hnh bo co ca Microsoft Access bt k h c ci t Access
hay khng. y l iu khin ActiveX chuyn i bo co t tp tin
MDB thnh mt nh dng m ta c th cung cp vi cc ng dng
14.2.1.1

s dng AUTOMATION thi hnh bo co Access

Ta c th phng mt instance ca Microsoft Access t ng dng vit bng


Visual Basic. Vi k thut ny, ta c th lp trnh Microsoft Access tng t nh
vi i tng khc ngay trong Visual Basic
Bt li ca k thut ny l buc ngi s dng phi chy t instance ca
Microsoft Access mi khi h mun xem hoc in n bo co. D nhin n cng i
hi phi c Microsoft Access np sn trn my. Nu bn mun khc phc tr ngi

ny nhng vn dng bo co Access trong ng dng, bn c th xem xt gii php


thit lp bo co ca Video soft VSREPORT
lp trnh Access thng qua Automation, ta lm mt tham chiu n Access
bng cch t menu Project chn References chn hp dnh du Microsoft Access
8.0 Object Library

14.2.1.1.1

Trnh dng dng buc tr vi Automation

Nu bn dng qua Automation qua OLE Automation, bn s thy im khc


bit quan trng gia k thut Automation trong phn ny v OLE Automation.
Trong Visual Basic ta cn trnh nh ngha i tng Automation theo kiu Object
tng qut. V d trong Visual Basic 3.0 ta c th vit chng trnh nh sau:
Dim appAcces as Object
Set appAcces =CreateObject(Access.Application)
on chng trnh trn hot ng tt vi Visual Basic 3.0 nhng c cch khc
tt hn. Thay v dng kiu Object ta dng kiu d liu i tng Automation
Server cung cp. Bi v khi Visual Basic khng cn thi hnh cu lnh truy vn
trn Automation Server mi khi ta truy nhp n xc nh kiu i tng cn
to. k thut ny gi l rng buc tr, gi y ch ph hp vi hai tnh hung:
ta khng bit trc kiu i tng Automation Server khi cn to i
tng
Ta ang s dng mt mi trng pht trin ng dng khng h tr
rng buc sm s ci tin ng k tc chng trnh, nht l nhng
lnh cn nhiu s l gi n Microsoft Office Automation Server

14.2.1.1.2

Thi hnh Automation iu khin Microsoft Access

Sau khi thit lp tham chiu n Microsoft Access t trong ng dng, ta vit
chng trnh to instance cho i tng. khi c mt i tng tham chiu
n server, Visual Basic tch hp m hnh i tng ca server vo tnh nng lit k
thnh phn t ng

Ngoi ra ta c th xem ton b thuc tnh, phng thc v s kin ca i


tng Access trong ca s Object Browser
oan chng trnh sau to mt instance ca Microsoft Access trong Visual
Basic. N s dng Automation thi hnh phng thc Docmd ca Access
Option Explicit
Dim MSAccess As Access.Application
Private Sub Command1_Click()
Set MSAccess = New Access.Application
MSAccess.OpenCurrentDatabase ("D:\TungPT\Temp\reins.mdb ")
MSAccess.DoCmd.OpenReport "rptEmployee", acViewNormal
MSAccess.CloseCurrentDatabase
Set MSAccess = Nothing
End Sub

14.2.1.2

s dng VSREPORTS thi hnh bo co Access

VSREPORT c thc hin theo 2 phn:


Trnh tin ch chuyn i dng tp tin MDB ca Access v to mt
tp tin bo co t i tng Report cha trong c s d liu
iu khin ActiveX dng m tp tin bo co v thi hnh bo co
trong ng dng

Cu trc ny tng t Crystal Reports. Vi c hai h thng, ta phi to mt


tp tin thng bo, ri thm mt iu khin v vit on chng trnh trong ng
dng in bo co. mi ln sa i trong bo co, ta phi lu v phn pht li cho
ngi s dng.
C nhiu im khc nhau gia Crystal Reports v VSREPORT. Crystal Reports
c mt tin ch thit k bo co ring, tri li, VSREPORT s dng Microsoft
Access. chn la cc sn phm tu thuc vo cc ng dng.
Nu bn mun dng bo co ca Access, rng bo co ca VSREPORT
dng trn Automation l ngi s dng khng phi khi ng mt instance ca
Access mi ln h mun thi hnh bo co. Thc vy, vi mi VSREPORT, ngi
s dng khng cn np sn Access trn my, iu ny rt tin nu bn l ngi
qun l mt c quan lncs nh hng s dng i vi nhiu loi ngi s dng.
Nu bn khn chc chn rng ton b ngi s dng c ci sn phon bn Access
mi nht, bn c th a cho h mt tp tin VSREPORT m khng cn bn tm
ngi s dng ci Access hay cha.

14.2.1.2.1

Dng VSREPORT chuyn i bo co Access

Trc ht to mt bo co trong Microsoft Access, sau thi hnh trnh thng


dch VSREPORT trn . Kt qu ca thng dch l mt tp tin c th dng
ActiveX VSREPORT trong ng dng
C 2 trnh thng dch:
TRANS95.EXE: chuyn bo co Access 95
TRANS97.EXE : chuyn bo co Access 97
Cc tin ch ny cha trong th mc ci t VSREPORT

14.2.1.2.2

To ng dng dng VSREPORT


phng tin ch thng dch Access 97, TRANS97.EXE
Nhn p chut ln More File hin th hp thoi tp tin
Chn tp tin c s d liu Novelty
Trnh thng dch m c s d liu v hin th danh sch cc
bo co. Chn rptCustomer, sau nhn mi tn phi pha
trn di hp thoi. nhn Next
5. trnh thng dch yu cu cung cp ng dn v tp tin cn
chn. ta cng c th i tn tp tin kt qu vo lc ny.
6. nhn Translate. trnh thng dch sinh ra tp tin.VSR cha
nh ngha bo co
1.
2.
3.
4.

14.2.1.2.3

Dng iu khin ActiveX VSREPORT thi hnh bo co c

Access
a bo co vo ng dng, ta dng iu khin ActiveX VSREPORT. iu
khin ny khng xut hin lc thi hnh; n ch c v xut ra tp tin.VRS
ci t bn DAO 3.5 ca iu khin VSREPORT, ta lm nh sau:
1.
Ci t tp tin cp nht ly t CD hoc ti xung t Internet, Web side
http://www.videosoft.com
2.
Bo m tp tin VSREP351.OCX c sn trong th mc system ca
windows
3.
Dng tin ch regsvr32 dng k tp tin OCX mi

4.
T menu Project, chn Components thm iu khin VSREPORT
a iu khin vo ng dng
1.
T menu Project, chn Components thm iu khin VSREPORT vo
n
2.
iu khin VSREPORT xut hin trong hp cng c. Nhn p chut
vo iu khin VSREPORT trong hp cng c a np vo biu mu.
iu khin s khng hin th lc thi hnh, ta khng cn bn tm v v tr
iu khin
3.
Quy nh thuc tnh Report File Name ca iu khin l tp tin.VSR ta
to trc . Sau , quy nh thuc tnh DataBase Name ca iu khin
l tn tp tin.MDB. Ta cng c th dng ca s Properties hoc dng
chng trnh
4.
Thi hnh phng thc PrintReport thi hnh bo co. Ta cn tu chn
cho php gi kt qa ra mn hnh hoc my in, tu theo gi tr thuc tnh
ca my in PrintDevice.
on chng trnh sau in trong ch PrintPreview v thi hnh bo co c
s d liu dng iu khin ActiveX VSREPORT
Option Explicit
' Requires Jet 3.5 version of VSREPORTS (vsrep351.ocx)
Private Sub Form_Load()
vsReport1.ReportFileName
=
App.Path
"\rptCustomer.vsr"
vsReport1.DatabaseName = "..\..\DB\novelty.mdb"
End Sub

&

Private Sub cmdPreview_Click()


vsReport1.PrintDevice = vsrPrintDeviceScreen
vsReport1.Zoom = 50
' Percent
vsReport1.PrintReport
End Sub
Private Sub cmdPrint_Click()
vsReport1.PrintDevice = vsrPrintDevicePrinter
vsReport1.PrintReport
End Sub
Private Sub vsReport1_LoadingDoc(ByVal Page As Integer,
ByVal Of As Integer, Cancel As Boolean)
Debug.Print "Loading: " & Page & " of " & Of
End Sub

14.2.1.2.4

To ng dng bo co nng cao vi VSREPORT

VSREPORT c mt s tnh nng khc cho php to ng dng bo co mnh


m. Sau y l cc tnh nng nng cao ca iu khin VSREPORT:
Thuc tnh Zoom; cho php phng to hoc thu nh theo n v %

cc thuc tnh Printer iu khin cch thc in n ca bo co


H tr duyt trangi vi bo co nhiu trang: Dng thuc tnh
PrevewPage cho php ngi s dng lt trang
Tch hp vi i tng DataBase ca DAO: Thay v gn DataBase
Name cho iu khin, ta c th gn i tng DataBase ca DAO
cho iu khin. gii php ny c dng khi ng dng ang dng
DAO kt ni vi c s d liu v ta khng mun c mt tham
chiu r rng n c s d liu t trong iu khin VSREPORT.
gn mt i tng DataBase cho iu khin VSREPORT , ta quy nh
thuc tnh DataBase Access Mode ca iu khin l 1 vsr DataBase
Objiect. Sau ta c th gn i tng DataBase ca DAO cho thuc
tnh DataBase Objectca iu khin VSREPORT.
Ngoi cc thuc tnh trn, bo co thi hnh vi iu khin VSREPORT c th
kch hot s kin, nh cch thc hin ca bo co trong Access. n cho php ta vit
chng trnh p ng cc s kin sy ra trong khi in bo co. tuy nhin, m hnh s
kin ca iu khin VSREPORT khc vi m hnh s kin ca Access, v vy ta
phi gi bn gc bo co Access cn thn trc khi chuyn sang dng
VSREPORT.

14.3 S dng Crystal report lp bo co


Crystal Reports cho php to bo co c s d liu trong ng dng vit bng
Visual Basic. n gm hai phn ch yu:
trnh thit k bo co xc nh d liu s a vo bo co v cch th
hin ca bo co
Mt iu khin ActiveX cho php thi hnh, hin th, inn iu khin
lc thi hnh ng dng
i vi nhiu ngi lp trnh Visual Basic, Crystal Reports l tt c nhng g
cn khi mun thit lp bo co c s d liu. Bi v phin bn Crystal Reports i
km vi Visual Basic cc k dng.
C 2 bc to mt bo co dng Crystal Reports: to bo co v thm iu
khin ActiveX ca Crystal Reports vo ng dn. Bn to bo co dng trnh thit
k bo co ca Crystal Reports. ng dng ny to cc ti liu bo co thi hnh
trong ng dng. Sau ta m ti liu bo co trong ng dng bng cch s dng
iu khin Crystal Reports.

14.3.1Ci t Crystal Reports


Khc vi phin bn c ca Visual Basic, Crystal Reports khng c ci t t
ng khi ta ci Visual Basic
ci Crystal Reports phng trnh ci t Crystl32.exe cha trong th mc \
COMMON\TOOL \VB\CRYSREPT trn a VB6. cc tp tin tng ng s c
copy vo h thng v ng k. sau ta mi c th s dng Crystal Reports trong
ng dng

14.3.2Dng Crystal Reports to bo co


ta khng th to bo co bng chng trnh, m thay vo ta dng Crystal
Reports e to bo co. sau khi to bo co ta lu n v phn pht cng vi ng
dng cho ngi s dng.
phng trnh thit k Crystal Reports ta theo cc bc sau:
1. phng trnh thit k Crystal Reports
2. Trnh thit k hot ng
3. T menu file chn New. hp thoi to bo co mi xut hin;

Vi hp thoi ny, Visual Basic cung cp mt s khiun mu bo co ta


chn dng xut d liu ta c th dng bo co do mnh thit k lm khun mu
cng nh to cc bo co hiu chnh khng c trong khun mu c sn
cc kiu bo co c sn trong Crystal Reports
K bo co
m t
standar
bo co lit k theo dng v ct, cho php sp xp v gp d
liu
bo co l danh sch d liu lin tc khng c tng kt hay
listing
trng tng cng. Ta c th dng kiu bo co ny in danh
b in thoi
cross- Tab
T hp d liu theo hai chiu
mail Lable
bo co thit k in d liu theo ct cho nhn th
Summary
bo co ch hin th thng tin tng qut, khng cha d liu
chi tit
graph
bo co th hin d liu mt cch trc quan
Top N
bo co cho php ch hin th mt s bn ghi c chn
drill down
bo co cho ph nhn p chut ln d liu tng qut
hin th cc thng tin chi tit

Cc kiu bo co bo co s dng khun mu bn to trc


khc
V d mu dng Crystal Reports to bo co

1. Khi ng Crystal Reports v to mt bo co mi. Chn kiu Standar


2. bc mt ca Standar, nhn nt Data file.
3. Trong hp thoi tp tin chn c s d liu mun bo co. Nhn Add. danh
sch cc bng c ch ra. N chuyn sang bc hai, hin th cc quan h
gia cc bng trong c s d liu
Bi v cc mi quan h c nh ngha sn cho c s d liu c xc nh
mc b my c s d liu, ta khng cn nh ngha li. Nhng nu cn thit phi
thit lp hoc xo mt quan h mc bo co thay v mc b my c s d liu
ta theo cc bc sau:
1. Nhn chut vo on thng th hin quan h gia cc bng
2. Nhn Delete quan h b xo b
3. Nhn v r mt trng no t mt bng v th bng khc quan h
gia hai bng li c thit lp
4. Nhn Next. chuyn sang bc 3. n y ta xc lp trng no s hin th
trong bo co.
5. Nhn vo Tab Sort. Bc ny cho php xc nh cch sp xp d liu
6. Chn vo Tab Total. Cho php tm lc d liu trong bo co
7. nhn vo Tab Style. Cho php xc nh ch thc th hin bo co
8. Nhn Preview Report

14.3.3Thi hnh bo co trong ng dng vi iu khin ActiveX


ca Crystal Reports
Vic cho php ngi s dng ng dng thi hnh Crystal Reports l hon ton
n gin; n lin quan n vic iu khin ActiveX ca Crystal Reports vo n
v vit on chng trnh x l. lm c iu ny, ta lm nh sau:
1. To mt ng dng Visual Basic mi vi mt nt lnh duy nht
2. Thm iu khin Crystal vo ng dng thng quan menu Project
Components
3. To mt instance ca mt iu khin Crystal Reports trn biu mu bng
cch nhn p ln thanh cng c. iu khin kt qu c gi l Crystal
Reports 1
4. trong s kin click ca nt lnh da vo on chng trnh sau
Private Sub cmdReport_Click()
CrystalReport1.ReportFileName
"\product.rpt"
CrystalReport1.PrintReport

App.Path

&

End Sub
5. Thi hnh nt lnh v n nt Run. bo co thi hnh hin th cho ngi s
dng trong ca s preview. n y ngi s dng c th xut bo co ra
my in bng cch nhn nt Print. dng thuc tnh Distination ca iu khin
Crystal Reports, ta c th gi d liu trc tip n my in b qua ca s
Preview.

14.3.4S dng bn mi hn ca Crystal Reports


Phin bn Crystal Reports mi a ra mt s tnh nng mi
bo co con
tu chn nh dng mi
bo co c iu kin
Trnh iu khin c s d liu trc tip
Xut ra Word v Excel
H tr Web
H tr nhng ngun d liu khng phi l quan h

15 ODBC v cc i tng d liu t xa


15.1 nh cu hnh v s dng ODBC
ODBC l mt cng ngh Windows cho php ng dng client ni vi CSDL t
xa. Lu tr trn my client, ODBC tm cch lm cho ngun d liu quan h tr
thnh tng qut i vi ng dng Client. iu ny c ngha l ng dng Client
khng cn quan tm kiu c s d liu m n ang ni l g.
Bi v y l cng ngh pha Client, ODBC khng i hi ta phi x l trn
Server ca c s d liu.
ODBC gm 3 phn:
Trnh qun l iu khin (driver manager)
Mt hay nhiu trnh iu khin (driver)
Mt hay nhiu ngun d liu

15.1.1Kin trc ca ODBC


Client
Application

ODBC Data
Source

ODBC Drive
Manager

ODBC Drive

DB

Hnh Cu trc ODBC trnh by kt ni gia ng dng Client v c s d


liu Server thng qua ODBC Driver Manager
Kin trc ODBC cha kt ni gia ng dng Client v c s d liu server
thng qua Trnh qun l iu khin ODBC.
LU Ngun d liu ODBC c to dng vi RDO c th c dng m
khng cn thay i vi ADO - Thc vy, ODBC l mt trnh cung cp t c ca
ADO, gip vic chuyn i t RDO sang d dng hn.

15.1.2To ngun d liu


mt ng dng Client ni vi c s d liu Client / Server dng ODBC, trc
ht, ta phi cung cp thng tin v ngun d liu ODBC trn Client. Mi server yu
cu nhng gi thng tin khc nhau ni vi Client. ODBC cung cp thng tin
ny mt tn n gin ta c th tham chiu n n, thay v phi thit lp gi
thng tin t u mi ln ta cn n n. iu ny cung cp cho ng dng Client
kh nng tham chiu mt cch d dng n t hp ca mt iu khin, mt c s
d liu v c th c thm tn mt ngi s dng v mt khu. Tn ny chnh l
tn ca ngun d liu hay DSN.
V d trong phn ny c to vi phin bn 3.51 ca Trnh qun l iu khin
ODBC v phin bn 3.6 ca iu khin SQL Server. Nu bn dng mt phin bn
c hn ca ODBC, bn s thy c mt vi ch khc nhau hp thoi ca Trnh
qun l iu khin, cng nh thiu mt s tnh nng. Hn na, phin bn c ca

ODBC khng c kh nng kim nghim mt kt ni trong trnh qun l iu


khin. Bn c th ti xung phin bn mi nht ca trnh qun l iu khin
ODBC nh mt phn ca Thnh phn truy cp d liu ca Microsoft ( Microsoft
Data Access Components- MDAC), cha a ch http:// www.microsoft.com/data/.
to mt tn ngun d liu ODBC trn my Client, ta theo cc bc sau:
Bo m rng ta c mt SQL Server ang hot ng, v ch c th truy cp n t
my Client. iu ny trnh nhng vn khng thuc ODBC c th xy ra
nh l ni mng, bo mt, v.v...
Phng Control Panel t menu Start.
T Control Panel, nhn p chut ln biu tng ODBC. Hp thoi Qun tr
Ngun d liu xut hin:

Hnh Hp thoi Qun tr ngun d liu ODBC


Danh sch cc ngun d liu c th thay i theo my. n y, ta c th to mt
trong ba kiu ngun d liu ODBC:
User DSN : Ch c ngi to ra n mi s dng n v ch trn my ang dng.
System DSN: bt k ai s dng my ny cng c th dng c. y cng l kiu
ngun d liu m ta cn to khi ci t ng dng c s d liu Web.
File DSN: c th c copy v s dng d dng bi my khc.
15.1.2.1

To System DSN

Chn vo tab System DSN trong ca s ODBC Data Source Administrator

Nhn nt Add.
Hp thoi Create New Data Source xut hin. Chn tn ca iu khin c s
d liu ta mun dng (trong v d ny l SQL Server).
Nhn Finish. Trnh to ngun d liu mi n SQL Server xut hin.
Trong Name, nhp tn ca ngun d liu. Tn ny s c dng trong ng
dng Client tham chiu n c s d liu, v vy, nn t tn sao cho gi nh,
c th ly tn ca c s d liu. (V d l Novelty).
in vo Description l tu chn. N cung cp thm thng tin gn lin vi
tn ngun d liu ODBC. Thng tin ny ch hin th trong ca s ODBC ca
Control Panel, v c xem nh mt thng tin v tn ngun d liu.
Trong hp kt hp Server, chn SQL Server cha c s d liu m ta ang
lm vic.
Nu my tnh m ta ang dng cng ang ni vi SQL Server, tn ca server s
xut hin trong danh sch th xung. Nu SQL Server cha trn cng my, ta c
th dng local thay th tn ca server
Nhn Next. Mn hnh k tip ca Trnh t ng xut hin, hi ta cch login
vo server. Ta c th chn c ch login ca WinNT, trong , login mng c
dng nh l ID ca ngi s dng v mt khu. Nhn Next.
C th khng cn nhp mt khu. Ta ch dng n n khi m mt kt ni n
c s d liu. iu ny ngn cn nhng rc ri bo mt tim n, v mi thng tin
ca ODBC DSN u c cha trong registry ca my tnh.
Mn hnh k tip ca Trnh t ng xut hin. Chn vo hp dnh du
Change the default database to, ri chn c s d liu Novelty t hp kt hp.
Mc d bc ny l tu chn, ta nn lun lin kt tn c s d liu vi tn ngun
d liu ODBC.
Nhn Next. Mn hnh k xut hin, nhc ta chn thng dch b k t. Thng
thng, ta khng cn i bt k mc no trong mn hnh ny, tr phi ta ang s
dng b k t khc trn server, v vy, nhn Next.
Mn hnh k cho ta chn kh nng kch hot tc v ghi nht k. N cho php ta
xem nhng hnh ng bn trong m ODBC lm khi gi quyt mt truy vn. Thng
thng, ta ch chuyn n thnh on nu ta ang gp li hay tm kim nhng nguyn
nhn ch tc trong ng dng.
Hnh 23.3 S dng ca s iu khin ODBC chn mt c s d liu SQL
Server mc nh
Nhn Finish. Hp thoi xut hin, m t chi tit ca ngun d liu m ta va
to. Sau , nhn nt Test Data Source. Trnh iu khin s p ng bng cch
thng bo mt kt ni va c thit lp thnh cng.
Sau khi nhn OK, tn ngun d liu mi xut hin trong ca s ODBC Data
Source Administrator.
15.1.2.2

Kim nghim kt ni c s d liu vi ODBCPING

Phin bn c ca ODBC khng c kh nng ni vo ngun d liu kim


nh nhng thng tin kt ni m ta cung cp cho trnh qun l iu khin c hp l
khng.
Cng vic ny hu dng khi ta cn xc nh nguyn nhn trc trc trong mt
kt ni Client / Server l do server, do kt ni mng, do ODBC, hay do ng dng
Client. Tin ch ODBCPING khng gii quyt c trc trc nhng ti thiu n
thng bo cho ta bit c kt ni c vi server thng qua ODBC hay khng.
C php:
odbcping /Uusername /Ppassword /Sserver
V d, kim nh kt ni vi SQL Server tn l BEDROCK dng tn login l
randy v mt khu l prince, ta dng dng lnh sau:
odbcping /Urandy /Pprince /SBEDROCK
T menu Start, phng du nhc DOS.
Trong ca s DOS, nhp vo dng lnh:
odbcping /Urandy /Pprince /SBEDPOCK
ODBCPING thit p ni kt vi server ri thot.

15.1.3Truy cp ngun d liu vi iu khin DAO DATA v


ODBCDIRECT
To mt ng dng Visual Basic vi iu khin ADO Data ni vi ngun d
liu ODBC rt d. Trong thc t, n khng i hi phi lp trnh. Ta c th dng
iu khin Data nhanh chng kim tra kt ni n c s d liu Client /
Server, hoc ta c th dng n to th mt giao din ngi s dng vi kt ni
trc tip n c s d liu.
V nhng l do v kh nng hot ng, ta c th dng iu khin d liu t xa,
hoc l iu khin ADO Data thay v iu khin DAO Data, bi v nhng iu
khin ny chuyn dng cho truy cp d liu trn Client / Server. Trong nhng phin
bn DAO trc phin bn 3.5, DAO t ng np b my c s d liu Jet mi khi
n truy cp d liu Client / Server -thm ch khi ta khng thc s dng c s d
liu Jet/Access. Trong VB5, ta c thm tu chn s dng ODBCDIRECT truy
cp d liu Client / Server. ODBCDIRECT ch l mt chuyn i truy cp
server thc tip thng qua DAO m khng cn np b my c s d liu Jet. iu
ny tit kim b nh v gim thi gian np ng dng trn my Client. N thch khi
ta phi dng DAO truy cp d liu Client / Server nhng khng bn tm v
tnh linh hot, kh nng s dng li v tnh d bo tr ca chng trnh.
V D MU
Tham kho v d mu ca phn ny trong n
ODBCDAO.vbp, cha trong th mc \samples\PhanIV\23-rdo\ODBCDAO
15.1.3.1

Kim nghim SQL Server DSN

To ngun d liu ODBC tn l Novelty.


Phng Visual Basic v to n mi kiu Standard EXE.
T menu Project Components, lp mt tham chiu n iu khin li rng
buc d liu (Microsoft Data Bound Grid Control).
LU iu khin DBGrid ta ang dng y ch duyt d liu. N c
nhiu cch dng khc nhau. Tham kho chng 30 S dng iu khin DBGrid
v iu khin Apex True DBGrid.

iu khin DBGrid xut hin trong hp cng c. thm mt instance ca iu


khin DBGrid v mt iu khin Data chun vo biu mu
i thuc tnh DefaultType ca iu khin Data thnh 1- Use ODBC. N khin
cho ng dng b qua b my Jet, v do , lm ng dng khi ng nhanh hn v
tn t b nh hn.
Trong thuc tnh Connect ca iu khin Data, a vo chui k t sau:
ODBC; UID=randy; PWD = prince;DSN = Novelty
Trong thuc tnh RecordSource ca iu khin Data, a vo cu truy vn:
Select * from qryCustomer
Bi v ta hn ch quyn truy cp trc tip n bng trn c s d liu, ta ch
truy vn trn View ca c s d liu (qryCustomer).
Quy nh thuc tnh DataSource ca iu khin DBGrid l Data1.
Thi hnh ng dng. Li hin th ton b d liu trong bng tblCustomer.

15.2 Truy cp d liu dng iu khin d liu t xa


iu khin d liu t xa (Remote Data Control - RDC) l mt cch truy cp
d liu t xa trong ng dng vit bng Visual Basic. iu khin ny dng mt
giao din lp trnh tng t iu khin ADO Data, hay l iu khin DAO Data.
Tr mt vi ngoi l nh, RDC hot ng tng t cc iu khin d liu khc
ta cung cp cho iu khin mt s thng tin v ni cha d liu, n s tr v d
liu v cung cp cho cc iu khin giao din ngi s dng quan tm n d
liu. Ngi s dng sau c th tng tc vi d liu thng qua cc iu khin
trn giao din - duyt d liu, cp nht, thm bn ghi mi v ta khng phi lp
trnh v cc hot ng ny.
Lu rng ta khng hn ch vo RDO khi mun s dng d liu Client /
Serve. VB6 gii thiu mt iu khin d liu mi cho ngun d liu ADO c
thit k thay th RDC. Tm hiu chi tit thm trong chng 27.

15.2.1S dng RDC

7. Trong Visual Basic, chn menu Project, Components.


8. T danh sch cc thnh phn, chn Microsoft Remote Data
Control. Thit lp tham chiu n Microsoft Data
Bound Grid Control.
9. Nhn OK. iu khin Remote Data v Data Bound Grid
xut hin trn hp cng c.
Hnh
Biu tng ca iu khin RDC (Microsoft Remote
Data Control) v iu khin Microsoft Data Bound Grid xut
hin trn hp cng c.
4. To instance cho iu khin Remote Data v iu khin Data
Bound Grid trn biu mu.

Gio trnh o to Visual Basic 6.0

5. Nu cha cung cp tn ngi s dng v mt khu khi to tn ngun d


liu ODBC, ta i thuc tnh UserName ca iu khin Remote Data l tn ngi
s dng truy cp c s d liu, chng hn nh l randy hay sa.
6. i thuc tnh Password ca iu khin Remote Data l mt khu ca
ngi s dng truy cp c s d liu.
7. Quy nh thuc tnh SQL ca iu khin Remote Data l:
Select * from qryCustomer
8. Trong thuc tnh DataSourceName ca iu khin Remote Data chn DSN
cho c s d liu SQL Server. DSN ta to trc y s xut hin trong danh sch
th xung.
9. Ch nh thuc tnh DataSource ca iu khin DBGrid l MSRDC1, tn ca
iu khin Remote Data.
10. Thi hnh ng dng. ng dng tr v ni dung ca bng tblCustomer v
hin th n trong li d liu.
Ngin cu k chng ny, bn s thy rng s dng iu khin Data vi tu
chn ODBCDIRECT v iu khin Remote Data truy cp d liu v c bn
l nh nhau. C hai u cho php truy cp n c s d liu ODBC khng cn lp
trnh.
V D MU Tham kho v d mu ca phn ny trong n RDCTest.vbp,
cha trn th mc \samples
PhanIV\23-rdo\RDCTest

15.3 S dng RDO trong chng trnh


i tng d liu t xa( Remote Data Object-RDO) c sp xp trong cu
trc phn nhnh i tng d liu tng t nh DAO(i tng truy cp d
liu Data Access Object ).
Lu rng m hnh i tng ca RDO n gin hn DAO. Nhiu chc nng
ca DAO (nh l p ng v bo mt v kh nng sa i thit k c s d liu)
c x l bi b my c s d liu. Mt khc, trong RDO, chc nng ny c
x l bi server.
LU ADO cung cp m hnh i tng n gin hn RDO, trong khi vn
m bo mi chc nng ca RDO.
im hn ch ny c ngha l ta khng th dng RDO to i tng c s
d liu nh l bng, view, v th tc cha sn (t ra, ta khng th s dng i
tng thc hin iu ny Tuy nhin, ta c th dng RDO truyn trc tip
cu lnh SQL theo th tc n server, ngha l hu ht nhng g c th lm vi
ISQL/w, ta cng c th lm vi RDO).
1. Lp mt tham chiu n RDO trc khi s dng n. Chn menu
Project, References. Hp thoi References xut hin:
2. Chn Microsoft Remote Data Object 2.0 t danh sch
3. Nhn OK. RDO xut hin trong ng dng.
Thc hin cc bc ny khi ng dng cn truy cp RDO. Nu ng dng dng
RDC, ta cn phi lp mt tham chiu n RDO v thm RDC vo n.
Hnh 23.5 Kin trc y ca RDO 2.0

FPT Software Solution

Trang:204/265

Gio trnh o to Visual Basic 6.0

15.3.1Quy nh thuc tnh b my c s d liu dng i tng


RDOENGINE.
i tng rdoEngine l i tng mc cao nht trong m hnh i tng
RDO. Ni chung, ta dng i tng rdoEngine ch nh thuc tnh mc nh cho
cc i tng RDO khc m ng dng to ra.
i tng rdoEngine cn hu dng trong trng hp ta mun quy nh hay
kim tra kiu con tr c dng bi b my c s d liu. Con tr l cch truy
cp tng dng ca b kt qu. Con tr khc nhau c nhng kh nng khc nhau; v
d, con tr cun ti cho php truy cp cc dng tun t, nhng khng c php
quay ngc li v tham chiu n nhng dng trong b kt qu ta va dch
chuyn qua.
i tng rdoEngine tng ng i tng DBEngine ca DAO. Khng c
im tng t trc tip vi rdoEngine trong ADO; chc nng ca n b phn chia
gia cc i tng Connection v Recordset ca ADO.
Ngoi kh nng th hin ngun d liu, i tng rdoEngine cn cha tp
hp rdoErrors cho php ta lp xuyn qua ton b thng bo li pht sinh bi mt
transaction ca mt c s d liu nht nh.
i tng rdoEngine cha tp hp cc i tng Enviroment, cng nh tp
hp cc i tng rdoError.
V d, nu ng dng cn to mt s i tng da trn login thng thng v
mt khu ca ngi s dng, ta c th ch ra cc yu t ny khi ta bt u s
dng RDO trong ng dng. Cc gi tr mc nh ta quy nh (dng thuc tnh
rdoDefaultPassword v rdoDefaultUser) l dnh cho cc i tng rdoEnvironment
m ta to ra trong ng dng.
Ta cng c th dng i tng rdoEngine diu khin cch thc to v duy
tr cc con tr trong ng dng.
Ngoi vic cung cp cc gi tr mc nh cho nhng i tng to bi RDO,
i tng rdoEngine t ng to i tng rdoEnvironment. Ta c th tham
chiu n i tng ny trong chng trnh nh l rdoEnvironments(0).
Hnh 23.6 Tp hp Environment v i tng Environment trong cy phn cp RDO (i tng d liu t xa)

15.3.2Truy cp mi trng i tng rdoEnvironment


i tng rdoEnvironment th hin mi trng c s d liu. y l mt
cch tham chiu n b kt ni c s d liu (theo dng ca i tng
rdoConnection).
i tng rdoEnvironment tng t i vi Workspace trong DAO. Vi ADO,
rdoEnvironment tng t vi i tng Connection ca ADO.
Cng nh i tng rdoEngine, khng chc rng ng dng cn to nhiu hn
mt instance ca i tng rdoEnvirment - tr phi ta cn h tr nhiu transaction
ng thi trn nhiu kt ni c s d liu. Thay v to mt instance mi ca i
tng rdoEnvironment, ta c th truy cp i tng rdoEnvironment hin hnh,
rdoEnvironment(0), c to bi i tng rdoEngine khi ta lp mt tham chiu
n RDO t ng dng.

FPT Software Solution

Trang:205/265

Gio trnh o to Visual Basic 6.0


i tng rdoEnvironment thuc v tp hp rdoEnvironmnt v cha tp hp
gm cc i tng rdoConnection:
Hnh 23.7 Tp hp rdoEnvironments v i tng rdoEnvironment trong cy phn cp RDO (i tng d liu
t xa)

15.3.3Thit lp kt ni dng i tng rdoConnection


Ta dng i tng rdoConnection thit lp mt kt ni n server c s d
liu t xa trong RDO. Sau khi ta c mt i tng rdoConnection hp l, ng
dng c th bt u tng tc vi c s d liu.
i tng rdoConnection tng t i vi Database trong lp trnh vi DAO.
N cng tng t theo mt ngha no vi i tng Connetion ca ADO.
i tng rdoConnection thuc v tp hp rdoConnections v cha tp hp
cc i tng rdoQuery, i tng rdoResultset, v i tng rdoTable.
Hnh 23.8 Tp hp rdoConnections v i tng rdoConnection trong cy phn cp RDO (i tng d liu t

xa)

to mt kt ni dng i tng rdoConnection, ta bt u bng cch to


chui kt ni ODBC. Khc vi iu khin Data, ta b qua ODBC; cng nh mnh
ca chui kt ni ca i tng rdCnnection. (N m ch rng v s dng
RDO, ta s dng ODBC).
Di y l danh sch cc phn t thng dng nht trong chui kt ni ODBC
khi kt ni vi SQL Server.
Tham bin
UID
PID
DSN

M t
Tn login ca ngi s dng
Mt khu ca ngi s dng
Tn ngun d liu ta to trong Trnh qun l iu khin
ODBC
DRIVER
iu khin ODBC m ta mun kt ni
DATABASE
Tn c s d liu m ta mun kt ni
APP
Tn ng dng kt ni vi c s d liu
LANGUAGE
Ngn ng quc t c dng bi server
SERVER
Tn ca SQL Server m ng dng kt ni n
Tuy nhin, y khng phi ton b cc tham bin. V khng nht thit phi
dng tt c cc tham bin ny trong mi trng hp. C s d liu c th s dng
nhiu hoc t hn.
V d, ni n c s d liu SQL Server Novelty, ta dng chui kt ni:
DSN = Novelty; UID = randy; PWD = prince
Nu khng cung cp tn login v mt khu ca ngi s dng trong chui kt
ni, khi ng dng ni n server, trnh iu khin ca ODBC s hin th hp
thoi yu cu ngi s dng cung cp thng tin login.
15.3.3.1

To chui kt ni khng cha DSN

Ngoi cch to kt ni s dng tn ngun d liu ODBC, ta cn c mt tu


chn to mt chui kt ni khng cn c DSN. Khi , chui kt ni bao gm

FPT Software Solution

Trang:206/265

Gio trnh o to Visual Basic 6.0


ton b thng tin cn thit login, k c tn trnh iu khin ODBC, chng hn
nh:
Driver = {SQL Server}; SERVER = bedrock; DATABASE = bedrock; UID =
randy; PWD = prince;
Lu rng, th t cc phn t trong chui khng quan trng, nhng cch nh
vn l c quan trng. Mt trong nhng li ph bin nht m nh lp trnh thng
gp khi xy dng chui l b qua k t (chm phy (;) hay k t ngoc cong),
hoc chn mt k t l (nh khong trng trc v sau du bng) trong chui kt
ni. ODBC rt kn chn vi nh dng ca chui kt ni, v th nn thn trng.
Dng chui khng c DSN trong trng hp ta khng cn iu khin ton b
qua cu hnh pha Client. N cng nhanh hn mt t khi log vo c s d liu. Bi
v DSN c cha trong Registry ca Windows, v rt tn km truy cp vo y.
M c s d liu

15.3.3.2

Sau khi c thng tin cn thit lp kt ni n c s d liu, ta c 2 tu


chn thit lp kt ni:
Dng phng thc OpenConnection ca i tng rdoEnvironment.
Dng phng thc EstablishConnection ca i tng
C hai phng thc u nh nhau, chng ch hot ng hi khc nhau mt
cht.

15.3.3.2.1

Dng phng thc OpenConnection

Option Explicit
' References RDO 2.0
Private MyConn As rdoConnection
Private Sub Form_Load()
Dim strConnect As String
strConnect = "DSN=Novelty;" & _
"PWD=prince;" & _
"UID=randy;"
Set MyConn = rdoEnvironments(0).OpenConnection("Novelty", _
,, strConnect)
End Sub
Phng thc OpenConnection c 5 tham bin : Tham bin th nht, tn ngun
d liu, khng phi l tu chn. Bn tham bin cn li (Prompt, Readonly,
Connect, v Options) l tu chn. iu ny gii thch c php l ca phng thc tham bin thiu t gia cc du phy. (Lu rng on chng trnh ny to
ngm i tng rdoEnvironment, tham chiu n rdoEnvironment(0), to mt
kt ni n c s d liu).
Mt khc, phng thc EstablishConnection, thc hin yng t nh
OpenConnection. Nhng n hot ng theo cch trc tip hn:
Option Explicit
' References RDO 2.0
Private MyConn As rdoConnection
Private Sub Form_Load()
Dim strConnect As String

FPT Software Solution

Trang:207/265

Gio trnh o to Visual Basic 6.0


strConnect = "DSN=Novelty;" & _
"PWD=prince;" & _
"UID=randy;"
MyConn.EstablishConnection
End Sub

V d mu Tham kho v d trong n projectConnect.vbp trong th mc


\samples\PhanIV\23-rdo\Connect.

15.3.4p ng s kin trong RDO


i tng RDO c kh nng sinh ra s kin. S kin cn cho php ng dng
thi hnh nhng hnh ng mt nhiu thi gian (nh l kt ni n c s d liu
hay thi hnh cu truy vn) m khng cn gi iu khin ca ng dng. Thay v ch
cho hnh ng ca RDO xy ra, ng dng c th lm vic khc cho n khi kt
ni c thit lp hay truy vn hon tt. Ta gi y l thi hnh khng ng b. S
kin l cch thc i tng RDO thng bo cho ng dng rng mt hot ng bt
ng b va hon tt.
khin mt i tng d liu c bit sinh ra s kin, ta phi khai bo n
theo cch c bit: dng t kho WithEvents. V d, khai bo i tng
rdoConnection c tn l MyConn pht sinh s kin, ta dng dng lnh:
Private WithEvents MyConn As rdoConnection
Sau khi khai bo, cc s kin ca n s xut hin trong ca s Code ca Visual
Basic.

Hnh Truy cp th tc s kin ca mt i tng RDO c khai bo bng


t kho WithEvents.
Sau , ta c th vit cc th tc x l s kin. Cc th tc ny tng t th
tc x l s kin ca cc i tng c bn khc, nh th tc s kin Load ca
biu mu hoc th tc s kin Click ca nt lnh.
Cch d tht minh ho cch thc hot ng ca cc s kin RDO l vit
mt th tc thng bo khi mt kt ni n c s d liu c thit lp.
Option Explicit
FPT Software Solution

Trang:208/265

Gio trnh o to Visual Basic 6.0


referene rdo 2.0
WithEvents Myconn As rdoconnection
Private Sub Form_Load()
Set Myconn = New rdoconnection
Myconn.conect = "DSN=novelty;" & _
"PWD=rince;" & _
"UID=randy;"
Myconn.EstablishConnection
End Sub
Private Sub myconn_connect(ByVal ErrorOcurred As Boolean)
If ErrorOcurred Then
MsgBox "There was a problem" & _
"connecing to the database.", vbExclamation
Else
MsgBox "connection established.", vbInformation
End If
End Sub

15.4 To kt nI vi trnh thit k uerconnecttion


Trnh thit k kt ni ngi s dng (Uerconnection designer) to s d dng
ho ngI s dng Visual Basic kt ni vi c s d liu client/server dng
RDO. N pht sinh I tng rdoconnection m khng phI lp trnh nhiu
Tng t biu mu trong n VB, ta thm trnh thit k Uer_connecttion vo
n v dng n nh dng biu mu. Khi ta bin dnh tp tin thi hnh EXE trong VB,
trnh thit k userconnection cng c bin dch nh biu mu.
Lu vi ADO trong VB 6, ta c mt kiu thit k mi to kt ni vI c
s d liu. thit k ny gI l dataenviroment, s c trnh by trong chng 27
I tng d liu ActiveX. N vt xa khng nng ca thit k UserConnection
trong mt s sch. thit k UserConnction l mt dng m-un lp.
dng trnh thit k UserConnection,ta lm nh sau:
1. Thm mt trnh thit k UserConnection mi vo n.
2. dng giao din ho ca UserConnection, th hin ngun d liu
ODBC m ta mun ni n, v cch thc kt ni.
3. trong chng trnh, to mt instance ca i tng rdoconnection
t thit k UserConnection.
V d mu dng trnh thit k UserConnection kt ni vi c s d
liu ODBC

1. Trong n VB, chn menu Project, more ActiveX Designers. Chn


Microsoft UserConnection.
2. Mt trnh thit k UserConnection c thm vo n, v hp thoi
UserConnection properties xut hin:

FPT Software Solution

Trang:209/265

Gio trnh o to Visual Basic 6.0

3. Trong tab Connection, chn ngun d liu ODBC hay xy dng chui
kt ni khng c DSN.
4. Chon tab Authentication, nhp tn v mt khu ngi s dng. Chn
vo hp nh du Save Connection Information for Design=time. Nh
th, ta c th truy cp kt ni bt k lc no ta mun.
Lu trong trnh tht k UserConnection, cng tng t nh vi
ODBC DSN, ta c tu chn l b qua cc thng tin gn lin vi vic
thm nh. B qua cng vic ny ngha l tn ngi login v mt
khu s khng c bin dch vo ng dng v n khng c lu
cng vi trnh thit k UserConnection. Mc d vy, nh rng thit
k UserConnection khng cha d liu cho thm nh, trong khi bn
khng cung cp cc thng tin trong chng trnh khi thc thi, do
, trnh iu khin ODBC s hin th hp thoi mi ln ng
dngkt ni n c s d liu.(Tt hp thoi login ny trong thit
k UserConnection bng cch dng hp kt hp Prompt Behavior
trong tab Authentication ca hp thoi Properties ca thit k).
Trong ng dng, ta mun gii quyt vn thm nh ngi s
dng theo mt cch khc - tr v tn ngi s dng v mt khu ti
thi im ngi s dng khi ng ng dng, hay(i vi cc ng
dng h tr quyt nh) to mt ngi s dng ch c c bit
duyt d liu.
5. Nhn OK.
6. hp thoi properties ng. Trn mn hnh xut hin tn trh thit k
UserConnection.

FPT Software Solution

Trang:210/265

Gio trnh o to Visual Basic 6.0

Hnh Ca s thit k UserConnection sau khi ta t thuc tnh khi


ng n.
7.
Trong ca s properties cu VB, g vo mt tn cho trnh thit k
UserConnection. Ta dng tn ny tham chiu n trnh thit k
UserConnection tong chng trnh. V d ta t tn trnh thit k
UserConnection kt ni n c s d liu company l conCompany.

15.5 Truy cp truy vn vi trng thit k UserConnection


Ta c th to cu truy vn trong trnh thit k UserConnection theo mt
tng ba cch:
Gi mt th tc cha sn hay view trn server c s d liu tr vcc
bn ghi.
Pht mt cu lnh cho server c s d liu di dng mt cu truy vn
SQL ng.
Xy dng mt cu truy vn trong trng thit k UserConnection dng
Microsoft query. K thut ny tng t k thut truy vn ng, nhng n
mng tnh ho hn, v vy xy dng lc thit k.

15.5.1Gi

th

tc

cha

sn

trong

mt

trnh

thit

UserConnection
15.5.1.1

Thm th tc vo tnh thit k UserConnection

gi th tc cha sn t mt i tng c to ra t trnh thit k


UserConnection, vo lc thit k, ta pah thm th tc cha sn vo trn
thit k UserConnection. Sau , ta c th truy cp th tc nh mt phng
thc ca i tng kt ni.
1. Trn thanh cng c ca trnh thit k UserConnection, nhn nt Insert
Query
2. Hp thoi Query Properties xut hin. trong hp query name, nhp tn
truy vn; c th trng vi tn th tc cha sn.
3. Hp kt hp Based on stored Procedure cung cp mt danh sch cc th
tc cha sn trn c s d liu company. Ta chn th tc
lastNameLookup.

FPT Software Solution

Trang:211/265

Gio trnh o to Visual Basic 6.0


4. Chn tab Prameters. th tc LastNameLoopup ly tham s name, l tn
ngi s dng ang tim kim.
5. nhn OK. th tc LastnameLoopup c thm vo trh thit k
UserConnection
/****************************

anh

***********************************/
15.5.1.2

Gi th tc

To mt instence ca UserConnection trong chng trnh, sau , thi hnh


th tc cha sn nh l mt phng thc ca i tng rdoConnection.
1. Thm mt hp danh sch chun, mt nt lnh chun, va mt hp vn bn
chun vo biu mu trong n cha UserConnection. Dng hp vn bn
nhp tham ss cho truy vn. Chng trinh thi hnh cu truy n c kch
hot bng cch nhn vo nut lnh.
2. trong phn Declatians khai bo mt bin cha rdoConnection
v
rdoresultset
Private Conn As concompany
Orivate rs As rdoresultSet
3. Trong suwj kieenj click ca nut lnh, lp trh to instance ca
UserConnection, ni vi c s d liu v thi hnh th tc cha sn.
Private Sub command1_click()
Set conn = New conCompany
conn.EstablishConnection
conn.lastnameloopup Text.tex
Set rs = con.LastQueryResults
list1.Clear
Do util rs.eof
list1.additem rs!lastName&" "&rs!fistName
rs.MoveNext
Loop
conn.Close
End Sub
Lu rngkhi nhn k t dn chm sau i tng Conn, th tc cha sn
c tham chiu bi UserConnection xut hin trong danh sch cc thnh
phn ca i tng.
4. thi hnh ng dng. Nhp tn Smith vo hp vn bn, ri nhn nt lnh.
Danh sch lit k nhng tn cha t Smith nh phn u.

FPT Software Solution

Trang:212/265

Gio trnh o to Visual Basic 6.0

15.5.2Dng Microsotf Query xy dng chui SQL trong trnh


thit k UserConnection.
Ta va thy tham chiu n mt cu truy vn cha trn server dngtrnhf
thit k UserConnection rt r. Nu cu truy vn khng c sn trn server,
ta phi pht sinh trn client ri sau s thi hnh trn server, kt qu tra v
Client.
Ta c th nhp chui SQL mt cch th cng hoc dng cng c ho
trn Client. Microsoft Query l mt cng c gn gi nht i trnh thit k
UserConnection.
/**************************

****************************/
15.5.2.1

Thm truy vn vo trnh thit k UserConnection dng

Microsoft Query
1. Nhn nt Insert Query trn thanh cng c ca trnh thit k
UserConnection.
2. hp thoi Properties ca truy vn xut hin.
3. Nhp tn ca truy vn trong hp vn bn Query Name.
4. chon kh nng tu chn Based on User-Defined SQL,ri nhn Build.
5. Microsoft Query phng ln ngun d liu ta mun kt ni, ri nhn OK.
/****************

****************/
Ta phi ch ra ngun d liu tr li khi ta thc hin trong phn trc.
ta co mt DSN ca ngi dng cho c s d liu company. V mt l do
no , n mun dng DSN da trn tp tin thay v Uer-DSN hay SystemDSN. May mn l,MS query cho ta kh nng to DSN tong chng trnh, v
th, y khng l vn ln. Tuy nhin, ta vn mun thit lp mi
thcha trong mt ni.
Mt vn khc vi MS query la nos cai t tm kim cc tp tin
DSN trong th mc trong \Program Files \Common Files\Microsoft
Shared\Vba, trong khi ODBC to DSN da trn tp tin \Program Files
\Common Files \ODBC\Data Sources. Trong hp thoi choose Data Source
ca Ms Query, ta gii quyt vn nt bng cch nhn nt Option chi ra
th mc tm kim DSN. lam iu ny, nhn Browse trong hp thoi
Data Source Options, chn ng th mc, nhn OK ri nhn Add. Khi y,
th mc mi s c nhn ra bi MS Query v sau.

FPT Software Solution

Trang:213/265

Gio trnh o to Visual Basic 6.0


6. trnh t ng Query Winzard thi hnh, hin th d liu c sn trong
ngun d liu. Hp u tin ca Winzard hin th.
7. Nhn p chut ln truy vn hay view m ta nh dng (v d,chon
qryCustomer). Truy vn hay View c m rng hin th danh sch
cc trng cha trong truy vn.
8. Nhn p ln mi trng ta mun ly v, v d chon FirstName v
LastName.
9. Nhn Next.
10. Bc Lc d liu (Filter Data) xut hin. bc ny, ta xcnh cch
thc lc bn ghi. V d, tr v nhng khch hng tn Jones, chon
trng Lastname t danh sch cc trng. Sau , trong hp kt hp bn
phi danh sch ct,chn Equal. Trong hp kt h k tip, chn Jones.
11. Nhn Next. Bc k tip cho php ta sp xp d liu. Trong hpkt
hp Sort, chon FirstName.
12. Nhn Next. Khi hon tt, ta c th tu chn xem d liu tr v hay
tr li thit k UserConnection. Chn View Data or Edit Query trong MS
Query, ri nhn Finish.
13. D liu tr v hin th trong MS Query.
V d mu Tham kho v mu trong n Query.vbp, trong th mc
\sample\PhanIV\23-rdo\Query.
Khi hon tt xem d liu, chn menu File, Exit to Connection Designer.
Microsoft Query thot ra v tr truy vn ta xy dng v hp thoi Properties ca
truy vn ca trnh thit k UserConnection di dng chi SQL.
Nhn OK ng hp thoi Query Properties. Truy vn c cha trong trnh
thit k UserConnection.
C vi u im khi cha truy vn trong trnh thit k UserConnection:
- Dng li thit k trong nhiu n vi nhiu ngi lp trnh m khng
cn thay i v pha server.
- Kim sot c phc tp ca ng dng v khng c nhiu dng lnh
bo tr.
Tuy nhin, nhc im ca k thut ny l truy vn trn Client, chung s khng
truy cp c t mi Client khc. Nh th,tng Client c cch truy nhp khc
nhau, d dn tith trng khng nht qun, nht l khi thit k c s d liu pht
trin theo thi gian. Nu to truy vn trn Client, ta nn np n vo Server.

15.6 S dng d liu vi i tng rdorerultset


Ta s dng i tng rdoresultset thao tc vi d liu tr v do tng tc
vi server.
Mi i tng rdoresultset thuc v tp hp rdoresultsets. i tng
rdoresultset cha tp hp rdoColumn.
i tng rdoresultset gn nh ng nht vi i tng Recordset cu DAO.
C th to i tng rdoresultset theo mt s cch in hnh, n c to nh mt
kt qu ca cu truy vn.
Hnh

15.7 Thi hnh truy vn vi i tng rdoQuery


Trong RDO 2.0 i tng RDOQuery l mt thay th cho i tng
rdoprepareStatment trong RDO 1.0. Ta c th vn dng cc i tng
FPT Software Solution

Trang:214/265

Gio trnh o to Visual Basic 6.0


rdoPrepareStatment trong RDO 2.0 v n vn tng thch vi cc phin bn trc.
Tuy nhin, vi chng trnh vit mi, ta nn dng rdoQuery.
Tng i tng rdoQuery thuc v tp hp rodQueries. i tng rodQuery
cha tp hp cc i tng rdoColumn v rdoParameter.

FPT Software Solution

Trang:215/265

Gio trnh o to Visual Basic 6.0

16 Truy cp c s d liu vi lp

Lm vic vi lp v i tng.
S dng lp v i tng vi truy cp c s d liu.
To lp cn s dng d liu.
To lp xut d liu.
Trin khai lp nh l cc Activex Server.

Cc ng dng truy cp d liu thng phc tp hn nhiu so vi cc ng


dng thng thng. L do Visual Basic a ra cc cng ngh DAO, ADO, ODBC l
nhm gip gii quyt tnh phc tp ny.
Nhng cc cng ngh ny ch mi gii quyt nhng phc tp ny sinh trong
qu trnh pht trin phn mm. M hnh i tng c s d liu nh ADO chng
hn, gip ta tru tng ho c s d liu v do to s d dng khi cp nht
mt bn ghi hoc sa i nh ngha bng trong chng trnh. Tuy nhin, n khng
gip ta tnh thu trn doanh thu bn hng hay t chi mt mu d liu khch hng
bi v n khng c ID hp l.
Visual Basic cho php ng dng cng c cc quy lut kinh doanh vo cc lp.
Lp l mt kiu m dun chng trnh cho php ta to i tng. Cc i tng
ta to vi m-dun lp tng t cc i tng truy cp d liu ta s dng giao
tip vi c s d liu, ngoi tr chng c dng cho mc ch bt k. Trong ng
cnh truy c c s d liu, ta ch yu dng lp cng vi cc i tng c s d
liu to nn mt ng dng truy cp c s d liu.
Gi s ta to mt ng dng x l ho n v khch hng. Trong mt ng dng
khng theo hng i tng, ta phi vit cc hm hay th tc ghi thng tin khch
hng v ho n, tr v cc thng tin t c s d liu, in thng tin, v.v.. Nu vit
bng Visual Basic, ta cn phi x l ri rc trn hng chc th tc s kin.
L ngi lp trnh theo hng i tng, ta s bt u bng cch phn tch v
thit k cc thnh phn, hay l i tng khi qut ho vn x l khch hng v
ho n. Anh ta hay c ta s xc nh mt i tng khch hng c nhng thng tin
g v i tng khch hng c th thc hin nhng hnh ng no trn d liu;
tng t vi i tng ho n. Sau khi i tng c phn tch v th hin
thnh lp, n s c s dng trong ng dng. Ta c th dng li i tng khch
hng v i tng ho n trong ng dng bt k sau ny. Bi v m ngun ca
i tng tn ti trong ni cha rt d truy cp n l m-dun lp thay v trong
rt nhiu th tc s kin ri khp ng dng, ta cng c th d dng g ri v
bo tr cc i tng ny.
Ngoi ra, lp v i tng cn tn dng cc tnh nng ngn ng mnh ca
Visual Basic. V d, c mt quan h gia khch hng v ho n ta c th ni mt
khch hng thuc v mt ho n, hay chnh xc hn, tp hp cc ho n thuc
v mt khch hng. Visual Basic h tr tp hp cc i tng.
Mt h thng hng i tng c 3 c im :
Tru tng ho : rt gn vn n mc d hiu nht.
a hnh : cho php i tng thi hnh cng phng thc v cha cng d
liu vi cc i tng khc. iu ny to s d dng khi lp trnh, gip ta
khng cn x l li vi tng i tng, bi v cc i tng vn c cng
phng thc v thuc tnh.

FPT Software Solution

Trang:216/265

Gio trnh o to Visual Basic 6.0

Tm lc : y l c ch qua logic chng trnh v d liu c nhm


li vi nhau.
K tha : i tng hin hu c th sinh ra mt i tng mi. Tnh nng
ny trong Visual Basic cn b hn ch, n c cung cp di dng cc
giao din v thng qua i din.

16.1 Lm vic vi lp v i tng


Bn nn xem li chng 2 : Tm hiu Visual Basic v chng 10 : Lp trnh hng
i tng.

16.1.1To cy phn nhnh lp vi tin ch xy dng lp


Khi ta thit k lp cha lp, nht l lp c tp hp chng trnh tr nn kh
vit v rt kh qun l chng. Tin ch xy dng lp (Class Builder utility) gip ta
thit lp v qun l cc quan h gia tp hp cc lp bao bc chng d dng hn.
V d mu - To mt lp tp hp cho php lm vic vi tp hp ca
i tng Order
1. Khi ng Visual Basic v np n cha lp COrder.
2. T menu Add-Ins, chn Add-Ins Manager.
3. Nhn Class Builder Utility trong hp thoi Add-In Manager. Trong bng
Load Behavior, nhn Loaded/Unloaded.
4. Nhn OK. Tin ch xy dng lp c np v xut hin trn menu Add-Ins.
5. phng tin ch xy dng lp, chn menu Add-Ins,Class Builder Utility
6. Tin ch xy dng lp cnh bo rng n hin hnh cha lp hin hnh
cha c xy dng vi tin ch ny. Nhn OK.
7. Ca s Tin ch xy dng lp xut hin.

Hnh 16.1 : Dng nt New Collection (nt th hai t tri sang) ca tin ch xy
dng lp to mt lp tp hp.
8. By gi, ta dng Tin ch xy dng lp to lp tp hp. Nhn nt Add
New Collection trn thanh cng c:
Hnh 16.2 : Nt Add New Collection

FPT Software Solution

Trang:217/265

Gio trnh o to Visual Basic 6.0


9. Hp thoi Collection Builder xut hin. Trong Name, nhp tn ca lp
tp hp colOrder.
10. Chn COrder trong bng c ch Collection Of .iu ny cho bit lp tp
hp ny l mt tp hp ca i tng COrder. N to s an ton v kiu
cho lp khc vi cc tp hp thng thng, ch i tng COrder mi
c thm vo tp hp ny.
11. Nhn OK. Lp tp hp c thm vo tin ch xy dng lp.
12. Ta c thy tin ch xy dng lp pht sinh cc thuc tnh v phng thc
h tr 4 phng thc ca tp hp (Add, Count, Item v Remove) cng
nh l NewEnum.
Lu :Tin ch xy dng lp to thuc tnh NewEnum cho php lp
tp hp h tr php lp xuyn qua tp hp dng cu trc iu khin
For Each..Next. Khng nht thit phi dng thuc tnh ny trong
chng trnh, nhng ta bit s dng n vi For Each..Next.

Hnh 16.3 Ca s tin ch xy dng lp sau khi n to mt lp tp


hp.
13. By gi ta nh ngha lp tp hp, ta c th yu cu tin ch xy dng lp
pht sinh chng trnh bng chn menu File Update Project hoc dng phm
tt Ctrl+S.
14. Tin ch t ng xy dng lp tp hp. ng tin ch bng cch chn File,
Exit. Ta thy lp Orders c to ra do tin ch xy dng lp.
Ta cng thy rng tin ch nh ngha li c php ca phng thc Add ca
tp hp. Thay v ly i tng lm tham bin nh phng thc Add ca tp hp
quy c, phng thc Add mi ly bin lm tham bin. Nhng bin ny gn vi
cc thuc tnh ca i tng COrder. iu ny cho php ta to i tng, thm n
vo tp hp, gn gi tr cho n - nhng ci tin ng k so vi cch thc thc hin
thng thng.
Dim MyOrder as COrder
Dim MyOrders as colOrder
Set MyOrders= New colOrder
set MyOrder= MyOrders.Add(2.99, Cheese, 201, #6/5/99#)

FPT Software Solution

Trang:218/265

Gio trnh o to Visual Basic 6.0


Mc d vy, y cha phi l c php tt nht thm m phn t vo tp
hp.
C
th
dng
cch
gn
gng
hn:
Dim MyOrder as COrder
Dim MyOrders as colOrder
Set MyOrders= New colOrder
set MyOrder= MyOrders.Add()
MyOrder.Price = 2.99
MyOrder.ItemOrdered = Cheese
MyOrder.CustomerID = 201
MyOrder.OrderDate = #6/5/99#
C hai cch u a v cng kt qu: mt i tng c thm vo tp hp
v thuc tnh c gn gi tr. Cch th hai, dng thuc tnh thay v tham bin trng
r rng, v vy ta s dng n rng ri hn.
Mt trng hp dng tham bin thun tin hn thuc tnh l khi lp tp hp
tn ti trong mt thnh phn trin khai t xa qua mng. Theo kch bn , mi ln
gi n thuc tnh l sinh ra mt truy cp 2 lt i v qua mng. V vy, ng
dng hot ng tt hn, ta nn dng tham bin v ch gi mt ln.
V d mu - Sa i phng thc Add ca lp tp hp b qua tham
bin
Public Function Add(Optional sKey as String) as COrder
Dim objNewMember as COrder
Set objNewMember = New COrder
If Len(sKey) =0 Then
mCol.Add objNewMember
Else
mCol.Add objNewMember, sKey
End If
Set Add = objNewMember
Set objNewMember = Nothing
End Function
16.1.1.1

Dng lp tp hp thao tc vi cc phn t d liu

xy dng ng dng dng lp COrder v colOrder, ta theo cc bc sau :


1. To n Standard Exe mi. Thm lp COrder v colOrder.
2. Trong n, to mt biu mu cho php ngi s dng a vo Date,
CustomerID, Item, Price. Thm 2 nt lnh vo giao din, nt th nht nhp
d liu, trong khi nt th hai tnh ton tng s ho n c nhp.

FPT Software Solution

Trang:219/265

Gio trnh o to Visual Basic 6.0

Hnh 16.4 Giao din ca m hnh ca h thng nhp ho n hng i


tng c 2 nt lnh.
3. Trong biu mu, khai bo 2 bin mc m-dun, mt cho i tng COrder
v mt cho tp hp colOrder.
Option Explicit
Private ThisOrder as COrder
Private AllOrders as colOrder
4. To instance cho tp hp colOrder trong s kin Load ca biu mu.
Private Sub Form_Load ()
Set AllOrders = New colOrder
End Sub
5. Vit chng trnh cho s kin Click ca nt Add thm ho n vo tp
hp, ri khi ng li giao din ngi s dng ca ng dng.
Private Sub cmdAdd_Click ()
Creates a new order and adds
it to the collection
Set ThisOrder = AllOrders.Add
ThisOrder.OrderDate = txtOrderDate.Text
ThisOrder.CustomerID = txtCustomerID.Text
ThisOrder.ItemOrdered = txtItemOrdered.Text
ThisOrder.Price = txtPrice.Text
Reset the user Interface
txtOrderDate.Text =
txtCustomerID.Text =
txtItemOrdered.Text =
txtPrice.Text =
txtOrderDate.SetFocus
End Sub
6. Sau cng, trong s kin Click ca nt Total, vit chng trnh tr v
tng s ho n nhp dng vng lp
For Each.. Next.
Private Sub cmdTotal_Click()
Dim curTotal As Currency

FPT Software Solution

Trang:220/265

Gio trnh o to Visual Basic 6.0

For Each ThisOrder In AllOrders


curTotal = curTotal + ThisOrder.Price
Next
MsgBox "The total is " & curTotal, vbInformation
End Sub
16.1.1.2

Tham chiu n phn t trong tp hp

Dng vng lp For Each.. Next duyt qua tp hp khng phi l cch duy
nht lm vic vi tp hp. Sau khi thit lp v a vo cc i tng, ta c th
ly ra phn t t tp hp. Nu thm i tng vo tp hp vi mt kho hay gi
tr chui duy nht, ta c th ly v i tng m khng khng cn xc nh v tr
ca n trong tp hp - mt u im so vi mng.
V d, ly v ho n th 4 trong tp hp :
Set MyOrder = AllOrders(4)
tham chiu n thuc tnh ca i tng Order th 4 trong tp hp, ta
truyn vo ch mc ca tp hp :
AllOrders(4).OrderDate = #6/5/98#
Dng lnh ny hot ng nh th tc mc nh ca tp hp tr v mt tham
chiu n phn t c nh s. Th tc mc nh ny l phng thc Item. V l
mc nh, nn ta khng cn gi n mt cch tng minh. Nu khng, c th dng:
AllOrders.Item(4).OrderDate= #6/5/98#
THN TRNG Phn t u tin trong tp hp c nh s 1, khng c
phn t th 0. N cng khch vi tp hp ca cc i tng Form
hay Control trong Visual Basic; cc tp hp ny nh s t 0. Nh
vy, tp hp do ta t to c nh s t 1; trong khi tp hp do
Visual Basic to nh s t 0. y cng l trng hp ca tp hp
cc i tng truy cp d liu, nh l tp hp TableDefs ca i
tng Database.
tr v mt phn t t tp hp s dng mt kho trc , ta phi thm n
vo tp vi mt kho. thc hin iu ny, truyn mt chui duy nht cho
phng thc Add :
AllOrders.Add ORD193).prive
Ta s gp thng bo li nu nh chui ny khng duy nht. tham chiu n
mt thuc tnh ca i tng ny, ta dng dng lnh :
MsgBox AllOrders (ORD193).prive
Lu rng ta khng dng gi tr s cho kho ca mt i tng, ngay c khi ta
truyn n cho phng thc Add di dng chui. Bi v phng thc Item c th
tr v mt i tng t tp hp bng kho hoc bng v tr xp th t. Nu
phng thc Item nhn s n, n tr v phn t th n trong tp hp. Nu n nhn
mt chui, n tr v i tng vi kho l chui . Mc d vy, Nu chui c
th chuyn thnh s, ta s c nguy c gp li.

16.1.2S dng biu mu nh lp


-V d mu - To mt Instance ca biu mu Login
FPT Software Solution

Trang:221/265

Gio trnh o to Visual Basic 6.0


1. Trong n ca Visual Basic, nhn nt phi chut trn ca s Project
Explorer.
2. T menu bt ra, chn Add. Chn Form.
3. Hp thoi Form xut hin. chn biu mu Login.

Hnh 16.5 :Hp thoi Add Form ca Visual Basic cho php chn kiu biu mu
nh ngha sn.
4. Trong hp thoi Form, nhn Open. Mt biu mu mi c to.
5. Trong ca s Code, a vo cc th tc thuc tnh :
Public Property Get UserName() As String
UserName = txtUserName.Text
End Property
Public Property Let UserName(ByVal strNew As String)
txtUserName.Text = strNew
End Property
Public Property Get Password() As String
Password = txtPassword.Text
End Property
Public Property Let Password(ByVal strNew As String)
txtPassword.Text = strNew
End Property
Public Sub Login()
MsgBox "Logging in user " & UserName & "."
End Sub

FPT Software Solution

Trang:222/265

Gio trnh o to Visual Basic 6.0


6. Biu mu Login chun ca Visual Basic cha chng trnh trong s kin
nhn nt OK v Cancel ngi s dng Login vo h thng. Xo on
chng trnh i v thay bng on chng trnh sau:
Private Sub cmdCancel_Click()
Me.Hide
End Sub
Private Sub cmdOK_Click()
UserName = txtUserName.Text
Password = txtPassword.Text
Login
Me.Visible = False
End Sub
iu ny s tn dng th mnh ca cc thuc tnh v phng thc hiu chnh
ca chng ta. Ngoi ra, Form ny s c ng dng rng ri trong ng dng
Clien/Server s c trnh by trong phn sau.

16.2 To Intance bi cho biu mu


Ta c th to instance bi (multiple instance) cho biu mu tng t nh vic
to instance bi cho cc i tng t lp. Mi instance sau ca biu mu c
nh danh ring trong ng dng, vi mt bn sao ca ton b thuc tnh, phng
thc, v cc iu khin giao din ngi s dng cha trong thit k gc ca biu
mu.
To ra nhiu instance cho biu mu Login ca ngi s dng l v ngha. Tuy
nhin, i vi cc biu mu khc, ta to ra instance bi l iu thng gp nh v
d sau cho thy :
Dim f as frmMain
Set f = New frmMain
f.Show

16.2.1S dng lp v i tng trong truy cp c s d liu


C mt s phng tin gip cho vic p dng k thut hng i tng trong
truy cp d liu trong Visual Basic :
Gn mt bn ghi duy nht vi mt i tng : y l k thut n gin
nht, khng cn lp trnh nhiu. Mi trng trong bn ghi tr thnh mt
thuc tnh ca i tng; ly d liu v t c s d liu hay lu d liu
vo c s d liu u c x l qua i tng.
U nhim x l d liu cho mt i tng Recordset cha trong mt i
tng : y l k thut tt nht khi ta cn x l mt s khng gii hn cc
bn ghi. K thut ny cng d lp trnh, bi v c nhiu chc nng qun l
c cung cp sn trong cc m hnh i tng c s dng ( DAO hay
RDO). K thut c bit hu dng khi ta dng ADO bi v ADO cung cp
kh nng ngt kt ni vi ngun d liu, cho php ng dng Client thao tc
vi d liu khng cn kt ni vi Server. Bi v nhiu ngi s dng kt
ni ng thi l mt im yu ca cc my tnh Client/Server, ngt kt ni
c ngha l gii php s linh hot hn.

FPT Software Solution

Trang:223/265

Gio trnh o to Visual Basic 6.0

Gn nhm cc bn ghi vo mt tp hp : Lp trnh phc tp hn trng


hp gn mt bn ghi vi mt i tng, nhng n hu dng hn trong
trng hp ta phi x l vi nhm cc bn ghi c lin quan ti mt thi
im. Ta c th gp phi kh khn lin quan n kh nng hot ng ca
ng dng nu ta khng cn thn gii hn s bn ghi x l ti mt thi
im.
Chia truy cp d liu gia Client v Server : K thut ny thch hp nht
khi ta cn t c kh nng linh hot v hiu qu cao nht trong ng
dng. N lin quan n vic chia Logic ca tng trung gian ca ng dng
thnh 2 phn : thnh phn pha server thi hnh truy cp v tr v d liu
n Clien v thnh phn pha Client nhn kt qu ny v gn chng vo cc
thuc tnh ca i tng.
Cc v d cn li trong chng s a ra tng k thut no s ph hp
trong tng tnh hung c th.
16.2.1.1

S dng cc lp x l bn ghi duy nht

Lp x l bn ghi tr v mt bn ghi duy nht t c s d liu v a n vo


ng dng di dng mt i tng. Cc trng trong bn ghi c trnh by nh
nhng thuc tnh ca i tng. Bt k hnh ng no thi hnh trn d liu ( nh
l lu d liu v c s d liu, in n, hay tin hnh tnh ton ) u c trnh by
nh nhng phng thc ca i tng x l bn ghi.
cho php lp in gi tr cho thuc tnh, ta cung cp cho n mt phng
thc (t tn l GetData) thi hnh truy vn mt bn ghi duy nht trn c s d
liu, n dng cc trng trong bn ghi c tr v in gi tr vo thuc tnh
ca i tng.
Khi giao cho i tng vai tr ly bn ghi v t c s d liu, ta cn cung cp
cho i tng ID ca bn ghi, thng l kho chnh ny; phng thc GetData ca
i tng s dng kho chnh ny ly v bn ghi cn thit.
i tng cng c th c thm phng thc Save cho php ngi s dng ca
thnh phn lu bn ghi vo c s d liu.
16.2.1.2

S dng lp x l mng(ARRAY-HANDLING CLASS)

Ta c th to lp truy vn c s d liu, sau truyn d liu v ng dng


Client di dng mng. u im ca gii php ny l nu lp x l mng c
bin dch thnh ActiveX Server DLL hay EXE, n c th to ng dng Client m
khng i hi tham chiu n b my ca c s d liu. Tt c nhng g Client
cn l mt tham chiu n thnh phn ActiveX server. iu ny lm cho ng dng
Client tiu tn t ti nguyn hn; ng dng d phn pht v nh cu hnh hn.
To mt thnh phn pha server tr v mt mng ngha l ng dng pha Client
khng cn duy tr kt ni lin tc n server, gip tng cng tnh linh hot ca
ng dng Client/Server.
16.2.1.3

dng

phng

thc

xng

sn

sut(FACTORY

METHOD)
Xng sn xut i tng l mt phng php to cc i tng khc. Ta dng
Xng sn xut i tng trong trng hp mt i tng gi vai tr to ra cc
FPT Software Solution

Trang:224/265

Gio trnh o to Visual Basic 6.0


i tng khc. to ra cc i tng khc, ta dng phng thc; cc phng
thc ny gi l phng thc xng sn xut.
V d, i tng Database ca DAO, c mt s phng thc xng sn xut
cung cp i tng :
Phng thc
CreateQueryDef
CreateRelation
CreateTableDef
OpenRecordset
CreateProperty

M t
To mt i tng QueryDef.
To mt i tng Relation
To mt i tng TableDef
To mt i tng Recordset
To mt i tng Property

Ngoi vic s dng cc phng thc xng sn xut do Visual Basic cung cp,
ta c th to ra cc phng thc ny trong cc lp t to.
Mt l do ph bin dng cc phng thc xng sn xut l yu cu thc
hin theo cch to i tng trong Visual Basic. Cc ngn ng lp trnh khc s
dng i tng (nh Visual C++) c contructor m nhim vic to Instance ca
i tng t lp; nhng constructor cn c th thi hnh cc tc v khc, nh cung
cp cc d liu khi to cho lp. Lp c nhiu constructor ngi lp trnh c
th chn la v constructor c th ly v tr v tham s.
Tuy nhin, khng c tng quan trc tip vi constructor trong Visual Basic.
Thay vo , cc lp Visual Basic c s kin Initialize. Ta c th lp trnh trong s
kin Initialize nh trong constructor ca Visual C++, nhng khng may l ta khng
th truyn tham s cho s kin Initialize ca Visual Basic, v ta ch c mt s kin
Initialize cho mi lp. N lm tnh tin dng ca s kin Initialize b hn ch i
vi mi phn t, ngoi tr cc gi tr c bn nht l cc gi tr mc nh. Cc
phng thc xng sn xut cung cp gii php khc phc iu ny.
Option Explicit
' Requires CCustomer class
Public Function CreateCustomer(Optional lngID As Variant) As CCustomer
Dim Cust As CCustomer
If IsMissing(lngID) Then
' Create new customer
Set CreateCustomer = New CCustomer
Else
' Retrieve customer from DB
Set Cust = New CCustomer
Cust.GetData (lngID)
Set CreateCustomer = Cust
End If
End Function
Xng sn xut i tng to mt i tng khch hng rt d dng vi y
tnh nng. on chng trnh sau to i tng CCustomer:
Dim MyCust As CCustomer

FPT Software Solution

Trang:225/265

Gio trnh o to Visual Basic 6.0


Dim cf As CCustFactory
Set cf = New CCustFactory
' Retrieve data
Set MyCust = cf.CreateCustomer(txtID.Text)
Mt l do khch dng cc phng thc xng sn xut trong lp trnh c s
d liu Visual Basic l tit kim cc ti nguyn kt ni, bi kt ni n c s
d liu i hi tiu tn nhiu thi gian v b nh trn Client v Server.
Nu dng lp xng sn xut s d dng hn ch s kt ni thc hin vi
server. Ta ch kt ni mt ln, trong lp xng sn xut thay v trong mi m-dun
lp.

16.3 To cc lp cn s dng d liu


Lp c kh nng rng buc trc tip vi c s d liu. y l tnh nng mi
trong Visual Basic 6.0. Ta khng cn gii hn cc iu khin d liu thnh ngun
d liu cho ng dng c s d liu.
Ngoi vic cung cp ngun d liu mi, Visual Basic 6 cn loi b nhng hn
ch v cch thc kt ni ca ng dng vi ngun d liu. Ta khng cn thit lp
rng buc d liu vo lc thit k, nh vi iu khin DAO Data. Thay vo , ta
c th gn mt ngun d liu (nh l iu khin ADO Data,thit k
DataEnvironment,hay lp cung cp d liu ) cho phn tiu th d liu (nh l mt
iu khin giao din ngui s dng rng buc ) lc thi hnh. iu ny cho php
ng gi m-dun lp truy cp d liu.
to mt lp lm ngun d liu truy cp c s d liu Novelty, ta theo cc
bc sau:
1. To mt n Standard EXE.
2. Dng menu Project thm mt m-dun lp vo n. t tn m-dun lp
l CCustData.
3. Dng ca s Properties i thuc DataSourceBehavior thnh 1vbDataSource.
4. Dng menu Project, References thit lp mt tham chiu n Microsoft
ActiveX Data Objects.
5. Trong phn khai bo ca lp, to mt i tng Recordset (private). i
tng ny s x l truy cp c s d liu.
Private mrsCustomer As ADODB.Recordset
6. Trong s kin Initialize ca lp, vit chng trnh to i tng
Recordset:
Set mrsCustomer = New ADODB.Recordset
mrsCustomer.Source = "select * from tblCustomer"
mrsCustomer.CursorType = adOpenKeyset
mrsCustomer.LockType = adLockOptimistic
mrsCustomer.ActiveConnection = "DSN=JetNovelty;"
mrsCustomer.Open
7. Trong s kin Initialize ca lp, vit chng trnh ng k ngun d liu
vi tp hp DataMembers do th vin Microsoft Data Binding cung cp.
iu ny cho php phn tiu th d liu (nh l cc iu khin rng buc)
dng lp ny nh l mt ngun d liu :

FPT Software Solution

Trang:226/265

Gio trnh o to Visual Basic 6.0


8. Vit chng trnh cho s kin GetDataMember ca lp tr v mt i
tng Recordset da trn tham s DataMember ca s kin ( S kin
GetDataMember s hin din sau khi ta quy nh gi tr cho thuc tnh
DataSourceBehavior ). Bi v s kin GetDataMember c tham s ho,
ta c th kt ni ng dng vi v s cc recordset;tuy nhin, lp ny ch tr
v mt danh sch khch hng.
Lu : Tham s Data ca s kin GetDataMember l mt i tng,
khng phi mt recordset. Do , trong s kin c th truy cp i tng
khc thay v i tng Recordset ca ADO.
9. K n, vit phng thc (public) trong lp CCustData iu khin
recordset. Trong v d ny, ta to 4 phng thc di chuyn c cung cp
bi mt iu khin d liu:
Public Sub MoveFirst()
mrsCustomer.MoveFirst
End Sub
Public Sub MoveLast()
mrsCustomer.MoveLast
End Sub
Public Sub MoveNext()
mrsCustomer.MoveNext
If mrsCustomer.EOF Then
mrsCustomer.MoveLast
End If
End Sub
Public Sub MovePrevious()
mrsCustomer.MovePrevious
If mrsCustomer.BOF Then
mrsCustomer.MoveFirst
End If
End Sub
10. Dng menu Project Components, thm mt iu khin Microsoft DataGrid
Control 6.0 (OLE DB) vo n.N cho php ta hin th d liu trong mt
li (grid). To mt instance ca iu khin li trn biu mu.
11. Trn biu mu, to 4 nt lnh duyt qua d liu. t tn chng l
cmdFirst, cmdPrevious, cmdNext, cmdLast.
12. Trong s kin Load ca biu mu, khai bo mt instance ca lp ngun d
liu. Vit chng trnh cho s kin Click gi cc phng thc di
chuyn :
Private Sub Form_Load()
' Create the data source object
Set mCustData = New CCustData
' Bind the object to grid
Set DataGrid1.DataSource = mCustData
DataGrid1.DataMember = "Customers"

FPT Software Solution

Trang:227/265

Gio trnh o to Visual Basic 6.0


End Sub
Private Sub cmdFirst_Click()
mCustData.MoveFirst
End Sub
Private Sub cmdLast_Click()
mCustData.MoveLast
End Sub
Private Sub cmdNext_Click()
mCustData.MoveNext
End Sub
Private Sub cmdPrevious_Click()
mCustData.MovePrevious
End Sub
13. Thi hnh ng dng.

16.3.1To lp xut d liu


C nhiu kh nng ta vit mt th tc ly mt bng c s d liu v chuyn
i n thnh tp tin vn bn c phn cch, sau ta s s dng li th tc ny
nhiu ln.
Phn ny xy dng trn hm xut HTML m t trong chng 14 Thit lp bo
co v xut thng tin cung cp vic xut d liu ta s dng lp
CCustomer
cung cp cho lp CCustomer kh nng xut, ta thm mt thuc tnh v mt
phng thc cho lp. Thuc tnh mi, HTMLText, ly thuc tnh ca i tng
CCustomer v nh dng n thnh mt trang HTML. Th tc thuc tnh ny gi
mt hm (private), HTMLRow nh dng tng dng ca bng.
Public Property Get HTMLText() As String
Dim str As String
str = "<html>" & vbCrLf
str = str & "<head>" & vbCrLf
str = str & "<title>" & "Customer: " & _
FirstName & " " & _
LastName & _
"</title>" & vbCrLf
str = str & "<body bgcolor=#ffffff>" & vbCrLf
str = str & "<font face=Arial,Helvetica>" & vbCrLf
str = str & "<table border>" & vbCrLf
str = str & HTMLTableRow("First name:", FirstName)
str = str & HTMLTableRow("Last name:", LastName)
str = str & HTMLTableRow("Address:", Address)
str = str & HTMLTableRow("City:", City)
str = str & HTMLTableRow("State:", State)
str = str & "</table>"
str = str & "</font>" & vbCrLf
str = str & "</body>" & vbCrLf

FPT Software Solution

Trang:228/265

Gio trnh o to Visual Basic 6.0


str = str & "</html>" & vbCrLf
HTMLText = str
End Property
on chng trnh trn ch nh dng HTML m thi. Qu trnh xut gm 2
phn : th nht, nh dng d liu trong HTML, th hai, ghi n ra tp tin. Nh
vy, ta phi vit th tc ring thi hnh tng tc v.
Phng thc SaveHTML ca i tng Customer lu d liu HTML c
nh dng thnh mt tp tin.
Public Sub SaveHTML(strFileName As String)
Dim fs As Scripting.FileSystemObject
Dim txt As Scripting.TextStream
Set fs = New Scripting.FileSystemObject
Set txt = fs.OpenTextFile(strFileName, ForWriting, True)
txt.Write HTMLText
txt.Close
Set txt = Nothing
Set fs = Nothing
End Sub
a cc th tc ny thnh mt phn ca lp CCustomer, to mt ng dng cho
php ngi s dng cung cp ID ca khch hng v tn tp tin xut. Khi ngi s
dng nhn mt nt lnh, khch hng c chn s c xut vo tp tin HTML
ch ra bi ngi s dng.
Option Explicit
Private Cust As CCustomer
Private Sub Form_Load()
Set Cust = New CCustomer
End Sub
Private Sub cmdExport_Click()
Cust.GetData txtID.Text
Cust.SaveHTML App.Path & "\" & txtFilename.Text
MsgBox "File saved.", vbInformation
End Sub
Tp tin HTML c to bi phng thc xut :

FPT Software Solution

Trang:229/265

Gio trnh o to Visual Basic 6.0

Hnh 16.6 D liu c xut di dng HTML v trnh by trong trnh duyt
IE

16.3.2Trin khai lp thnh Active Server


Ta c th dng Visual Basic bin dch cc n da trn lp thnh cc thnh
phn ActiveX. Cc thnh phn ny, di dng cc DLL hay EXE, cung cp cc
chc nng ca i tng m khng cn phn pht hay sao chp m ngun ca lp.
N tin dng khi ta dng li chng trnh trong nhiu n cng nh vi nhiu
lp trnh vin. To thnh phn ActiveX t lp cng cho ta kh nng phn pht i
tng t xa, nh trong chng 15.
to n ca thnh phn ActiveX trong Visual Basic, ta bt u to mt
n mi. Khi Visual Basic yu cu ta cung cp kiu sn, chn ActiveX DLL
hay ActiveX EXE. Mt n mi c to vi mt m-dun lp duy nht. Sau ,
ta c th thm cc lp khc lp trnh. Bc cui cng l bin dch ton b thnh
ActiveX DLL hay ActiveX EXE.
Bin dch n ActiveX tng t bin dch vi n thng thng. im khc
bit l vic s dng ActiveX DLL v ActiveX EXE c thit k dng vi cc
ng dng khc.
16.3.2.1

S dng thnh phn ActiveX trong mt n thng

thng STANDARD EXE


Sau khi bin dch thnh phn ActiveX, ta c th lp mt tham chiu n n t
trong cc n khc ca Visual Basic. Khi ta thc hin iu ny, ngha l ta c th
dng lp cha trong thnh phn ActiveX to i tng trong n. iu ny
cho php ta tn dng tnh nng ca thnh phn ActiveX mt cch n gin, nht
qun, khng bn tm n chng trnh bn trong ca thnh phn.
thc hin tham chiu ActiveX Server dng menu Project References.

16.3.2.1.1

Bin dch ActiveX Server

FPT Software Solution

Trang:230/265

Gio trnh o to Visual Basic 6.0


1. To mt n Visual Basic mi. Khi Visual Basic yu cu ta cung cp kiu
n cn to, chn ActiveX DLL.
2. Trong ca s Properties, sa thuc tnh Name ca n ActiveX DLL thnh
CustSrv.
3. Visual Basic thm mt lp rng, gi l Class1, vo n ActiveX DLL mt
cch mc nh. Nhn nt phi chut ln lp, chn Remove Class1 t menu
bt ra loi b lp ny.
4. Bi v ta sp thm vo n mt lp s dng ADO, ta dng menu Project
Refenrences lp mt tham chiu n Microsoft ActiveX Data Objects
2.0. Nu mun dng phin bn ca CCustomer xy dng trong phn xut ra
HTML trc y, lp mt tham chiu n Microsoft Scripting Library.
5. K n, thm lp c to trc vo n ActiveX DLL. thc hin
iu ny, nhn nt phi chut ln n CustSrv, chn Add t menu bt ra.
Chn Class Module.
6. Hp thoi Add Class Module xut hin. Chn tab Existing. Chn lp
CCustomer.
7. Trong thuc tnh ca lp CCustomer, i thuc tnh Instancing thnh
5_Multiuse.
8. Nu cn, thm trnh thit k DataEnviroment ta to trc vo n.
Thc hin bng cch chn menu Project, Add File,ri chn tp tin
deNovelty.Dsr t hp thoi tp tin.
9. Bin dch n bng cch chn menu File, Make CustSrv.dll.
10. Hp thoi Make Project xut hin. Chn th mc lu DLL v nhn OK.
ActiveX DLL c bin dch l CustSrv.dll ta c th s dng n trong bt k
n no.

16.3.2.1.2

S dng ActiveX Server

1. To mt n mi kiu Standard EXE.


2. Tm v lp tham chiu n CustSrv trong menu Project References.

FPT Software Solution

Trang:231/265

Gio trnh o to Visual Basic 6.0


Hnh 16.7 Thm mt tham chiu n mt ActiveX Server c to ra t n
kiu Standard EXE.
3. Trong biu mu, a vo on chng trnh to instance ca i tng t
ActiveX server v tr v thng tin t c s d liu di dng mt i
tng.
Option Explicit
' References CustSvr
Private Cust As CCustomer
Private Sub Form_Load()
Set Cust = New CCustomer
End Sub
Private Sub cmdGetCust_Click()
Cust.GetData txtID.Text
MsgBox Cust.FirstName & " " & _
Cust.LastName & " " & _
Cust.Address & " " & _
Cust.City & " " & _
Cust.State
End Sub
4. Thi hnh ng dng. N s hin th d liu t c s d liu khi ta nhp mt
s hp l trong hp vn bn v nhn nt lnh.
i vi mt ng dng c lp th ng dng ny c li ch khng r rt nu ta
dng trong ng dng phn tn th n c li ch ng k.
c th trin khai t xa qua mng c th dng Microsoft Transaction Server.
16.3.2.2

ng k thnh phn trong ActivateX trn my ngi s

dng
Thnh phn ActiveX cn c ng k trn my tnh s dng li trn my
. Vic ng k bo m rng h iu hnh s nhn ra s tn ti ca thnh phn
mi khi ng dng to i tng t .
Khi ta lm vic vi ActiveX server trn mt my tnh dng vo vic pht trin
phn mm, vic ng k khng l vn . Bi v thnh phn c t ng ng k
vi Visual Basic ngay lc chng c bin dch. Tuy nhin khi ta phn pht thnh
phn n ngi s dng, ta phi bo m rng thnh phn ActiveX c ng k
trn my ngi s dng. C mt s phng php thc hin iu ny.
S dng Trnh ng gi v trin khai ng dng (Package and Deployment
Wizard) phn pht ngi s dng.
S dng bng phng php th cng dng tin ch Regsrv32. EXE.
16.3.2.3

Chuyn i n Standard EXE thnh n ActivateX

Ta c th chuyn i n Standard EXE thnh n ActiveX khi ta d nh


dng li mt n c sn v bin n thnh thnh phn ActiveX c lp.

FPT Software Solution

Trang:232/265

Gio trnh o to Visual Basic 6.0


Ngoi ra, ta c th chuyn i gia 2 kiu thnh phn ActiveX : ActiveX DLL v
ActiveX EXE) bng cch i thuc tnh ca n :
1. Trong Visual Basic, m n ta d nh chuyn i.
2. Chn menu Project Properties.
3. Chn kiu n :

Hnh 16.8 Dng hp thoi Project Properties chuyn i mt n


Standard EXE thnh mt n ActiveX.
16.3.2.4

S dng thnh phn ActiveX t xa

Kh nng bin dch b cc lp c lp thnh cc thnh phn ActiveX l phn


quan trng ca truy cp c s d liu t xa. Trong mi trng Client / Server, ta c
th dng ActiveX Server x l tng tc gia ng dng Client v cc Server c
s d liu.
16.3.2.5

To thnh phn a lung

Visual Basic c kh nng to thnh phn ActiveX a lung (multi-thread). Vi


a lung, thnh phn thi hnh theo cch p ng hn. Bi v h iu hnh c th
cp pht ti nguyn b x l cho nhiu lung; nu thnh phn thi hnh vi nhiu
lung, chc nng ca thnh phn c chia thnh nhiu khi cho nhiu lung (mt
s lung c th c gn nhng mc u tin cao bi h iu hnh ). Ta c th
xem lung nh n v iu khin nh nht ca h iu hnh c kh nng lp lch
biu thi hnh.
Ngoi ra, trn nhng my c nhiu b vi x l, h iu hnh c kh nng gn
nhng lung nht nh thi hnh trn nhng b vi x l ring. Cho thnh phn
kh nng a lung l gii php tn dng ti a nng lc my tnh vi nhiu b vi
x l.

FPT Software Solution

Trang:233/265

Gio trnh o to Visual Basic 6.0


Thm h tr a lung trong thnh phn ch i hi ta i thuc tnh n vo
lc bin dch. Khng c thay i no khc trong chng trnh.
1. Trong Visual Basic, m n ca thnh phn (ActiveX EXE, ActiveX DLL,
iu khin ActiveX).
2. T menu Project,chn Properties
3. Chn Apartment Threaded trong bng Threading Model.
4. Nhn OK. Khi n c bin dch, n s c h tr a lung.
Ta c thm kh nng b sung cho ActiveX EXE l : Thread per Object hay
Thread Pool. Thread per Object c ngha l ActiveX EXE s sinh ra mt lung cho
mi i tng c to. iu ny cung cp kh nng hot ng tt nht, nhng
c th tiu tn nhiu ti nguyn my tnh.
ThreadPool, tri li, cho php ta kim sot c bao nhiu lung m thnh phn
ActiveX c th to cng mt lc, cho php ta hn ch ti nguyn tiu tn bi thnh
phn. Tuy nhin, nu s i tng yu cu vt qu s lung trong Thread pool
ca Server ca thnh phn, nhng yu cu n sau trn i tng ca Server s b
ngn li cho n khi qu trnh ca Client gii phng mt lung.
16.3.2.6

Cc hn ch ca thnh phn a lung

Ngn ng hn ch h tr a lung: y l chuyn i bin dch. Ta khng


th vit chng trnh lm g vi n c.
Khng c trnh g ri h tr a lung.
Khng c h tr a lung trong ng dng MDI
Khng h tr cho cc iu khin ActiveX n lung trong ng dng a
lung : im hn ch ny b p t bi Visual Basic do vn ln kh
nng hot ng sinh ra bi t hp ca mt iu khin n lung trong mt
ni cha a lung. iu ny c ngha l nu ta to mt iu khin ActiveX
a lung s dng cc iu khin n lung khc n s khng hot ng.
Tuy nhin phn ln cc iu khin trong Visual Basic l a lung.
Cc thuc tnh v phng thc c khai bo l Friend khng th gi qua
lung. goi thuc tnh v phng thc c bit gi qua Public.

16.4 Tng kt
Lp v i tng th hin lnh vc mi ca lp trnh Visual Basic.
Chng ny cung cp nhng thng tin bin cc k thut hng i tng
m rng thnh nhng hnh ng, khng ch l tn dng nhng k thut cao cp
nh a lung v thnh phn, m cn to s n gin v n nh theo thi gian.
7.HI V P
Hi: Lp v i tng c v phi x l phc tp. Mt iu ti thc mc l
Bn c th to nhng ng dng n gin hn bng cch vit thm chng trnh
v thm m-dun nhiu hn. Ti c ngh sai khng ?
p: Bn c phn ng l khi xy dng mt ng dng vi lp v i tng
th s tn nhiu thi gian cho thit k v xy dng ln u. Lu rng mt trong
nhng mc tiu ca lp trnh hng i tng l tnh nng s dng li. N s tit
kim cho bn rt nhiu thi gian v sc lc sau ny.
Hn na, n cn gip bn d bo tr, d g ri.

FPT Software Solution

Trang:234/265

Gio trnh o to Visual Basic 6.0

17 Truy cp d liu t xa

Client / Server v cc thnh phn


Cu trc Client / Server Three-Tier
Dng ActiveX truy cp c s d liu
Chuyn i d liu vi bn sao c s d liu

17.1 Client / Server v cc thnh phn


Thut ng thnh phn tng trung gian (middle-tier) thay i t khi k thut
ny c gii thiu ln u tin. V d, ta to mt iu khin ActiveX nhng
trong mt ng dng Client ni chuyn vi mt thnh phn ActiveX Server cng
cha trn Client. Sau , thnh phn ActiveX Server s ni chuyn vi ActiveX
Server cha trn my thuc tng trung gian, n lt tng trung gian s ni chuyn
vi Server c s d liu cha trn WinNT Server.
Ta lt qua mt s khi nim c bn :
ActiveX : l khi nim gn lin vi cc i tng trong chng trnh dng
giao tip vi nhau. N khng phi l mt sn phm, cng khng l mt k
thut.
iu khin ActiveX : l mt thnh phn thng c giao din(nhng khng
phi cc thnh phn u c). Thnh phn li c s d liu (DBGrid)
c cung cp bi Visual Basic l mt thnh phn ActiveX.
ActiveX Server: cn gi l thnh phn m ho ActiveX. Trong Visual Basic
4.0 n gi l OLE Server. ActiveX Server l mt thnh phn a ra mt hay
nhiu lp cha trong mt khi c bin dch. ng dng s dng cc
i tng c sinh ra t cc lp cha trong thnh phn ActiveX. Ta c th
truy cp khi bin dch ny thng qua k thut DCOM (M hnh i tng
thnh phn phn tn Distributed Component Object Model ).
Chng ny tp trung v vn s dng ActiveX Server trn mng sao cho cc
my Client c th to instance t mng.

17.1.1Cu trc Cilent/Server Three- Tier


Nhng nguyn tc m ngi lp trnh Client / Server phi tun th :
Duy tr m h thng n nh p ng vi cc quy lut kinh doanh
thng xuyn thay i.
Cung cp im khi u n gin v nht qun cho d liu, trong khi cng
lc bo v c s d liu khi cc ng dng Client, v tri li, bo v cc
ng dng Client khi tnh phc tp v bt thng ca Server.
tng xy dng cc quy lut kinh doanh trong ngn ng lp trnh bt k,
khng ch vi SQL.
tng trin khai cc quy lut kinh doanh trn mt my tnh khng phi l
Server c s d liu, bo ton nng lc x l ca Server c s d liu.
tng trin khai cc quy lut kinh doanh vo Client gim thiu lu
thng trn mng.

FPT Software Solution

Trang:235/265

Gio trnh o to Visual Basic 6.0

Trin khai cc quy lut kinh doanh ti mt im n gin trong h thng


( tri vi ngha trin khai ton b trn mi my Client mi ln c thay
i ).
Cu trc Client / Server gii quyt vn ny. Trong mt cu trc 3 tng
(three-tier), cc quy lut kinh doanh c ng gi trong mt thnh phn tng trung
gian gia ng dng Client v Server c s d liu.
17.1.1.1

THIT LP MT CU TRC PHN CNG CHO DCOM

C nhiu phng php thc hin cu trc phn cng Client / Server. Chng
ny ch a ra cch n gin nht cung cp cho bn gii php trong trng hp
thng gp nht.
Gi s rng c 2 my, trong mt my l WinNT Server chy Microsoft SQL
Server. y l Server. My Client l Win95, hoc Win98, hoc WinNT.
C th bn khng c sn cc phn mm v phn cng m t nh trn. Nu
khng c 2 my ni mng, bn vn c th thc hin trn cng mt my. Nu bn
khng c my WinNT, bn nn gi lp n bng cch dng c s d liu ca
Microsoft Jet. Ton b v d trong chng ny c vit bng ADO ph hp
vi iu ny.
Nu khng c WinNT Server, ta c th thit lp DCOM cho Win95. Tp tin
thc hin DCOM trn Win95 cha trn a mt ca bn Visual Basic Enterprise,
trong th mc \Tools\DCOM98. Mun xem chi tit, cng nh ti xung cc tp tin
DCOM, ta tm trong trang web http:// www.microsoft.com /com /dcom/dcom1_2
/
dcom1_2. asp
V d ngi s dng trn mng mun truy cp d liu khch hng. gi
c tnh nht qun, kh nng dng li, d lp trnh v bo tr, bn nn truy cp
n c s d liu thng qua thnh phn ActiveX. Thnh phn ny c bin dch
v thit lp trn mng sao cho ng dng Client c th truy cp n t xa.
Hnh sau y l s ca cu trc 3 tng tng qut. N kt hp cu trc vt l
(2 my tnh ) v cu trc logic ( tng tng cung cp cc chc nng khc nhau).

M y
Client

ThnhphnA ctiveX
Truycncsdliu
Cungcpccit ngchoClient

CSD L

M yServer

Hnh 17.1 Lc ca mt cu trc 3 tng tng qut ho trn cu trc vt l


(2 my tnh) vi cu trc logic ( mi tng c 1 tnh nng khc nhau ).
Ta c th chia thnh phn tng trung gian qua nhiu my. V vy, cu trc
Client / Server 3 tng khi tr thnh cu trc n tng.

FPT Software Solution

Trang:236/265

Gio trnh o to Visual Basic 6.0

M y
Client

ThnhphnA ctiveX
Truycncsdliu
Cungcpccit ngchoClient

M ytnhtrunggian

CSD L

M yServer

Hnh 17.2 y l v d v cu trc Client / Server n tng trnh by tng trung


gian th hin trn mt my.
Ta trin khai cc thnh phn tng trung gian trn mt my theo nhng tnh
hung sau:
Server c s d liu chy trn h iu hnh khng h tr ActiveX.
Ta mun gi gn nng lc ca Server c s d liu.
Ta mun m rng kh nng ng dng bng cch trin khai nhiu bn sao
ca cng mt ActiveX Server n nhiu hn mt my.
Bt li ca vic cung cp cho thnh phn ActiveX mt my tnh ring l cu
hnh ny i hi thm mt bc chuyn qua mng t Client n Client v ngc
li. iu ny c th khin gim kh nng hot ng v tng lu lng trn mng.
Trng hp ny c c chp nhn hay khng tu thuc chc nng nh cu hnh
mng v cc prototype ta lm trong giai on thit k ca n.
Thm ch khi ta khng c iu khin trn h iu hnh trn c s d liu thi
hnh, ta vn c th s dng tng trung gian - nu ta trin khai n n mt my
ring. Tng c s d liu l mt khi UNIX hay b mainframe ca cng ty. ng
dng Client dng k thut DCOM v 2 l do :
1. ng dng Client khng bao gi truy cp n Server c s d liu, thay vo
, chng truy cp d liu thng qua thnh phn ActiveX.
2. y l l do quan trng nht, DCOM che chn cho ng dng khi cc phn
rc ri ca giao thc qua mng, cc phn mm nn ( platform), v bin ca
my tnh.
Trin khai mt h thng Client / Server trong , Server c s d liu khng
phi Windows th d hn trong th gii 3 tng, bi v, ta khng cn phi nh cu
hnh cho middleware (phn mm tng gia- tp hp cc chng trnh iu khin
chuyn x l vic giao tip qua nhiu platform v cc giao thc mng) trn tng
my Client. Vi kiu 3 tng, ta ch phi nh cu hnh chng trnh ny mt ln
trong phn cu trc gia tng gia v Server c s d liu. Nh , c th tit
kim thi gian v s st khi ta nh cu hnh v trin khai ng dng n nhiu
Client.
17.1.1.2

DNG DCOM TRN NHNG PLATFORM KHC

DCOM c th lm vic trn nhng mi trng khc Windows. Microsoft c


quan h vi cc nh cung cp h iu hnh khc nh h lm cho DCOM xut
hin trn platform.

FPT Software Solution

Trang:237/265

Gio trnh o to Visual Basic 6.0


COM v DCOM bt u xut hin trn UNIX. ActiveX SDK ( Cng c pht
trin phn mm Software Development Kit ) trn Macintosh c vo cui nm
1996; c th n lc ny, s dng ActiveX trn Macintosh l hin thc.
TO NG DNG DCOM U TIN

17.1.1.3

Xem li v d ca chng 16 n CustSrv. y l thnh phn ActiveX c mt


lp l CCustomer, dng truy vn c s d liu v tr v mt i tng
Customer.
Phin bn ca n CustSrv2, loi b h tr cho phng thc HTMLSave
(khng ph hp cho mt thnh phn trin khai xa ) v h tr thm thuc tnh
GetList. GetList hin th danh sch tm tt cc khch hng da trn tiu bang m h
sinh sng. N dng OLE DB t Trnh cung cp Jet cc b (native Jet Provider).
Nh , cho php d dng thao tc qua mng. (ODBC DSN c yu cu bi thnh
phn Jet Novelty ).

17.1.1.3.1

ActiveX EXE

ng dng cc ActiveX EXE trin khai t xa. V tnh nng ca MTS p ng rt


tt vn trin khai t xa.

17.1.1.3.2

TRIN KHAI ActiveX DLL T XA DNG MTS (MICROSOFT

TRANSACTION SERVER )
Trin khai mt thnh phn dng MTS l cch d nht to mt ng dng
phn tn.
MTS chy trn WinNT, Win95 v Win98; nhng hiu qu nht l WinNT.
MTS c trong b WinNT 5.0. Vi NT 4.0 (l mi trng chng ta ang ni
chuyn), ta phi ci t phin bn mi nht ca MTS dng Windows Option Pack,
km theo a CD ca Visual Basic. N nm trong a 2 ca bn Enterprise, th mc
\NToptpak. Hoc l ta c th ti xung Windows Option Pack t web site ti http://
www.microsoft.com/windows/dowloads/contents/Updates/NT40ptPK. Lu rng
Option Pack c p dng cho Win95, Win98 khi ci NT Option Pack trn my
khng phi NT, ta c Personal Web Server i vi Win95 v mt phin bn hn
ch ca MTS.
Phn ny lm vic vi MTS 2.0. Chng ny ch ni v s dng MTS vi vai
tr l mt trung gian yu cu i tng v theo di cc thnh phn phn tn t xa.
Ta khng tm hiu cc tnh nng khc ca MTS nh l cho php transaction gia cc
thnh phn, hay l m hnh bo mt ca MTS.
Mun
nghin
cu
thm
MTS
vo
http://
www.microsoft.com/ntServer/basics/appservices/transsvcs/
Trin khai mt thnh phn t xa di MTS c 3 bc:
1. To gi MTS cha thnh phn.
2. t thnh phn vo gi.
3. Export gi ra t MTS v ci t vo my Client.
To gi MTS

FPT Software Solution

Trang:238/265

Gio trnh o to Visual Basic 6.0


Gi MTS l mt ni cha logic cho mt hay nhiu m-dun lp cha trong
ActiveX DLL. Vic to gi cung cp kh nng qun l mi lp cha trong gi,
thm ch cc lp ca cc thnh phn khc.
1. Phng MTS t menu Start ca Windows (N tn ti trong cc nhm lp trnh
khc nhau tu theo phin bn v cch ci t).
2. MTS xut hin trong ca s Microsoft Management Console:
MMC cung cp kh nng m rng thng qua snap-in. Snap-in l mt thnh
phn phn mm hot ng nh mt phn ni gia MMC v cng c ca Server.
Snap-in c ng gi nh mt ActiveX DLL, nhng ta cha th xy dng snap-in
trong Visual Basic. V vy, nu bn c mt cng c phn mm m bn mun qun
l trong MMC, bn phi ch n khi n h tr Visual Basic hoc l bn vit snapin trong Visual C++.
3. Trong phn ca s bn tri, m mc Microsoft Transaction Server, sau
m Computers, ri My Computer. Ta s thy mc Packages Installed.
4. Nhn vo mc ny, Ta s thy mt s gi c sn (mc d cc gi ny c
th thay i tu vo h thng ).
5. Nhn nt phi chut trn th mc Packages Installed. T menu bt ra, chn
New, Package.
6. Trnh t ng Package Wizard xut hin. Chn Create an empty package.
t tn n l Novelty.
7. Mn hnh Set Package Identify xut hin. Bi v ta khng dng bo mt vi
thnh phn ny, hy n quy nh l Interactive user, ri nhn Finish.
8. Ta s thy gi mi trong th mc Package Installed.
Mc d ta to xong gi, nhng n cha lm g c, bi v ta cha thm thnh
phn cho n.
a thnh phn vo gi
Cng vic rt n gin ch cn ko r ActiveX DLL vo gi to sn.
1. Trong MTS, m mc Novelty di mc Packages Installed.
2. Ta s thy 2 mc : Components v Roles. Nhn vo mc Components. Mc
ny rng v ta cha thm thnh phn vo.
3. Sp xp cc ca s mn hnh sao cho Windows Explorer m st bn ca s
MTS.
4. Chn v ko r tp tin ActiveX DLL t ca s Windows Explorer vo phn
bn phi ca ca s MTS. Cc lp c cung cp bi thnh phn c
thm vo gi MTS.
Mt biu tng qu bng mu xanh l cy v en hin th trong mc
Components cho bit thnh phn c ci t v n ang phc v yu cu. Ta
c th kim tra bng cch :
1. To mt ng dng Visual Basic kiu Standard EXE.
2. Dng menu Project References, cho mt tham chiu n thnh phn CustSrv
m ta va t trong MTS. (Tn th vin l CustSvr2)
3. Nhp on chng trnh sau y:
Private mCust As CCustomer
Private Sub Form_Load()
Set mCust = New CCustomer
End Sub

FPT Software Solution

Trang:239/265

Gio trnh o to Visual Basic 6.0

Private Sub Form_Unload(Cancel As Integer)


Set mCust = Nothing
End Sub
ng dng ny khng lm g vi thnh phn c, n ch gi mt instance ca
i tng c m ta c th xem xt cch MTS phc v cc yu cu.
4. Thi hnh ng dng. Nu ta sp xp 2 ca s ca ng dng v ca s ca
MTS st cnh nhau, ta s thy qu bng ang quay, th hin n ang phc
v cc yu cu ca ng dng.
5. ng ng dng, qu bng ngng quay n khng phc v na.
Trong khi qu bng ang quay, ta c th nhn nt phi chut ln biu tng
gi, khm ph ca s Properties ca n. Trong ca s ny, chn tab Advanced,
MTS cho php ta quy nh MTS s gi thnh phn np vo b nh trong bao nhiu
pht sau ln truy cp u tin. Gi tr ny c th l 0, ngha l thnh phn b xo
khi b nh ngay khi ng dng nh n ra. Nu gi tr ny l 1440 pht, thnh phn
c cache vo b nh trong 24 gi sau khi Client truy cp ln cui cng. Nu
mun np thnh phn vo b nh bt chp Client c dng n hay khng, chn tu
chn Leave running when idle. N s tng kh nng hot ng v tiu tn vng
b nh trn pha Server.
Export v ci t gi MTS trn my Client
cho php ng dng Client truy cp thnh phn chy di MTS, ta phi
ng k vo Registry ca my Client bo vi n rng thnh phn ang chy t
xa.
Client nhn ra thnh MTS phn pht t xa, ta lm nh sau :
Export gi : To mt tp tin cho php ci t. Tp tin ny thi hnh mi hot
ng cn thit Client nhn ra thnh phn trin khai t xa.
Ci t gi ln my Client.
xem v d ta lm nh sau:
1. Trong ca s MTS, nhn nt phi chut ln gi Novelty. T menu bt ra,
chn Export.
2. Hp thoi Export Package xut hin. Dng nt Browse chn mt th
mc rng export gi. Cho vo tp tin Novelty, nhn Save.
3. Tr v hp thoi Export Package. Nhn Export. Sau mt lc, thng bo
The package was successfully exported xut hin.
Th mc dng export gi gi y cha cc tp tin bao gm:
Mt tp tin gi l Novelty.PAK
Bn sao ca ActiveX DLL, CustSvr2.dll
Mt th mc gi l Clients. Th mc ny cha mt tp tin EXE gi l
Novelty. exe
Tp tin Novelty.PAK v CustSvr2.DLL c dng to bn sao cho b ci
t ca gi Novelty vo my MTS. Tp tin Novelty.exe chy trn my Client
chuyn yu cu ca i tng cha trong CustSvr2.dll vo my MTS. Mi ln
chy Novelty.exe trn my Client, ng dng tham chiu n thnh phn CustSvr2
s truy cp n qua mng thay v truy cp ni b.
xo mt thnh phn khi MTS, ch cn nhn nt phi chut ln n v v
chn Delete trong menu bt ra. Thc cht, hnh ng ny khng xa Active DLL
FPT Software Solution

Trang:240/265

Gio trnh o to Visual Basic 6.0


khi h thng; n ch b nhng g ng k. ng dng s khng th dng thnh
phn cho n khi n c ng k li.

17.1.1.3.3

3. DNG ActiveX TO THUN LI CHO VIC TRUY

CP C S D LIU
Trong chng trc, bn bit cch truy cp c s d liu dng i tng
v cc lp. K thut ny cho php ng gi logic chng trnh trong m-dun lp
c th dng li d dng. Kh nng bin dch m-dun lp mt cch c lp thnh
mt ActiveX DLL hay ActiveX EXE lm cho lp d dng hn, cho php to ra cc
ng dng truy cp c s d liu cc k linh hot v mnh m.
K thut ny cng c dng khi cn ti u ho tc ca ng dng Client.
Tc hot ng bt ngun t vic ng dng Client khng phi np mt b my
c s d liu (database engine), hoc nhng tng trung gian khc khi chng khi
ng. Nu ta dng ADO hay ODBC, ta s c cng thun li, v ta khng phi phn
pht cc th vin ny hoc nh li cu hnh trn my Client. N tit kim ng k
b nh v ng dng chy nhanh hn nhiu.
Mt thun li khc ca k thut ny l cc phn lin quan c phn pht cng
vi ng dng cng gim nh, v ta khng phi np cc th vin ca b my c s
d liu Jet vo tng my Client.
Thm vo , bng cch truyn mng thay v i tng qua mng, ng dng
khng phi duy tr mt kt ni thng xuyn n Server. Bi khi truyn i tng
qua mng, n tn ti trn Server. Tuy nhin, khi truyn mt khi d liu chng
hn nh mt mng qua mng, d liu khng tn ti trn Server. N hon ton
c truyn n Client, ngha l Client khng cn ni n Server lm vic vi
d liu. Nh vy, ng dng c th phc v nhiu ngi cng mt lc, v chng
hn nh thay v c 50 ngi s dng ni n Server m khng lm g, ta c 500
ngi s dng ch ni n Server khong 10% thi gian.
17.1.1.3.3.1 S DNG GETROWS TR V D LIU MNG

C th dng phng thc GetRows ca i tng Recordset tr v d liu


t ActiveX Server n ng dng Client di dng mng 2 chiu cha cc gi tr
kiu Variant. K thut ny c a thch v ta khng phi trin khai cc th vin
b my c s d liu cng nh nh cu hnh cho c s d liu pha Client. Client
ch bit n cc mng cung cp bi ActiveX Server ang c trin khai qua
mng.
1. To mt i tng Recordset (thng l kt qu ca mt yu cu t Client
n thnh phn ActiveX trin khai t xa ).
2. Nu ang dng DAO, ta phi xc nh s dng trong i tng recordset.
Trong ADO, GetRows t ng quyt nh kch c ca recordset.
3. Khai bo bin Variant cha mng.
4. Thi hnh phng thc GetRows ca i tng Recordset gn d liu
trong Recordset vo bin Variant.
5. Thi hnh chng trnh chuyn i d liu t mng Variant thnh nhng
g ng dng cn.
V d sau tr v mt mng Variant sau khi gi c s d liu. Phng thc
ny, cha mt m-dun lp gi l CCusData, c thit k sinh ra mt hp danh
sch vi cc thng tin khch hng.

FPT Software Solution

Trang:241/265

Gio trnh o to Visual Basic 6.0


Option Explicit
' References DAO 3.51
' Private variables
Private db As Database
Private rs As Recordset
'
Public Function GetList(strState As String) As Variant
' Retrieves a list of employees and
' places it into a variant array
' using GetRows.
Dim strSQL As String
Set db = OpenDatabase("..\..\DB\novelty.mdb")
strSQL = "SELECT ID, FirstName, LastName " & _
"FROM tblCustomer " & _
"WHERE State = '" & strState & "' " & _
"ORDER BY LastName, FirstName"
Set rs = db.OpenRecordset(strSQL)
' RecordCount isn't valid until
' you move to the end of the recordset
rs.MoveLast
rs.MoveFirst
GetList = rs.GetRows(rs.RecordCount)
End Function
X l mt lp x l mng trong ng dng Client.
Option Explicit
' References CustSrvA.
Private mCustData As CCustData
Const FIRSTNAME = 1
Const LASTNAME = 2
Private Sub Form_Load()
Set mCustData = New CCustData
With cboState
.AddItem "CA"
.AddItem "WA"
.AddItem "NV"
End With
End Sub

FPT Software Solution

Trang:242/265

Gio trnh o to Visual Basic 6.0


Private Sub cboState_Click()
Dim vData As Variant
Dim x As Long
vData = mCustData.GetList(cboState.Text)
lstCustomer.Clear
For x = 0 To UBound(vData, 2)
lstCustomer.AddItem vData(FIRSTNAME, x) & _
" " & vData(LASTNAME, x)
Next x
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set mCustData = Nothing
End Sub
Bt li ca k thut ny l ta phi vit kh nhiu chng trnh x l mng
Variant tr v t thnh phn ActiveX trn pha Client. Mt gii php cho vn
ny l vit mt thnh phn ActiveX pha Client x l vi mng.
thm mt phng thc tr v d liu cho mt khch hng dng mng
Variant, ta dng phng thc GetData:
Public Function GetData(lngID As Long) As Variant
Dim strSQL As String
strSQL = "SELECT * FROM tblCustomer " & _
"WHERE ID= " & lgnID
Set rs = db.OpenRecordset(strSQL)
GetData = rs.GetRows
rs.Close
Set rs = Nothing
End Function
17.1.1.3.3.2 TO MT LP GII M MNG VARIANT

Khi tr v mng Variant ta s gp mt kh khn. Lm sao xc nh ct no ca


mng ng dng vi trng no trong c s d liu ? Quan trng hn, lm sao p
dng k thut OOP c th dng li sau ny ?
Mt gii php l trin khai mt thnh phn ActiveX th hai, ln ny trn Client,
gii m mng Variant c phc v bi tng trung gian. Thnh phn ny s
lm 2 vic : gi CCustData v tr v i tng cu to t nhng d liu trong
mng Variant c truyn v t tng trung gian.
CCustData thc hin nh mt phn ng dng Client. N khng tham chiu n
bt k c s d liu no v tn ti c lp nhm tr v mng Variant t
CCustData v gn cho cc thuc tnh ca i tng Customer.
u im ca k thut ny l ng dng Client x l ring vi i tng
Customer. Khng c truy cp c s d liu trc tip trn Client, lp trnh vin pha
Client khng cn bn tm loi c s d liu.
Sau khi c lp CCustData thi hnh truy cp d liu v lp CCustomer chuyn
i mng d liu thnh i tng, ta vit chng trnh tr v i tng
FPT Software Solution

Trang:243/265

Gio trnh o to Visual Basic 6.0


Customer. Khi chy chng trnh, ngi s dng chn mt Tiu bang xem xt
cc khch hng ang c ng . Khi ngi s dng chn mt khch hng, thng
tin chi tit v ngi xut hin.
Kt hp k thut ny vi k thut ActiveX / DCOM, mang li nhng im li
ng k. Bng cch bin dch lp CCustData thnh mt thnh phn ActiveX v
trin khai n trn mng, ta cho php truy cp cc quy tc kinh doanh lu tr tp
trung t mi ni trn mng. V bi v thnh phn ny truyn d liu n Client
qua DCOM trong mng, ta khng cn trin khai mt th vin truy cp d liu vo
tng my Client. n gip cho chng trnh trn Client chy nhanh hn, d nh cu
hnh v d qun l hn.
Tri li, nu khng trin khai truy cp d liu qua mng, ta s khng t c
nhng kt qu ny.

17.1.1.3.4

TRUYN D LIU VI BN SAO C S D LIU

Khi c s d liu c tp trung ha, ton b d liu cha ht vo mt ni v


cho php truy cp n n t mi ni trong mng. Tuy nhin, s rt kh khn nu ta
di chuyn hay sa i c s d liu khng nh hng n Client ang kt ni.
gii quyt vn ny, Microsoft Jet cung cp kh nng sao chp mt c s
d liu t my ny sang my khc gi l Replication. Thay v cho chp ton b c
s d liu ( ta c th thc hin bng cch n gin nht l copy tp tin c s d
liu ), k thut sao chp ny c logic khc hn. Jet s thi hnh ng b ho trn c
s d liu (synchronization)-so snh tng mu tin m bo rng chng c cng
d liu, sau , copy nhng thay i t c s d liu gc sang mt s tu cc c
s d liu bn sao.
C s d liu gc cn c xem l thit k gc, bi v n cha thit k ca
c s d liu dng lm ni cha tp trung cho cc d liu dng chung. Trong mt
h thng sao chp, nhng thay i trn thit k ca c s d liu i nh l thm
hoc xo trng, bng v cc nh ngha truy vn ch c th thc hin trong thit
k gc. Tuy nhin, khi c sa i trn i tng ca c s d liu cha trong thit
k gc, nhng thay i ny s c phn pht n cc bn sao ti thi im c s
d liu c ng b ho. y l cch duy nht sa i trn mt c s d liu
bn sao.
V d, l ngi s dng ca mt ng dng c s d liu, bn mun lm vic
nh, nhng ng dng c s d liu cha trn server ca c quan. Replication cho
php ly ra bn sao ca c s d liu bng cch np n trn my tnh xch tay
chng hn. Nh , bn c th lm vic nh. Bn c s d liu cha trong my
tnh xch tay chnh l mt bn sao c s d liu.
Khi quay li c quan, bn ng k li c s d liu. Lc , c ch replication
ca Jet so snh cc mu tin trong bn sao vi cc mu tin trong c s d liu gc.
Nu c thm mu tin mi, chng s c copy n h thng chnh; nu c sa i
trn cc mu tin, nhng sa i ny cng c cp nht vo h thng chnh.
Tng t, nu c d liu mi xut hin trong bn gc, n s c copy vo bn
sao cng lc .
Trong trng hp c s d liu qu ln, khong 200 MB chng hn, vic to
ra bn d phng cho n l iu ht sc phin phc; ta phi tn kh nhiu thi gian
cht copy d liu qua mng. Trong thi gian , nhng ngi s dng khc
cng b cm truy cp c s d liu bo m d liu khng thay i.

FPT Software Solution

Trang:244/265

Gio trnh o to Visual Basic 6.0


Replication gii quyt vn ny bng cch cho php ch copy nhng tp tin
mi hoc c sa i k t ln to bn d phng mi nht. Do , ta khng phi
to bn d phng cho ton b c s d liu.
Ta cn c th dng Replication tin hnh cp nht ng dng c s d liu.
N c dng trong trng hp mt s logic ca ng dng c nhng trong c
s d liu di dng cu truy vn. Nu cn thay i cu truy vn phn nh
mt thay i trong ng dng hoc thay i trong thc t kinh doanh, replication c
th chuyn mt cch t ng cc sa i cho cc Client c yu cu.
17.1.1.3.4.1 THIT K C S D LIU C S DNG REPLICATION

Cng nh vi nhng c s d liu nhiu ngi s dng, khi thit k c s d


liu c dng replicaton, cn phi d kin trc mi chuyn tin hnh sun s.
Mt trong nhng vn quan trng cn xem xt l kho chnh trong bng. Nht l
kho chnh l mt trng nh s t ng. Bi mc nh, trng ny bt u t 1
v tng dn ln cho tng mu tin, mi mu tin tng thm 1. V vy, nu mt ngi
s dng no a thm cc mu tin trong bn sao c s d liu, v sau ng
b ho d liu v c s d liu gc; s xy ra trng hp hai hay nhiu ngi s
dng a vo mu tin c ID l 1. trnh iu ny, ta nn thit k trng kho
chnh cho c s d liu theo mt trong nhng k thut sau :
Quy nh thuc tnh New Values ca trng AutoNumber l ngu nhin
(Random).
Quy nh thuc tnh Field Size ca trng AutoNumber l Replication ID.
Replication cn c th thm trng cho tng bng trong h thng, iu ny c
th gy ra vn nu ta vit chng trnh (hoc pht trin giao din ngi s
dng ) da trn tp hp gm mt s trng. Bi hc rt ra l ta nn to kh
nng replication cho c s d liu cng sm cng tt trong quy trnh xy dng
chng trnh, trnh rc ri k trn.
17.1.1.3.4.2 THC HIN REPLICATION VI MICROSOFT ACCESS

bt u vi h c s d liu h tr sao chp, trc ht, ta phi xc nh c


s d liu s c ng b ho nh th no v c s d liu gc s cha u.
Nhng vn c bit lin quan n cch thc nhng ngi s dng xa c
th ni mng n thit k gc ( qua mng WAN, qua mng in thoi, thm ch
qua Internet). iu quan trng l c k hoch trc trong n lc duy tr kh nng
truy cp n nhng phin bn mi nht cho hu ht ( nu khng phi tt c )
ngi s dng.
Sau khi c k hoch v cu trc ca h c s d liu h tr sao chp, ta bt tay
vo thit lp cu trc , gm cc bc sau:
1. To mt c s d liu (hoc dng c s d liu hin hnh )
2. Chn c s d liu lm Bn thit k gc.
3. To mt hay nhiu bn sao t Bn thit k gc.
Ta c th dng Microsoft Access hoc lp trnh tin hnh thit lp
replication, thng qua DAO (i tng truy cp d liu Data Access Object ).
i.

Dng Microsoft Access to Bn thit k gc v bn sao

FPT Software Solution

Trang:245/265

Gio trnh o to Visual Basic 6.0


Trong khi ta c th tin hnh Replication dng chng trnh ca DAO,
Microsoft Access l cch d hn bt u Replication. Bi v Access c cc lnh
menu qun l vic to cc Bn thit k gc v bn sao c s d liu t ng.
to mt Bn thit k gc dng Microsoft Access, ta cn ci t tnh nng
gi l Sao chp cp ng ti liu-Briefcase Replication. y l tu chn lc ta ci
t Access; cn nu cha c sn, Access s thng bo nhng g cn lm khi ta to
Bn thit k gc, gm cc bc sau :
1. Chc chn rng cn phi to bn sao d phng (backup) c s d liu m
khng bn ci. V d, nu ta ang lm vic vi c s d liu tn l
novelty.mdb, ta c th t tn n l nmaster.mdb.
2. M c s d liu trong Microsoft Access
3. T menu Tools, chn Replication. Chn Create Replica t menu con.
4. Access pht ra mt cnh bo rng c s d liu cn c ng trc khi
to bn sao t . N hi c mun ng c s d liu v chuyn i n
thnh Bn thit k gc hay khng. Chn Yes.
5. C s d liu ng. K tip, Access cnh bo nn to mt bn sao d
phng cho c s d liu v hi c mun thc hin iu ny trc khi tin
hnh quy trnh sao chp khng. Chn Yes.
6. Access chuyn i c s d liu thnh Bn thit k gc v to mt bn sao
t , n yu cu ta t tn cho bn sao c s d liu. Nu ta ang dng c
s d liu Novelty, ta c th t tn cho bn sao l nreplica.mdb.
7. Khi vic sao chp thnh cng, Access hin th mt thng bo gii thch
nhng g thc hin.
Thm cc i tng h tr sao chp vo c s d liu trong
Microsoft Access
Ban u, khi thm mt i tng mi (nh mt bng hoc truy vn) vo c s
d liu Bn thit k gc, bi mc nh, n khng c sao chp. Trong Microsoft
Access, iu ny l hin nhin bi v cc loi i tng c s d liu khc nhau
(h tr sao chp v khng sao chp) c cc biu tng khc nhau trong ca s
Database ca Access.
Mun bin mt i tng c s d liu mi thnh i tng d liu h tr
sao chp ta lm nh sau:
1. Trong ca s Database, nhn nt phi chut trn i tng c s d liu
m ta mun thay i trng thi sao chp ca n.
2. T menu bt ra, chn Properties.
3. Hp thoi Database Object Properties xut hin.
4. Chn vo hp nh du Replicable, nhn OK. Biu tng ca i tng
c s d liu thay i phn nh trng thi mi ca n l mt i tng h
tr sao chp. Sau ny, khi tin hnh ng b ho c s d liu, i tng
c s d liu mi c copy vo bn sao c s d liu.
Vi k thut ny, ta c th thay i trng thi sao chp ca mt i tng c
s d liu bt k ti mt thi im bt k. bin i tng thnh cm sao
chp, n gin ta ch cn b chn trong hp nh du replicable trong hp thoi
Database Object Properties. Tuy nhin, lu rng, khi ta chuyn mt i tng c
s d liu c bit thnh cm sao chp, nhng i tng c copy trc vo
mt bn sao c s d liu s b xo khi tin hnh ng b ho.
ii.

17.1.1.3.4.3 Tin hnh ng b ho (Synchronization) vi Microsoft Access

FPT Software Solution

Trang:246/265

Gio trnh o to Visual Basic 6.0


Sau khi to c s d liu h tr sao chp trong Microsoft Access, ta c th
kim nghim n. Cch n gin nht l a vo mt mu tin trong Bn thit k
gc, sau ng b ho c s d liu. Khi , mu tin mi c copy vo bn sao
:
1. M c s d liu Bn thit k gc v a mt mu tin vo mt trong
nhng bng. Nu ta dng Replication ID lm kim d liu ca kho chnh,
ta nn ch rng ID s c pht sinh t ng (AutoNumber) khi nhp mu
tin.
2. ng bng. i tng c s d liu phi c ng tin hnh ng
b ho (synchronization).
3. T menu Tools ca Microsoft Access, chn Replication. Chn Synchronize
t menu con.
4. Hp thoi Synchronize Database xut hin, hin th tn ca c s d liu
bn sao.
Lu rng Synchronization Database cho php ta chn mt bn sao hin hnh
hoc chn t danh sch cc bn sao (dng danh sch th xung ca hp kt
hp). V y ta ch mi to mt bn sao, nn ta c th chp nhn tn tp tin
ngh v nhn OK.
5. Sau mt thong dng, Access thng bo rng ng b ho hon tt. n
cng hi ta mun ng hay m li c s d liu hin hnh bo m
rng tt c d liu c ng b ho u c hin th. y, bc thc
hin ny khng cn thit v khng c d liu mi c copy t bn sao vo
Bn thit k gc.
6. xc nhn rng mu tin mi c truyn t Bn thit k gc vo bn
sao, ng c s d liu Bn thit k gc v m bn sao. Ta s thy rng
d liu a vo Bn thit k gc c copy vo bn sao.
Ta c th o ngc li qu trnh vi vic thm, sa bn sao v ng b ho
li vi bn gc.
17.1.1.3.4.4 TIN HNH REPLICATION VI DAO

Trong Visual Basic, ta c th iu khin cch thc sao chp c s d liu dng
DAO (i tng truy cp d liu Data Access Objects). DAO l mt k
thut hng i tng cho php truy cp c s d liu. Khi ta dng DAO
iu khin Replication, ta s tng cng kh nng kim sot cch thc thit
lp c s d liu h tr sao chp, nh cu hnh v ng b ho bng chng
trnh. Sau y l cc i tng DAO cha nhng thuc tnh h tr Replication:
Chc
nng i tng
M t
Replication
Thuc tnh
TableDef v QueryDef Xc nh i tng c c to
KeepLocal
(cng nh cc i tng h tr sao chup hay khng
Microsoft Access khc nh
l biu mu v bo co)
Thuc tnh
i tng Database, Xc nh i tng ( v cho
Replicable
TableDef v QueryDef TableDefs, d liu m n cha)
( cng nh cc i tng c c sao chp vo lc ng
c s d liu Access nh b ho hay khng.
bo co v m-dun chng
trnh ).
Phng thc
Database
To mt bn sao t Bn thit k

FPT Software Solution

Trang:247/265

Gio trnh o to Visual Basic 6.0


MakeReplica
Phng thc
Synchronize
Thuc tnh
ReplicaFilter

Database
TableDef

Thuc tnh
PartialReplica

Relation

Thuc tnh
ReplicableBool

Database

i.

gc.
ng b ho mt bn sao c s
d liu vi Bn thit k gc.
Cho php cung cp mt mnh
WHERE trong cu SQL kim
sot cc mu tin trong bng c
sao chp ( thuc tnh ny h tr
Sao chp mt phn ).
i vi Sao chp mt phn, n
cho php ta xc nh nhng quan
h no kim sot vic sao chp
mu tin.
Tng ng vi thuc tnh
Replicable, nhng d ci hn.

Thit lp Replication vi DAO

bt u dng Replication vi lp trnh DAO, ta phi cho php c s d liu


h tr Replication. thc hin iu ny, thm mt thuc tnh ng vo i
tng Database th hin c s d liu. Khi nim thuc tnh ng ch yu
hiu cch thc hin Replication vi DAO; cc thuc tnh hiu chnh cho php m
rng m hnh i tng ca DAO.
Cc thuc tnh ng ca c s d liu Jet c gii thiu trong chng 13
i tng truy cp d liu . Dng DAO, ta c th lp trnh xc nh cc
thuc tnh ca mt i tng c s d liu c bit. V d sau y trnh by lit
k tt c cc thuc tnh ca mt bng trong Bn thit k gc.
Option Explicit
' References DAO 3.51.
Dim db As Database
Dim pr As Property
Dim td As TableDef
Public Sub ListProps()
Set db = OpenDatabase("..\..\DB\nmaster.mdb")
Set td = db.TableDefs("tblCustomer")
For Each pr In td.Properties
Debug.Print pr.Name
Next
End Sub
Bin mt c s d liu thnh c s d liu h tr sao chp bng cch to mt
thuc tnh Replicable, sau quy nh gi tr cho n l chui T. Bin mt c s
d liu thnh c s d liu h tr sao chp s chuyn i n thnh Bn thit k
gc; iu ny khc vi khi to cc i tng ring r trong c s d liu h tr
sao chp. Lm vic vi DAO khc vi khi ta lm vic vi Microsoft Access, bi v
t Access thc hin vic sao chp bn trong. Khi ta yu cu Access to mt bn
sao, n t lm thm vic chuyn c s d liu thnh c s d liu h tr sao chp
trn i tng c s d liu m ta chn.
FPT Software Solution

Trang:248/265

Gio trnh o to Visual Basic 6.0


Dng chng trnh vit vi DAO bin c s d liu thnh c s d liu h
tr sao chp :
Option Explicit
' References DAO 3.51.
Dim db As Database
Dim pr As Property
Dim td As TableDef
Const DBPath = "..\..\DB\novelty.mdb"
Const MasterDBPath = "..\..\DB\nmaster.mdb"
Const ReplicaDBPath = "..\..\DB\nreplica.mdb"
Private Sub cmdMakeDBRep_Click()
On Error GoTo ErrHandler
' The "True" parameter in the OpenDatabase method
' tells Jet to open the database for exclusive
' access, which is required for creating properties.
FileCopy DBPath, MasterDBPath
Set db = OpenDatabase(MasterDBPath, True)
With db
Set pr =.CreateProperty("Replicable", dbText, "T")
.Properties.Append pr
.Properties("Replicable") = "T"
End With
MsgBox "The database has been copied to " & _
db.Name & _
" and its Replicable property is now " & _
db.Properties("Replicable").Value
db.Close
Set db = Nothing

' Release exclusive lock on db.

Exit Sub
ErrHandler:
Select Case Err.Number
Case 3367
' Replicable property already exists
Exit Sub
' So ignore the error and exit
Case Else
' Something unforseen happened
MsgBox "Error: " & Err & " - " & Error
End Select

FPT Software Solution

Trang:249/265

Gio trnh o to Visual Basic 6.0


End Sub
Lu rng on chng trnh ny s chy c d cho c s d liu hin
hnh c thuc tnh ng Replicable hay khng. Nu c s d liu hin hnh c
thuc tnh Replicable, chng trnh s khng to ra thuc tnh ny na.
Tuy nhin, c mt rc ri khi to mt thuc tnh Replicable cho mt c s d
liu Sau khi to ra, ta khng th loi b n. Th dng on chng trnh sau
loi b :
db.Properties.Delete Replicable
Nhng khng thc hin c. on chng trnh pht ra bo li s 3607, thng
bo rng y l thuc tnh ch c v khng th loi b. V vy, nh cnh bo
phn trc, vic to bn d phng cho c s d liu l iu c bit quan trng
khi ta thao tc vi DAO thc hin Replication.
To i tng trong c s d liu h tr sao chp

ii.

Sau khi to c s d liu h tr sao chp, ta phi to cc i tng ring r


(nh bng) trong c s d liu ny. Thc hin iu ny bng cch to i tng
Replicable cho chng, tng t nh khi ta thc hin vi c s d liu. Cc i
tng c s d liu c thuc tnh Replicable l T s c sao chp ng b ho.
thc hin iu ny, ta dng on chng trnh sau y. Gi s rng y l
c s d liu h tr sao chp; ta ly mt bng hin hnh trong c s d liu v
bin n thnh bng h tr sao chp.
Private Sub cmdMakeTable_Click()
On Error GoTo ErrHandler
Set db = OpenDatabase(MasterDBPath, True)
Set td = db.TableDefs("tblCustomer")
td.Properties("Replicable") = "T"
On Error GoTo 0
MsgBox "The Replicable property of " & _
td.Name & _
" has been set to " & _
td.Properties("Replicable")
Set db = Nothing

' Release exclusive lock on DB

Exit Sub
ErrHandler:
If Err.Number = 3270 Then
Set pr = td.CreateProperty("Replicable", dbText, "T")
td.Properties.Append pr
Else
MsgBox "Error " & Err & " - " & Error
End If

FPT Software Solution

Trang:250/265

Gio trnh o to Visual Basic 6.0


End Sub
on chng trnh ny tng t on chng trnh thit lp thuc tnh
Replicable ca c s d liu. y, by li mnhim tnh hung thuc tnh
Replicable cha c to cho i tng. on chng trnh by li xc nh
thuc tnh Replicable ca i tng c s d liu c tn ti khng; nu cha c,
n to ra thuc tnh v quy nh thuc tnh hiu chnh l chui T. Gi tr T
lm cho i tng ( v cc d liu cha bn trong n ) c copy vo bn sao c
s d liu vo lc ng b ho.
Gi tr T ca thuc tnh Replicable ca i tng c s d liu t ng i
thuc tnh KeepLocal thnh F.
Dng thuc tnh ReplicableBool bin i tng thnh i tng h
tr sao chp
Ch rng cc thuc tnh hiu chnh ta dng n gi u c gi tr l k t - k
t T hay F th hin gi tr Boolean l True hay False. Bi v khi chng c gii
thiu cho Jet, cc thuc tnh c s d liu hiu chnh ch c th cha gi tr l k
t. Trong Jet 3.51, cc thuc tnh hiu chnh c th cha mt tp hp rt phong ph
gm nhiu kiu d liu. Nh , n gip ta to cc thuc tnh gn lin vi
Replication trong DAO mt cch d dng hn nu nh ta thch dng True / False
thay v T / F.
iii.

Nu mun thuc tnh Replicable ca i tng c s d liu dng gi tr


Boolean, ta to v nh thuc tnh ReplicableBool thay v Replicable.ReplicatonBool
dng gi tr Boolean, thay v chui k t.
Private Sub cmdMakeTableBool_Click()
On Error GoTo ErrHandler
Set db = OpenDatabase(MasterDBPath, True)
Set td = db.TableDefs("tblCustomer")
td.Properties("ReplicableBool") = True
On Error GoTo 0
MsgBox "The Replicable property of " & _
td.Name & _
" has been set to " & _
td.Properties("Replicable")
Set db = Nothing

' Release exclusive lock on DB

Exit Sub
ErrHandler:
If Err.Number = 3270 Then
Set pr = td.CreateProperty("ReplicableBool", dbBoolean, True)
td.Properties.Append pr
Else
MsgBox "Error " & Err & " - " & Error
FPT Software Solution

Trang:251/265

Gio trnh o to Visual Basic 6.0


End If
End Sub
Khi to v dng thuc tnh ReplicableBool, thuc tnh Replicable cng tr thnh
c sn, v 2 thuc tnh tr v cng gi tr, ngha l nu ta quy nh ReplicableBool
l True, th c thuc tnh Replicable, ta thy n l T.
iv.
Lp trnh vi DAO to mt c s d liu bn sao
To mt c s d liu bn sao t Bn thit k gc bng cch thi hnh phng
thc MakeReplica ca i tng Database.
C php :
db.MakeReplica <tn tp tin>,[<m t>], [<ty chn>]

<Tn tp tin> l tp tin bn sao c s d liu mi m ta mun to.


<M t> l chui k t ca bn sao mi. Tham s ny l tu chn.
Tham bin <Tu chn> c th l mt hay hai gi tr. Tu chn th nht,
dbRepMakePartial, to bn sao mt phn, ngha l ta c th kim sot
nhng mu tin no c copy t Bn thit k gc vo bn sao. Tu chn
th hai, dbRepMakeReadOnly, cho php to bn sao ch c c vi
nhng ngi s dng bn sao. (Tuy nhin, ta c th vn gi d liu v cc
i tng d liu mi n bn sao thng qua ng b ho).

Private Sub cmdSpawn_Click()


Dim db As Database
Set db = OpenDatabase(MasterDBPath, True)
db.MakeReplica ReplicaDBPath, "MyReplica"
db.Close
Set db = Nothing
End Sub
Lp trnh vi DAO tin hnh ng b ho
1. Trong chng trnh, to mt i tng Database th hin bn sao c s d
liu.
2. Thi hnh phng thc Synchronize ca i tng Database tin hnh
ng b ho bn sao vi Bn thit k gc. Phng thc Synchronize dng
tn tp tin ca c s d liu bn thit k gc lm tham bin.
Trong on chng trnh sau, nreplica.mdb l bn sao, nmaster.mdb l Bn
thit k gc.

v.

Private Sub cmdSynch_Click()


Dim db As Database
Set db = OpenDatabase(MasterDBPath)
Screen.MousePointer = vbHourglass
db.Synchronize ReplicaDBPath
Screen.MousePointer = vbNormal
FPT Software Solution

Trang:252/265

Gio trnh o to Visual Basic 6.0


End Sub
Thuc tnh MousePointer ca i tng Screen dng bo cho ngi s dng
rng Replication ang tin hnh.
Sao chp mt phn
Thng thng, ta khng mun truyn ton b d liu t Bn thit k gc n
bn sao. Nht l khi vic ny khng thch hp v khng thc t khi phi gi ton
b ni dung ca c s d liu gc n ngi s dng xa.
vi.

Nhng g khng nn truyn i l nhng thng tin b mt trong kinh doanh nh


lng bng, cng nh nhng thng tin bo mt ca c s d liu nhu ID v mt
khu ngi s dng. C s d liu ta cn l nhng d liu gn lin vi c nhn
mt ngi s dng s c sao chp vo my tnh ca h. Kiu sao chp ny
hiu qu hn kiu sao chp ton phn bi v n ch to bn sao ca nhng d liu
m ngi s dng cn n.
Mt bn sao mt phn l mt c s d liu khng sao chp ton b d liu
ca Bn thit k gc. to mt bn sao mt phn, ta theo cc bc sau:
1. To mt bn sao mt phn dng phng thc MakeReplica ca i tng
Database, ch ra tu chn dbRepMakePartial.
2. Quy nh thuc tnh ReplicaFilter ca i tng TableDef l nhng mu tin
c copy vo bn sao mt phn. ReplicaFilter cho ta quy nh mnh
Where ca cu SQL n s mu tin cn copy vo bn sao mt phn t c
s d liu ngun.
3. Ngoi ra, c th quy nh thm thuc tnh PartialReplica ca i tng
Relation l s mu tin c copy vo bn sao da trn kt ni gia 2 bng.
4. Thi hnh phng thc PopulatePartial ca i tng Database copy d
liu t Bn thit k gc vo bn sao mt phn.
i vi bn sao mt phn, ta c th lc ra cc mu tin, nhng khng th lc ra
cc trng. hn ch s ct hin th i vi ngi s dng, ta xem xt bo mt
c s d liu hn ch quyn truy cp i tng c s d liu.
17.1.1.3.4.5 Dng phng thc MakeReplica to bn sao mt phn

Ta c th to bn sao mt phn t Bn thit k gc hoc t mt bn sao ton


phn khc. (Ta khng th to mt bn sao mt phn t mt bn sao mt phn
khc).
Option Explicit
' References DAO 3.51
Private db As Database
Private td As TableDef
Const MasterDBPath = "..\..\DB\nmaster.mdb"
Const ReplicaPath = "..\..\DB\npartial.mdb"
Private Sub cmdMakePartial_Click()
Set db = OpenDatabase(MasterDBPath)
db.MakeReplica ReplicaPath, "Partial", dbRepMakePartial

FPT Software Solution

Trang:253/265

Gio trnh o to Visual Basic 6.0


db.Close
Set db = Nothing
End Sub
Bn sao mt phn to ra t chng trnh trn y ch mi cha cu trc c s
d liu bn sao, cha c d liu.
Khi to mt bn sao mt phn, ta khng th chuyn i n thnh bn sao ton
phn. Tuy nhin, c th sao chp ton b d liu trong Bn thit k gc vo
bn sao bng cch quy nh thuc tnh ReplicaFilter l True.
17.1.1.3.4.6 Tin hnh sao chp mt phn

Sau khi to mt bn sao mt phn, ta c th copy cc mu tin t bn sao ton


phn hoc Bn thit k gc theo cc bc sau y :
1. Trong chng trnh s dng DAO, khai bo v quy nh gi tr cho bin i
tng Database l c s d liu bn sao mt phn.
2. Khai bo bin TableDef cho cc bng trong bn sao mt phn cha d
liu sao chp.
3. Quy nh thuc tnh ReplicaFilter ca tng i tng TableDef l mt iu
kin WHERE ca cu SQL. N xc nh cc mu tin s c copy vo bn
sao mt phn.
4. Thi hnh phng thc PopulatePartial ca i tng Database, ch ra
ng dn v tn tp tin ca bn thit k gc hoc bn sao ton phn m
ta mun copy t .
C th dng thuc tnh ReplicaFilter ca i tng TableDef sao chp tp
con cc mu tin t c s d liu n c s d liu bn sao mt phn. Thuc tnh
ReplicaFilter c th cha mt trong 3 gi tr :

Nu ReplicaFilter l True, ton b cc mu tin trong c s d liu ngun


c copy vo c s d liu bn sao mt phn.
Nu ReplicaFilter l False, khng c mu tin no t c s d liu ngun
c copy vo bn sao mt phn.
Nu ReplicaFilter l mt chui, b my c s d liu xem l mnh
WHERE ca cu SQL.
gn mt b lc bn sao v copy cc mu tin t Bn thit k gc hoc bn
sao ton phn vo bn sao mt phn, dng on chng trnh sau :
Option Explicit
' References DAO 3.51
Private db As Database
Private td As TableDef
Const MasterDBPath = "..\..\DB\nmaster.mdb"
Const ReplicaPath = "..\..\DB\npartial.mdb"
Private Sub cmdMakePartial_Click()
Set db = OpenDatabase(MasterDBPath)

FPT Software Solution

Trang:254/265

Gio trnh o to Visual Basic 6.0


db.MakeReplica ReplicaPath, "Partial", dbRepMakePartial
db.Close
Set db = Nothing
End Sub
Private Sub cmdReplicate_Click()
' Open partial replica in exclusive mode
Set db = OpenDatabase(ReplicaPath, True)
Set td = db.TableDefs("tblCustomer")
td.ReplicaFilter = "State = 'CA'"
' Populate with data from design master
db.PopulatePartial MasterDBPath
' Release exclusive lock on database
Set db = Nothing
End Sub
Khi ta thi hnh on chng trnh trn, ch nhng khch hng sng tiu bang
California c copy vo bn sao mt phn.
TNG KT
Chng ny cp 2 vn ch yu khi phn pht d liu qua mng n
nhiu ngi s dng. Trong phn u, bn tm hiu cch thc s dng cc
thnh phn ActiveX truy cp d liu theo hng i tng. N cng tho lun
v trin khai DCOM vi thnh phn ActiveX, cho php ta trin khai cc i tng
kinh doanh qua mng LAN.
Trong phn th hai, ta tm hiu v cch thc sao chp c s d liu Jet qua
mng phn pht d liu qua 2 hay nhiu tp tin c s d liu.
Mc d ch v cc thnh phn tng trung gian ActiveX v sao chp c s
d liu ni 2 phn ring, nhng khng c ngha l chng loi tr ln nhau. Trong
chng trnh, bn c th phi hp c hai k thut phn pht d liu theo din
xa v rng. Dng k thut no l tu thuc vo cu trc chng trnh, s ngi s
dng cn h tr, v mc yu cu gi cho d liu nht qun.
HI V P
Hi : Ti va to cc th vin ActiveX DLL dng truy cp d liu. Ti c
cn bin dch li thnh Active EXE truy cp chng qua mng t xa khng ?
p: Khng. Nu bn dng Microsoft Transaction Server, bn c th ng gi
cc th vin ActiveX DLL ngay v truy cp chng t xa. Trin khai cc thnh
phn t xa dng k thut MTS c trnh by u chng.
Hi : Khi ti ang tin hnh sao chp c s d liu, h thng c s d liu
ch yu l off-line. Vy lm sao bit n s tn bao lu ?
p: Bi v c rt nhiu yu t nh hng, lng d liu ta cn thao tc, bng
thng trn mng, tc my tnh x l cc mu tin. Nu gp phi rc ri ny

FPT Software Solution

Trang:255/265

Gio trnh o to Visual Basic 6.0


khi tin hnh sao chp c s d liu, bn c th th qu trnh t ng nu
c ( vit mt ng dng Visual Basic ng b ho d liu lc c s d
liu khng c s dng nhiu nh vo ban m chng hn ). Bn cng c
th th dng bn sao mt phn gim thiu lng d liu c copy.
Hi: Bi v sao chp mt phn cho php tu chn khng sao chp, hoc sao
chp mt phn hoc sao chp ton b mu tin; trong thc t, ta khng th
chuyn i qua li gia sao chp mt phn v ton phn, ti sao khng tt
c ch l sao chp mt phn ?
p: Bn ch c th ng b ho gia Bn thit k gc v bn sao ton phn,
khng cho php ng b ho gia bn sao mt phn v bn sao khc. iu ny
cung cp s linh hot trong nhng trng hp m bn mun ng b ho
nhiu bn sao vi nhau gim bt p lc phi x l trn my tnh cha Bn
thit k gc.

17.2

FPT Software Solution

Trang:256/265

Gio trnh o to Visual Basic 6.0

18 i tng d liu ActiveX


Xy dng ng dng Visual basic vi ADO
S dng dch v d liu t ADO
Cho n Visual basic 5.0, ADO (D liu i tng ActivateX - ActivateX Data
Object) tr thnh nn tng ca k thut truy cp d liu Internet. Trong Visual
basic 6.0, ADO 2.0 cang quan trng hn - mnh m hn. Ta c th dng ADO
khng ch truy cp c s d liu thng qua trang web, m cn c th dng n
ly d liu t ng dng vit bng Visual basic. ADO l giao din da trn i
tng cho cng ngh d liu mi ni gi l OLE DB.
OLE DB c thit k thay th ODBC nh mt phng thc truy cp d
liu. ODBC hin thi l tiu chun pha Client s dng Windows rt ph bin
truy cp d liu quan h bi v n thit lp cc Server c s d liu quan h cng
tng qut cng tt n cc ng dng Client. OLE DB i su hn mt bc, bng
cch lm cho tt c ngun d liu tr thnh tng qut i vi ng dng Client.

18.1 Xy dng ng dng Visual basic vi ADO


ADO l cng ngh truy cp c s d liu hng i tng tng t nh DAO
v RDO.
ADO hin nay c Microsoft xem l k thut truy cp c s d liu t
Web server. Bi v ADO c cung cp di dng th vin ActivateX Server
(tng t DAO v RDO), ta c th thoi mi dng ADO trong ng dng Visual
basic. Trong thc t, bng nhiu cch, ta s thy rng s dng ADO lm vic
vi c s d liu Client/Server th d hn cc k thut khc.

18.1.1Tm hiu cu trc OLE DB / ADO


Phn ln cc nh lp trnh vin Visual basic khng thao tc trc tip vi OLE
DB. Thay vo , h lp tnh vi ADO, m hnh i tng cung cp giao din vi
OLE DB.
Client Workstation

Client Application

Remote Data Object

ActiveX Data
Object

ODBC Driver

OLE DB Datta
Provider

ODBC Driver
Manager

OLE DB

Document
Server

Email
Server
Relational Database

Hnh: S dng ADO v OLE DB tng cng truy cp thng tin trong mt c
s d liu
FPT Software Solution

Trang:257/265

Gio trnh o to Visual Basic 6.0


Trnh cung cp OLE DB khng nhiu nh trnh cung cp ODBC nhng s
lng ny tng ln ng k t khi ADO 2.0 c pht hnh vo nm 1998. Phin
bn ny c a vo Visual basic 6.0 bao gm cc trnh cung cp cc b cho
SQL Server, Oracle v Microsoft Jet/ access.
C nhiu kh nng bn c th dng ADO v OLE DB t c ngun d
liu quan h ngay khi khng c trnh cung cp OLE DB c b. Bi v c mt
tnh cung cp OLE DB tng qut cho c s d liu quan h ODBC.
Ta ch cn lp trnh vi phn giao din Ngi s dng pha Client. Bi v
vic truy cp d liu trn c trnh duyt Web v ng dng Visual basic c
chuyn ht v pha ActivateX Server, ta c th bo m rng logic chng trnh
lun nht qun, bt k loi ng dng no ang c dng.
Sau y l cu trc truy cp c s d liu ODBC dng trnh cung cp ODBC
OLE DB.
Client Application

ActiveX Data
Object
OLE DB ODBC
Provider
ODBC Driver
ODBC Driver
Manager

OLE DB

Relational Database

Cu trc ny cho php ta dng thnh phn lp trnh ActivateX thng dng trn
c trnh duyt Web v ng dng Client Visual basic.

18.1.2Ci t v thit lp tham chiu n ADO trong ng dng


Visual basic
ADO c ci t nh mt phn ca Visual basic 6.0
Phin bn mi nht ca ca ADO cho php ti xung min ph t a ch
http://www.Microsoft.com/data/ado.
Sau khi ci t xong, ta bt u s dng n bng cch thit lp tham chiu n
th vin ADO trong ng dng Visual basic, tng t khi ta thit lp tham chiu
n th vin DAO hay RDO.
FPT Software Solution

Trang:258/265

Gio trnh o to Visual Basic 6.0


Trong project Visual basic chn references, hp thoi references xut
hin
- Chn vo hp nh du Microsoft ActivateX Data Objects 2.0 Library
ri nhn OK
Ch rng khi tham chiu ADO th phi m bo l khng c tham chiu n
th vin Microsoft ActivateX Data Objects 2.0 Recordset. y l phin bn loi
nh ca th vin ADO c thit k s dng pha Client. N ch h tr
Recordset v Field.
-

18.1.3S dng ADO vi cc th vin i tng truy cp d liu


khc
Nu bn to ng dng c thit k s dng ADO kt hp vi th vin
i tng truy cp d liu khc, nh l DAO, cn phi phn bit gia, v d nh
i tng RecordSet ca DAO v Recordset ca ADO. Chng khng th i ch
cho nhau c.
Nu ta tham chiu n va ADO va DAO v khai bo mt bin Recordset,
lm th no phn bit Recordset ca DAO hay ADO? Cu tr lai l th t tham
chiu vo n. Nu thm tham chiu i tng DAO trc th Recordset l ca
DAO v ngc li. trnh nhm ln ta nn khai bo tng minh nh sau:
ADODB.Recorset
Nu khng mun tham chiu trc tip n th vin i tng trong chng
trnh, ta c cch khc. Ta c th kim sot th vin i tng nao c truy cp
mc nh bng cch dng gi tr mc u tin trong hp References.

18.1.4Dng i tng connection ca ADO kt ni vi ngun


d liu
V tr ca i tng Connection trong m hnh ca ADO:(Xem hnh di):
Dng phng thc Open ca i tng Connection thit lp kt ni vi
ngun d liu. thng bo cho ADO cch ni vi ngun d liu ta phi cung
cp thng tin di dng chui kt ni ca ODBC. Ta dng thuc tnh
ConnectionString thc hin iu ny. Ta cn c kh nng tu chn chn
trnh cung cpno s c dng bng cch quy nh gi tr thuc tnh Provider ca
i tng Connection.
18.1.4.1 Ch ra trnh cung cp OLE DB v chui kt ni
Nu khng ch ra trnh cung cp, hoc ta khng dng i tng Connection, ta
s c mt trnh cung cp mc nh, l trnh cung cp ODBC, MSDASQL.
Thuc tnh Provider ca i tng Connection l chui k t ch ra kt ni m
trnh cung cp OLE DB s dng.
Dng chui kt ni trong ADO cung cp thng tin v cch thc kt ni vi
Server c s d liu. Khi ta dng trnh cung cp ODBC cho OLE DB, chui kt ni
tng t chui kt ni ODBC. iu ny c ngha l thng tin chnh xc c mong
ch bi trnh iu khin ODBC c th thay i tu theo cch thc hin. i vi
cc trnh cung cp khc, chui kt ni c th c mt c php hon ton khc.
Khi ta dng trnh cung cp ODBC, thuc tnh ConnectionString c th l mt
DSN (tn ngun d liu) hay n l kt ni khng c DSN. y l mt v d ca
mt kt ni n c s d liu dng trnh cung cp ODBC vi DSN:
FPT Software Solution

Trang:259/265

Gio trnh o to Visual Basic 6.0


Connection Object

Property
Arttributes
CommandTimeOut
ConnectionString
ConnectionTimeOut
CursorLocation
DefaultDataBase
Errors collection
Isolation Level
Mode
Properties collection
Provider
State
Version

Methods
BeginTrans
Cancel
Close
CommitTrans
Execute
Open
OpenSchema
RollbackTrans

Events
BeginTransComplete
CommittranCopmlete
ConnectionComplete
Disconnect
ExexuteComplete
InfoMessage
RollBackTransComplete
WillConnect
WillExecute

Errors collection
Error Object
Properties collection
Property object
Recordset object
Command object

Cn.Provider = MSDASQL
Cn.ConnectionString = DSN = Novelty;
S dng DSN trong chui kt ni d nhin yu cu mt DSN tn l Novelty
phi thc s tn ti trn my Client.
Trng hp kt ni khng c DSN:
Cn.Provider = MSDASQL
Cn.ConnectionString = DRIVER = {SQL Server}; DATABASE = Novelty; UID
= sa ; PD = ;
Kt ni ny s ni kt Server nhanh hn bi v n khng cn c thng tin
DSN t bng ng k ca Windows. Tuy nhin, n km linh hot v n gn cht
thng tin vi chng trnh c bin dch

18.1.5Lm vic vi con tr


Tng t RDO v DAO, ADO h tr mt s kiu con tr. Ngoi vic cung cp
h tr duyt qua tng bn ghi ti mt thi im, cc kiu con tr khc nhau cho
php ta iu khin cch qun l ca mt Recordset.
Quy nh v tr ca con tr bng cch gn gi tr cho thuc tnh Recordset. Sau
y l cc kiu con tr ca i tng Connection:
Kiu con tr
Hng
M t
Pha Client
adUseClient
To con tr pha Client
Pha Server
adUseServer
To con tr pha Server
Chn con tr kiu Client ngha l ADO v OLE DB x l cc hot ng ca
con tr. Con tr Client thng khng c sn trn server. V d, trong ADO, ta c
th to mt Recordset khng kt ni, cho php ta thao tc vi cc bn ghi m khng

FPT Software Solution

Trang:260/265

Gio trnh o to Visual Basic 6.0


c kt ni thng xuyn n server. Kh nng ny l mt chc nng ca th vin
con tr pha Client.
Trong ADO, thuc tnh CursorLocation p dng cho c i tng Recordset v
Connection. Nu ta gn thuc tnh CursorLocation ca i tng Connection, tt c
Recordset m ta to t kt ni u c cng v tr con tr nh i tng
Connection.
Ngoi vic ch ra v tr con tr, ta c kh nng to 4 kiu con tr khc nhau
trong ADO. Vic chn la con tr tu theo s cn i gia chc nng v kh nng
hot ng.
Ch ra kiu con tr bng cch gn thuc tnh CursorType ca i tng
Recordset. Sau y l cc kiu con tr c th to trong ADO:
Kiu con tr
Hng
M t
Forward-only
adOpenForwardOnly
Khng dng con tr - ta ch c th
chuyn v pha trc Recordset; s
dng phng thc MovePrevious v
MoveFirst s sinh li.
Keyset(Trong
adOpenKeyset
Ta khng th thy cc bn ghi mi do
ADO c gi
ngi dng khc thm vo, nhng khi
l dynaset)
h sa i hay xo tin s lm nh
hng n Recordset ta ang lm
vic; y l kiu con tr hiu qu
nht, c bit l khi Recordset kh
ln.
Dynamic
adOpenDynamic
Ta c th thy ton b thay i trn
d liu do nhng ngi s dng
khc thc hin trong khi ta ang m
Recordset; y l kiu con tr t hiu
qu nht nhng mnh m.
Static(Trong
adOpenStatic
Bn sao ca ton b d liu ca mt
DAO gi l
Recordset; kiu ny c bit hu
snapshot)
dng khi ta ang tm kim d liu
hay khi thi hnh bo co; kiu con tr
ny rt hu dng cho cc Recordset
nh.
D nhin, l do ta chn con tr kiu forward-only thay v keyset hay dynamic
l kh nng hot ng ca - nu ta ch hin th d liu cha trong c s d liu
con tr kiu forward-only s lm kh nng hot ng ca ng dng hiu qu hn.
Lu rng, nu trnh cung cp d liu khng th to ra iu khin con tr m
ta yu cu, n s to ra con tr m n c th. Ni chung, n s khng bo li tr
phi ta c thi hnh mt tc v no vn b cm i vi kiu con tr.
Xc nh con tr v cc tnh nng khc c h tr bi mt trnh cung
cp
Bi v OLE DB v ADO c thit k cho php truy cp n nhiu ngun
d liu, ng dng cn xc nh cc tnh nng do mt trnh cung cp nht nh h
tr. C th l trong khi mt h c s d liu quan h cho php to con tr kiu
forword-Only pha server, h c s d liu trn my c nhn hoc c s d liu
da trn tp tin c th khng c tnh nng ny.
Phng thc supports ca i tng ADO Recordset xc nh kiu con tr do
trnh cung cp d liu h tr.

FPT Software Solution

Trang:261/265

Gio trnh o to Visual Basic 6.0


Bng sau y lit k cc gi tr truyn vo phng thc Supports xc nh
tnh nng c h tr bi i tng Recordset:
Hng
M t
adAddnew
Thm bn ghi vo Recordset
adApproxPosition Thuc tnh AbsolutePage v AbsolutePosition c sn; chng
c dng kt hp vi thuc tnh Pagesize v PageCount
ca i tng Recordset cho php xc nh trang cha
bn ghi hin hnh.
adBookmark
C th quy nh nh du trang sch trong Recordset
adDelete
Bn ghi c xo trong Recordset
adHoldRecords
Bn ghi c tr v t c s d liu m khng cn ghi sa
i hin c vo server.
adMovePrevious C th cun ti lui trong Recordset
adResync
Phng thc ny c sn
adUpdate
Recordset cp nht c
adUpdateBatch
Recordset c th cp nht c hng lot vi phng thc
UpdateBatch. Ta c th np cc sa i trn nhiu mu tin
trong mt hot ng duy nht, ci tin hiu qu
Client/Server

18.1.6Kho bn ghi trong ADO


Tng t cc m hnh i tng truy cp c s d liu khc, ADO cho php
quy nh cc kiu kho bn ghi(Record - locking) khc nhau. Ta dng tnh nng ny
khi cn kim sot cch thc cp nht cc bn ghi vi nhiu ngi s dng trong
c s d liu.
Quy nh ch kho cho i tng Recordset ca ADO thng qua thuc tnh
LockType. Di y l danh sch 4 kiu kho bn ghi.
Hng
M t
adLockReadOnly
Cm cp nht bn ghi
adLockPressimistic
Bn ghi trong Recordset b kho khi bt u sa i, v
tip tc b kho n khi thi hnh phng thc Update
hay chuyn sang bn ghi khc.
adlockOptimistic
Bn ghi b kho ngay khi thi hnh phng thc Update
hay di chuyn sang bn ghi khc.
adlockBatchOptimistic H tr cp nht nhiu bn ghi cng lc.
im quan trng cn lu l phng thc kho mc nh trong ADO l
adLockReadOnly. y l mt trong cc im khc bit ng k gia lp trnh ADO
v DAO, v trong DAO bi m nh Recordset c php sa i. iu ny c
ngha l nu ta khng i thuc tnh LockType v CursorType, cc Recordset ca
DAO lun l ch c.
S hin din ca cc kiu kho bn ghi ph thuc vo nhng g trnh cung cp
d liu h tr. Ta c th dng phng thc support ca i tng Recordset
xc nh trnh cung cp c h tr kiu kho bn ghi hay khng.

FPT Software Solution

Trang:262/265

Gio trnh o to Visual Basic 6.0

18.1.7S dng i tng Recordset ca ADO thao tc vi d


liu
i tng Recordset ca ADO, tng t Recordset ca DAO v rdoresultset
ca RDO, l phng php truy cp thng tin c tr v t trnh cung cp d liu.
Recordset ca ADO c nhiu thuc tnh v phng thc trng vi Recordset ca
cc m hnh khc, v th c th lm vic vi chng tng t cc Recordset khc.
V tr ca Recordset ca ADO trong m hnh i tng ADO:
Recordset Object

Property
AbsolutePage
AbsolutePosition
ActiveCommand
ActiveConnection
BOF
Bookmark
CacheSize
CursorLocation
................

Methods
Addnew
Cancel
CancelBatch
CancelUpdate
Clone
CompareBookmark
Delete
Find

Events
EndOfRecorset
FetchCopmlete
FetchProgress
FieldChangeComplete
MoveComplete
RecordChangeComplete
RecordsetChangeComplete
WillChangeField

Fields collection
Field Object
Properties collection
Property object

Th tc to Recordset cu ADO tng t to rdorseultset ca RDO. Tuy nhin,


ADO thm mt thay i l th: kh nng to i tng Recordset khng i hi
mt i tng Connection ngm.
18.1.7.1

Dng i tng Recordset cp nht v thm bn ghi

mi
Thm mi v cp nht bn ghi trong ADO hu nh tng t nh trong DAO.
Thm mi bn ghi:
- M Recordset
- Thi hnh phng thc AddNew
- Gn gi tr cho cc trng i tng Recordset
- Lu bn ghi bng phng thc Update ca Recordset
Cp nht bn ghi:
- M Recordset
- Gn gi tr cho cc trng trong Recordset

FPT Software Solution

Trang:263/265

Gio trnh o to Visual Basic 6.0


-

Lu bn ghi bng thi hnh phng thc Update

18.1.8To Recordset ngt kt ni


Khi dng con tr pha Client ca ADO, ta c kh nng ngt kt ni vi server
v tip tc lm vic vi d liu. Cch ny lm cho ng dng tr nn linh hot, bi
v nhiu ngi s dng c th lm vic vi d liu nu h khng cn kt ni n
Server.
ngt kt ni vi Server trong ADO, ta quy nh thuc tnh ActiveConnection
ca i tng Recordset l Nothing. Client s tip tc lm vic vi d liu thm
ch khi n khng kt ni vi server.

18.2 S dng dch v d liu t xa ca ADO


Dch v d liu t xa (Remote Data Service - RDS) dng ly cc Recordset
ca ADO t web server. Th vin ny i km vi ADO, ch yu cho php ta dng
HTTP lm vn chuyn trn mng cho ng dng c s d liu. Ch yu c dng
trong cc ng dng trnh duyt web, n cng hot ng tt vi cc Client ca
Visual basic.
Lu RDS c tn c l Ni d liu nng cao (Advance Data Connector) bn
c th tm hiu thm ti a ch: http://www.Microsoft.com.data/ado/rds
Ta cng c th dng i tng DataControl ca RDS ly v mt i tng
Recordset ca ADO trn Internet. i tng ny, c phc v t mt my tnh
chy vi IIS 3.0(microsoft Internet Infomation Server) tr ln, c kh nng tr v
i tng Recordset ca ADO n bt k Client qua HTTP. Cch d nht minh
ho cch dng RDS l thi hnh mt truy vn trn Web server dng i tng
DataControl ca RDS.
- To mt n Standard EXE mi
- Trong menu Project Referances, lp mt tham chiu n Microsoft
ActivateX Data Objects 2.0 Recordset Library
- To mt hp vn bn, mt nt lnh, v mt danh sch trn biu mu.
- a on chng trnh sau:
Option Explicit
Private rdc As RDS.DataControl
Private Sub cmdQuery_Click()
Screen.MousePointer = vbHourglass
Set rdc = New RDS.DataControl
rdc.SQL = "select * from tblCustomer where state = 'IN'"
rdc.ExecuteOptions = adcExecAsync
rdc.Connect = "DSN=JetNovelty;"
rdc.Server = "http://localhost/"
rdc.Refresh
While rdc.ReadyState = adcReadyStateLoaded ' busy
DoEvents
Wend

FPT Software Solution

Trang:264/265

Gio trnh o to Visual Basic 6.0


Do Until rdc.Recordset.EOF
With rdc.Recordset
lstCustomer.AddItem.Fields("FirstName") & " " & _
.Fields("LastName")
.MoveNext
End With
Loop
Set rdc = Nothing
Screen.MousePointer = vbNormal
End Sub
Trong v d ny, server localhost c dng. y l mt cch gi tt ca Web
server cha trn cng mt my. N rt tin dng khi cn kim nghim chng
trnh.Vng lp While Wend dng ch p ng ca server. y l tnh nng bt
ng b ca lnh gi HTTP. Ta khng th chc chn mt bao nhiu lu th server
p ng, v vy ta phi ch.

FPT Software Solution

Trang:265/265

You might also like