You are on page 1of 261

Gio trnh o to Visual Basic 6.

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

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

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

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

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

4.2.7 Mt s thuc tinh thng dng: ......................................................................39 4.2.8 4.2.9 Hp danh sch (Listbox)......................................................................39 4.3 Cc iu khin M i .......................................................................................... 40
5 Nhp mn lp trnh ..........................................................................................................41

5.1 Chun lp trnh (Coding convention)................................................................ 41 5.1.1 Coding conventions ......................................................................................41 5.1.2 Form design standard....................................................................................46 5.1.3 Report design standard (for Crystal Report).................................................49 5.1.4 Database design standards ............................................................................50 5.2 Thit k trc khi vit chng trnh ................................................................. 51 5.3 Cc thao tc thng dng trong ca s Code...................................................... 51 5.3.1 Son tho Code .............................................................................................51 5.3.2 Mt s chc nng t ng.............................................................................52 5.4 Bin hng v cc kiu d liu ........................................................................... 52 5.4.1 Khai bo bin ................................................................................................52 5.4.2 Khai bo ngm ..............................................................................................52
FPT Software Solution Trang:2/261

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

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

7.1 M hnh FSO(File System Object model)......................................................... 72 7.2 X l cc tp tin vi cc dng lnh v hm I/O c in ................................... 72 7.2.1 Cc kiu truy cp tp tin ...............................................................................72 7.3 Cc iu khin trn h thng tp tin.................................................................. 75 7.3.1 Hp danh sch a......................................................................................75
FPT Software Solution Trang:3/261

Gio trnh o to Visual Basic 6.0 7.3.2 Hp danh sch th mc.................................................................................75 7.3.3 Hp danh sch tp tin....................................................................................76 7.4 iu khin richtextbox ...................................................................................... 76 7.4.1 Phng thc loadfile.....................................................................................77 7.4.2 Phng thc savefile.....................................................................................77
8 S dng DLL v Windows API........................................................................................78

8.1 DLL v cu trc ca Windows.......................................................................... 78 8.1.1 Cc hp thoi thng dng .............................................................................78 8.2 WIN API ........................................................................................................... 79 8.3 S dng API ...................................................................................................... 80 8.3.1 Tm kim API ...............................................................................................80 8.3.2 Cc DLL ca Windows.................................................................................80 8.3.3 Gi API .........................................................................................................81 8.4 Dng API khai thc kh nng Multimedia........................................................ 84 8.4.1 Lp multimedia.............................................................................................84
9 Thm tr gip vo ng dng ...........................................................................................96

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

10.1 Gii thiu v i tng ................................................................................... 99 10.1.1 i tng trong VB .................................................................................100 10.1.2 Modul Lp ...............................................................................................100 10.1.3 Tham s tu chn.....................................................................................105 10.1.4 S kin ca lp ........................................................................................106 10.1.5 Hu i tng ..........................................................................................107 10.2 Bin i tng .............................................................................................. 108 10.2.1 To iu khin lc thi hnh......................................................................108 10.2.2 S kin ca mng iu khin ...................................................................109 10.2.3 Qun l iu khin nh bin i tng ...................................................110 10.2.4 Khai bo bin i tng...........................................................................112
FPT Software Solution Trang:4/261

Gio trnh o to Visual Basic 6.0 10.3 Tp hp ......................................................................................................... 114 10.3.1 Thuc tnh Controls .................................................................................114 10.3.2 Xc nh iu khin trn biu mu ..........................................................114 10.4 Biu mu MDI .............................................................................................. 117 10.4.1 Biu mu con (Child Form) .....................................................................117 10.4.2 To Instance ca biu mu.......................................................................117 10.4.3 Xc nh biu mu ...................................................................................118 10.4.4 To danh sch ca s ...............................................................................118
11 Cng c trong VB6.........................................................................................................120

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

12.1 C s d liu l g? ....................................................................................... 128 12.1.1 B my (Engine) c s d liu l g? ......................................................128 12.1.2 Bn v trng...........................................................................................129 12.1.3 Recordset l g ?.......................................................................................130 12.1.4 Cc kiu c s d liu..............................................................................130 12.1.5 To lc c s d liu ........................................................................131 12.1.6 Dng Visual Basic to mt c s d liu............................................131 12.1.7 Cc mi quan h.......................................................................................141
FPT Software Solution Trang:5/261

Gio trnh o to Visual Basic 6.0 12.1.8 Chun ho ................................................................................................142 12.2 S dng ca s xem d liu.......................................................................... 144 12.3 To trnh thit k mi trng d liu............................................................ 146 12.3.1 To mt giao din ngi s dng vi thit k DATAENVIRONMENT 147 12.4 S dng iu khin d liu to giao din ngi s dng......................... 148 12.4.1 Kt ni vi mt c s d liu v lm vic vi cc mu tin .....................149 12.4.2 To mt giao din ngi s dng c bn.................................................151 12.4.3 Thao tc trn cc mu tin thng qua iu khin ADO Data ....................152 12.4.4 Cc thuc tnh quan trng khc ca iu khin ADO DATA .................156 12.5 Tng kt ........................................................................................................ 157 12.6 Hi v p .................................................................................................... 158
13 Cc i tng truy cp d liu.......................................................................................159

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

Gio trnh o to Visual Basic 6.0 13.6 To i tng thao tc trn cu trc ca mt CSDL ............................... 173 13.6.1 To mt CSDL.........................................................................................173 13.6.2 S dng i tng TableDef thao tc vi bng ..................................174 13.7 Lm vic vi ti liu v ni cha CSDL ...................................................... 179 13.8 To v s dng cc thuc tnh hiu chnh ca i tng DataBase ............. 180 13.9 Tng kt ........................................................................................................ 181 13.10 Hi v p ............................................................................................. 182
14 Thit lp bo co v Xut thng tin...............................................................................183

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

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

FPT Software Solution

Trang:7/261

Gio trnh o to Visual Basic 6.0 15.5.2 Dng Microsotf Query xy dng chui SQL trong trnh thit k UserConnection.....................................................................................................209 15.6 S dng d liu vi i tng rdorerultset................................................... 210 15.7 Thi hnh truy vn vi i tng rdoQuery................................................... 210
16 Truy cp c s d liu vi lp........................................................................................212

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

17.1 Client / Server v cc thnh phn ................................................................. 231 17.1.1 Cu trc Cilent/Server Three- Tier ..........................................................231 17.2 252
18 i tng d liu ActiveX..............................................................................................253

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

FPT Software Solution

Trang:8/261

Gio trnh o to Visual Basic 6.0

2 Lm quen vi visual basic 6.0


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

2.1.2 Xy dng tnh nng Calendar


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

FPT Software Solution

Trang:9/261

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

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

Gio trnh o to Visual Basic 6.0

2.2.2 Khai thc th mnh ca cc iu khin m rng


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

2.3 Lm vic vi mi trng lp trnh trong Visual basic


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

FPT Software Solution

Trang:12/261

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

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

2.3.3 Thm cc iu khin vo hp cng c


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

2.3.4 nh hng thng qua ca s form v code


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

2.3.5 Qun l ng dng vi project explorer


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

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

2.3.7 Hin th IDE


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

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

Gio trnh o to Visual Basic 6.0

3 Tm hiu Visual basic 6


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

3.1.2 Thuc tnh


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

FPT Software Solution

Trang:16/261

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 oi 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/261

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, hic g vo hp vn bn. kiu s kin ny c gi l s kin khi to bi ngi s dng, v ta s phi lp trnh cho chng. cc s kin thng dng S kin Change Xy ra khi Ngi s dng sa i chui k t trong hp kt hp hoc hp vn bn Click Ngi s dng dng chut click ln i tng Dblclick Ngi s dng dng chut click p ln i tng DragDrop Ngi s dng ko r mt i tng sang ni khc DragOver Ngi s dng ko r mt i tng ngang qua mt iu khin khc GotFocus a mt i tng vo tm ngm ca ngi s dng KeyDown Ngi s dng nhn mt nt trn bn phm trong khi mt i tng ang trong tm ngm KeyPress Ngi s dng nhn v th mt nt trn bn phm trong khi mt i tng ang trong tm ngm KeyUp Ngi s dng th mt nt trn bn phm trong khi mt i tng ang trong tm ngm LostFocus a mt i tng ra khi tm ngm MouseDown Ngi s dng nhn mt nt chut bt k trong khi con tr chut ang nm trn mt i tng MouseMove Ngi s dng di chuyn con tr chut ngang qua mt i tng MouseUp Ngi s dng th nt chut trong khi con tr chut ang nm trn mt i tng

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


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

Gio trnh o to Visual Basic 6.0 Mt v d khc, lm mt biu mu xut hin v bin mt trn mn hnh c. thuc tnh xut hin frmMyForm.Visible =True Bin mt frmMyForm.Visible =False d. phng thc xut hin frmMyForm.Show Bin mt frmMyForm.Hide

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

Thuc tnh Caption c nh du, ngha l ta c th sa i thuc tnh ny. tng thuc tnh c mt ha tr mc nh. ta c thr sa i bng tay trong lc thit k, hoc bng chng trnh trong lc thi hnh. mt biu mu c khong 40 thuc tnh c hin th trong lc thit k, nhng ta c th truy cp mt s thuc tnh khc vo trong lc thi hnh. Ta c th xem ton b thuc tnh xp xp theo th t bng ch ci bng cch chn vo tab Alphabetic, hoc xem theo tng nhm bng cch chn vo tab Categozized. ta c th m ca s Properties bng nhiu cch: a. nhn chutvo biu mu chpnj n nh mt i tng hin hnh, nhn phm F4 hin th ca s Properties b. Hoc l t menu_View, chn Properties c. hoc l nhn nt phi chut ln biu mu, ta s thy mt menu hin th. chn Properties.
FPT Software Solution Trang:19/261

Gio trnh o to Visual Basic 6.0

3.1.7 Vit chng trnh s dng thuc tnh, phng thc v s kin
Ta th vit chng trnh Movelt dng di chuyn ca s. Movelt c mt ca s tn l frmMove, cha 4 nt lnh 4 gc mn hnh. khi thi hnh nhn vo mot trong cc nt ny s lm ca s di chuyn ti gc mn hnh tng ng. gia mn hnh s l mt nhn hiu s thng bo tc thi cc di chuyn ca chut cng nh nt lnh no c Focus. cc bc tng qut d to Movelt: a. To giao din ngi s dng (GUI) b. Vit th tc Form_Load() c. Vit th tc click() d. thm cc thng bo s kin 3.1.7.1 To GUI 1. 2. 3. 4. 5. t menu File, chn New Project m hp thoi n. Chn kiu standard EXE vo ca s Properties, sa tn biu mu thnh frmMove thm 4 nt lnh vo 4 gc biu mu. ta s xa li v tr chnh xc hin cho ng bng chng trnh nhn p chut ln bi mu to th tc Form_Load() i thuc tnh BorderStyle ca biu mu thnh 1- Fixed Single cm biu mu co gin khi chng trnh thi hnh. sau i cc thuc tnh Alignment ca nhn thnh 2- Center v BorderStyle ca nhn thnh 1- Fixed Single Lu biu mu vi tn l frmmove v lu n vi tn l Movelt.vbp

6.

3.1.7.2 Vit th tc Form _Load Th tc ny chun b mt s khi to cho biu mu trc khi n c hin th a. t thuc tnh Caption cho CommandButtion b. Dt chui k t khi to cho nhn c. t chui k t cho thanh tiu ca biu mu d. t v tr cho 4 nt lnh nhn v biu mu trn mn hnh
FPT Software Solution Trang:20/261

Gio trnh o to Visual Basic 6.0 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 'Set the size of the label lblNotify.Height = 360
FPT Software Solution Trang:21/261

Gio trnh o to Visual Basic 6.0 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/261

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

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:24/261

Gio trnh o to Visual Basic 6.0

3.2.2 Ca s Project Explorer


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

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

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

3.2.4 i thuc tnh n


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

Gio trnh o to Visual Basic 6.0 2. trong menu ng cnh, Chn Project Name Properties. Hp thoi Project Properties xut hin 3. Hoc l t menu Properties, chn Project Name Properties

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

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

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

FPT Software Solution

Trang:26/261

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:27/261

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

cch 2: -

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 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:28/261

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:29/261

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:30/261

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:31/261

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:32/261

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:33/261

Gio trnh o to Visual Basic 6.0

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

4.1.1 Thao tc vi iu khin


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

FPT Software Solution

Trang:34/261

Gio trnh o to Visual Basic 6.0 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) 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

FPT Software Solution

Trang:35/261

Gio trnh o to Visual Basic 6.0 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. 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
FPT Software Solution Trang:36/261

Gio trnh o to Visual Basic 6.0 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.

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
FPT Software Solution Trang:37/261

Gio trnh o to Visual Basic 6.0 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 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.

FPT Software Solution

Trang:38/261

Gio trnh o to Visual Basic 6.0 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.

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.
FPT Software Solution Trang:39/261

Gio trnh o to Visual Basic 6.0 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:40/261

Gio trnh o to Visual Basic 6.0

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

5.1 Chun lp trnh (Coding convention)


Formatted: Bullets and Numbering

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 Ado Ani Chk Cbo Cmd dlg com ctr dat

Example pnlGroup adoBiblio aniMailBox chkReadOnly cboEnglish cmdExit dlgFileOpen comFax ctrCurrent datBiblio
Trang:41/261

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 lwhsb lwlst lwopt lwtxt lwvsb lin lst lvw mpm mps mci mnu mvw ch mfg mst ole opt pic clp

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 lwhsbVolume lwlstCostCenters lwoptIncomeLevel lwoptStreet lwvsbYear linVertical lstPolicyCodes lvwHeadings mpmSentMessage mpsSession mciVideo mnuFileOpen mvwPeriod chSalesbyRegion mfgClients mstFirst oleWorksheet optGender picVGA clpToolbar
Trang:42/261

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

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 Boolean Byte Currency Date (Time) Double Error Integer Long Object Single String User-defined type Variant Prefix bln byt cur dtm dbl err int lng obj sng str udt vnt Example

Variable scope prefixes


FPT Software Solution Trang:43/261

Gio trnh o to Visual Basic 6.0 Scope Global Prefix Example G gstrUserName mblnCalcInProgre ss dblVelocity Note 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 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 Command Connection Field Field Collection Parameter Parameter Collection Recordset Prefix Cm Cn Fld flds prm prms Rs Example 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:44/261

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

FPT Software Solution

Trang:45/261

Gio trnh o to Visual Basic 6.0 Grouping Constants 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.

Formatted: Bullets and Numbering

5.1.2 Form design standard


Common conventions in form design
FPT Software Solution Trang:46/261

Gio trnh o to Visual Basic 6.0 Items 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 Conventions Note

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

Chp nhn Thot Hng dn Thm mi Xo Sa ng Ghi

Order of buttons in from (Left to right): Thm mi-Ghi-Sa-Xo-Chp nhn-ThotH-ng dn Default button Chp nhn Cancel button ng

Sample: Form controls appearance conventions Control Check box


FPT Software Solution Trang:47/261

Property

Value

Note

Gio trnh o to Visual Basic 6.0 All colors Combo box, down list box dropHeight All colors Command button Height Back color Form Border style Back color Startup position Label Back color Vervical scroll bar Width Horizontal scroll bar Height Option button Height Text box Height All color 285 Points Default
Formatted: Bullets and Numbering

Default 315 Default 375 Points Button face Fixed length Button face CenterScreen Button face 260 Points 260 Points 255 Points

VB Default VB Default VB Default

FPT Software Solution

Trang:48/261

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 Report title Font name Font style Justify Space between report title and collumn heading Colunm heading Font name Font style Font size Justify Before row spacing After row spacing Report (data) body Font name Font style Font size Justify Row spacing Total row Font name Font style Font size Justify Position
FPT Software Solution

Property

Setting .VnArialH Bold Paper center 50 Points

Note

Should be reviewed

.VnArialNarrow Bold 10 Column left 6 Points 6 Points

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

that
Trang:49/261

Gio trnh o to Visual Basic 6.0 Grouping line Width Report boder Width 1 Point Boder column title only Page number Font name Font size Font style Position Style Left sub title Font name Font size Font style Justify Right sub title Font name Font size Font style Sample: Left subtitle
Column heading 1 Report body 1 Report body 1
Report body 1 Report body 1

1 Point

.VnArial 9 Normal Right, bottom of page (Report footer) Page/Total page .VnArial 10 Normal Margin left .VnArial 10 Normal

Report title
Column heading 2 Report body 2 Report body 2
Report body 2 Report body 2

Right subtitle
Column heading 4 Report body 4 Report body 4

Column heading 3 Report body 3 Report body 3


Report body 3 Report body 3

Total row 4
Report body 4 Report body 4

Total row 4
(Page number) 1/5
Formatted: Bullets and Numbering

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.

Deleted: no

FPT Software Solution

Trang:50/261

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:51/261

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:52/261

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 Private Th tc Bin ch tn ti v hot ng trong th tc M-un 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:53/261

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:54/261

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:55/261

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
FPT Software Solution Trang:56/261

Gio trnh o to Visual Basic 6.0 2 vbInteger 3 vbLong 4 - vbsingle 5 vbDouble 6 vbCurrency 7 vbDate 8 vbString 9 vbObject 10 vbError 11 vbBoolean 12 vbVariant 13 vbDataObject 14 vbDecimal 17 vbByte 36 UserDefinedType 8192 - vbArray D liu Integer dng chun D liu kiu Long Integer D liu kiu chm ng single D liu kiu chm ng Double Kiu Currency Kiu ngy gi Kiu chui n gin Kiu i tng C mt i tng Error Kiu gi tr Boolean chun Kiu Variant Kiu DAO chun Gi tr thuc h thp phn Decimal Kiu Byte Kiu do ngi dng nh ngha Kiu mng

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

Hm chuyn i Cbool
FPT Software Solution

Gio trnh o to Visual Basic 6.0 Cbyte Ccur CDate CDbl Cint CLng CSng Cstr Cvar CVErr Byte Currency Date Double Integer Long Single String Variant Error

Lu rng gi tr truyn cho hm phi hp l, ngha l phi thuc khong ca kiu kt qu. Nu khng VB s bo li. 5.4.5.11 Kiu mng(Array)

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

5.4.5.11.1

Mng c chiu di c nh

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

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

5.4.5.11.2

Mng ng(dynamic Array)

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

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:60/261

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 .
FPT Software Solution Trang:61/261

Gio trnh o to Visual Basic 6.0 Select Case <biu thc kim tra> Case <danh sch biu thc 1> Khi lnh 1 Case <danh sch biu thc 2> Khi lnh 2 .................... Case else Khi lnh n End Select Mi danh sch biu thc cha mt hoc nhiu gi tr, cc gi tr cch nhau bng du phy. Mi khi lnh c th cha t 0 n nhiu dng lnh. Nu c hn mt Case tho mn iu kin th Case u tin c thc hin. Case else khng nht thit phi c, dng trong trng hp cn li ca cc Case trc.

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

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:63/261

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:64/261

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:65/261

Gio trnh o to Visual Basic 6.0

6 Lp trnh x l giao din


6.1 Menu

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

6.1.1 Dng trnh son tho menu to menu


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

Gio trnh o to Visual Basic 6.0 Tch nhm menu: Nu menu c kh nhiu mc, tt nht ta nn chia chng thnh nhiu nhm nh.

6.1.2 Vit chng trnh iu khin menu


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

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

6.2.1 Thng ip(Message box)


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

FPT Software Solution

Trang:67/261

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

6.2.2 Hp nhp(Input box)


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

6.2.3 Cc hp thoi thng dng(Common dialog)


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

FPT Software Solution

Trang:68/261

Gio trnh o to Visual Basic 6.0

6.2.4 Hp thoi hiu chnh


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

6.3 Thanh cng c(ToolBar)


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

6.3.2 Nhng i tng


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

6.4 Thanh trng thi


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

FPT Software Solution

Trang:69/261

Gio trnh o to Visual Basic 6.0

6.5 X l chut v bn phm


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

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

6.5.2 Hiu chnh con tr chut


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

6.5.3 S kin bn phm


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

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

FPT Software Solution

Trang:71/261

Gio trnh o to Visual Basic 6.0

7 X l tp tin
7.1 M hnh FSO(File System Object model)
Cung cp cho ng dng kh nng to, thay i, di chuyn, xo cc th mc, d tm xem chng c tn ti hay khng, nu c th u. N cng cho php ly cc thng tin v th mc nh tn, ngy to, ngy sa i gn nht... M hnh FSO cha trong th vin kch bn (Scripting type library- csrrun.dll), h tr to v thao tc vi tp tin vn bn thng qua i tng TextStream. N cha h tr tp tin nh phn, ta phi dng lnh Open vi c Binary. M hnh ny cha cc i tng sau: Gii thch i tng 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:72/261

Gio trnh o to Visual Basic 6.0 Print # Put Type.. End type Write # X X 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
FPT Software Solution Trang:73/261

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

Sau khi nh ngha kiu mu tin, khai bo cc bin m ng dng cn x l 1 tp tin m truy cp ngu nhin: Public Employee as worker

7.2.1.2.1 M tp tin ngu nhin


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

7.2.1.3.1 M tp tin nh phn


C php lnh: Open pathname For Binary As filenumber

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


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

Gio trnh o to Visual Basic 6.0 Mi bn ghi ch cha mt s byte cn thit do cc trng c chiu di bin i. Tr ngi l ta khng th truy cp bn ghi mt cch ngu nhin, m ta phi truy cp tun t theo di ca mi bn ghi. ta c th tm mt byte trong tp tin, ngng khng th bit byte thuc bn ghi no.

7.3 Cc iu khin trn h thng tp tin


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

7.3.1 Hp danh sch a


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

7.3.2 Hp danh sch th mc


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

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

7.3.3 Hp danh sch tp tin


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

7.4 iu khin richtextbox


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

Gio trnh o to Visual Basic 6.0

7.4.1 Phng thc loadfile


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

7.4.2 Phng thc savefile


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

FPT Software Solution

Trang:77/261

Gio trnh o to Visual Basic 6.0

8 S dng DLL v Windows API


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

Hnh 9.1 Windows

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

8.1.1 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:78/261

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

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:80/261

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

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:82/261

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.
FPT Software Solution Trang:83/261

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

8.4 Dng API khai thc kh nng Multimedia


8.4.1 Lp multimedia
Lp ny cha mt b cc lnh multimedia thng dng. Khi mt i tng c to t lp, n mang nhng chc nng tng t mt iu khin c th xem hay quy nh thuc tnh, cc phng thc. N che i cc lnh gi API. Cc phng thc m lp ny h tr: Phng thc MmOpen MmClose MmPause MmStop MmSeek MmPlay M t M tp tin (video, m thanh, nhc, v.v...) chun b Play ng tp tin ang m, ngn cm hot ng Play Dng Play trn tp tin hin hnh Dng hn Play Tm mt v tr trong tp tin Play tp tin ang m, pht ra m thanh trong loa

Cc phng thc ny l nhng hm ring r trong lp MMedia.cls v cho php s dng cc API theo nhiu cch. Sau y l cc th tc thuc tnh trong tp tin ngun: Thuc tnh Filename Length Position Satus Wait M t Tn ca tp tin ang m Chiu di ca tp tin ang m V tr hin hnh trong tp tin ta c th kt hp vi thuc tnh Length hin th trng thi Play Mt t cho bit trng thi tp tin (Play, dng tm, dng hn, v.v... ) Nu l True, chng trnh s ch n khi Play xong mi lm tip. Nu l False, n thi hnh theo kiu a nhim

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

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.
FPT Software Solution Trang:85/261

Gio trnh o to Visual Basic 6.0


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

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

Bn dng k s dng i tng multimedia m tp tin dng phng thc mmOpen v Play bng phng thc mmPlay.
If CommonDialog1.Filename <> "" Then Multimedia.mmOpen CommonDialog1.Filename Multimedia.mmPlay End If

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

FPT Software Solution

Trang:86/261

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

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

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

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

FPT Software Solution

Trang:88/261

Gio trnh o to Visual Basic 6.0 Project, chn Components, chn vo hp nh du Microsoft Windows Common Controls 6.0 .

FPT Software Solution

Trang:89/261

Gio trnh o to Visual Basic 6.0

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 FPT Software Solution Trang:90/261

Gio trnh o to Visual Basic 6.0


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)) FPT Software Solution Trang:91/261

Gio trnh o to Visual Basic 6.0


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)) FPT Software Solution Trang:92/261

Gio trnh o to Visual Basic 6.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 FPT Software Solution Trang:93/261

Gio trnh o to Visual Basic 6.0


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

8.4.1.4.5 Chi trn tp tin


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

8.4.1.4.6 Cp nht thanh din tin v iu khin nhn.


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

Cui cng cn phi ngng li khi t n cui tp tin. C th thc hin iu ny bng cch so snh gi tr hin hnh v gi tr Max ca thanh din tin. Khi chng bng nhau, tp tin c ng bng phng thc mmClose. Sau , cm Timer ngn hm ny chy cho n khi m tp tin khc.

8.4.1.4.7 Tm tt cc lnh ca MCI


Lnh Play Pause Stop Seek Status Mode Status Position Status Length M t Chi mt tp tin Tm dng chi, sn sng bt u mi lc Dng hn - cn chuyn n mt v tr no tip tc chi Theo sau l mt con s, chuyn n v tr trong tp tin Tr v mt chui k t th hin trng thi tp tin(ang choi, ang m, tm dng, dng hn....) Tr v v tr tp tin m playback t n Tr v chiu di tp tin v h tr da con s tr v t Status
Trang:94/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 Position vo mt ng cnh c ngha no . ng tp tin v gii phng vng nh n chim trc

Close

Ngoi ra MCI cn h tr mt s lnh khc v mt s lnh c bit cho mi nh dng tp tin.

FPT Software Solution

Trang:95/261

Gio trnh o to Visual Basic 6.0

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.
FPT Software Solution Trang:96/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:97/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:98/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:99/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:100/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:101/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:102/261

Gio trnh o to Visual Basic 6.0 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...
FPT Software Solution Trang:103/261

Gio trnh o to Visual Basic 6.0

10.1.2.1.2 Phng thc ca Lp


V d mu Thm phng thc cho lp

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

7.

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


FPT Software Solution Trang:104/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:105/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:106/261

Gio trnh o to Visual Basic 6.0 .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.
FPT Software Solution Trang:107/261

Gio trnh o to Visual Basic 6.0 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)
FPT Software Solution Trang:108/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:109/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:110/261

Gio trnh o to Visual Basic 6.0 Tag Hp Anything (nhn mi Name th) Index Tag N5 txtValidate 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.
Trang:111/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 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 ComboBox DirListBox Frame CommandButton DriveListBox HscrollBar MDIForm FileListBox Image
Trang:112/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 Label OptionButton TextBox Line OLE Timer ListBox PictureBox VscrollBar 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)
FPT Software Solution Trang:113/261

Gio trnh o to Visual Basic 6.0 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 :
FPT Software Solution Trang:114/261

Gio trnh o to Visual Basic 6.0 : 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
FPT Software Solution Trang:115/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:116/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:117/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:118/261

Gio trnh o to Visual Basic 6.0 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 1 2 3 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.

FPT Software Solution

Trang:119/261

Gio trnh o to Visual Basic 6.0

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 tr-ng 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.1 Trnh ci t ng dng

L Trnh ng gi v trin khai ng dng s -c ni r phn sau

11.2.2

Trnh i tng d liu t ng

Ch c trn phin bn Professional v Enterprise ca VB 6 Trnh i t-ng d liu ( Data Object Wizard ) t ng to ra cc i t-ng tng gia ( middle-tier object ) rng buc vi mi tr-ng d liu ( Data Environment ) hoc cc UserControl. N cho php pht sinh cc on ch-ng trnh to ra ngun d liu hiu chnh v User Control hin th v thao tc cc d liu thng qua cc th tc l-u tr.
FPT Software Solution Trang:120/261

Gio trnh o to Visual Basic 6.0 L-u rng, tr-c ht ta phi to mt Data Environment vi cc lnh ly v hoc thao tc trn d liu tr-c 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 l-u tr To cc User Control hin th v thao tc vi CSDL T ng pht sinh ch-ng 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.3

Trnh 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 l-i ( 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 l-i 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 l-i. To nhanh chng cc khun mu cho biu mu da trn d liu. 11.2.3.1 To biu mu vi mt bng hay kiu li ( hay datasheet)

Xc nh loi c s d liu : L ODBC hay Access

FPT Software Solution

Trang:121/261

Gio trnh o to Visual Basic 6.0 Chn tn tp tin c s d liu v kiu rng buc ta mun s dng trn biu mu. B-c 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 tr-ng -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 ch-ng 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 ch-ng trnh cho chng. l cc nt Add, Update, Edit, Refresh, Close, Show Data Control. Kt thc. 11.2.3.2 To biu mu Master/ Detail

Xc nh c s d liu l ODBC hay Access Chn biu mu (t-ng t phn to biu mu tr-c ) 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 ch-ng 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. B-c ny ch xut hin nu ta chn Remote ODBC b-c nh dng c s d liu.

11.2.4

Trnh 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
FPT Software Solution Trang:122/261

Gio trnh o to Visual Basic 6.0 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.5

Trnh thit k t ng

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

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

11.2.6

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

FPT Software Solution

Trang:123/261

Gio trnh o to Visual Basic 6.0 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.7

Trnh 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.1 Pht 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.2

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

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

FPT Software Solution

Trang:124/261

Gio trnh o to Visual Basic 6.0 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.4 lp.

M trnh ng gi v trin khai nh mt ng dng c

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

Thi 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
FPT Software Solution Trang:125/261

Gio trnh o to Visual Basic 6.0 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.6

Setup toolkit

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

Khi mun sa i Setup Toolkit nhm thay i kt qu to ra bi Trnh ng gi v trin khai, ta lm nh sau : Sa n Setup Toolkit cha cc li nhc, mn hnh, chc nng chng trnh hay nhng thng tin khc. Khi hon tt, bin dch n to setup1. exe. Thi hnh trnh ng gi, l theo cc li nhc trn mn hnh to ra mi trng pht hnh. 11.3.6.2 Cc bc to mt chng trnh Setup hiu chnh

Khi mun to chng trnh setup mt cch th cng dng setup Toolkit thay v Trnh ng gi v trin khai, ta lm nh sau: 1. Nu cn sa n Setup Toolkit cha cc li nhc, mn hnh, chc nng, chng trnh v cc thng tin khc. 2. Xc nh tp tin no cn phn pht, bao gm cc tp tin thi hnh, ci t v cc tp tin lin quan. 3. Xc nh th mc ci t trn my ngi dng 4. To th cng tp tin setup.lst a ra tn v th mc ci t ca tt c cc tp tin cha trong n. 5. Xc nh cch thc ci t tp tin. 6. To tp tin.CAB cho n, dng tin ch Makecab. Mo: Bn c th dng Trnh ng gi v trin khai to tp tin.CAB sau sa chng bng tay. Khi Wizard to mt tp tin.CAB, n to mt tp tin. DDF v mt tp tin.BAT trong th mc con \Support ca th mc n. sa i
FPT Software Solution Trang:126/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:127/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:128/261

Gio trnh o to Visual Basic 6.0 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. 12.1.2.1 Thit k c s d liu

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

C quan h gia 2 bng thng qua trng State (Trng thi ). y l mi quan h mt - nhiu, i vi mt mu tin trong tblRegion, c th khng c, hoc c nhiu mu tin tng ng trong bng tblCustomer.
FPT Software Solution Trang:129/261

Gio trnh o to Visual Basic 6.0 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
Trang:130/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:131/261

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

Ca s Visual Data Manager 12.1.6.1 S dng ca s c s d liu

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

FPT Software Solution

Trang:132/261

Gio trnh o to Visual Basic 6.0

Xem cc thuc tnh ca c s d liu mi. 12.1.6.2 To bng

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

FPT Software Solution

Trang:133/261

Gio trnh o to Visual Basic 6.0

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.


FPT Software Solution Trang:134/261

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

7. Cn kim tra hp AutoInerField khi to trng ID m bo rng mi khch hng ta to u c s hiu duy nht. Bi v b my c s d liu tng s trong trng mt cch t ng, ng dng c s d liu s khng phi t sinh ra s hiu duy nht. 8. Khi ta hon tt vic nhp trng, nhn nt bm Close. 12.1.6.3 Ch nh ch mc v kho chnh

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

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:136/261

Gio trnh o to Visual Basic 6.0 Cnh Bo : Nu ta hp nh du Unique c chn, ta s khng th thm hai ngi c cng tn vo c s d liu. 4. Lp li quy trnh ny vi trung LastName, to mt ch mc l LastIndex. 5. Nhn nt chut Close. Ta s gp li hp hi thoi Table Structure. 6. to bng, nhn nt Build the Table. Bng s c to v thm vo ca s Database ca Visual Data Manager

To bng cho c s d liu. 12.1.6.4 Thay i thuc tnh ca cc trng c sn

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

12.1.6.4.1

Sa i chiu di ca trng LastName

Gi nh rng ta mun sa i chiu di ca trng LastName. lm c iu ny, theo cc bc sau : 1. Trong cc ca s Database ca Visual Data Manager, nhn chut phi ln tblCustomer. 2. T menu ng cnh, chn Design. Hp thoi Table Structure xut hin.

12.1.6.4.2

Xo ch mc

xo trng LastName, ta phi xo ch mc ca n trc. lm c iu ny, theo cc bc sau : 1. Chn LastNameIndex trong danh sch cc ch mc
FPT Software Solution Trang:137/261

Gio trnh o to Visual Basic 6.0 2. Nhn nt RemoveIndex 3. Khi mt thng ip hi ta mun xo ch mc ny khng, nhn Yes. Ch mc c xo

12.1.6.4.3

Xo trng LastName

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

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

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

FPT Software Solution

Trang:138/261

Gio trnh o to Visual Basic 6.0

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:
FPT Software Solution Trang:139/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:140/261

Gio trnh o to Visual Basic 6.0

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.

FPT Software Solution

Trang:141/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:142/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:143/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:144/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:145/261

Gio trnh o to Visual Basic 6.0

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 :
FPT Software Solution Trang:146/261

Gio trnh o to Visual Basic 6.0

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 :
FPT Software Solution Trang:147/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:148/261

Gio trnh o to Visual Basic 6.0 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 tin

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

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.

FPT Software Solution

Trang:149/261

Gio trnh o to Visual Basic 6.0 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.

FPT Software Solution

Trang:150/261

Gio trnh o to Visual Basic 6.0

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.
FPT Software Solution Trang:151/261

Gio trnh o to Visual Basic 6.0 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 Data

Thao tc trn cc mu tin thng qua iu khin ADO

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:
FPT Software Solution Trang:152/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:153/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:154/261

Gio trnh o to Visual Basic 6.0


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.
FPT Software Solution Trang:155/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:156/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:157/261

Gio trnh o to Visual Basic 6.0

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.

FPT Software Solution

Trang:158/261

Gio trnh o to Visual Basic 6.0

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:

FPT Software Solution

Trang:159/261

Gio trnh o to Visual Basic 6.0

DBEngine DBEngine Workspace

Database

TableDef Field Index Field

QueryDef Field Parameter

Recordset Field

Container

Relation Field

Document

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.
FPT Software Solution Trang:160/261

Gio trnh o to Visual Basic 6.0

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.
FPT Software Solution Trang:161/261

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:162/261

Gio trnh o to Visual Basic 6.0 13.2.1.2 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"


FPT Software Solution Trang:163/261

Gio trnh o to Visual Basic 6.0 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 dbOpentable ngha Trong mt workspace ca Microsoft Jet, to mt i tng Recordset kiu bng ( bng c nh ch mc ch s dng mt bng ) 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 ) M mt i tng kiu Dynaset ( tham chiu n recordset ca nhiu bng hoc t nhiu c s d liu khc)

dbOpenDynamic

dbOpenDynaset

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

FPT Software Solution

Trang:164/261

Gio trnh o to Visual Basic 6.0

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 M tin 1 u M tin 2 u ... 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
FPT Software Solution Trang:165/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:166/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:167/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:168/261

Gio trnh o to Visual Basic 6.0 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
Trang:169/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 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 & " " & _
FPT Software Solution Trang:170/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:171/261

Gio trnh o to Visual Basic 6.0

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")
FPT Software Solution Trang:172/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:173/261

Gio trnh o to Visual Basic 6.0 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()
FPT Software Solution Trang:174/261

Gio trnh o to Visual Basic 6.0 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 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. S dng i tng QuyryDef thao tc trn truy vn cha

FPT Software Solution

Trang:175/261

Gio trnh o to Visual Basic 6.0 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,
FPT Software Solution Trang:176/261

Gio trnh o to Visual Basic 6.0 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)
FPT Software Solution Trang:177/261

Gio trnh o to Visual Basic 6.0 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 & _
FPT Software Solution Trang:178/261

Gio trnh o to Visual Basic 6.0 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 " Next
FPT Software Solution Trang:179/261

" & doc.Name

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:180/261

Gio trnh o to Visual Basic 6.0 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.
FPT Software Solution Trang:181/261

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:182/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:183/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:184/261

Gio trnh o to Visual Basic 6.0

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

FPT Software Solution

Trang:185/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:186/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:187/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:188/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:189/261

Gio trnh o to Visual Basic 6.0 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:
FPT Software Solution Trang:190/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:191/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:192/261

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:193/261

Gio trnh o to Visual Basic 6.0

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 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. = App.Path &

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

FPT Software Solution

Trang:194/261

Gio trnh o to Visual Basic 6.0

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
FPT Software Solution Trang:195/261

Gio trnh o to Visual Basic 6.0 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
Trang:196/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 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

FPT Software Solution

Trang:197/261

Gio trnh o to Visual Basic 6.0 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
FPT Software Solution Trang:198/261

Gio trnh o to Visual Basic 6.0 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. 8.

Trong Visual Basic, chn menu Project, Components. 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.

FPT Software Solution

Trang:199/261

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:200/261

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:201/261

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:202/261

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:203/261

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;" & _
FPT Software Solution Trang:204/261

Gio trnh o to Visual Basic 6.0 "PWD=rince;" & _ "UID=randy;" Myconn.EstablishConnection End Sub Private Sub myconn_connect(ByVal ErrorOcurred As Boolean) If ErrorOcurred Then MsgBox "There was a problem" & _ "connecing to the database.", vbExclamation Else MsgBox "connection established.", vbInformation End If End Sub

15.4 To kt nI vi trnh thit k uerconnecttion


Trnh thit k kt ni ngi s dng (Uerconnection designer) to s d dng ho ngI s dng Visual Basic kt ni vi c s d liu client/server dng RDO. N pht sinh I tng rdoconnection m khng phI lp trnh nhiu Tng t biu mu trong n VB, ta thm trnh thit k Uer_connecttion vo n v dng n nh dng biu mu. Khi ta bin dnh tp tin thi hnh EXE trong VB, trnh thit k userconnection cng c bin dch nh biu mu. Lu vi ADO trong VB 6, ta c mt kiu thit k mi to kt ni vI c s d liu. thit k ny gI l dataenviroment, s c trnh by trong chng 27 I tng d liu ActiveX. N vt xa khng nng ca thit k UserConnection trong mt s sch. thit k UserConnction l mt dng m-un lp. dng trnh thit k UserConnection,ta lm nh sau: 1. Thm mt trnh thit k UserConnection mi vo n. 2. dng giao din ho ca UserConnection, th hin ngun d liu ODBC m ta mun ni n, v cch thc kt ni. 3. trong chng trnh, to mt instance ca i tng rdoconnection t thit k UserConnection.
V d mu dng trnh thit k UserConnection kt ni vi c s d liu ODBC

1. Trong n VB, chn menu Project, more ActiveX Designers. Chn Microsoft UserConnection. 2. Mt trnh thit k UserConnection c thm vo n, v hp thoi UserConnection properties xut hin:

FPT Software Solution

Trang:205/261

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:206/261

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

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

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

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:210/261

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

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

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:213/261

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:214/261

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:215/261

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:216/261

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:217/261

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:218/261

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:219/261

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 OpenRecordset M t To mt i tng QueryDef. To mt i tng Relation To mt i tng TableDef To mt i tng Recordset
Trang:220/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 CreateProperty 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:221/261

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:222/261

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:223/261

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:224/261

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:225/261

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:226/261

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:227/261

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:228/261

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.
Trang:229/261

FPT Software Solution

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:230/261

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

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

M y Client

Thnh ph ActiveX n Truy c c s d li n u Cung c c c t- ng cho Client p i

CSDL

M y 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:232/261

Gio trnh o to Visual Basic 6.0

M y Client

Thnh ph ActiveX n Truy c c s d li n u Cung c c c t- ng cho Client p i

CSDL

M y t trung gian nh

M y 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:233/261

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

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:235/261

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:236/261

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:237/261

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:238/261

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:239/261

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:240/261

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

FPT Software Solution

Trang:241/261

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

ii.

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.
FPT Software Solution Trang:242/261

Gio trnh o to Visual Basic 6.0 2. ng bng. i tng c s d liu phi c ng tin hnh ng b ho (synchronization). 3. T menu Tools ca Microsoft Access, chn Replication. Chn Synchronize t menu con. 4. Hp thoi Synchronize Database xut hin, hin th tn ca c s d liu bn sao. Lu rng Synchronization Database cho php ta chn mt bn sao hin hnh hoc chn t danh sch cc bn sao (dng danh sch th xung ca hp kt hp). V y ta ch mi to mt bn sao, nn ta c th chp nhn tn tp tin ngh v nhn OK. 5. Sau mt thong dng, Access thng bo rng ng b ho hon tt. n cng hi ta mun ng hay m li c s d liu hin hnh bo m rng tt c d liu c ng b ho u c hin th. y, bc thc hin ny khng cn thit v khng c d liu mi c copy t bn sao vo Bn thit k gc. 6. xc nhn rng mu tin mi c truyn t Bn thit k gc vo bn sao, ng c s d liu Bn thit k gc v m bn sao. Ta s thy rng d liu a vo Bn thit k gc c copy vo bn sao. Ta c th o ngc li qu trnh vi vic thm, sa bn sao v ng b ho li vi bn gc.
17.1.1.3.4.4 TIN HNH REPLICATION VI DAO

Trong Visual Basic, ta c th iu khin cch thc sao chp c s d liu dng DAO (i tng truy cp d liu Data Access Objects). DAO l mt k thut hng i tng cho php truy cp c s d liu. Khi ta dng DAO iu khin Replication, ta s tng cng kh nng kim sot cch thc thit lp c s d liu h tr sao chp, nh cu hnh v ng b ho bng chng trnh. Sau y l cc i tng DAO cha nhng thuc tnh h tr Replication: Chc nng i tng M t Replication Thuc tnh TableDef v QueryDef Xc nh i tng c c to (cng nh cc i tng h tr sao chup hay khng KeepLocal Microsoft Access khc nh l biu mu v bo co) Thuc tnh i tng Database, Xc nh i tng ( v cho TableDef v QueryDef ( TableDefs, d liu m n cha) c Replicable cng nh cc i tng c c sao chp vo lc ng b s d liu Access nh bo ho hay khng. co v m-dun chng trnh ). Phng thc To mt bn sao t Bn thit k Database gc. MakeReplica Phng thc ng b ho mt bn sao c s d Database liu vi Bn thit k gc. Synchronize Thuc tnh Cho php cung cp mt mnh TableDef WHERE trong cu SQL kim ReplicaFilter sot cc mu tin trong bng c sao chp ( thuc tnh ny h tr Sao chp mt phn ).
FPT Software Solution Trang:243/261

Gio trnh o to Visual Basic 6.0 Thuc tnh PartialReplica Thuc tnh ReplicableBool i. Relation i vi Sao chp mt phn, n cho php ta xc nh nhng quan h no kim sot vic sao chp mu tin. Tng ng vi thuc tnh Replicable, nhng d ci hn.

Database

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
FPT Software Solution Trang:244/261

Gio trnh o to Visual Basic 6.0 Dim pr As Property Dim td As TableDef Const DBPath = "..\..\DB\novelty.mdb" Const MasterDBPath = "..\..\DB\nmaster.mdb" Const ReplicaDBPath = "..\..\DB\nreplica.mdb" Private Sub cmdMakeDBRep_Click() On Error GoTo ErrHandler ' The "True" parameter in the OpenDatabase method ' tells Jet to open the database for exclusive ' access, which is required for creating properties. FileCopy DBPath, MasterDBPath Set db = OpenDatabase(MasterDBPath, True) With db Set pr =.CreateProperty("Replicable", dbText, "T") .Properties.Append pr .Properties("Replicable") = "T" End With MsgBox "The database has been copied to " & _ db.Name & _ " and its Replicable property is now " & _ db.Properties("Replicable").Value db.Close Set db = Nothing ' Release exclusive lock on db.

Exit Sub ErrHandler: Select Case Err.Number Case 3367 ' Replicable property already exists Exit Sub ' So ignore the error and exit Case Else ' Something unforseen happened MsgBox "Error: " & Err & " - " & Error End Select 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
FPT Software Solution Trang:245/261

Gio trnh o to Visual Basic 6.0 Nhng khng thc hin c. on chng trnh pht ra bo li s 3607, thng bo rng y l thuc tnh ch c v khng th loi b. V vy, nh cnh bo phn trc, vic to bn d phng cho c s d liu l iu c bit quan trng khi ta thao tc vi DAO thc hin Replication. 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 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.
FPT Software Solution Trang:246/261

' Release exclusive lock on DB

Gio trnh o to Visual Basic 6.0 Gi tr T ca thuc tnh Replicable ca i tng c s d liu t ng i thuc tnh KeepLocal thnh F. Dng thuc tnh ReplicableBool bin i tng thnh i tng h tr sao chp Ch rng cc thuc tnh hiu chnh ta dng n gi u c gi tr l k t - k t T hay F th hin gi tr Boolean l True hay False. Bi v khi chng c gii thiu cho Jet, cc thuc tnh c s d liu hiu chnh ch c th cha gi tr l k t. Trong Jet 3.51, cc thuc tnh hiu chnh c th cha mt tp hp rt phong ph gm nhiu kiu d liu. Nh , n gip ta to cc thuc tnh gn lin vi Replication trong DAO mt cch d dng hn nu nh ta thch dng True / False thay v T / F. 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 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
Trang:247/261

iii.

' Release exclusive lock on DB

FPT Software Solution

Gio trnh o to Visual Basic 6.0 To mt c s d liu bn sao t Bn thit k gc bng cch thi hnh phng thc MakeReplica ca i tng Database. C php : db.MakeReplica <tn tp tin>,[<m t>], [<ty chn>] <Tn tp tin> l tp tin bn sao c s d liu mi m ta mun to. <M t> l chui k t ca bn sao mi. Tham s ny l tu chn. Tham bin <Tu chn> c th l mt hay hai gi tr. Tu chn th nht, dbRepMakePartial, to bn sao mt phn, ngha l ta c th kim sot nhng mu tin no c copy t Bn thit k gc vo bn sao. Tu chn th hai, dbRepMakeReadOnly, cho php to bn sao ch c c vi nhng ngi s dng bn sao. (Tuy nhin, ta c th vn gi d liu v cc i tng d liu mi n bn sao thng qua ng b ho).

Private Sub cmdSpawn_Click() Dim db As Database Set db = OpenDatabase(MasterDBPath, True) db.MakeReplica ReplicaDBPath, "MyReplica" db.Close Set db = Nothing End Sub 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
Trang:248/261

FPT Software Solution

Gio trnh o to Visual Basic 6.0 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 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

FPT Software Solution

Trang:249/261

Gio trnh o to Visual Basic 6.0 Bn sao mt phn to ra t chng trnh trn y ch mi cha cu trc c s d liu bn sao, cha c d liu. Khi to mt bn sao mt phn, ta khng th chuyn i n thnh bn sao ton phn. Tuy nhin, c th sao chp ton b d liu trong Bn thit k gc vo bn sao bng cch quy nh thuc tnh ReplicaFilter l True.
17.1.1.3.4.6 Tin hnh sao chp mt phn

Sau khi to mt bn sao mt phn, ta c th copy cc mu tin t bn sao ton phn hoc Bn thit k gc theo cc bc sau y : 1. Trong chng trnh s dng DAO, khai bo v quy nh gi tr cho bin i tng Database l c s d liu bn sao mt phn. 2. Khai bo bin TableDef cho cc bng trong bn sao mt phn cha d liu sao chp. 3. Quy nh thuc tnh ReplicaFilter ca tng i tng TableDef l mt iu kin WHERE ca cu SQL. N xc nh cc mu tin s c copy vo bn sao mt phn. 4. Thi hnh phng thc PopulatePartial ca i tng Database, ch ra ng dn v tn tp tin ca bn thit k gc hoc bn sao ton phn m ta mun copy t . C th dng thuc tnh ReplicaFilter ca i tng TableDef sao chp tp con cc mu tin t c s d liu n c s d liu bn sao mt phn. Thuc tnh ReplicaFilter c th cha mt trong 3 gi tr : Nu ReplicaFilter l True, ton b cc mu tin trong c s d liu ngun c copy vo c s d liu bn sao mt phn. Nu ReplicaFilter l False, khng c mu tin no t c s d liu ngun c copy vo bn sao mt phn. Nu ReplicaFilter l mt chui, b my c s d liu xem l mnh WHERE ca cu SQL. gn mt b lc bn sao v copy cc mu tin t Bn thit k gc hoc bn sao ton phn vo bn sao mt phn, dng on chng trnh sau : Option Explicit ' References DAO 3.51 Private db As Database Private td As TableDef Const MasterDBPath = "..\..\DB\nmaster.mdb" Const ReplicaPath = "..\..\DB\npartial.mdb" Private Sub cmdMakePartial_Click() Set db = OpenDatabase(MasterDBPath) db.MakeReplica ReplicaPath, "Partial", dbRepMakePartial db.Close Set db = Nothing End Sub
FPT Software Solution Trang:250/261

Gio trnh o to Visual Basic 6.0

Private Sub cmdReplicate_Click() ' Open partial replica in exclusive mode Set db = OpenDatabase(ReplicaPath, True) Set td = db.TableDefs("tblCustomer") td.ReplicaFilter = "State = 'CA'" ' Populate with data from design master db.PopulatePartial MasterDBPath ' Release exclusive lock on database Set db = Nothing End Sub Khi ta thi hnh on chng trnh trn, ch nhng khch hng sng tiu bang California c copy vo bn sao mt phn. TNG KT Chng ny cp 2 vn ch yu khi phn pht d liu qua mng n nhiu ngi s dng. Trong phn u, bn tm hiu cch thc s dng cc thnh phn ActiveX truy cp d liu theo hng i tng. N cng tho lun v trin khai DCOM vi thnh phn ActiveX, cho php ta trin khai cc i tng kinh doanh qua mng LAN. Trong phn th hai, ta tm hiu v cch thc sao chp c s d liu Jet qua mng phn pht d liu qua 2 hay nhiu tp tin c s d liu. Mc d ch v cc thnh phn tng trung gian ActiveX v sao chp c s d liu ni 2 phn ring, nhng khng c ngha l chng loi tr ln nhau. Trong chng trnh, bn c th phi hp c hai k thut phn pht d liu theo din xa v rng. Dng k thut no l tu thuc vo cu trc chng trnh, s ngi s dng cn h tr, v mc yu cu gi cho d liu nht qun. HI V P Hi : Ti va to cc th vin ActiveX DLL dng truy cp d liu. Ti c cn bin dch li thnh Active EXE truy cp chng qua mng t xa khng ? p: Khng. Nu bn dng Microsoft Transaction Server, bn c th ng gi cc th vin ActiveX DLL ngay v truy cp chng t xa. Trin khai cc thnh phn t xa dng k thut MTS c trnh by u chng. Hi : Khi ti ang tin hnh sao chp c s d liu, h thng c s d liu ch yu l off-line. Vy lm sao bit n s tn bao lu ? p: Bi v c rt nhiu yu t nh hng, lng d liu ta cn thao tc, bng thng trn mng, tc my tnh x l cc mu tin. Nu gp phi rc ri ny 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.

FPT Software Solution

Trang:251/261

Gio trnh o to Visual Basic 6.0 Hi: Bi v sao chp mt phn cho php tu chn khng sao chp, hoc sao chp mt phn hoc sao chp ton b mu tin; trong thc t, ta khng th chuyn i qua li gia sao chp mt phn v ton phn, ti sao khng tt c ch l sao chp mt phn ? p: Bn ch c th ng b ho gia Bn thit k gc v bn sao ton phn, khng cho php ng b ho gia bn sao mt phn v bn sao khc. iu ny cung cp s linh hot trong nhng trng hp m bn mun ng b ho nhiu bn sao vi nhau gim bt p lc phi x l trn my tnh cha Bn thit k gc.

17.2

FPT Software Solution

Trang:252/261

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

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.

FPT Software Solution

Trang:254/261

Gio trnh o to Visual Basic 6.0 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. - 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:255/261

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 Errors collection Error Object Properties collection Property object Recordset object Command object

Methods BeginTrans Cancel Close CommitTrans Execute Open OpenSchema RollbackTrans

Events BeginTransComplete CommittranCopmlete ConnectionComplete Disconnect ExexuteComplete InfoMessage RollBackTransComplete WillConnect WillExecute

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:256/261

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
FPT Software Solution Trang:257/261

Gio trnh o to Visual Basic 6.0 adApproxPosition Thuc tnh AbsolutePage v AbsolutePosition c sn; chng c dng kt hp vi thuc tnh Pagesize v PageCount ca i tng Recordset cho php xc nh trang cha bn ghi hin hnh. adBookmark C th quy nh nh du trang sch trong Recordset adDelete Bn ghi c xo trong Recordset adHoldRecords Bn ghi c tr v t c s d liu m khng cn ghi sa i hin c vo server. adMovePrevious C th cun ti lui trong Recordset adResync Phng thc ny c sn adUpdate Recordset cp nht c adUpdateBatch Recordset c th cp nht c hng lot vi phng thc UpdateBatch. Ta c th np cc sa i trn nhiu mu tin trong mt hot ng duy nht, ci tin hiu qu Client/Server

18.1.6

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:258/261

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:259/261

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:260/261

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

You might also like