You are on page 1of 262

Gio trnh o to Visual Basic 6.

Mc lc

Mc lc.............................................................................................................................1

Lm quen vi visual basic 6.0..........................................................................................2

2.1 Xy dng ng dng ban u................................................................................2


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

Tm hiu Visual basic 6....................................................................................................2

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


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

FPT Software Solution

Trang:1/262

Gio trnh o to Visual Basic 6.0


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

Lm vic vi cc iu khin.............................................................................................2

4.1 Cc loi iu khin...............................................................................................2


4.1.1 Thao tc vi iu khin...................................................................................2
4.2 Cc iu khin ni ti...........................................................................................2
4.2.1 Nt lnh...........................................................................................................2
4.2.2 Hp vn bn....................................................................................................2
4.2.3 iu khin thanh cun.....................................................................................2
4.2.4 iu khin Timer.............................................................................................2
4.2.5 iu khin nhn..............................................................................................2
4.2.6 Checkbox:

..............................................................................................2

4.2.7 Mt s thuc tinh thng dng:........................................................................2


4.2.8 4.2.9 Hp danh sch (Listbox)........................................................................2
4.3 Cc iu khin M i.............................................................................................2
5

Nhp mn lp trnh..........................................................................................................2

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


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

FPT Software Solution

Trang:2/262

Gio trnh o to Visual Basic 6.0


5.4.3 Khai bo tng minh.......................................................................................2
5.4.4 Khai bo bin Static........................................................................................2
5.4.5 Hng................................................................................................................2
5.5 Hm v th tc.....................................................................................................2
5.6 Cu trc iu khin..............................................................................................2
5.6.1 Cu trc chn..................................................................................................2
5.6.2 Cu trc lp.....................................................................................................2
5.6.3 Lm vic vi cu trc......................................................................................2
5.7 G ri chng trnh..............................................................................................2
5.7.1 Mt s gii php gim li................................................................................2
5.7.2 G ri..............................................................................................................2
5.8 By li..................................................................................................................2
5.8.1 Lnh On Error.................................................................................................2
5.8.2 Kt thc by li...............................................................................................2
6

Lp trnh x l giao din..................................................................................................2

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

X l tp tin......................................................................................................................2

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


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

FPT Software Solution

Trang:3/262

Gio trnh o to Visual Basic 6.0


7.3.2 Hp danh sch th mc...................................................................................2
7.3.3 Hp danh sch tp tin......................................................................................2
7.4 iu khin richtextbox.........................................................................................2
7.4.1 Phng thc loadfile.......................................................................................2
7.4.2 Phng thc savefile.......................................................................................2
8

S dng DLL v Windows API.........................................................................................2

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


8.1.1 Cc hp thoi thng dng...............................................................................2
8.2 WIN API...............................................................................................................2
8.3 S dng API.........................................................................................................2
8.3.1 Tm kim API..................................................................................................2
8.3.2 Cc DLL ca Windows...................................................................................2
8.3.3 Gi API............................................................................................................2
8.4 Dng API khai thc kh nng Multimedia...........................................................2
8.4.1 Lp multimedia...............................................................................................2
9

Thm tr gip vo ng dng............................................................................................2

9.1 Thm h tr cho Help..........................................................................................2


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

10.1 Gii thiu v i tng......................................................................................2


10.1.1 i tng trong VB......................................................................................2
10.1.2 Modul Lp....................................................................................................2
10.1.3 Tham s tu chn.........................................................................................2
10.1.4 S kin ca lp.............................................................................................2
10.1.5 Hu i tng..............................................................................................2
10.2 Bin i tng...................................................................................................2
10.2.1 To iu khin lc thi hnh..........................................................................2
10.2.2 S kin ca mng iu khin.......................................................................2
10.2.3 Qun l iu khin nh bin i tng........................................................2
10.2.4 Khai bo bin i tng...............................................................................2

FPT Software Solution

Trang:4/262

Gio trnh o to Visual Basic 6.0


10.3 Tp hp..............................................................................................................2
10.3.1 Thuc tnh Controls......................................................................................2
10.3.2 Xc nh iu khin trn biu mu...............................................................2
10.4 Biu mu MDI...................................................................................................2
10.4.1 Biu mu con (Child Form).........................................................................2
10.4.2 To Instance ca biu mu...........................................................................2
10.4.3 Xc nh biu mu........................................................................................2
10.4.4 To danh sch ca s...................................................................................2
11 Cng c trong VB6...........................................................................................................2

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

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


12.1.1 B my (Engine) c s d liu l g?...........................................................2
12.1.2 Bn v trng...............................................................................................2
12.1.3 Recordset l g ?...........................................................................................2
12.1.4 Cc kiu c s d liu..................................................................................2
12.1.5 To lc c s d liu.............................................................................2
12.1.6 Dng Visual Basic to mt c s d liu................................................2
12.1.7 Cc mi quan h...........................................................................................2
12.1.8 Chun ho.....................................................................................................2
FPT Software Solution

Trang:5/262

Gio trnh o to Visual Basic 6.0


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

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


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

FPT Software Solution

Trang:6/262

Gio trnh o to Visual Basic 6.0


13.6.2 S dng i tng TableDef thao tc vi bng.......................................2
13.7 Lm vic vi ti liu v ni cha CSDL...........................................................2
13.8 To v s dng cc thuc tnh hiu chnh ca i tng DataBase..................2
13.9 Tng kt.............................................................................................................2
13.10
Hi v p..................................................................................................2
14 Thit lp bo co v Xut thng tin.................................................................................2

14.1 S dng thit k DataReport..............................................................................2


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

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


15.1.1 Kin trc ca ODBC....................................................................................2
15.1.2 To ngun d liu........................................................................................2
15.1.3 Truy cp ngun d liu vi iu khin DAO DATA v ODBCDIRECT....2
15.2 Truy cp d liu dng iu khin d liu t xa.................................................2
15.2.1 S dng RDC...............................................................................................2
15.3 S dng RDO trong chng trnh......................................................................2
15.3.1 Quy nh thuc tnh b my c s d liu dng i tng RDOENGINE. 2
15.3.2 Truy cp mi trng i tng rdoEnvironment........................................2
15.3.3 Thit lp kt ni dng i tng rdoConnection.........................................2
15.3.4 p ng s kin trong RDO........................................................................2
15.4 To kt nI vi trnh thit k uerconnecttion.....................................................2
15.5 Truy cp truy vn vi trng thit k UserConnection........................................2
15.5.1 Gi th tc cha sn trong mt trnh thit k UserConnection....................2
15.5.2 Dng Microsotf Query xy dng chui SQL trong trnh thit k
UserConnection.........................................................................................................2
15.6 S dng d liu vi i tng rdorerultset........................................................2
15.7 Thi hnh truy vn vi i tng rdoQuery........................................................2
16 Truy cp c s d liu vi lp..........................................................................................2

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


FPT Software Solution

Trang:7/262

Gio trnh o to Visual Basic 6.0


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

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


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

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


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

FPT Software Solution

Trang:8/262

Gio trnh o to Visual Basic 6.0

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

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

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

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
Environment). 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/262

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

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 basic v 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 tag 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.
- Nhn OK, thot v khi ng li Visual basic

FPT Software Solution

Trang:14/262

Gio trnh o to Visual Basic 6.0

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

Gio trnh o to Visual Basic 6.0

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
Height
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/262

Gio trnh o to Visual Basic 6.0

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


Gi tr
0 None

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 trn
Window
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 c.
Window
Gi tr ny dng cho nhng ca s Properties ca Visual Basic

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 i tng theo yu cu ca chng trnh
Drag
Thi hnh hot ng ko v th ca ngi s dng
SetFocus
Cung cp tm ngm cho i tng c ch ra trong lnh gi
phng thc
ZOrder
quy nh th t xut hin ca cc iu khin trn mn hnh

FPT Software Solution

Trang:17/262

Gio trnh o to Visual Basic 6.0

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, hoc 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.
S kin l kt qu ca mt hnh ng no : di chuyn chut, nhn nt bn
phm, hoc g vo hp vn bn
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 mc ch cng vic bng
nhiu cch: x l trn thuc tnh hoc phng thc. V d, ta c 2 cch di chuyn
nt lnh:
a. thuc tnh
cmdMove.Left=100
cmdMove.Top=100
b. phng thc

FPT Software Solution

Trang:18/262

Gio trnh o to Visual Basic 6.0


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: Dng thuc tnh Visible
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 ga tr mc nh. ta c thm 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:
a.
nhn chut vo biu mu chn n nh mt i tng hin hnh, nhn
phm F4 hin th ca s Properties
b.
Hoc l t menu_View, chn Properties

FPT Software Solution

Trang:19/262

Gio trnh o to Visual Basic 6.0


c.

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 mt 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 sa li v tr chnh xc
hin cho ng bng chng trnh
nhn p chut ln biu 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

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 CommandButtom
b. t chui k t khi to cho nhn
FPT Software Solution

Trang:20/262

Gio trnh o to Visual Basic 6.0


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.
cmdTopLeft.Top = 200
cmdBottomLeft.Top = frmMove.Height - cmdBottomLeft.Height - 500
cmdTopRight.Top = 200
cmdBottomRight.Top = frmMove.Height - cmdBottomRight.Height - 500

FPT Software Solution

Trang:21/262

Gio trnh o to Visual Basic 6.0


'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
'side of the screen
frmMove.Left = Screen.Width - frmMove.Width
End Sub

FPT Software Solution

Trang:22/262

Gio trnh o to Visual Basic 6.0

FPT Software Solution

Trang:23/262

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 chut 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"
End Sub

FPT Software Solution

Trang:24/262

Gio trnh o to Visual Basic 6.0

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

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
2. trong menu ng cnh, Chn Project Name Properties. Hp thoi
Project Properties xut hin
FPT Software Solution

Trang:26/262

Gio trnh o to Visual Basic 6.0


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

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

Gio trnh o to Visual Basic 6.0


k.

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

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

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

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

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

Sa 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/262

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 dng
ID
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/262

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

Gio trnh o to Visual Basic 6.0

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

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 i. Tuy
nhin, mt vi iu khin khng th co gin, v d nh hp kt hp(combo box)

FPT Software Solution

Trang:36/262

Gio trnh o to Visual Basic 6.0


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

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

FPT Software Solution

Trang:37/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:38/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:39/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:40/262

Gio trnh o to Visual Basic 6.0

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
iu khin Hierarchical FlexGrid
iu khin ImageComBo
iu khin Month View

FPT Software Solution

Trang:41/262

Gio trnh o to Visual Basic 6.0

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:42/262

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:43/262

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:44/262

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:45/262

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:46/262

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:47/262

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
Black
Normal
100 Points
Right
Left

Default
Default
Default

Chp nhn
Thot
Hng dn
Thm mi
Xo
Sa
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:48/262

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:49/262

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:50/262

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

Report body 1
Report body 1

Report body 2
Report body 2

Report body 3
Report body 3

Total row 4
Report body 4
Report body 4

Total row 4
(Page number) 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 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:51/262

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-points) SHIFT + SHIFT + F9
Xem menu cm ng cnh
SHIFT + F10

FPT Software Solution

Trang:52/262

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 chng 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
Hm ny tr v zero. Khi VB gp tn mi, n to ra mt bin khc vi tn .

FPT Software Solution

Trang:53/262

Gio trnh o to Visual Basic 6.0

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
Bin ch tn ti v hot ng trong
th tc
Bin ch tn ti v hot ng trong
m-un

Public
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.
5.4.5.1 Khai bo hng
|Public|private|Const<tn hng>[As<kiu d liu>]= <biu thc>

FPT Software Solution

Trang:54/262

Gio trnh o to Visual Basic 6.0


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 m-un
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 0255), 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
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.

FPT Software Solution

Trang:55/262

Gio trnh o to Visual Basic 6.0


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
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
FPT Software Solution

Trang:56/262

Gio trnh o to Visual Basic 6.0


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
Hm VarType kim tra kiu d liu
Gi tr VarType
Gii thch
0 vbEmpty
Khng cha g c
1 vbNull
Khng c d liu hp l
2 vbInteger
D liu Integer dng chun
FPT Software Solution

Trang:57/262

Gio trnh o to Visual Basic 6.0


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

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

Chuyn i gia cc kiu d liu

Hm chuyn i
Cbool
Cbyte

FPT Software Solution

i sang kiu
Boolean
Byte

Trang:58/262

Gio trnh o to Visual Basic 6.0


Ccur
CDate
CDbl
Cint
CLng
CSng
Cstr
Cvar
CVErr

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.11Kiu 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
Dim countersB(5) As String
For intX = 0 To 4
countersB(intX) = "Hello"
Next intX

FPT Software Solution

Trang:59/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:60/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:61/262

Gio trnh o to Visual Basic 6.0

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]
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>
FPT Software Solution

Trang:62/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:63/262

Gio trnh o to Visual Basic 6.0


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

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

FPT Software Solution

Trang:64/262

Gio trnh o to Visual Basic 6.0


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.

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
FPT Software Solution

Trang:65/262

Gio trnh o to Visual Basic 6.0

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 ShiptF8 s chy qua th tc.
Step Out: Nu im dng ang trong mt th tc, nhn Ctrl-Shift-F8
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:66/262

Gio trnh o to Visual Basic 6.0

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.
Tch nhm menu: Nu menu c kh nhiu mc, tt nht ta nn chia chng thnh
nhiu nhm nh.
FPT Software Solution

Trang:67/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:68/262

Gio trnh o to Visual Basic 6.0


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

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.

FPT Software Solution

Trang:69/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:70/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:71/262

Gio trnh o to Visual Basic 6.0


-

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:72/262

Gio trnh o to Visual Basic 6.0

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 CDROM, 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:73/262

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
strString = AnyCharacters
intNumber = 23456

FPT Software Solution

Trang:74/262

Gio trnh o to Visual Basic 6.0


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
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
FPT Software Solution

Trang:75/262

Gio trnh o to Visual Basic 6.0


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
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.
FPT Software Solution

Trang:76/262

Gio trnh o to Visual Basic 6.0


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.

7.4.1 Phng thc loadfile


C php: Object.LoadFile pathname, filetype
Pathname l ng dn n tp tin
FPT Software Solution

Trang:77/262

Gio trnh o to Visual Basic 6.0


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:78/262

Gio trnh o to Visual Basic 6.0

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:79/262

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 khin h thng

FPT Software Solution

Trang:80/262

Gio trnh o to Visual Basic 6.0


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:81/262

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, _
ByVal bInvert As Long) As Long

FPT Software Solution

Trang:82/262

Gio trnh o to Visual Basic 6.0


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:83/262

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 trnh goin API.
T menu Tools, chn Options m hp thoi Options. Chn tab Environment, nh
du vo tu chn Save Changes.

FPT Software Solution

Trang:84/262

Gio trnh o to Visual Basic 6.0


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:85/262

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()
Dim Multimedia As New MMedia
FPT Software Solution

Trang:86/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:87/262

Gio trnh o to Visual Basic 6.0


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:88/262

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

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

Project,
FPT Software Solution

chn

Components,
Trang:89/262

Gio trnh o to Visual Basic 6.0


chn vo hp nh du Microsoft
Windows Common Controls 6.0 .

FPT Software Solution

Trang:90/262

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
Close

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

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

10Lp 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.1

i 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.2

Modul 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

7.

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

Tham 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.4

S 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.5

Hu 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.1

To 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.2

S 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.3

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

0
*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.4

Khai 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.1

Thuc 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.2

Xc 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.1

Biu 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.2

To 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.3

Xc 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.4

To 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

tm hiu v cc cng c trong VB chng ta s cp ti


Add-in
Cc cng c trong add-in
Trnh ng gi v trin khai ng dng
Visual Basic cho php np v g b cc Add-in dng m rng mi
trng trong pht trin Visual Basic.

11.1 ADD-INS
T menu Add-ins, chn Add-ins manager.. hp thoi Add-in xut hin

11.2 Cc cng c trong ADD-INS


11.2.1Trnh ci t ng dng
L Trnh ng gi v trin khai ng dng s c ni r phn sau

11.2.2Trnh i tng d liu t ng


Ch c trn phin bn Professional v Enterprise ca VB 6
Trnh i tng d liu ( Data Object Wizard ) t ng to ra cc
i tng tng gia ( middle-tier object ) rng buc vi mi trng d
liu ( Data Environment ) hoc cc UserControl.
N cho php pht sinh cc on chng trnh to ra ngun d
liu hiu chnh v User Control hin th v thao tc cc d
liu thng qua cc th tc lu tr.
Lu rng, trc ht ta phi to mt Data Environment vi cc lnh
ly v hoc thao tc trn d liu trc khi dng Wizard ny.

Cc lnh ny bao gm :
Dng lnh SELECT
Cc lnh tu chn nh INSERT, UPDATE, DELETE
Add-In c dng khi ta cn :

To cc Recordset cho php cp nht t cc th tc lu tr


To cc User Control hin th v thao tc vi CSDL
T ng pht sinh chng trnh ca VISUAL BASIC th
hin mi lin h gia cc d liu.
To cc iu khin cho php hin th v thao tc vi cc
mi lin h tm kim.
Dng m t bng vn bn d hiu thay v mt gi tr kh
hiu.
C m t vn bn d hiu cho gi tr Null.

11.2.3Trnh xy dng d liu t ng


Ch c trn phin bn Professional v Enterprise ca VB 6
Trnh xy dng biu mu d liu ( Data Form Wizard ) c kt
hp vi trnh to ng dng ( Application wizard ), to biu (
Chart ) v li ( FlexGrid ).
Wizard ny c thit k t ng pht sinh cc biu mu Visual
Basic cha cc iu khin rng buc d liu v cc th tc dng
qun l thng tin dn xut t cc bng v cc cu truy vn.
Ta c th dng Wizard to cc biu mu t mt bng hay mt
cu truy vn, hoc mt biu mu kiu Master/Detail cha cc
mi quan h phc tp loi mt nhiu. Nu s dng in khin ta
c th dng biu mu kiu li hay kiu mng ( datasheet ) . Wizard
ch c dng kt ni vi kiu ADO.
Dng Wizard :

Thit k nhanh chng cc biu mu vi cc iu khin rng


buc vi ngun d liu.
To cc biu mu Master/Detail kiu mt mu tin, kiu li.
To nhanh chng cc khun mu cho biu mu da trn d
liu.

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


Xc nh loi c s d liu : L ODBC hay Access
Chn tn tp tin c s d liu v kiu rng buc ta mun s dng
trn biu mu. Bc ny dng cho nhng c s d liu khng phi
ODBC.
Chn kiu biu mu : C nhiu kiu :

Mt mu tin : mt thi im, ch mt mu tin hin th. y l


mc nh.
Bng d liu ( Datasheet ) :Biu mu hin th nhng trng c
chn theo dnh bng d liu ( Datasheet ) dng iu khin
DataGrid.
Master / Detail : Mu tin Master c nh dng l mt mu tin v
mu tin Detail l mt bng d liu ( Datasheet ). Khi d liu
trong Master thay i, d liu trong Detail t ng thay i
theo do lin kt gia 2 phn ny.
MS Hflex Grid: Biu mu hin th d liu xp theo bng.
MS Chart: Biu mu hin th d liu theo biu .
Chn rng buc
iu khin ADO
Dng chng trnh ca ADO
Dng lp d liu ( Data class )
Chn ngun cho mu tin
Chn iu khin ta mun xut hin trn biu mu v cho php
Wizard to chng trnh cho chng. l cc nt Add, Update,
Edit, Refresh, Close, Show Data Control.
Kt thc.
11.2.3.2To biu mu Master/ Detail

Xc nh c s d liu l ODBC hay Access


Chn biu mu (tng t phn to biu mu trc )
Xc nh ngun d liu cho phn Master
Xc nh ngun d liu cho phn Detail
Xc nh d liu cho kt ni mt-nhiu gia Master v
Detail.
Chn iu khin ta mun xut hin trn biu mu v cho
php Wizard to chng trnh cho chng. l cc nt Add,
Update, Edit, Refresh, Close, Show data control.
Kt thc

Biu mu cha iu khin d liu ADO


Thu thp cc thng tin cn thit kt ni vi mt ngun d liu
ODBC v cho php chn kiu rng buc. Bc ny ch xut hin
nu ta chn Remote ODBC bc nh dng c s d liu.

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.1Khi 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 Add-in, 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.1Cc 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.2Cc 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.1

B 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.2

Bn 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.
1.1.1.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.3

Recordset 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.4

Cc 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
Integer
Long

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

Long binary
( OLE Object )
Meno
Single type
Text
VarBinary

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

To 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.6

Dng 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


1.1.1.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.1

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

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

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.3.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.3.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.3.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.4

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

Cc 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.8

Chun 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.1

To mt giao din ngi s dng vi thit k

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 vi

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

Kt 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.2

To 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.3

Thao 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.4

Cc 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.1

Lp 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.2

S 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.3

S 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.1

Dng 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 tr
ny l false, nhng ngi khc c th m c s d liu.

Readonly
Connect
13.2.1.2

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

S 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]")

13.2.2.2

Trnh dng du trch dn

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

Ch 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.1

S 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.
BOF
Mu tin 1
Mu tin 2
...
EOF

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

Dng 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.3

Dng 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.4

Dng 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.5

S 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.6

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

S 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.1

S 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.2

S 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.3

Lp 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.4

S 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.5

s 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.1

To 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.2

S 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.1

Thit 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.2

Xem 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.1

Thi 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


1.
2.
3.
4.

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

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

Ci 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.2

Dng 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.3

Thi 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.4

S 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.1
Client
Application

Kin trc ca ODBC


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

To 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 ComponentsMDAC), 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.3

Truy 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.1

S 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:201/262

Gio trnh o to Visual Basic 6.0

15.3.1

Quy 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.2

Truy 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.
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)

FPT Software Solution

Trang:202/262

Gio trnh o to Visual Basic 6.0

15.3.3

Thit 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 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
FPT Software Solution

Trang:203/262

Gio trnh o to Visual Basic 6.0


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

M c s d liu

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
strConnect = "DSN=Novelty;" & _
"PWD=prince;" & _
"UID=randy;"
MyConn.EstablishConnection
End Sub

FPT Software Solution

Trang:204/262

Gio trnh o to Visual Basic 6.0


V d mu Tham kho v d trong n projectConnect.vbp trong th mc
\samples\PhanIV\23-rdo\Connect.

15.3.4

p 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
referene rdo 2.0
WithEvents Myconn As rdoconnection
Private Sub Form_Load()
Set Myconn = New rdoconnection
Myconn.conect = "DSN=novelty;" & _
"PWD=rince;" & _

FPT Software Solution

Trang:205/262

Gio trnh o to Visual Basic 6.0


"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:206/262

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:207/262

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

Gi th tc cha sn trong mt trnh thit k

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:208/262

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:209/262

Gio trnh o to Visual Basic 6.0

15.5.2

Dng 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 System-DSN. 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:210/262

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:211/262

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:212/262

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.
Tm lc : y l c ch qua logic chng trnh v d liu c nhm li
vi nhau.
FPT Software Solution

Trang:213/262

Gio trnh o to Visual Basic 6.0

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

To 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
9. Hp thoi Collection Builder xut hin. Trong Name, nhp tn ca lp tp
hp colOrder.

FPT Software Solution

Trang:214/262

Gio trnh o to Visual Basic 6.0


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#)
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:

FPT Software Solution

Trang:215/262

Gio trnh o to Visual Basic 6.0


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.

Hnh 16.4 Giao din ca m hnh ca h thng nhp ho n hng i tng


c 2 nt lnh.

FPT Software Solution

Trang:216/262

Gio trnh o to Visual Basic 6.0


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
For Each ThisOrder In AllOrders
curTotal = curTotal + ThisOrder.Price
Next
MsgBox "The total is " & curTotal, vbInformation
End Sub

FPT Software Solution

Trang:217/262

Gio trnh o to Visual Basic 6.0


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

S dng biu mu nh lp

-V d mu - To mt Instance ca biu mu Login


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.

FPT Software Solution

Trang:218/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:219/262

Gio trnh o to Visual Basic 6.0


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

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

FPT Software Solution

Trang:220/262

Gio trnh o to Visual Basic 6.0


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

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

M t
To mt i tng QueryDef.
To mt i tng Relation
To mt i tng TableDef

FPT Software Solution

Trang:221/262

Gio trnh o to Visual Basic 6.0


OpenRecordset
CreateProperty

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

FPT Software Solution

Trang:222/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:223/262

Gio trnh o to Visual Basic 6.0


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"
End Sub
Private Sub cmdFirst_Click()
mCustData.MoveFirst
End Sub
Private Sub cmdLast_Click()
mCustData.MoveLast
End Sub
Private Sub cmdNext_Click()

FPT Software Solution

Trang:224/262

Gio trnh o to Visual Basic 6.0


mCustData.MoveNext
End Sub
Private Sub cmdPrevious_Click()
mCustData.MovePrevious
End Sub
13. Thi hnh ng dng.

16.3.1

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

FPT Software Solution

Trang:225/262

Gio trnh o to Visual Basic 6.0


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 :

Hnh 16.6 D liu c xut di dng HTML v trnh by trong trnh duyt IE

16.3.2

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

FPT Software Solution

Trang:226/262

Gio trnh o to Visual Basic 6.0


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

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.

FPT Software Solution

Trang:227/262

Gio trnh o to Visual Basic 6.0

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.

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.

FPT Software Solution

Trang:228/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:229/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:230/262

Gio trnh o to Visual Basic 6.0

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:231/262

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

Cu 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.
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 ).

FPT Software Solution

Trang:232/262

Gio trnh o to Visual Basic 6.0


Cu trc Client / Server gii quyt vn ny. Trong mt cu trc 3 tng (threetier), 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).

My
Client

Thnh phn ActiveX


Truy cn cs dliu
Cung cp cc i t ng cho Client

CSDL

My Server

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:233/262

Gio trnh o to Visual Basic 6.0

My
Client

Thnh phn ActiveX


Truy cn cs dliu
Cung cp cc
i t ng cho Client

My tnh trung gian

CSDL

My Server

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:234/262

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

TO NG DNG DCOM U TIN

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

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

FPT Software Solution

Trang:235/262

Gio trnh o to Visual Basic 6.0


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 snap-in 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
Private Sub Form_Unload(Cancel As Integer)
Set mCust = Nothing

FPT Software Solution

Trang:236/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:237/262

Gio trnh o to Visual Basic 6.0

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.
Option Explicit
' References DAO 3.51

FPT Software Solution

Trang:238/262

Gio trnh o to Visual Basic 6.0


' 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
Private Sub cboState_Click()
Dim vData As Variant
Dim x As Long

FPT Software Solution

Trang:239/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:240/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:241/262

Gio trnh o to Visual Basic 6.0


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


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 :

FPT Software Solution

Trang:242/262

Gio trnh o to Visual Basic 6.0


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

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.
17.1.1.3.4.3 Tin hnh ng b ho (Synchronization) vi Microsoft Access

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).
FPT Software Solution

Trang:243/262

Gio trnh o to Visual Basic 6.0


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) c
( cng nh cc i tng c sao chp vo lc ng b
c s d liu Access nh ho hay khng.
bo co v m-dun chng
trnh ).
Phng thc
Database
To mt bn sao t Bn thit k
MakeReplica
gc.
Phng thc
Database
ng b ho mt bn sao c s d
Synchronize
liu vi Bn thit k gc.
Thuc tnh
TableDef
Cho php cung cp mt mnh
ReplicaFilter
WHERE trong cu SQL kim
sot cc mu tin trong bng c
sao chp ( thuc tnh ny h tr
Sao chp mt phn ).
Thuc tnh
Relation
i vi Sao chp mt phn, n
PartialReplica
cho php ta xc nh nhng quan

FPT Software Solution

Trang:244/262

Gio trnh o to Visual Basic 6.0

Thuc tnh
ReplicableBool
i.

Database

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

FPT Software Solution

Trang:245/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:246/262

Gio trnh o to Visual Basic 6.0


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

To i tng trong c s d liu h tr sao chp

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

FPT Software Solution

Trang:247/262

Gio trnh o to Visual Basic 6.0


iii.

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

FPT Software Solution

Trang:248/262

Gio trnh o to Visual Basic 6.0


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
v.
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.
Private Sub cmdSynch_Click()
Dim db As Database
Set db = OpenDatabase(MasterDBPath)
Screen.MousePointer = vbHourglass
db.Synchronize ReplicaDBPath
Screen.MousePointer = vbNormal
End Sub
Thuc tnh MousePointer ca i tng Screen dng bo cho ngi s dng
rng Replication ang tin hnh.
vi.

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

FPT Software Solution

Trang:249/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:250/262

Gio trnh o to Visual Basic 6.0


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)
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")
FPT Software Solution

Trang:251/262

Gio trnh o to Visual Basic 6.0


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

FPT Software Solution

Trang:252/262

Gio trnh o to Visual Basic 6.0


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:253/262

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

Tm 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:254/262

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

Ci 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:255/262

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

S 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.4

Dng 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:256/262

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

Lm 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 c kt

FPT Software Solution

Trang:257/262

Gio trnh o to Visual Basic 6.0


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 dng
snapshot)
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.
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
FPT Software Solution

Trang:258/262

Gio trnh o to Visual Basic 6.0

adBookmark
adDelete
adHoldRecords
adMovePrevious
adResync
adUpdate
adUpdateBatch

18.1.6

c dng kt hp vi thuc tnh Pagesize v PageCount


ca i tng Recordset cho php xc nh trang cha bn
ghi hin hnh.
C th quy nh nh du trang sch trong Recordset
Bn ghi c xo trong Recordset
Bn ghi c tr v t c s d liu m khng cn ghi sa i
hin c vo server.
C th cun ti lui trong Recordset
Phng thc ny c sn
Recordset cp nht c
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

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

18.1.7

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

FPT Software Solution

Trang:259/262

Gio trnh o to Visual Basic 6.0


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
- Lu bn ghi bng thi hnh phng thc Update

18.1.8

To 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.
FPT Software Solution

Trang:260/262

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:261/262

Gio trnh o to Visual Basic 6.0


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:262/262

You might also like