Professional Documents
Culture Documents
GII THIU
Lp trnh ng dng l mn hc rt quan trng i vi sinh vin ngnh cng ngh thng tin (CNTT). Hin nay c rt nhiu cc ngn ng lp trnh chuyn nghip c th s dng tt lp trnh cc ng dng nh: Microsoft .NET, C++ Buider, Delphi, v.v. Nhng Visual Basic 6.0 (VB6), t y gi tt l VB c th coi l mt trong nhng cng c d hc nht. Gio trnh ny vit ra phc v nhu cu hc mn Lp trnh ng dng hoc Lp trnh Visual Basic cho cc sinh vin, hc sinh trng THCN h chuyn CNTT. Sau nhng ni dung v lp trnh VB cn bn, gio trnh s hng hc sinh n cc k thut lp trnh c s d liu (CSDL) trn VB. kt qu cui cng l to ra cc ng dng qun l s dng VB nh l mt cng c pht trin trn h CSDL Access. Thi lng thit k 75 tit. Trong 24 tit l thuyt, 46 tit thc hnh v 5 tit dnh cho kim tra. Tu theo mc ng dng ca tng trng, tng ngnh vo mn hc ny m mi n v s chn cho mnh mt qu thi gian cng nh cc ni dung ging dy ph hp t gio trnh ny. Ni dung gio trnh gm mt bi m u v 4 chng: Bi m u Bi m u s l nhng li gii thiu v ngn ng Visual Basic 6.0, v mi trng lm vic v lch s ca ngn ng ny. Kt thc bi hc, hc vin s hiu c mi trng lm vic, to v lm vic trn project n gin. Chng 1: Lp trnh VB cn bn Chng ny cung cp nhng khi nim, nhng cch thc cn bn nht khi lm vic vi bt k mt ngn ng lp trnh no, y l VB. l bin, hng, cc cu trc lnh v k thut chng trnh con trong VB. Chng 2: Lm vic vi cc iu khin iu khin l mt thnh phn rt quan trng trong nhng ngn ng lp trnh trc quan, hng i tng (nh VB). Chng ny tp trung vo vic gii thiu nhng khi nim, cch thc lm vic v hng dn s dng, lp trnh trn h thng cc iu khin t cn bn n nng cao ca VB. K thut bt li v x l li cng c cp n rt chi tit. Kt thc ni dung chng ny, hc vin c th thit k c mt s cc ng dng chy trn windows bng cch s dng tt cc kin thc ca chng 1 v chng 2.
Trang 2
Chng 3: Lp trnh c s d liu Hu ht lp trnh ng dng u lin quan n cc k thut x l CSDL. Chng ny tp trung gii thiu hai cng ngh lp trnh CSDL ph bin l DAO (Data Access Objects) v ADO (ActiveX Data Objects) thng qua cc bi ton c th nh: nhp d liu, tm kim v t lc, in bo co. Chng 4: Hon thin d n Chng ny tp trung hng dn cc qui trnh, cng c v k thut thit k giao din chnh ng dng, cng nh hon thin, ng gi mt d n hon chnh trn mi trng VB. l sn phm phn mm cui cng gi ti khch hng. K thut MDI Form, Menu, ToolBar cng nh qui trnh ng gi thng qua tin ch Package and Deployment Wizard c hng dn s dng chi tit. Phn cui gio trnh c a ra danh mc cc ti liu bn c tham kho; danh mc cc t vit tt c s dng trong sch v gii ngha mt s thut ng ting Anh thng gp khi lp trnh trn VB. Cui cng, chng ti xin chn thnh cm n s quan tm v to iu kin ca S GD&DT H Ni; cc ng nghip tn tnh gip , ng gp kin xy dng gio trnh c hon thin nh by gi. Tuy nhin rt kh trnh khi nhng thiu st t khch quan n ch quan. Chng ti rt mong nhn c s gp , ph bnh gio trnh ngy cng hon thin hn, phc v tt cho vic dy-hc trong nh trung v cc bn c. H ni, ngy 20 thng 10 nm 2005
Trang 3
B I M U
Ni dung bi hc ny cung cp ci nhn tng quan v ngn ng Visual Basic: tnh nng, mi trng v cch thc lm vic. Tuy khng nng v kin thc lp trnh Visual Basic, nhng ni dung bi hc ny l rt quan trng gip hc sinh tip cn ngn ng ny mt cch thun li. c bit, nu y l ln u tin hc k thut lp trnh trn windows.
Trang 4
Tuy nhin, ngn ng Basic trong VB c ci thin rt nhiu ph hp vi phong cch lp trnh hin i. Visual Basic cn c hai dng khc l Visual Basic for Application (VBA) mt ngn ng nm pha sau cc chng trnh Word, Excel, VB, Project, .v.v.. cn gi l Macros. Dng VB trong Microsoft Office, ta c th lm tng chc nng cc ng dng bng cch t ng ha cc chng trnh. V VBScript c dng lp trnh phc v cc tng tc trn giao din web. Visual Basic c rt nhiu phin bn, 2 phin bn tt nht c th ni n l Visual Basic 6.0 (VB6) v Visual Basic .NET (VB7 hay VB.NET). V mt kin trc, hai phin bn ny gn khc nhau hon ton. VB6 pht trin ng dng da trn cng ngh COM (Common Object Model)- mt cng ngh rt pht trin t nht cho n nm 2000. Cn VB.NET da trn nn tng cng ngh .NET Framework - mt cng ngh hin i hn v ang rt c a chung. Gio trnh ny ch cp n vic s dng v pht trin phn mm ng dng trn phin bn VB6 (gi tt l VB). Bi l phin bn ny rt d hc v pht trin. Vic tm hiu ngn ng VB.NET l rt khuyn khch cho nhng ai ang mun tm cho mnh mt b cng c pht trin chuyn nghip trn a mi trng hot ng. Tuy nhin, khi nm chc nhng ni dung VB6 t gio trnh ny, bn c c th sn sng tip cn VB.NET vi t th rt thun li. ci t VB, yu cu ti thiu phi c a 1 - b Microsoft Visual Studio 6.0 (b ny y gm 4 a). Tuy nhin cng nn gi c a 2 v 3 c c y cc ti nguyn i cng gip vic nghin cu v tm hiu VB c thun li.
Trang 5
2. Khi ng
Sau khi gi t VB, c th khi ng t thanh tc v ca Windows nh sau:
Start | Programs | Microsoft Visual Studio 6.0 | Microsoft Visual Basic 6.0
bt u mt ng dng mi, t th New, chn Standard EXE, nhn Open. Mi trng lm vic VB xut hin:
Trang 6
3 2 5
C rt nhiu cc thnh phn trong mi trng lm vic ca VB. mc n gin nht c 5 thnh phn c khoanh trn trong hnh trn l: (1). Thanh thc n v thanh cng c chun ca VB; (2). Ca s Project Explorer ni qun l ton b cc thnh phn m ngi lp trnh lm c trn d n ca VB hin thi. Lm vic trn VB l lm vic trn cc d n (Projects). Mi d n cn phi to ra nhiu thnh phn cu thnh nh: giao din, biu mu bo co, th vin,... tt c nhng thnh phn ny s oc qun l trn ca s Project Explorer; (3). Biu mu Form ni thng dng thit k cc hp thoi, ca s - giao din ca ngi s dng vi ng dng phn mm; (4). Thanh cng c ToolBox- ni cha cc iu khin (Control) gip ngi lp trnh d dng to ra nhng giao din thn thin v lp trnh trn chng mt cch thun li, a nng; (5). Ca s Properties ni thit lp cc thuc tnh cho nhng i tng, nhng iu khin trong qu trnh lm vic trn VB.
Trang 7
3. Lu tr
Lm vic trn VB l lm vic trn cc d n (Project). Ti mt thi im c th ch lm vic vi mt d n no , cng c khi lm vic trn mt tp hp cc d n (Project Group). Tuy nhin khun kh gio trnh ny ch ni v lm vic trn mt d n n l. D n l cng c qun l tt c nhng g cn phi to ra cho mt d n phn mm vit trn VB. Hnh di m t cc ni dung c th c qun l bi mt d n mang tn quan_ly_canbo
Trong d n trn c cc thnh phn: Forms to ra cc giao din ngi s dng phn mm nh l cc hp thoi, biu nhp d liu, ca s giao din. C 4 form c to ra trong d n trn. Modules l ni cha nhng th vin khai bo phc v vic pht trin phn mm. Trong mi Module c th cha cc chng trnh con, cc khai bo bin, hng, mi trng lm vic m cc thnh phn th vin ny c th dng ring hoc chia s dng chung trong ton b d n. C 2 module c to ra trong d n trn l Module1 v Module2.
Trang 8 -
Class Modules ni to ra cc lp i tng do ngi lp trnh t nh ngha phc v cc nhu cu pht trin ring. D n trn c mt tp lp l Class1. User Controls ni cho php ngi lp trnh t nh ngha ra cc iu khin phc v mc ch cng vic ring pht trin trong d n. D n trn c mt i tng iu khin t nh ngha l UserCo. Designers ni to ra cc mi trng d liu (data environment) v cc bo biu (Data report) phc v nhu cu x l, truy xut v in n d liu trong d n. Khng ch dng li y, ng vi mi d n trn VB c th cn to ra nhng i tng ring. V chng c th c qun l trn ca s Project Explorer. ghi li mt d n, nhn thc n File | Save hoc nt Save trn thanh
cng c hoc nhn t hp phm nng Ctrl + S. VB s ln lt yu cu nhp vo tn tp tin ca cc i tng to c trn d n (vic t tn ny ch xut hin ln ghi u tin). Tp tin chnh ca d n c phn m rng l .vbp v biu tng nh sau:
Ch : Do mi d n VB s bao gm rt nhiu tp tin, chng lun phi c i cng nhau. Do vy ng vi mi d n mi hy to mt th mc v ghi li ton b nhng g lm c v lin quan ln th mc ny. iu ny rt thun li khi phi di chuyn d n n nhiu my, nhiu v tr khc nhau lm vic.
4. M d n c
m mt d n ra lm vic trn VB thao tc nh sau: Nhn nt Open trn thanh cng c, hoc nhn t hp phm tt Ctrl + O,
Trang 9
th Recent c th chn d n t danh sch lm vic gn nht m. Sau thao tc ny, d n cn lm vic s c m ra trn mi trng lm vic ca VB.
Trang 10
CHNG
LP TRNH VB CN BN
Chng ny tp trung gii thiu chi tit cc thnh phn lin quan n lp trnh cn bn trn VB. l nhng iu kin ti thiu, cn thit nht hc bt k mt ngn ng lp trnh no. C th hc vin s nm c: Cc kiu d liu trong VB; S dng bin v hng; Cc cu trc lp trnh cn bn; K thut chng trnh con; Cch thc son tho chng trnh; K thut bt li v x l li trn VB.
Trang 11
Trang 12
Kiu s thc c ln hn kiu Single, c gi tr trong khong 4.94065645841247E-324 to 1.79769313486232E308. Chim 8 bytes b nh. Currency Kiu tin t. Bn cht l kiu s, ln 8 bytes, c gi tr trong khong 922,337,203,685,477.5808 to 922,337,203,685,477.5807. c bit, kiu ny lun c k hiu tin t i km. String Kiu xu k t. Kiu ny tng ng vi kiu String trong Pascal, tng ng vi kiu Text trong VB. ln ti a 255 bytes tng ng vi kh nng x l xu di 255 k t. Variant Variant l kiu d liu khng tng minh. Bin kiu ny c th nhn bt k mt gi tr no c th. V d :
Dim a As Variant a = 123 a = Nguyn Vn Ng
Hon ton khng c li. Ngi ta thng khai bo bin kiu Variant trong nhng trng hp phi x l bin mm do. Khi th bin nhn gi tr kiu ny, khi th nhn gi tr v x l theo kiu d liu khc. Object Object l mt loi bin kiu Variant, chim dung lng nh 4 bytes, dng tham chiu ti mt loi i tng (Object) no trong khi lp trnh. Tt nhin mun khai bo bin Object kiu no, phi chc chn i tng c ng k vo th vin tham chiu VB bi tnh nng Project | Reference.
Trang 13
1.2 Bin
a. Bin khai bo bin Bin (Variable) l thnh phn ca mt ngn ng lp trnh, gip x l d liu mt cch linh hot v mm do. Thng thng trong cc ngn ng lp trnh, mi bin khi tn ti phi c nh kiu, tc l phi nhn mt kiu d liu xc nh. Tuy nhin trong VB th khng, mi bin c th nh kiu (c khai bo trc khi s dng) hoc khng nh kiu (khng khai bo vn s dng c). Trong trng hp ny bin s t nhn kiu gi tr Variant. Bin c th c khai bo bt k u trong phn vit lnh ca VB. Tt nhin, bin c hiu lc nh khai bo ch bt u t sau li khai bo v m bo phm vi hot ng nh qui nh. V bin trong VB hot ng rt mm do, nn c nhiu cch khai bo bin nh: V d 1: Khai bo bin i kiu Integer
Dim i As Integer
b. Phm vi bin Nh chng ta bit, mi bin sau khi c khai bo n s nhn mt kiu d liu v c mt phm vi hot ng, tc l li khai bo bin ch c tc dng trong nhng vng c ch nh; ngoi vng ch nh bin s khng c tc dng, nu c tc dng s theo ngha khc (bin cc b kiu Variant chng hn). Bin cc b:
Trang 15 -
Bin cc b c khai bo sau t kho Dim, n ch c tc dng trong mt chng trnh con, cc b trong mt form hoc mt module no . Di y s ch ra 3 trng hp bin cc b ny: - Trong mt chng trnh con, nu n c khai bo trong chng trnh con ; - Trong c mt Form, nu n c khai bo trong phn Decralations ca Form ; - Trong c mt Reports, nu n c khai bo trong phn Decralations ca Report ; - Trong c mt Modules, nu n c khai bo trong phn Decralations ca Modules ; * Bin ch c tc dng sau lnh khai bo Dim Bin ton cc: Bin ton cc c khai bo sau cm t kho Public, n c tc dng trong ton b chng trnh ( bt k ch no c th vit lnh). Loi bin ny lun phi c khai bo ti vng Decralations ca mt Module no . V d:
Public Hoten(45) As String * 45
Trn mt d n VB khng c php khai bo trng tn bin ton cc. Tuy nhin tn bin cc b vn c th trng tn bin ton cc, trong trng hp VB s u tin s dng bin cc b trong phm vi ca n.
1.3 Hng
a. Khai bo hng Hng (Constan) l i lng c gi tr xc nh v khng b thay i trong bt k hon cnh no. Tng ng vi tng kiu d liu, s c nhng hng tng ng.
Trang 16 -
Khai bo hng s bi t kho Const. Sau y l cc v d v khai bo cc loi hng: V d 1: Hng a =5 (hng s)
Const a = 5
b. Phm vi hng Tng t nh bin, hng cng c nhng phm vi hot ng ca n. Hng c khai bo trong th tc no, hoc cc b trong form, report hoc module no s ch c tc dng trong phm vi . Mun hng c phm vi ton cc, phi c khai bo sau t kho Public Const, ti vng Decralations ca mt module no nh sau:
Public Const a = 12
Trang 17
2. Cc cu trc lnh VB
Cc cu trc lnh l thnh phn c bn ca mi ngn ng lp trnh. Thng thng cc ngn ng lp trnh u c cc cu trc lnh nh nhau: lnh x l iu kin, lnh lp bit trc s vng lp, lnh lp khng bit trc s vng lp,.. Tuy nhin cch th hin (c php) mi cu trc lnh c th khc nhau tu thuc vo mi ngn ng lp trnh. Hn na, mi ngn ng cng c th c mt s im khc bit, c trng trong mi cu trc lnh. Cng ging nh nhiu ngn ng lp trnh hin i khc, cc cu trc lnh trong VB u tun th cc nguyn tc: - C cu trc: mi cu trc lnh u c t kho bt u v mt t kha bo hiu kt thc; - Thc hin tun t (loi tr trng hp c bit th tc Goto <Label>); - C kh nng lng nhau;
ngha lnh trn l: nu <iu kin> = True th thc hin cc lnh trong <th tc1>, tri li thc hin cc lnh trong <th tc 2>. Phn trong cp du ngoc vung [..] c th c hoc khng c trong cu lnh, tu thuc vo mc ch x l. V d 1: Kim tra v tr li mt s l chn hay l?
If so Mod 2 = 0 Then Msgbox L s chn ! Else Msgbox L s l ! Trang 18 -
End If
Cho bit thang (s nguyn) ri vo u nm (1..4), gia nm (5..8) hay cui nm (912)?
If thang >=9 Then Msgbox Cui nm Else If thang >=5 Then Msgbox Gia nm Else Msgbox u nm End If End If
Trong : <Biu thc> lun tr v gi tr kiu v hng m c nh: s nguyn, xu k t, kiu l gc,.. Vi cu trc ny, VB hot ng nh sau: (1) Tnh gi tr ca biu thc
Trang 19 -
(2) Kim tra <biu thc> = <gi tr 1> ? - Nu ng thc hin <th tc 1> v kt thc lnh, thc hin lnh tip theo sau t kho End Select. - Nu sai, thc hin tip vic so snh <biu thc> = <gi tr i> tip theo v x l tng t qui trnh nu trn. (3) Trong trng hp <biu thc> <> <gi tr i>, i=1..n khi c 2 kh nng: - Nu c tu chn Case Else th VB s thc hin <th tc n+1>; - Nu khng c tu chn Case Else, VB s khng thc hin bt k th tc no lit k trong vng Select .. End Select c m chuyn ti thc hin lnh tip theo sau t kho End Select. Xt v d sau: Kim tra mt s nguyn (so) v tr v tn ting Anh thng tng ng vi s nguyn (bin thang) , v d: 1 2 12 - December - Janualy - February
>12 - Khng xc nh Nu dng lnh If hon ton c th p ng c bi ton ny, thay vo s l mt tp hp 12 lnh If .. Else .. End If nh sau:
If so = 1 Then thang = "Janualy" Else If so = 2 Then thang = "February" Else If so = 3 Then thang = "March" Else If so = 4 Then thang = "April" Else If so = 5 Then thang = "May" Trang 20 -
Else If so = 6 Then thang = "June" Else If so = 7 Then thang = "July" Else If so = 8 Then thang = "August" Else If so = 9 Then thang = "September" Else If so = 10 Then thang = "October" Else If so = 11 Then thang = "November" Else If so = 12 Then thang = "December" Else thang = "Khng xc nh" End If End If End If End If End If End If End If End If End If End If End If End If
Tuy nhin khi s dng Select Case .. End Select, cu trc s gn gng v sng sa hn nhiu. C th nh sau:
Select Case so Case 1 thang = Case 2 thang = Case 3 thang = Case 4 thang = Case 5 thang = Case 6 thang =
Case 7 thang Case 8 thang Case 9 thang Case 10 thang Case 11 thang Case 12 thang Case Else thang End Select
Trong : - <bin chy> l bin kiu v hng m c, hay dng nht l bin kiu nguyn; - <gi tr 1>, <gi tr 2> l cc gi tr m bin chy s nhn v thc hin dch chuyn sau mi ln lp. C th dch chuyn i 1 n v, c th dch chuyn i nhiu n v mt ln, c th dch chuyn tin, cng c th dch chuyn li- tt c iu ny tu thuc vo vic c hay khng c tu chn [Step <n>];
Trang 22
- Nu c tu chn [Step <n>] bin chy s dch n n v sau mi ln lp. Khi , nu n>0 d dch tin, ngc li s dch li; - Mi ln lp, VB s thc hin <th tc> mt ln; - Trong trng hp c bit nu gp phi lnh Exit For trong vng lp, ngay lp tc thot khi lnh lp v thc hin lnh tip ngay sau t kho Next. Chnh Exit For lm mt i tnh lp bit trc c s ln lp ca loi lnh ny. Tip theo l cc v d: V d 1: Tnh tng cc s t 1 n 50, gi tr c lu vo bin tong.
Dim i As Byte Dim tong As Integer tong = 0 For i = 1 To 50 tong = tong +i Next Msgbox tong
Lnh For trong v d ny ch khc lnh For v d 1 ch Step 3. V <gi tr 1> = 3 l s chia ht cho 3, nn tt c cc gi tr i cn li s chia ht cho 3 (v i = i +3).
Dim so As Integer Dim uoc As Integer Dim nguyento As Boolean nguyento = True For uoc = 2 To Int(so / 2) If so Mod uoc = 0 Then nguyento = False Exit For End If Next If nguyento Then Msgbox "l nguyn t" Else Msgbox "khng l nguyn t !" End If
Gii thut n gin xc nh mt s c phi nguyn t hay khng l: xc nh xem tt c cc s (uoc) c th tr thnh c ca s (so) cn kim tra. Nu tm thy mt c thc s u tin, kt lun ngay khng phi s nguyn t bi lnh nguyento = False v thot khi vng lp bng lnh Exit For; trong trng hp xt ton b cc c c th m khng tm c mt s no l c thc s, kt lun y l s nguyn t (bin nguyento = True nh gi tr ban u)
Trong : - While, Wend l cc t kho ca lnh lp; - Nu <iu kin> = True, cc lnh trong <th tc> s c thc hin. Thc hin xong li quay ln dng lnh While kim tra tip <iu kin>;
Trang 24 -
- Nu <iu kin> = False, s thot khi vng lp v thc hin lnh tip theo t kho Wend. Ch : Lun phi chng minh c rng, sau mt s hu hn ln thc hin <th tc>, gi tr ca <biu thc> phi l False thot khi vng lp. Trong trng hp khng th thot khi vng lp, c ngha ngi lp trnh mc phi li lp v hn. C th dn n chng trnh b treo. Cc v d: V d 1: Tnh tng cc s chia ht cho 3 trong khong t 1 n 50
Dim i As Byte Dim tong As Integer tong = 0 i = 3 While i <= 50 tong = tong +i i = i + 3 Wend Msgbox tong
V d 2: V d ny th hin vng lp v hn. L do c th l ch quan, rt n gin v g nhm! Hy ch ra dng lnh g nhm v thc hin sa cho ng.
Dim i As Byte Dim tong As Integer tong = 0 i = 1 While i <= 50 If i Mod 3 = 0 Then tong = tong + i End If j = i + 1 Wend Msgbox tong
Trang 25
Trong :
Trang 26 -
- Function, End Function l cc t kho bt buc khai bo cu trc mt CTC dng hm; - <tn hm> l tn gi hm nh khai bo. Tn khng c cha du cch (space) v cc k t c bit; - <danh sch cc tham s> - danh sch cc tham s cn thit cho hm. C hay khng c danh sch ny tu thuc vo hm cn nh ngha; - <kiu DL hm> - kiu d liu m hm s tr li. Phn ny bt buc phi c khai bo vi mi hm; - <th tc> - thn CTC. Trong cu lnh <tn hm> = <biu thc> phi xut hin t nht mt ln trong th tc. Cu lnh ny c tc dng gn gi tr cho hm. Nu khng c t kho Public trc Function, hm ch c tc dng cc b: trong mt module, trong mt report hoc trong mt form. Khi c t kho Public trc Function, hm s c tc dng ton cc. Tc l c th s dng bt k ni no trn tp VB . Tt nhin, tt c nhng g khai bo l Public phi c khai bo trong phn Decralations ca mt Module no . Cc v d: V d 1: hm tnh tng 2 s
Function Tong2So(a, b As Double) As Double Tong2So = a + b End Function
V d 3: hm tch tn trong xu h v tn. y l mt bi ton gp phi rt nhiu trong thc t. C th bi ton gii quyt vn sau: Nu bit h tn l Nguyn Sn Hi, hm s tch ra c tn l Hi. Ton b m lnh hm nh sau:
Function GetTen(hoten As String) As String Dim pos As Integer pos = 1 If InStr(pos, Trim(hoten), " ") = 0 Then GetTen = hoten Exit Function End If While InStr(pos + 1, Trim(hoten), " ") > 0 pos = InStr(pos + 1, Trim(ten), " ") Wend GetTen = Mid(hoten, pos) End Function
V d 4: Hm dng so snh 2 xu kiu ch TCVN3 chng ti a ra di y l mt tham kho rt tt. Trong Word, VB cng nh cc bng d liu ting Vit c du trn my tnh, vic sp xp xu k t l mt bi ton m ngi Vit phi gii quyt. V d, di y l mt danh sch trn Word:
STT 1 Tn Quang
Trang 28 -
2 3 4 5 6 7
c on Bng Bang An n
Sau khi s dng tnh nng sp xp (Sort) ca Word theo ct Tn theo th t tng dn, c danh sch kt qu nh sau:
STT 7 3 2 6 4 5 1 Tn n on c An Bng Bang Quang
Trang 29
4 3 2 1
Bng on c Quang
Hm Mahoa di y s gip qui i mt xu ting Vit chun TCVN3 (b phng ABC) v dng khng du. Mun sp xp hay so snh v th cc xu, hy so snh cc xu khng du c chuyn i bi hm Mahoa ny.
Private Dim Dim Dim Function MahoaTCVN3(Ckt As String) kq, kti As String vt1, vt2, i As Integer Cgoc1, Cma1 As String, Cgoc2, xd, Cma2 As String
Cgoc1 = "aeiou y" Cma1 = "abadafaparazblbnbpcbcdcl1b1c1d1e1f1a" Cgoc2 = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxY yZz" Cma2 = "aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbeb fbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcccbcccdcecfcgchcicjckc lcmcn" kq = "" xd = "" For i = 1 To Len(Ckt) kti = Mid(Ckt, i, 1) vt1 = InStr(Cgoc1, kti) If vt1 <> 0 Then kq = kq & Mid(Cma1, 1 + ((vt1 - 1) \ 6) * 2, 2) xd = xd & Mid(Cma1, 25 + ((4 + vt1) Mod 6) * 2, 2) Else vt2 = InStr(Cgoc2, kti) If vt2 <> 0 Then kq = kq & Mid(Cma2, (vt2) * 2 - 1, 2) Else kq = kq + kti End If End If Next i MahoaTCVN3 = kq & xd Trang 30 -
End Function Function Mahoa(Ckt As String) As String Dim vt1 As Integer Dim kq, Ctam As String Ckt = Ckt & " " kq = "" vt1 = InStr(Ckt, " ") Do While vt1 <> 0 Ctam = Trim(Left(Ckt, vt1 - 1)) Ckt = Right(Ckt, Len(Ckt) - vt1) kq = MahoaTCVN3(Ctam) & " " & kq vt1 = InStr(Ckt, " ") Loop Mahoa = kq End Function
Trong : - Sub, End Sub l cc t kho bt buc khai bo cu trc mt CTC dng th tc; - <tn CTC> l tn gi th tc nh khai bo. Tn khng c cha du cch (space) v cc k t c bit; - <danh sch cc tham s> - danh sch cc tham s cn thit cho th tc. C hay khng c danh sch ny tu thuc vo th tc cn to - <th tc> - thn CTC. Nu khng c t kho Public trc Sub, th tc ch c tc dng cc b: trong mt module, trong mt report hoc trong mt form. Khi c t kho Public
Trang 31 -
trc Sub, th tc s c tc dng ton cc. Tc l c th s dng bt k ni no trn tp VB . Tt nhin, tt c nhng g khai bo l Public phi c khai bo trong phn Decralations ca mt Module no . Cc v d: V d 1: Th tc tnh tng hai s
Sub tong2so(a, b As Double) tong = a + b ch : tong- l bin c khai bo ton cc End Sub
V sao? V bin tong c khai bo cc b trong CTC tong2so, nn khi CTC ny kt thc, bin tong cng b gii thot khi b nh lun. Khng gy nh hng g n d liu cng nh th hin ca chng trnh. V d 3: CTC gii phng trnh bc 2 vi 3 tham s u vo l a, b v c (a <>0)
Sub GPTB2(a, b, c As Double) Dim delta As Double Dim x1, x2 As Double delta = b * b - 4 * a * c If delta < 0 Then MsgBox "Phng trnh v nghim !" Else If delta = 0 Then x1 = -b / (2 * a) MsgBox "Nghim kp x1 = x2 = " + Trim(Str(x1)) Else x1 = (-b + Sqr(delta)) / (2 * a) x2 = (-b - Sqr(delta)) / (2 * a) Trang 32 -
MsgBox "2 nghiem x1=" + Trim(Str(x1)) + ", " _ + "x2=" + Trim(Str(x2)) End If End If End Sub
Trong : - Call l t kho - lnh gi v thi hnh mt CTC ; - <Tn CTC> l tn ca CTC cn gi ra thi hnh; - <Danh sch cc tham tr> - l danh sch cc gi tr (nu cn) truyn vo cc tham s tng ng ca CTC. Ch : kiu d liu ca cc tham tr v cc tham s phi tng ng nhau. Nu tham tr c truyn gin tip qua tn mt bin th bin phi c khai bo trc v c nh kiu ht nh kiu ca tham s cn truyn vo. V d 1: Gi CTC gii phng trnh bc 2 (vi 3 tham s l A, B, C kiu thc) lp trnh t trc.
Call GPTB2(3, 4, 1)
Dim a = b = c =
a, b, c As Double 3 4 1
Call GPTB2(a, b, c)
c bit, vi nhng CTC dng th tc khng c tham s u vo c th b qua lnh Call m g vo trc tip tn CTC khi s dng. V d 3: Gi CTC Hello trn
Gi theo kiu chnh tc Call Hello B qua t kho Call v CTC ny khng c tham s Hello
b. S dng hm Sau khi to c cc hm, vic s dng chng nh s dng cc hm c sn ca VB. Ch : khc vi CTC dng th tc, tn CTC hm phi c gi thng qua mt biu thc (v hm lun tr v mt gi tr c xc nh kiu cho trc). V d 1: gn kt qu tng ca 2 s vo mt Textbox c tn Text1, s dng hm tong2so trn. Khi m lnh s vit nh sau:
Trang 34 -
Text1.Text = tong2so(5, 7)
Trang 35
Label
Cch lm nh sau: Bc 1: Xc nh ng cc iu khin cn s dng cho cc i tng cn thit k trn giao din (xem minh ha cc loi i tng hnh trn); Bc 2: Dng chut a cc iu khin t thanh cng c ToolBox ln Form cn thit k. Vic ny thc hin n gin nh v mt khi hnh.
Thanh cng c Toolbox c cha cc iu khin cn thit cho vic thit k giao din.
Nu khng thy xut hin thanh cng c, c th gi chng ra bng lnh View | Toolbox Bc 3: Thit lp cc thuc tnh ph hp cho cc i tng trn giao din thng qua ca s Properties:
Trang 36 -
Ca s Properties ni c th thit lp trc tip cc thuc tnh cho iu khin. Ct bn tri l tn cc thuc tnh; ct bn phi l gi tr cc thuc tnh tng ng m c th thay i c.
Nu khng thy xut hin ca s Properties, c th gi chng ra bng lnh View | Properties Windows hoc nhn phm chc nng F4. Gi t th tc: khc vi cc ngn ng lp trnh trn DOS nh Pascal hoc C. Vic lp trnh (vit m lnh) trn VB a dng hn, c bit vi cc iu khin c thit k trn form, vic lp trnh a phn l vit cc th tc p ng cc s kin (chng ta cn quay li phn ny nhng phn tip theo). Mi cu lnh VB c vit trn mt dng (kt thc bi k t Enter). Trong trng hp cc cu lnh qu di, c th vit trn nhiu dng vn bn nhng phi c ni vi nhau bi k hiu ghp dng lnh. Di y l mt dng lnh:
Msgbox Cho cc bn, ti tn l Nam, mong c lm quen!
Vn lnh , c th vit trn nhiu dng, phi s dng k t ghp dng lnh nh sau:
Msgbox Cho cc bn, ti tn l Nam, _ & mong c lm quen!
K t ghp tip dng lnh tip theo (mt du cch, tip theo l du gch di).
thi hnh mt d n VB, nhn phm F5 hoc nhn nt Start trn thanh ToolBar.
Trang 37 -
4.2 Li v x l li
Li l hin tng rt bnh thng trong lp trnh. Khi lp trnh vin a ra nhng cu lnh khng hp l v c php, v x l d liu rt c th gy ra li. C rt nhiu nguyn nhn gy ra li; cc nguyn nhn ny c th c lng trc hoc khng c lng trc. Tuy nhin, khi chng trnh c ng gi v chuyn giao ti khch hng s dng th khng c php tn ti li phn mm. K thut x l li bao gm cc k nng pht hin v x l cc tnh hung khi chng trnh gy li lm sao m bo chng trnh gim ti a li. a. X l li L vic x l khi ang lp trnh gp phi li. Thng thng khi chy th chng trnh trong lc ang xy dng phn mm nu gp phi li, s xut hin hp thoi thng bo li c dng:
Thng thng mt hp thoi thng bo li gm 2 thnh phn: - Thnh phn bo li bao gm: + M s li - Mi li m VB c th kim tra c u c mt m s, c hin th dng thng bo: Run-time error 'm s li': V d trn l : Run-time error '11': + Tn li. v d trn tn li l: Division by zero - li sai kiu d liu. - Thnh phn x l li gm 2 nt lnh:
Trang 38 -
trc tip. Khi cu lnh li s c t bi mu nn vng cho php ngi lp trnh c th sa c m chng trnh:
Trang 39
Hnh trn khi di chut ln bin b, gi tr bin b xut hin di dng Tool tip (gi tr b = 0). Sau khi chn nt Debug, lp trnh vin hon ton c th thc hin sa m lnh trong chng trnh. Tuy nhin, trong mt s trng hp khi sa m lnh VB s hi:
iu ny c ngha: vic sa i m lnh va ri, VB yu cu phi tr v ch thit k bnh thng nu nhn Ok; tri li nhn Cancel- vic thay i m lnh s khng c chp nhn. Sau khi thc hin sa m lnh, c th yu cu VB thc thi tip chng trnh. Vic thc thi s c tin hnh tip tc ti v tr vt sng ang tr. Hoc c th dng chut dch chuyn vt sng v lnh cn thc thi (ch trong cng mt CTC). thc thi tip nhn phm F5 hoc nt Continue trn thanh cng c;
Trang 40
Ca s Immediate
L cng c hu hiu h tr vic d li bi: hp thoi ny cho php thc thi tng cu lnh trn ch hi thoi.
Hoc nu g:
? a / b
V b = 0. b. By li Mc 4.2.1 trnh by nhng k nng x l li khi ang son tho chng trnh. Cc thao tc ch c thc hin trong lc ang xy dng phn mm (VB IDE), do ngi lp trnh x l. Khi phn mm c ng gi chuyn n ngi dng nu gp li, n s hin th mt hp tthoi thng bo li (Error Dialog) cho bit l do vn tt v li. Sau khi nhn OK, chng trnh s ngng hot ng, b thot. x l li trong tnh hung ny, c 2 phng php by li m chng ti a ra di y tham kho; hy vng lp trnh vin s chn la c tnh hung ph hp s dng mt trong cc phng php ny m bo chng trnh vit ra chy c ng theo mc ch. S dng lnh On Error Resume Next Khi t ch tr i, nu chng trnh gp li, n s b qua (ignore) hon ton. im ny tin ch gip chng trnh EXE ca ta trnh gp li thot khi t ngt nh phn tch trn. Nhng n cng bt li l khi khch hng cho hay h gp nhng trng hp l, khng gii thch c (v li b b qua m khng ai ), th ta cng b lun, c th khng bit bt u t u g li. Do , trong lc g li ta khng nn dng n, nhng trc khi giao cho khch hng nn cn nhc k c nn s dng trong cc on m lnh hay khng.
Trang 42 -
Trong CTC trn, nu b = 0, lnh A_chia_B = a / b s gp phi li. Do c li khai bo On Error Resume Next nn lnh li ny c b qua (khng thc hin). Tc l gi tr hm l Null. S dng cu lnh On Error Goto <nhn> Khi mt th tc c t cu lnh ny, nu gp phi mt li no , VB s chuyn thng vic thc hin n <nhn> ch nh. Thng thng cc lnh tip theo ca <nhn> l x l cc tnh hung li. Sau y l v d s dng phong php On Error Goto <nhn> by li:
Function A_chia_B(a, b As Double) As Double On Error GoTo Loi A_chia_B = a / b Msgbox Ok! Loi: If Err.Number = 11 Then MsgBox "Li chia cho 0 !" End If End Function
Trong CTC trn, trong trng hp b = 0 cu lnh A_chia_B = a / b s gy ra li. Theo nh khai bo On Error Goto Loi ban u, VB s b qua tt c cc lnh sau lnh li v chuyn thng ti cc lnh sau nhn Loi: y l lnh kim tra li. Nu M li = 11 cho 0 ! Phng php ny cng c dng ph bin c trong qu trnh xy dng pht hin li, cng nh trong phn mm ng gi gi n khch hng. Mi
Trang 43 -
khi gp li s c thng bo nguyn nhn gy ra li bng ting Vit (chng hn) m vn khng nh hng n hot ng khc ca phn mm. Trong phng php ny, ngi lp trnh nn khai thc ti a i tng Err i tng mang nhng thng tin v li ang xy ra, c th:
Hnh ng Err.Description Err.Number Err.Clear Kt qu M t tn li a ra m li Xo b cc gi tr ca i tng Err
Trang 44
Bi tp chng 1
Bi tp 1: Xy dng th tc tm c s chung ln nht ca 2 s nguyn a v b. Bi tp 2: Xy dng th tc tm bi s chung nh nht nht ca ca 2 s nguyn a v b. Bi tp 3: Xy dng th tc thng k tng s tng loi k t c trong mt xu. V d c xu ban u cong hoa xa hoi chu nghia viet nam. Kt qu th tc ny cho bit:
Tng s k t a: c: e: g: h: i: m: n: o: v: 3 1 1 2 4 1 1 3 3 1
Bi tp 4: Xy dng hm tm s cc i trong bn s nguyn a, b, c v d. Bi tp 5: Xy dng hm o v tr k t ca mt xu. V d: xu u vo c dng abcd, kt qu hm ny s tr v xu ngc li l dcba. Bi tp 6: Xy dng th tc gii phng trnh Ax2 + Bx + C = 0. Trong A, B, C l cc tham s u vo, x l nghim cn tm. Bi tp 7: Xy dng hm tnh tng cc s nguyn trong mt khong s nguyn [a, b] cho trc.
Trang 45 -
Bi tp 8: Xy dng hm tch t u tin ca mt xu k t. V d c mt xu nh sau: Vit Nam, hm ny s tch ra c xu Vit l t u tin trong xu .
Trang 46
CHNG
S DNG IU KHIN
Mt th mnh ca ngn ng VB l lp trnh trc quan thng qua cc iu khin (Controls), nhiu khi ngi ta cn gi l cc i tng (Objects). y l s khc bit cn bn gia lp trnh trc quan (trn windows) vi cch thc lp trnh trn DOS (Passcal, C, C++) trc y. iu khin l g? Lm vic trn cc lp iu khin nh th no? L cc vn s c trnh by k trong chng ny.
Trang 47
1. S lc v iu khin
Controls l nhng i tng c dng thit k giao din trong nhng ngn ng lp trnh trc quan. Trong VB, cc i tng Controls c t trn thanh cng c ToolBox m lp trnh vin c th ly t y ra thit k ln cc mu giao din (Forms) hoc bo co (Report). Mi Control c xem nh l mt i tng (Object), c 3 thnh phn c bn sau:
Mi thuc tnh lun c mt gi tr xc nh. V d trn th: thuc tnh Loi b vi x l c gi tr l Intel. i vi mt my tnh khc, gi tr thuc tnh ny c th l ADM; hoc thuc tnh B nh trong l 521 Mb nhng c th mt my tnh khc gi tr thuc tnh ny l 256 Mb. C 2 cch thit lp gi tr thuc tnh cho mt i tng: Thit lp trc tip qua ca s Properties Cch ny ch thc hin ch thit k giao din (Design view). Mun thit lp thuc tnh cho i tng no, hy chn i tng bng chut ri kch hot
Trang 48
Ca s trn hin th v cho php thit lp cc thuc tnh ca i tng Label1, i tng ny thuc iu khin Lablel. Danh sch bn tri ca s hin th tn cc thuc tnh, danh sch bn phi ca s hin th v cho php thit lp gi tr cc thuc tnh tng ng bn tri. Thng thng, mi khi thit lp xong gi tr mt thuc tnh trn hp thoi Properties, c th nhn thy ngay kt qu trn mn hnh thit k. Thuc tnh Name Thuc tnh Name cho bit tn gi ca i tng. Gi tr thuc tnh ny khng c cha du cch. Trn mt ca s thit k giao din gi tr thuc tnh Name ca mi i tng l duy nht (khng c t trng nhau). Vic thit lp thuc tnh Name trong khi lp trnh l rt cn thit v quan trng v mi khi lp trnh iu khin i tng no phi s dng thuc tnh Name tham chiu. V d: Kim tra tui (txtTuoi) xem ngi l gi, tr hay l trung nin.
Trang 49 -
If Val(txtTuoi.Text) < 30 Then Msgbox Thanh - thiu nin ! Else If Val(txtTuoi.Text) < 60 Then Msgbox Trung nin ! Else Msgbox Cao nin ! End If End If
v d trn, mun tham chiu n gi tr ca txtTuoi phi dng n thuc tnh Text. Khi phi vit biu thc thng qua thuc tnh Name ca iu khin txtTuoi nh sau: txtTuoi.Text
Mo : Cch t tn cho cc i tng Theo kinh nghim lp trnh v cch t tn cc i tng, thng t theo qui tc sau:
lst cbo ln tv lv
Trang 50
Thit lp thuc tnh bng m lnh Phng php ny dng thit lp thuc tnh cho cc i tng khi chng trnh ang chy (Running time), cch thit lp nh sau: <tn i tng>.<tn thuc tinh> = <gi tr> V d:
thit lp gi tr cho Text1 Text1.Text = "Nguyn Trng Cng" thit lp phng ch Text1.Font = "Aial" thit lp mu ch mu xanh Text1.ForeColor = &HC00000 thit lp mu nn mu vng Text1.BackColor = &H80FFFF
Mt s thuc tnh hay gp Di y l mt s thuc tnh hay s dng khi lm vic vi cc i tng. Mi thuc tnh di y khng phi bt k thuc tnh no cng c, ch a ra y tham kho v lm vic c khi gp phi. Thuc tnh Caption hin th vn bn (Text) trn i tng. Hu ht cc i tng c vn bn i km u c thuc tnh ny nh: Label, Checkbox, Frame, Command,.. c bit Caption ca i tng Form l dng ch lm tiu cho ca s. i tng Textbox tuy c vn bn i km nhng khng c thuc tnh Caption, thay vo l thuc tnh Text.
Trang 51 -
Thuc tnh Font hin th phng ch trn i tng. Thuc tnh ny thng xut hin vi nhng i tng c ch (Text) i km. Mt trong nhng phng ch h thng ting Vit s dng quen thuc l Ms Sans serife hoc Microsoft Sans serife . Thuc tnh Alignment Canh l vn bn ca i tng. Thng xut hin nhng i tng c vn bn i km. C 3 gi tr c th thit lp l:
Gi tr 0 Left Justify 1 Right Justify 2 Center Tc dng Canh l tri Canh l phi Canh l vo gia
Thuc tnh Appearance Chn cch thc hin th i tng theo kiu no? C 2 cch thc chn la:
Gi tr 0 Flat 1 3D Tc dng Kiu mnh, phng Kiu 3 chiu, c g ni
Thuc tnh Backcolor Thit lp mu nn hin th trn i tng. C a mu sc chn la trn bng mu khi nhn chut ln thuc tnh ny:
Thit lp mu ch hin th trn i tng. Cch lm vic nh vi thuc tnh Backcolor. Thuc tnh Enable Thuc tnh ny cho php lm vic hay khng c php lm vic (cm) trn i tng no . iu ny th hin rt r rng khi s dng cc phn mm my tnh, c nhng lc mt nt no m i khng th nht chut ln c lc l khi i tng ang b thit lp thuc tnh Enable = False. Ngc li nhng lc lm vic c bnh thng trn mt i tng, tc l thuc tnh Enable ca i tng ang l True. Thuc tnh Visible Thuc tnh ny cho php hin th (Visible = True) hoc n (Visible = False) mt i tng no khi chng trnh ang chy. Khi i tng b Visible = False, thc t i tng vn tn ti trn form, vn hot ng, ch khc mt iu l n hin th di dng n, ngi dng khng nhn thy c. Thuc tnh Left Thit lp ta tri ca i tng trn Form (trc ox nu coi form nh mt ta cc). Gi tr l mt s nguyn, cho bit ta tri ca i tng (0 l mp tri ca Form, ln hn 0 hin th tng dn v bn phi form, nh hn 0 hin th tng dn v bn tri form) Thuc tnh Top Thit lp ta trn ca i tng trn Form (trc oy nu coi form nh mt ta cc). Gi tr l mt s nguyn, cho bit ta trn ca i tng (0 l mp trn cng ca Form, ln hn 0 hin th tng dn v pha di form, nh hn 0 hin th tng dn v bn trn form) Thuc tnh Height Hin th v cho php thit lp chiu cao ca i tng Thuc tnh With Cho php v hin th chiu di ca i tng
Trang 53 -
Turn On Bt ngun in my tnh. Khi my tnh s trng thi sn sng khi ng. Restart Khi ng li my tnh. Khi my tnh s thc hin tt ri bt li v thc hin cc th tc cn thit khi ng my. Running chy mt chng trnh no , gi s h iu hnh yu cu m chng trnh son tho vn bn WindWord chng hn
Mi i tng c th c nhng tp phng thc khc nhau ty thuc vo c trng ca tng loi i tng. Khi gi mt phng thc ra lm vic, tc l yu cu i tng thc hin mt s cng vic c lp trnh trc. Vic gi mt phng thc ging nh vic gi mt chng trnh con dng th tc x l mt s vn lin quan n i tng ang lm vic. Di y l mt s v d: V d 1: Phng thc Clear ca mt hp Textbox c tn Text1. Khi ra lnh sau:
Text1.Clear
My tnh s thc hin xa gi tr c trn Text1, thit lp ny trng thi rng (Null) V d 2: Phng thc AddItem ca hp Combobox dng a mt gi tr vo danh sch cc mc chn (Items) ca hp th. Gi s lm vic trn Combo c tn Combo1. Nu ra lnh sau:
Combo1.AddItems Voi Trang 54 -
Combo1.AddItems S t
1.3. Tp s kin
S kin (Events) l tp hp cc tc ng c th xy ra i vi mt i tng. V d: mt mt nt lnh Command c mt tp s kin sau:
Tn s kin Xy ra khi
Click Khi nhn chut tri ln nt lnh LostFocus Khi im tab di khi nt lnh KeyDown Khi im tab ang nm trn nt lnh v bm mt phm MouseMove Khi di chut qua nt lnh
Th tc p ng s kin ca mt i tng l mt chng trnh con c nh ngha theo mt c php cho trc x l theo mc ch ca nh lp trnh khi s kin xut hin. Tn ca chng trnh con ny c to bi cu trc <Tn i tng>_<tn s kin> (<cc tham s cn thit>) V d: th tc p ng s kin Click ca nt lnh Command1 c khai bo nh sau:
Private Sub Command1_Click() Ni dung th tc vit y End Sub
Th tc trn c ngha nh sau: khi chng trnh ang chy, nu nhn chut ln nt lnh c tn Command1, tc l xut hin s kin Click ca nt lnh ny, khi th thc Command1_Click s c thc hin nu n tn ti. Trong trng hp nu khng khai bo th tc p ng s kin, nu s kin xy ra my tnh s khng thc hin g c. Mt iu c rt ra l: nu to mt nt lnh
Trang 55
nhng khng vit (lp trnh) th tc p ng s kin Click cho nt lnh th khi nhn chut ln nt ny my tnh s khng lm g c. Mt s s kin hay s dng S kin Click Xy ra khi nhn chut tri ln i tng. S kin ny hay c s dng nht i tng nt lnh Command. Ngoi ra i tng Listbox v Combobox cng hay c s dng S kin DblClick Xy ra khi nhn p chut ln i tng. Ch rng, trc khi s kin DblClick xut hin th s kin Click s xut hin. V mun nhn kp chut tc l ngi dng phi nhn n chut t nht mt ln. S kin Validate S kin ny dng kim tra tnh ng n ca d liu. i km vi s kin s c tham s Cancel. iu ny rt thun li khi ngi lp trnh mun kim tra vic nhp d liu cho mt hoc mt i tng no . Nu ng d liu nhp ng hy thit lp tham s Cancel = False (ngm nh Cancel = False); trong trng hp pht hin d liu nhp vo cha hp l, hy thit lp tham s Cancel = true, khi my tnh s yu cu nhp li d liu n khi no tha mn th thi. Chng ta s tr li vi s kin ny trong phn K thut kim tra tnh ng n d liu s trnh by chng tip theo. S kin LostFocus Xut hin khi di im Tab ra khi i tng. Vic di im Tab s xut hin khi ngi dng nhn phm Tab hoc i khi l phm Enter. S kin ny thng dng kim tra hoc x l mt vn no sau khi kt thc nhp d liu ca mt no . Mt v d: gi s ngay sau khi nhp xong d liu Textbox H tn, ngi lp trnh mun tch c H, m v Tn ring ra x l; s kin LostFocus s rt thch hp lm vic ny.
Trang 56
Form
Form hon ton ch l ci nn thit k cc i tng khc ln to thnh mt giao din ngi s dng (nh mt ca s).
Mt s thuc tnh ca form: Caption tiu form, c th hin trn thanh tiu ca ca s. Vi form trn gi tr thuc tnh Caption l V d v Form; ControlBox cho php hin th (gi tr l True) hoc n (gi tr l False) cc nt iu khin form (nt Minimize, nt Restore v nt Close ca ca s). Vi form trn, ControlBox = True; WindowState - chn la kch c ca form khi bt u hin th. C 3 la chn l: 0 Normal (ch bnh thng, tc l thit k nh th no khi hin th kch c form ng bng nh vy); 1 Minimized (ch thu gn v thanh tc
Trang 57 -
v ca Windows, tc l khi hin th form s t ng thu v (Minimize) thanh tc v ca Windows); 2- Maximized (ch phng to ton mn hnh, tc l khi bt u kch hot, form s phng to ton mn hnh nh khi nhn nt Maximize trn ca s). Vi form trn WindowState = 0 Normal (y cng l ch ngm nh ca form); Icon - chn biu tng (icon) cho form. Mun vy trn my tnh phi c tp lm biu tng cho form dng *.ico.
Mt s s kin ca form Form c rt nhiu s kin, y s gii thiu 4 s kin m hay c s dng nht mi khi lp trnh trn form: S kin Form_Load Xy ra khi form bt u kch hot. L mt trong nhng s kin xut hin u tin (ch sau s kin Form_Initialize) mi khi kch hot mt form. S kin ny thng dng thit lp mi trng lm vic cho form. Tuy nhin khi thc hin th tc p ng s kin ny, mt s i tng thit k trn form cha c np y , nn cng c th gp phi li nh sau:
S kin Form_Activate Xy ra sau s kin Form_Load. Cng tng t nh form_load, s kin ny thng dng thit lp mi trng lm vic cho form. iu khc bit l n xy ra sau s kin Form_Load v cc i tng trn form c np v nhn dng y ;
Trang 58 -
S kin Form_Resize Xy ra khi ngi dng lm thay i kch c form. S kin ny hay c dng canh li v tr cc i tng trn form mi khi kch c ca form c thay i; S kin Form_Unload Xy ra khi ngng kch hot form, gii phng form ra khi b nh. N tng ng vi vic thc hin lnh Unload Me hoc khi dng chut nht nt Close trn form. i km vi th tc p ng s kin Form_load c tham s Cancel kiu Boolean (ngm nh l False). Khi Cancel = True, lnh Unload form s khng c thc hin, khi form s vn trng thi hot ng. S kin ny thng s dng kim tra cc iu kin cn thit trc khi quyt nh ng mt form li, gii phng b nh. Trong trng hp cha iu kin ng form, hy thit lp tham s Cancel = True.
Label l mt trong nhng iu khin n gin nht. N c tc dng hin th mt gi tr (nhn) ln form di dng vn bn (Text). im c bit ca Label l ch cho php hin th, khng cho php ngi dng c th sa v xa gi tr bng bn phm (khc vi Textbox sau ny cho php nhp, sa v xa gi tr). Hnh di minh ha vic s dng iu khin Label trong mt Form:
Trang 59
Cc i tng Label
C 4 thuc tnh thng quan tm n khi s dng Label l: - Caption nhp, thit lp gi tr hin th ln Label; - BackColor - thit lp mu nn cho Label; - ForeColor - thit lp mu ch cho Label; - Align canh l ch cho Label.
Textbox l mt trong nhng iu khin c dng kh rng ri. N thng c s dng vo vic hin th, nhp v sa d liu dng vn bn trn cc d liu t trn form. Hnh di y minh ha vic s dng Textbox trn mt form:
Trang 60
Cc i tng TextBox
c bit, i tng textbox c th hin th trn c nhiu dng v nh hp Ghi ch form trn. lm c nh vy cn thit lp thuc tnh Multiline = True v thuc tnh ScrollBar ( ty chn thanh cun cho Textbox) mt cch ph hp. Gi tr trn TextBox c th hin qua thuc tnh Text. Thng thng, VB s ngm hiu gi tr cc textbox l kiu xu k t (Text) nn lp trnh vin phi ht sc ch ti vic s dng php tnh cng + kiu s, v my tnh s hiu l php ghp xu (cng hai xu). Khi c th s dng hm Val (hm chuyn i xu s) nh sau:
Dim num As Double num = Val(Text1.Text) + Val(Text2.Text) Vit nh th ny s b sai kt qu num = Text1.Text + Text2.Text
Tuy nhin trong VB nu ch vit nguyn tn i tng Textbox (v d Text1 chng hn), my tnh cng hiu l ly gi tr ca thuc tnh Text ca i tng ny. Tc l:
Lnh num = Text1.Text + Text2.Text cng tng ng vi lnh num = Text1 + Text2
Trang 61
Khuyn co: Chng ti khuyn co khng nn vit tt nh vy, s to thnh mt thi quen khng tt khi s dng nhng cng c lp trnh chuyn nghip sau ny.
S kin ca Textbox rt nhiu, y s gii thiu 2 s kin hay c s dng nht vi Textbox: S kin Validate Mt s kin rt quan trng trong vic kim tra tnh ng n d liu khi nhp vo mt iu khin. V d sau y minh ha iu : Yu cu to form cho php nhp vo H tn v Tui nh sau:
Trong H tn khng c trng, Tui phi nhp vo mt s. Gi s thuc tnh Name (tn) ca H tn l txtHoten, Tui l txtTuoi. Khi m lnh kim tra tnh ng n 2 Textbox trn l 2 th tc p ng s kin Validate nh sau:
'kim tra tnh ng n H tn ' Private Sub txtHoten_Validate(Cancel As Boolean) If txtHoten = "" Then Cancel = True MsgBox "H tn khng c trng !" End If End Sub 'kim tra tnh ng n cho nhp Tui ' Private Sub txtTuoi_Validate(Cancel As Boolean) If Not IsNumeric(txtTuoi) Then Cancel = True MsgBox "Tui phi l mt s !" Trang 62 -
S kin LostFocus S kin ny thng dng khi dch im Tab qua i tng va lm vic. Trong v d v Textbox, s trnh by v d v tch ly Tn ngay sau khi Nhp xong d liu cho H tn (c Name l txtHoten). V d ny s dng n hm GetTen, ton b m lnh nh sau:
Private Sub txtHoten_LostFocus() Msgbox "Tn va nhp l : " + GetTen(txtHoten) End Sub Function GetTen(st As String) As String Dim pos As Integer pos = 1 If InStr(pos, Trim(st), " ") = 0 Then GetTen = st Exit Function End If While InStr(pos + 1, Trim(st), " ") > 0 pos = InStr(pos + 1, Trim(st), " ") Wend GetTen = Trim(Mid(st, pos)) End Function
iu khin CommandButton l i tng m ngi dng thng gi l nt lnh trn cc giao din s dng. Chng c thit k chp nhn thi hnh mt mnh lnh no .
Trang 63 -
Mt s thuc tnh thng s dng ca CommandButton: Thuc tnh Caption thit lp hin th ch cho nt lnh. V d nt lnh sau y: c thuc tnh Caption l X l d liu.. Thuc tnh Appearance chn la kiu hin th cho nt lnh, c 2 kiu la chn: 0 Flat (kiu phng) v 1 3D (kiu ba chiu thng thng hay dng kiu 3D). Thuc tnh Cancel Nu thuc tnh Cancel ca mt nt lnh l True, khi form cha nt lnh ang kch hot, nu bm phm Esc (Escape), ngay lp tc s kin Click nt lnh ny c thi hnh. Thng thng thuc tnh ny hay c thit lp l True cho nhng nt Thot, Kt thc, Hu hay Cancel. Thuc tnh Default Tri li vi thuc tnh Cancel, mt nt lnh nu c thit lp thuc tnh Default l True, khi form cha nt lnh ny kch hot, nu nhn phm Enter, ngay lp tc s kin Click ca nt lnh ny c kch hot. Thng thng Default c thit lp l True cho cc nt ng hoc Ok.
Ch : Trn mt form, khng th thit lp ng thi 2 thuc tnh Cancel v Default cho mt nt lnh l True.
Thuc tnh Picture np mt nh lm nn cho nt lnh. thuc tnh ny c hiu lc, phi thit lp gi tr thuc tnh Style ca nt lnh l Graphic.
S kin ca nt lnh rt khim tn, hu ht lp trnh ch s dng s kin Click tc l c kch hot khi nhn chut tri ln nt lnh.
Trang 64
Picturebox l iu khin cho php hin th v x l mt s thao tc v nh ln form nh: phng to, thu nh nh (Zooming); cun nh (Scrolling); lt nh (flipping); Mt s thuc tnh ca Picturebox Thuc tnh Picture ch n tp nh cn hin th ln Picturebox. C th thit lp thuc tnh ny trn hp thoi Properties trong ch thit k form. Hoc dng m lnh: gi s c Picture1 trn form, mt tp nh nm c:\windows\setup\setup.bmp. Th tc LoadPicture s hin th nh ny ln iu khin picturebox trn form:
Picture1.Picture = LoadPicture("c:\windows\setup.bmp")
Trang 65
iu khin Combobox l dng iu khin trnh by giao din, gip vic chn la mt gi tr trn mt danh sch tr nn d dng. Khi s dng, iu khin ny c dng nh sau:
Cu trc ca mt Combobox bao gm mt hp chn, trong c th c mt danh sch cc mc chn (Items). Lm vic trn Combobox tc l lm vic trn cc Items. Bao gm cc cng vic nh: Lm th no thm cc Items vo danh sch mc chn? Lm th no xo b mc chn ra khi danh sch? Lm th no nh v, di chuyn, cc mc chn?
Tt c c th thc hin c thng qua tp cc thuc tnh v phng thc ca iu khin ny. Tp hp cc phng thc: Phng thc AddItem thm mt Item ln danh sch. C php nh sau:
Trang 66 -
Trong : <tn combobox> l gi tr thuc tnh Name ca Combo; <gi tr> l nhn hin th ca Item mi thm vo.
Hn na, ti ca s Properties cng c th khi to c danh sch cc Items cho mt Combobox bng cch g chng vo thuc tnh List. Phng thc RemoveItem Dng g b mt Item no ra khi danh sch. Mun vy, phi xc nh c Item c s th t bao nhiu s c g ra (s th t ny c tnh t 0). C php nh sau:
<tn Combobox>.AddItem <stt>
Trong : <tn combobox> l gi tr thuc tnh Name ca Combo cn g Item; <stt> l s th t ca Item cn g b, STT ny c tnh t 0.
V d: mun g b Item c gi tr Th 4 trn, phi thc hin cu lnh g b Item vi STT l 3 nh sau:
Combo1.RemoveItem 3
Phng thc Clear dng xa b ton b cc Items ang c trn mt Combobox. Sau khi gi phng thc ny, Combobox tr nn rng trng.
Combo1.Clear
Mt s cc thuc tnh hay s dng Thuc tnh ListCount Cho bit tng s cc Item ang c trn Combobox Thuc tnh List truy cp ti mt Item no . V tr ca Item cn truy cp c th hin qua s th t ca n. V d mun thit lp gi tr ca Item c s th t 3 t Th 4 sang Th t, c th s dng thuc tnh List thng qua cu lnh sau:
Combo1.List (3) = Th t
Thuc tnh ListIndex Cho bit s th t ca Item ang c chn trn Combobox. V d sau cho php hin th s th t ca Item ang c chn trn Combo1:
Msgbox ang chn Item th: + Str(Combo1.ListIndex)
Trang 68
iu khin Listbox l dng iu khin trnh by giao din, gip vic chn la mt gi tr trn mt danh sch tr nn d dng. Khi s dng, iu khin ny c dng nh sau:
Cu trc ca mt Listbox bao gm mt bng chn, trong c th c mt danh sch cc mc chn (Items). Cu trc ny ht nh cu trc ca Combobox
iu khin Checkbox ch c th hin c 2 trng thi: c chn (Checked) v khng c chn (Unchecked), cho nn iu khin ny thng c dng biu din d liu dng Logical (True hoc False). Mt s thuc tnh hay dng Thuc tnh Caption biu din nhn hin th trn iu khin Thuc tnh Value bit c trng thi (d liu) trn iu khin. C 3 trng thi l: 0 Unchecked iu khin khng c chn;
Trang 69 -
1 Checked - iu khin c chn (tch); 2 Grayed - trng thi lng. Trng thi ny thng xut hin lc u tin, khi iu khin Checkbox cha c khi to l Checked hay Unchecked. Sau khi xc nh Checked hay Unchecked, s khng tn ti gi tr Grayed na.
V d di y minh ho cch s dng iu khin Checkbox vo vic biu din d liu gii tnh cho nhn s. Nu l nam gii, s c Checked, tri li l n gii. Nt lnh xc nh kt qu tr li gi tr iu khin checkbox ang chn. Bc 1: thit k forrm nh sau:
Bc 2: vit m lnh cho cc s kin Click ca nt lnh Xc nh gii tnh chn nh sau:
Private Sub Command1_Click() '------------------------------------'cn c vo thuc tnh Value xc nh gii tnh ' If Check1.Value = Checked Then MsgBox "L nam gii !" Else MsgBox "L n gii !" End If End Sub
Trang 70
iu khin OptionButton thng dng trong nhng tnh hung chn la ly mt kt qu t danh sch cc la chn c sn. C 2 thuc tnh quan trng: Thuc tnh Caption thit lp nhn hin th cho OptionButton Thuc tnh Value xc nh gi tr ca OptionButton. Bng True nu OptionButton c chn, tri li l False. c bit, mt tp hp cc iu khin OptionButton trn mt Frame ch c th tn ti nhiu nht 1 iu khin OptionButton nhn gi tr True. V d sau y s s dng cc iu khin OptionButton thc hin thit k 2 cu hi thi trc nghim trn my tnh: Bc 1: Thit k form nh sau:
Trang 71
Trong : tn ca cc OptionButton trn Cu 1 v Cu 2 ln lt t theo th t t trn xung di l: opt11, opt12, opt13 v opt21, opt22. p n ng ca cu 1 nu Chn opt12; p n ng Cu 2 nu chn opt21 (hnh di).
ketqua = 0 '----------------------------------'nu chn opt12, tr li ng 1 cu ' If opt12.Value = True Then ketqua = ketqua + 1 '----------------------------------'nu chn opt21, tr li ng thm 1 cu na ' If opt21.Value = True Then ketqua = ketqua + 1 '----------------------------------'in kt qu ' MsgBox "Bn tr li ng " + Str(ketqua) + "/ 2 cu !" End Sub
DriveListBox
DirListBox
FileListBox
Trang 73
iu khin DriveListBox
iu khin DriveListBox dng to giao din truy cp n danh sch cc a tm thy trn my tnh. Do l DriveListBox nn hnh dng cng nh mt s thuc tnh ca iu khin ny ging vi iu khin ComboBox trnh by trn (mc 3). Di y l mt s thuc tnh hay c s dng: List - truy cp ti tng a trn DriveListBox. V d Drive1.List(1) cho bit ng dn ca a th 2 (th t c tnh t 0) trn Drive1. ListCount- cho bit tng s a truy cp c trn my tnh. ListIndex - cho bit s th t ca a ang chn.
iu khin DirListBox
iu khin DirListBox dng to giao din truy cp n cy th mc trn my tnh. Di y l mt s thuc tnh hay c s dng: List - truy cp ti tng th mc con (Item) trn cy th mc. V d Dir1.List(2) cho bit ng dn ca th mc th 3 (th t c tnh t 0) t trn xung trn cy th mc Dir1. ListCount- cho bit tng s th mc c trn cy th mc DirLisstBox.
Trang 74 -
ListIndex - cho bit s th t ca th mc con ang c chn trn cy th mc. Path - cho bit ng dn y th mc m ca th mc con ang chn trn cy th mc (th mc gc l a dang chn).
iu khin DirListBox
iu khin FileListBox dng to giao din truy cp n danh sch cc tp tin (files) trn mt th mc no . Di y l mt s thuc tnh hay c s dng: List - truy cp ti tng tp tin trn danh sch. V d File1.List(2) cho bit tp tin th 3 (th t c tnh t 0) trong danh sch cc tp tin ang hin th File1.. ListCount- cho bit tng s tp tin ang hin th trn FileListBox. ListIndex - cho bit s th t ca tp tin ang c chn trn FileListBox. Path - ng dn ti th mc cho FileListBox lm vic. Pattern - thit lp t lc cho cc tp tin hin th trn FileListBox.
4.4 V d tng hp
Thit k mt giao din nh sau:
Trang 75
Drive1 lbThongke
Dir1
File1
Combo1
Khi chn mt a, cy th mc ca a xut hin trn mt DirListBox c tn Dir1; Khi chn mt th mc trn Dir1, danh sch cc tp tin ca th mc vi phn m rng ca tp tin tha mn Combo1 s c hin th ln mt FileListBox c tn File1. ng thi my tnh s m s tp tin ang hin th trn File1 ra mt Label c tn lbThongke. Ton b m lnh cho form trn nh sau:
Private Sub Form_Load() '--------------------'Add cc kiu file cn lc ln Combo1 ' Combo1.AddItem "*.*" Combo1.AddItem "*.doc" Combo1.AddItem "*.txt" Combo1.AddItem "*.exe" '-------------------'ngm nh s hin th *.* ' Combo1.ListIndex = 0 End Sub Private Sub Drive1_Change() Trang 76 -
On Error GoTo Thoat '--------------------'Thit lp a cho Dir1 l Drive1 ' Dir1.Path = Drive1 Exit Sub '----------------------'Trng hp a khng sn sng, hin th mt thng bo li ' Thoat: MsgBox "Khng truy cp c a ny!", vbCritical End Sub Private Sub Dir1_Change() '-----------------------'gi th tc hin th tp tin ln File1 ' Call Show_file End Sub Private Sub Combo1_Click() '-----------------------'gi th tc hin th tp tin ln File1 ' Call Show_file End Sub Sub Show_file() '-------------------'Thit lp ng dn cho File1 l th mc ang chn Dir1 ' File1.Path = Dir1 '-------------------'Thit lp thuc tnh t lc cho File1 Combo1 ' File1.Pattern = Combo1 '-------------------'thng k tng s File hin th a ra lbThongke ' lbThongke.Caption = "c " + Str(File1.ListCount) + " file(s)" End Sub
Trang 77
5. Mt s iu khin chung
5.1 iu khin MS Common Dialog
MS Common Dialog l iu khin gip gi ra cc hp thoi: m tp tin (Open file), ghi tp tin (Save file), m hp thoi phng ch (Font), m hp thoi chn mu h thng. Thng thng, iu khin ny cha c sn trn thanh cng c ToolBox, mun c lm nh sau: M thc n Project | Components, hoc nhn t hp phm nng Ctrl + T, mt hp thoi xut hin. Hy tm n mc Microsoft Common Control 6.0 v chn nh sau:
Trang 78
iu khin CommonDialog
Mt s thuc tnh thng s dng: Thuc tnh CancelError Nu thit lp l False, b qua li trong qu trnh m hp thoi h thng Common Dialog Thuc tnh DefaultExt thit lp kiu tp ngm nh s lc trn hp thoi. Thuc tnh DialogTitle thit lp tiu ca s hp thoi h thng khi m ra. Thuc tnh FileName t tn tp tin cn m hoc ghi trn hp thoi Common Dialog. Hn na thuc tnh ny dng ly gi tr l tp tin c chn trn hp thoi Open File. Thuc tnh Filter to danh sch t lc tp tin Thuc tnh InitDir thit lp th mc ngm nh tr ti khi hp thoi Open File hoc Save c m ra. Mt s phng thc ca iu khin Common Dialog Phng thc ShowOpen hin th Common Dialog di dng hp thoi m tp tin (Open File). Dng hp thoi ny nh sau:
Trang 79 -
Phng thc ShowSave hin th Common Dialog di dng hp thoi ghi tp tin (Save As). Dng hp thoi ny ging nh hp Open File. Phng thc ShowPrinter hin th Common Dialog di dng hp thoi ty chn my in h thng. Dng hp thoi ny nh sau:
Trang 80
Phng thc ShowColor hin th Common Dialog di dng hp thoi mu sc h thng. Dng hp thoi ny nh sau:
iu khin Treeview l i tng c th th hin d liu di dng cy (Tree). iu ny rt thun tin khi d liu cn trnh by c cu trc phn cp. Hnh di l mt Treeview ang trnh by cy phn cp cc mc:
Trang 82
s dng c Treeview, cn gi t th vin nhm iu khin dng Microsoft Windows Common Controls 6.0 trn ca s Components nh hnh di:
Trc ht tm hiu cu trc mt treeview: Cu trc mt Treeview bao gm tp hp cc nt (Nodes). C 2 loi nt l: nt gc (Root) v nt con (Sub-Node);
Trang 83 -
Mi nt s bao gm mt tp hp cc thuc tnh nh sau: Thuc tnh Text - thit lp nhn hin th cho nt . V d trn, cc gi tr Mc 1, Mc 1.1 hoc Mc 1.2.1, chng l gi tr ca thuc tnh Text ca cc nt tng ng; Thuc tnh Key - thit lp gi tr kha cho nt . Mi nt c th c mt gi tr kha, gi tr ny l duy nht (khng c php tn ti 2 nt c gi tr kha nh nhau). K t u tin ca mt nt phi l mt ch ci. Thuc tnh Key thng dng xc nh c du hiu cho bit ngi dng ang chn nt no trn treeview. Hn na, Key bt buc phi c nu nt s tn ti cc nt con ca n; Thuc tnh ForeColor - thit lp mu sc cho Text ca nt; Thuc tnh Bold - thit lp kiu ch m cho nt; Thuc tnh Tag thng thng gn mt gi tr no cho tng nt. Khc vi Key, gi tr ca Tag c th trng nhau v c th gn a dng v kiu d liu. Thuc tnh Image - chn biu tng nh cho nt. l s th t ca nh trn mt iu khin ListImage thit lp cho treeview ny trc ; Thuc tnh Parent - truy cp n nt cha ca nt no .
Mt s thuc tnh ca Treeview: Thuc tnh Checkboxes - thit lp du Checkbox trn mi nt; Thuc tnh ImageList - thit lp ImageList cha cc biu tng nh lm biu tng cho cc nt trn treeview; Thuc tnh SelectedItem xc nh nt ang c chn trn treeview. Nt ny s c gn gi tr vo mt bin kiu Node; Cch lm vic vi Treeview: lm vic vi Treeview, cn khai bo t nht mt bin kiu Node nh sau:
Dim nd As Node Trang 84 -
Trong : nd l bin kiu Node c khai bo trc ; <tn treeview> l gi tr thuc tnh Name ca Treeview ang lm vic. Tip theo, thng qua bin nd c gn cho nt mi thit lp cc thuc tnh cn thit cho nt ny. V d:
Set nd = TreeView1.Nodes.Add() nd.Text = "Mc 1" nd.key = "m1" nd.Tag = 1 nd.ForeColor = &H800000 nd.Bold = True
Thm mt nt con Nt con (Sub-Node) l nt m lun tn ti mt nt cha ca n. Nt cha ny c th l mt nt dng nt gc, nhng cng c th l mt nt dng nt con.
Set nd = <tn treeview>.Nodes.Add(<key nt cha>, 4)
Trong : nd l bin kiu Node c khai bo trc ; <tn treeview> l gi tr thuc tnh Name ca Treeview ang lm vic; <key nt cha> l gi tr Key ca nt cha. Tip theo, thng qua bin nd c gn cho nt mi thit lp cc thuc tnh cn thit cho nt ny. V d di y s to mt nt con ca nt Mc 1 to trn:
Set nd = TreeView1.Nodes.Add("m1", 4) nd.Text = "Mc 1.1" nd.key = "m1.1" Trang 85 -
nd.Text = "Muc 2.2" nd.key = "m2.2" '-------------------------'To tip lp cc nt con na ' Set nd = TreeView1.Nodes.Add("m2.2", 4) nd.Text = "Muc 2.2.1" Set nd = TreeView1.Nodes.Add("m2.2", 4) nd.Text = "Muc 2.2.2" Set nd = TreeView1.Nodes.Add("m2.1", 4) nd.Text = "Muc 2.1.1" End Sub Private Sub TreeView1_DblClick() MsgBox "ang chn nt c Key l:" + TreeView1.SelectedItem.key _ & " C nhn l: " + TreeView1.SelectedItem.Text End Sub
S kin Treeview1_DblClick() hin th gi tr Key v Text ca nt ang chn khi nhn kp chut ln nt .
Trang 87
Bi tp chng 2
Bi tp 1: To form tm c s chung ln nht, bi s chung nh nht ca 2 s nguyn A v B nh sau:
Sau khi nhn nt Hin th s nguyn t, danh sch cc s nguyn t tm c s hin th ra Kt qu nh hnh trn. Bi tp 3:
Trang 88
To form cho php gii phng trnh Ax2 + Bx + C = 0 trong A, B, C l 3 s thc c nhp vo, x l nghim cn tm. Mi kt qu s c hin th ln Kt qu.
Bi tp 4: Xy dng form gm 2 List box (hnh di), cc nt >, >>, <, << c tc dng chuyn mt hoc tt c cc mc (Items) t danh sch 1 sang danh sch 2 v ngc li.
Trang 89
Hn na, thit k sao cho khi nhn kp chut ln mt mc mt danh sch, mc s c chuyn sang danh sch bn kia. Bi tp 5: S dng Treeview, ImageList xy dng cy danh mc Tnh (Thnh) \ Huyn (Qun) \ X (Phng) nh hnh sau:
Trang 90
CHNG
LP TRNH C S D LIU
Trong chng ny s trnh by cc cch dng VB lp trnh iu khin d liu trn mt h CSDL no . Hin nay ang tn ti kh nhiu cc k thut lp trnh CSDL, tuy nhin khun kh cun sch ny ch trnh by hai k thut cn bn l DAO (Data Access Objects) v ADO (ActiveX Data Objects) thng qua cc bi ton lp trnh CSDL c th nh: Bi ton cp nhp d liu; Cc phng php trnh by d liu; Bi ton tm kim, t lc d liu; Bi ton thit k in d liu
Trong ton b chng ny, phn l thuyt v cc v d s c trnh by thng qua 2 h CSDL mu trn Access nh sau: C s d liu Qun l th vin
Trang 91
Trong : Bng NXB lu tr danh sch cc nh xut bn; Bng TACGIA lu tr danh sch cc tc gi vit sch Bng SACH lu tr cc thng tin v sch trong th vin. Mi sch s c nhng thng tin sau: sachID m sch, tn sch, nxbID - xut bn u? Nm xut bn, tacgiaID - ca tc gi no? vn tt - nhng thng tin gii thiu vn tt v cun sch ny. C s d liu Qun l lng cn b:
Trong : Bng CHUCVU lu tr danh mc cc chc v trong c quan, ph cp chc v (phucapcv) cng c xc nh cho mi loi chc v tng ng trong bng ny; Bng PHONGBAN lu tr danh mc cc phng ban c trong n v qun l; Bng CANBO lu tr ton b thng tin v cn b trong c quan. Bng ny kt ni sang bng PHONGBAN v CHUCVU bit c cc thng tin v chc v v phng ban ca cn b.
Trang 92
1. K thut DAO
DAO (Data Access Objects Cc i tng truy xut d liu) l tp hp bao gm lp cc i tng c th dng lp trnh truy cp v x l d liu trong cc h CSDL. y l CSDL Access, ngn ng lp trnh VB. DAO c pht trin kh sm, gn y nht l phin bn DAO 3.5 v 3.51n c th thc hin tt c trn cc phin bn Access t 97 tr v trc. Vi Access 2000, XP phi dng phin bn DAO 3.6. Vi phin bn mi ny, DAO 3.6 s dng nn Microsoft Jet 4.0. V vy, c th lm vic c trn nn Unicode d dng. Cch thc lp trnh trn mt h CSDL c m t tng qut nh sau: ng dng
Cc kt ni d liu
C s d liu
Trong : Tng ng dng: bao gm nhng giao din ngi s dng cng nh nhng cng c n gin m ngi lp trnh c th dng x l d liu theo cc bi ton; Tng Kt ni d liu: bao gm tp hp cc cng c, phng thc kt ni ti nhng d liu cn lm vic trong CSDL. y, tng kt ni bao gm cc chun Microsoft Jet 3.51 v cc lp i tng DAO; Tng C s d liu: bao gm cc bng, cc query trong c s d liu thc ti.
Trang 93 -
Nh vy lp trnh trn mt CSDL phi s dng cc i tng, cc phng thc tng kt ni nh l nhng cng c c th truy cp c vo CSDL tc nghip x l. Tng kt ni chnh l Jet 3.51 v DAO 3.6 s trnh by di y.
Workspaces
Databases
RecordSets
QueryDefs
TableDefs
Relations
Trong : Workspaces nh ngha tp hp cc vng lm vic. y c th coi l lp lm vic cao nht. V l thuyt c th khai bo mt vi vng lm vic (Workspace), nhng trn thc t ch cn khai bo mt vng lm vic v
Trang 94 -
vng ny lun c khai bo ngm nh cho CSDL hin ti. Nn s khng cn bn nhiu n lp cc WorkSpace ny; Databases - nh ngha tp hp cc CSDL Access cn lm vic trn mt d n; RecordSets- nh ngha cc tp hp bn ghi (Records) cn lm vic; QueryDefs - nh ngha tp hp cc Query lm vic. Querydefs v Recordsets l kh nng truy xut, x l d liu (Data Manipulation) ca DAO; TableDefs - nh ngha tp hp cc bng (Table) cn lm vic. y l kh nng nh ngha d liu (Data-Definition Language); Relations - nh ngha tp hp cc quan h (Relationship) cn lm vic; Mi lp cc i tng trn s bao gm tt c cc i tng cng loi trong mt i tng m ang m. V d: - Databases s bao gm tt c cc CSDL ang c m trong vng lm vic hin ti; - RecordSets s bao gm tp hp tt c cc Recordset ang c m trn CSDL hin ti. Khi , tham chiu n mt i tng c th cn lm vic, c th dng ch s (s th t ca i tng trn tp hp tt c cc i tng ) hoc dng tn gi i tng tham chiu. V d sau lit k tn ca tt c cc Recordset ang s dng trong CSDL db.
Dim db As DAO.Database '-----------------------------------'cc cu lnh tip theo y.. '-----------------------------------'-----------------------------------'Lit k tn tt c cc recordset ang c m trn db ' For i = 0 To db.Recordsets.Count MsgBox db.Recordsets(i).Name Next
Trang 95
lm vic ti mt i tng c th, cn phi tham chiu t lp cc i tng m ca n. V d: hin th gi tr ca trng (Field) hoten trn tp hp cc bn ghi (Recordset) rs1 lm nh sau:
MsgBox rs1.Fields("hoten").Value ' hoc MsgBox rs1.Fields![hoten].Value
Khai bo
Dim db As DAO.Database ' Gn db cho mt CSDL c th Set db = OpenDatabase(C:\Baitap\qlbh.mdb)
Trang 96
Sau khi lnh ny thc thi, tt c cc i tng con ca db nu ang m s c ng li gii phng b nh. Bn thn db cng c gii phng b nh (l Nothing), tt nhin tp CSDL v d liu vn cn nguyn trn a.
Khai bo
Set rs=db.OpenRecordset(<Name>)
gn vo bin kiu recordset rs; <Name> l mt xu k t ch ra ngun d liu s tr v cho Recordset. Xu ny c th l tn mt bng, mt Query hoc mt cu lnh SQL; Mi bin Recordset khi lm vic, phi c ch ra Database xut x ca n (phi c tham chiu t mt bin kiu Database c khai bo). Sau y l cc v d:
V d 2: Gn tp hp cc bn ghi t mt cu lnh chn d liu SQL vo bin Recordset ( y l cc thng tin hoten, ngaysinh ca tt c cc cn b n t bng canbo).
Dim rs As DAO.Recordset Set rs = db.OpenRecordset("SELECT hoten, ngaysinh FROM canbo WHERE gioitinh = False")
Mt s thuc tnh ca Recordset Thuc tnh Name Tr v xu k t trong tham s <name> ca lnh gi Recordset. V d: lnh sau s cho bit xu k t to ngun d liu cho Recordset l g?
MsgBox rs.Name
Thuc tnh AbsolutePosition Cho bit v tr bn ghi hin ti (c tnh t 0). Trong trng hp khng c bn ghi no trn recordset hoc con tr bn ghi ang nm EOF- s khng th ly c gi tr thuc tnh ny. Do vy s dng thuc tnh ny thng phi i km thuc tnh kim tra c tn ti bn ghi no hay khng (RecordCount > 0) v con tr bn ghi c cui tp cha (EOF = False). Thuc tnh RecordCount Cho bit tng s bn ghi tr v trn Recordset Thuc tnh EOF Cho bit con tr bn ghi hin ti c nm EOF hay khng? Nu c gi tr thuc tnh ny l True, tri li l False. Thuc tnh Fields
Trang 98 -
Dng tham chiu ti cc trng (Fields) trn tp hp cc bn ghi m Recordset tr v. Thc t Field cng l mt i tng v cng c b thuc tnh v cc phng thc ca n. Vi Field ca Recordset thng thng ngi ta hay s dng thuc tnh Value. Nu khng ch nh thuc tnh c th no cho Field, VB vn hiu ngm nh l Value. V d: Hin th gi tr trng hoten trong Recordset rs
Msgbox rs.Fields("hoten").Value 'hoc Msgbox rs.Fields("hoten")
Mt s phng thc ca Recordset Phng thc Close ng Recordset, gii phng b nh. Ch thc hin hnh ng ny khi khng lm vic vi Recordset no . Cc phng thc di chuyn bn ghi ca Recorset Phng thc MoveFirts chuyn con tr v bn ghi u tin Phng thc MoveLast di chuyn con tr v bn ghi cui cng Phng thc MoveNext Dch n bn ghi k sau Phng thc MovePrevious Dch n bn ghi k trc V d 3: V d sau duyt v hin th ton b Hoten ca bng canbo
Dim rs As DAO.Recordset Trang 99 -
Set rs = db.OpenRecordset("canbo") If rs.RecordCount > 0 Then rs.MoveFirst While rs.EOF = False MsgBox rs.Fields("hoten").Value rs.MoveNext Wend End If
Phng thc AddNew, Update thm mi mt bn ghi vo Recordset. Qui trnh thm mt bn ghi mi nh sau: 1. Ra lnh Addnew 2. Gn gi tr cho cc trng ca bn ghi mi 3. Ra lnh Update Di y l v d thm mi mt h s cn b mi vo bng canbo. V d 4:
Dim rs As DAO.Recordset Set rs = db.OpenRecordset("canbo") '---------------------'Ra lnh thm mi bn ghi ' rs.AddNew '-------'Gn gi tr cho cc trng ca bn ghi mi ' rs.Fields("canboID") = "CB00565" rs.Fields("hoten") = "Nguyn Sn Hi" rs.Fields("ngaysinh") = #2/11/1975# rs.Fields("gioitinh") = True rs.Fields("chucvuID") = "CV002" '-------'Ra lnh ghi li d liu ' rs.Update
Trang 100
Phng thc Edit, Update Phng thc Edit sa d liu mt bn ghi no trn recordset. Qui trnh sa mt bn ghi nh sau: 1. nh v ti bn ghi cn s trn recordset 2. Ra lnh Edit 3. Gn gi tr mi cho cc trng cn sa 4. Ra lnh Update Di y l v d v sa h s cn b c m CB000565 V d 5:
Dim rs As DAO.Recordset '------------------------------------'nh v ti bn ghi cn sa ' Set rs = db.OpenRecordset("SELECT * FROM canbo WHERE canboID='CB0565'") If rs.RecordCount > 0 Then rs.MoveFirst '--------------------------------'Ra lnh sa bn ghi ' rs.Edit '--------------------------------'Thc hin sa cc trng d liu cn thit ' rs.Fields("hoten") = "Nguyn Vn Hi" rs.Fields("ngaysinh") = #22/11/1975# '----------------------'Ra lnh ghi li d liu va sa ' rs.Update End If
xo bn ghi hin ti ra khi Recordset. Khi bn ghi hin ti s b xo b khi CSDL. Cn thn trng mi khi ra lnh ny. Thng thng cc lnh mt nt Xo bn ghi ca mt mu nhp liu (nhp vo bin Recordset rs) nh sau: V d 6:
Private Sub cmDelete_Click() Dim tbao tbao = MsgBox(" chc chn xo cha?", vbYesNo + vbCritical) If tbao = vbYes Then rs.Delete rs.MoveNext End If End Sub
to v kch hot mt query trn VB bng cch thc thi cu lnh SQL, lm theo hng dn sau:
'-----------------'Khai bo mt bin kiu Database v mt bin kiu QueryDef Dim qr As DAO.QueryDef '--------------------------'Ra lnh to mt Query mi, c tn rng (ch trong b nh) Set qr = db.CreateQueryDef(<tn query>) '------------------------------'Gn chui lnh SQL vo thuc tnh SQL ca query ' qr.SQL = "G lnh SQL cn thi hnh vo y"
Trang 102
'-------------------------'Ra lnh thi hnh query ' qr.Execute '--------------------------'gii phng b nh qr.Close
Trong : - Bt buc phi khai bo mt bin kiu QueryDef lm vic (bin qr); - Phi c mt bin Database c khai bo sn (bin db); - Lnh
Set qr = db.CreatQueryDef(<tn query>)
to mt query mi ln
CSDL. <tn query> s c hin th trn danh sch trong th Queries trn ca s Database. Nu <tn query>="", query ny s ch tn ti trong b nh. Tu thuc vo mc ch cng vic m c t tn query hay khng, nu ch n thun to mt query x l cng vic no ri gii phng, nn t <tn query>=""; - Lnh qr.SQL=<cu lnh SQL> gn lnh SQL cn thc thi vo Query. Tu thuc vo cu lnh SQL ny m query s thc hin nhng g. V d:
qr.SQL = "DELETE * FROM canbo"
bng cn b; - Lnh qr.Excute thi hnh cu lnh SQL c thit lp. Lnh ny tng ng nhn nt Run i vi mt query trn ch thit k; - Lnh
qr.Close
lm vic n na. Sau y l mt s v dng v s dng bin QueryDef to ra mt s loi query x l d liu. V d 1: To DELETE query xo danh sch nhng cn b c tui ln hn 60 ra khi bng canbo (cn b ngh hu)
Dim qr As DAO.QueryDef
Trang 103
Set qr = db.CreateQueryDef("") qr.SQL="DELETE * FROM canbo WHERE Year(Date())- " _ & " Year(Ngaysinh)>=60" qr.Execute qr.Close
V d 2: Gi s thm mt trng mi trn bng cn b c tn luongchinh. To UPDATE query tnh gi tr cho trng ny = hesoluong * 290000.
Dim db As DAO.Database Dim qr As DAO.QueryDef Set db = CurrentDb Set qr = db.CreateQueryDef("") qr.SQL = "UPDATE canbo SET canbo.luongchinh = hesoluong * 290000" qr.Execute qr.Close
Mt s thuc tnh quan trng ca TableDef Thuc tnh Name Cho bit tn bng c gn vo bin kiu TableDef
Trang 104 -
Thuc tnh RecordCount Cho bit tng s bn ghi hin c trn bng c gn bi bin TableDef Thuc tnh DateCreated Cho bit thi gian to ra bng c gn vo bin kiu TableDef Thuc tnh Fields tham chiu ti cc trng ca bng. y l thuc tnh hay c s dng nht i vi TableDef. Thc cht, Field y l mt i tng, do cng c tp cc thuc tnh v phng thc ring cho thuc tnh ny. Di y l th tc hin th tn ca tt cc cc trng trong mt bng no (ngm nh trn mt CSDL c khai bo v gn bin db - kiu Database).
V d 1:
Sub LietKeTenTruong(tenbang As String) Dim tbl As DAO.TableDef Set tbl = db.TableDefs(tenbang) For i = 0 To tbl.Fields.Count - 1 MsgBox tbl.Fields(i).Name Next End Sub
Mt s phng thc ca TableDef Phng thc CreateTableDef to ra mt bng mi t VB. C php to bng mi nh sau:
Set tbl = db.CreateTableDef(<Tn bng mi>) ------------------------------------------....Cc th tc to trng mi cho bng ------------------------------------------db.TableDefs.Append tbl
Trang 105
Trong : db l bin kiu Database c gn bi CSDL cn lm vic (bng mi s c to ra trn CSDL ny); <Tn bng mi> l tn bng cn to. Lnh db.TableDefs.Append tbl l lnh ghi cu trc bng ang khai bo ln CSDL ch nh. Phng thc CreateField to ra cc trng cho mt bng kiu TableDef no . thm mt trng mi ln bng, s dng c php sau:
tbl.Fields.Append tbl.CreateField(<tn trng>,<KiuDL>,<ln>)
Trong : <tn trng> - tn trng mi cn to; <KiuDL> - l mt tu chn khai bo kiu d liu ca trng cn to. Kiu d liu c khai bo theo cc hng s nh sau:
Gi tr: Tng ng vi kiu dbBoolean Boolean dbByte Byte dbChar Char dbCurrency Currency dbDate Date/Time dbDecimal Decimal dbDouble Double dbFloat Float dbGUID GUID dbInteger Integer dbLong Long dbMemo Memo
Trang 106 -
Tip theo l v d minh ho cch to cu trc mt bng d liu tng hp nhng hng dn trnh by trn. V d 2:
Sub TaoBangMoi() On Error GoTo Loi Dim tbl As DAO.TableDef Set tbl = db.CreateTableDef("NewTable") tbl.Fields.Append tbl.Fields.Append tbl.Fields.Append tbl.Fields.Append tbl.Fields.Append tbl.CreateField("ID", dbInteger) tbl.CreateField("Name", dbText) tbl.CreateField("Age", dbByte) tbl.CreateField("DateBirth", dbDate) tbl.CreateField("Comment", dbMemo)
db.TableDefs.Append tbl Exit Sub Loi: If Err.Number = 3010 Then MsgBox " tn ti bng c tn " + tbl.Name End If End Sub
Trang 107
Set rls = db.CreateRelation("TaoQuanHe", "khach", "hoadon", dbRelationUpdateCascade) rls.Fields.Append rls.CreateField("khachID") rls.Fields("khachID").ForeignName = "khachID" db.Relations.Append rls Loi: If Err.Number = 3012 Then MsgBox " tn ti quan h ny !" End If End Sub
Trong trng hp tn ti kt ni ny, mt thng bo li ting Vit " tn ti quan h ny !" xut hin.
Trang 108
Cch thit lp: G tn form vo hp Form Name: ch tn form khng cha du cch v mt s k t c bit; Hp Record Source, chn tn bng cn nhp d liu. y chn bng CHUCVU; Tip theo s dng cc nt >, >> hoc <, << a cc trng ca bng d liu cn nhp ln form t danh sch Available Fields sang danh sch Included Fields; Cui cng nhn nt Build the Form kt thc.
n y, khi quay sang Project trn VB s thy xut hin mt form nhp d liu cho bng CHUCVU c t ng to vo c th s dng. Khi thi hnh project, form ny c giao din nh sau:
thm mt bn ghi:
Trang 109 -
sa d liu mt bn ghi: S dng thanh nh v bn ghi chuyn n bn ghi cn sa; Thc hin sa d liu; Nhn nt Update ghi nhn d liu.
xa mt bn ghi: S dng thanh nh v bn ghi chuyn n bn ghi cn xa; Nhn nt Delete xa bn ghi ang hin th.
Trang 110
Bc 2: thit lp mt s thuc tnh cho cc iu khin trn form nh sau: iu khin Data1 - Thuc tnh DatabaseName hy tr ti tp CSDL Qun l lng; - Thuc tnh RecordSource - chn bng cn nhp d liu (bng CHUCVU). Nt Thm mi, thuc tnh name l cmdThemMoi; Nt Xa bn ghi, thuc tnh name l cmdXoa; Nt ng, thuc tnh name l cmdDong; nhp M chc v: Mi mt nhp d liu trn form yu cu ti thiu phi thit lp 2 thuc tnh l: - DataSource - khai bo ngun d liu cho ny ly t u (bng no)? Thng thng ly t iu khin Data Control lin kt ti bng d liu; - DataField khai bo trng d liu s lin kt ti nhp d liu hin ti. Thuc tnh ny phi c thit lp sau thuc tnh DataSource mi c tc dng. Vi form trn, 3 i tng dng nhp d liu phi thit lp cc thuc tnh nh sau:
i tng Text1 Text2 Text3 DataSource Data1 Data1 Data1 DataField chucvuID Tenchucvu Phucapcv
'trc khi nhp d liu, chuyn con tr ti m chc v ' Text1.SetFocus End Sub Private Sub cmdXoa_Click() Dim thongbao thongbao = MsgBox(" chc chn xa cha?", vbYesNo) If thongbao = vbYes Then '--------------------------'lnh xa bn ghi hin ti trn Data1 ' Data1.Recordset.Delete End If End Sub Private Sub cmdDong_Click() Unload Me End Sub
V d 2: S dng DbGrid Vi DbGrid, vic thit k mt giao din nhp d liu n gin hn v d s dng hn. Di y gii thiu cch s dng iu khin ny. Bc 1: thit k giao din form nh sau:
iu khin DbGrid
Trong trng hp khng thy iu khin DbGrid trn thanh ToolBar, hy kch hot n bi ca s Components nh sau:
Trang 112 -
Bc 2: thit lp cc thuc tnh ph hp cho cc i tng: iu khin Data1 - Thuc tnh DatabaseName hy tr ti tp CSDL Qun l lng; - Thuc tnh RecordSource - chn bng cn nhp d liu (bng CHUCVU); - Thuc tnh Visible = False ( n iu khin Data ny khi chy chng trnh). Nt Thm mi, thuc tnh name l cmdThemMoi; Nt ng, thuc tnh name l cmdDong; iu khin DbGrid1 - Thuc tnh DataSource chn ngun d liu s hin th ln DbGrid (chn Data1); - Thuc tnh AllowAddNew = True; - Thuc tnh AllowDelete = True; - Thuc tnh AllowUpdate = True;
Trang 113 -
- Thuc tnh DataMode = 0 Bound (tc l t ng gn kt d liu ti bng d liu); - Cui cng nhn phi chut ln DbGrid chn thc n Retrieve Fields t ng thit lp tiu cc ct v nh v th t cc ct trong bng d liu ln cc ct tng ng trn DbGrid.
Hn na, nu chn mc Properties c th thit lp c nhiu hn cc thuc tnh khc lm DbGrid tr nn p hn. Vic ny bn c t nghin cu. Bc 3: Vit lnh cho form nh sau:
Private Sub cmdXoa_Click() Dim thongbao thongbao = MsgBox(" chc chn xa cha?", vbYesNo) If thongbao = vbYes Then '--------------------------'lnh xa bn ghi hin ti trn Data1 ' Data1.Recordset.Delete End If End Sub Private Sub cmdDong_Click() Unload Me End Sub
Vi phng php ny khng cn s dng phng thc thm bn ghi mi (bi trn DbGrid t ng cho php lm vic ny).
Bc 2: thit lp cc thuc tnh ph hp cho cc iu khin nh sau: iu khin Data1 - Thuc tnh DatabaseName hy tr ti tp CSDL Qun l lng; - Thuc tnh Visible = False ( n iu khin Data ny khi chy chng trnh). iu khin DbGrid1
Trang 115 -
- Thuc tnh DataSource chn ngun d liu s hin th ln DbGrid (chn Data1); Bc 3: vit lnh cho form nh sau:
Private Sub Form_Load() Dim rs As DAO.Recordset '------------------------------------'m tp CSDL gn vo bin db ' Set db = OpenDatabase(Data1.DatabaseName) '--------------------------------------'m danh sch cc phng ban v y ln Combo1 ' Set rs = db.OpenRecordset("phongban") While rs.EOF = False Combo1.AddItem rs.Fields("tenphongban").Value rs.MoveNext Wend End Sub Private Sub Combo1_Click() '------------------'th tc ny xy ra sau khi chn mt phng ban t combo1 ' Dim strSQL As String 'Bc 1 ------------------'xc nh cu lnh SQL lc ra danh sch cn b tha mn 'phng ban chn Combo1 ' strSQL = "SELECT canbo.hoten, chucvu.tenchucvu " _ + " FROM (canbo INNER JOIN chucvu ON canbo.chucvuID = " _ + " chucvu.chucvuID) INNER JOIN phongban ON = " _ + " canbo.phongbanID = phongban.phongbanID " _ + " WHERE phongban.tenphongban = '" + Combo1.Text + "'" 'Bc 2--------------'gn cu lnh SQL trn cho Data1 ' Data1.RecordSource = strSQL '-----------------------'Lnh ny thc hin d liu t Data1 ln DbGrid ' Data1.Refresh End Sub
Trang 116
Ch Vic vit ra cu lnh SQL ng l rt kh, i hi lp trnh vin phi c nhiu kinh nghim. lm tt c vic ny, nn thit k mt query ch design view; ri s dng tnh nng Copy, Paste dn cu lnh SQL m query to ln ni son tho lnh VB v chnh sa cho ph hp. Thng thng sa mnh WHERE ca cu lnh.
2. K thut ADO
Phn 1 ca chng ny gii thiu cng ngh lp trnh CSDL DAO trn VB, l cng ngh kh d hc, ph bin. ADO (ActiveX Data Objects) l cng ngh mi hn, khc phc c mt s cc nhc im ca DAO v thch nghi trn nhiu h CSDL. Hin nay, ADO.NET l cng c cc mnh v ang c pht trin rt ph bin. Tuy nhin ADO.NET ch c th chy trn nn .NET. tr thnh nh pht trin chuyn nghip, chn ADO l mt hng i ng.
ADO
OLE DB
CSDL
Nh vy, c th s dng VB lp trnh CSDL s dng cng ngh ADO ta cn qua 2 lp: ADO v OLE DB.
Trang 117
- ADO cung cp tp hp cc i tng, cng c c th lp trnh x l h CSDL; - Trong khi , OLE DB l mt trnh cung cp cc dch v gip iu khin cc yu cu x l d liu t ADO. Trong thc t vi ngun d liu l Access, cn cn phi qua lp iu khin Jet trc khi tp hp cc lnh t ADO c th thm nhp vo CSDL. Tuy nhin, cc lp trnh vin cng cha cn quan tm nhiu n cu trc ca OLE DB cng nh Jet m ch cn s dng tt cc i tng ADO vo lp trnh CSDL v OLE DB v Jet ch n gin l vic khai bo chng.
Khi khng mun lm vic vi kt ni no (cnn), nn ngt b kt ni gii phng b nh bng vic gi phng thc Close nh sau:
Trang 118 -
cnn.Close
Sau lnh ngt kt ni ny, tt c cc i tng khc ca ADO c s dng Connection cnn cng s t ng c gii phng khi b nh.
Bc 2: Thit lp chui kt ni cho Command ny thng qua thuc tnh ActiveConnection. Chui ny ht nh chui s dng khi to Connection. V d: vi vic kt ni ti CSDL Qun l th vin nh trn, chui kt ni s nh sau:
cmd.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.3.51;" _ & "Data Source= " + App.Path + "\qltv97.mdb"
Bc 3: Gn cu lnh SQL cn thc thi thng qua thuc tnh CommandText ca i tng Command. Gi s mun chn thm mt bn ghi mi ln bng NXB c gi tr (nxbID = 05, tenNXB=Nh xut bn khoa hc k thut, diachi=H ni):
cmd.CommandText = "INSERT INTO nxb (nxbID, tenNXB, diachi)" _ & "VALUES ('05', 'Nh xut bn khoa hc k thut', 'H ni')"
cmd.Execute
V c bn, i tng Command trong ADO gn ging vi i tng QueryDef trong DAO!
Bc 2: Ra lnh thc thi cu lnh la chn SQL v gn tp hp cc bn ghi tr v vo bin Recordset ny. Gi s mun ly ra cc thng tin v sch nh: sachID, tensach, nanxb, tentacgia, tennxb. Th tc nh sau:
rs.Open "SELECT sach.sachID, sach.tensach, sach.namXuatban, " _ & " tacgia.tentacgia, nxb.tenNxb FROM tacgia INNER JOIN " _ & " (nxb INNER JOIN sach ON nxb.nxbID = sach.nxbID) ON " _ & " tacgia.tacgiaID = sach.tacgiaID;", cnn
n y c th s dng Recordset ny nh trong DAO, ch khc l khng th thc hin cc chc nng v cp nht d liu. V d di y thc hin duyt v in ra Tensach, tentacgia, tennxb, Namxb ca tt c cc bn ghi Recordset trn:
While rs.EOF = False
Trang 120
Trang 121
3. Data Report
Data Report l cng c thit k in bo co trong VB. y l cng c khng thc s chuyn nghip, nhng n rt quan trng tip cn ti cc cng c thit k in bo co chuyn nghip khc. Qui trnh thit k v s dng mt Data Report thng phi qua 3 bc sau:
Xy dng ngun d liu
S dng Report
Trang 122
Bc 2: Thit lp kt ni ti tp CSDL bng cch: Nhn phi chut ln mc Connection trn Data Environment (hnh trn) v chn Properties, hp thoi Data Link Properties xut hin nh sau:
Trang 123
th Provider hy chn dch v Microsoft Jet 3.51 OLE DB Provider (hnh trn). th Connection, hp Select or enter a databasename: hy chn n tp CSDL Access (hnh di):
Tc l kt ni thnh cng ti tp CSDL. Bc 3: to truy vn d liu cn in ra bo co. Nhn phi chut ln Connection va lm vic, chn lnh Add Command, hp thoi sau xut hin:
Trang 124 -
Tip theo nhn nt lnh SQL Builder xy dng truy vn cho Command ny, mt mn hnh thit k query (gn ging trong Access) xut hin cho php thit k mt truy vn d liu n CSDL:
a cc bng ln query (Add Table) bng cch dng chut ko bng cn chn t ca s Data View sang phn thit k query;
Chn mt trng d liu no truy vn bng cch tch ln hp chn trng trn bng thit k;
Xem d liu truy vn c bng cch nhn phi chut ln hp thoi thit k query, chn lnh Run.
Mn hnh thit k report gm 2 phn: - Thanh cng c thit k report- cha cc iu khin cn thit cho vic thit k d liu ln report. Bao gm cc iu khin nh:
RptLabel dng to ra cc nhn vn bn trn bo co (ging nh Label trn form). RptTextbox - in d liu t cc trng (dat field) ra report
Trang 126 -
RptLine - k ng thng RptImage - chn cc hnh nh ln report RptFunction - a cc hm tng hp ln report RptShape - v cc khi hnh ln report.
- Giao din thit k bo co. cng th hin cu trc hin th d liu trn report. Thng thng, mi report gm 5 phn c bn: Phn 1: Page Header - mi report s ch c duy nht mt Page Header, l phn d liu hin th trn cng (Header) ca mi trang in; Phn 2: Page Footer - mi report s ch c duy nht mt Page Footer, l phn d liu hin th di cng (Footer) ca mi trang in; Phn 3: Detail l phn hin th d liu chi tit t cc bn ghi trong truy vn d liu ra report. Truy vn c bao nhiu bn ghi, Detail s gm chng lt in d liu ra bo co. Mi reoport ch gm duy nht mt Detail. Phn 4: Report Header l tiu u ca Report. D liu ca phn ny hin th ngay sau d liu phn Page Header ca trang in u tin. Phn 5: Report Footer l tiu cui ca Report. D liu ca phn ny hin th ngay trc d liu phn Page Footer ca trang in cui cng. Bc 2: Thit lp mt s thuc tnh cho Data Report Thuc tnh DataSource - ch ra mi trng d liu (Data Environment) no s cung cp d liu cho report; Thuc tnh Datamember - ch ra truy vn d liu (Command) no s cung cp d liu cho report. Bc 3: Thit k report S dng cc iu khin trn thanh cng c ph hp thit k v nh dng report.
Trang 127 -
Hnh di l mt thit k report in ra thng tin cc cun sch t CSDL Qun l th vin.
RptLabel
RptTextbox
RptFunction
Sau khi nhn c lnh ny trong ch Running Time, mn hnh xem d liu trc khi in ca Data Report xut hin nh sau:
Trang 128
Trang 129
Bi tp chng 3
1. Thit k CSDL Qun l th vin trn Access nh sau:
Cc cng vic tip theo c thc hin trn mt Project ca VB: 2. Thit k form cp nht d liu bng NXB vi giao din s dng nh sau:
3. Thit k form cp nht d liu cho bng TACGIA vi giao din s dng nh sau:
Trang 130
4. Thit k giao din nhp d liu cho bng SACH vi giao din s dng nh sau:
Trang 131
Sau khi chn tn mt tc gi, thng tin v cc cun sch ca tc gi c hin th trn DbGrid; Nhn nt In kt qu, thng tin cc kt qu ny s c in ra mt Data Report. 6. Thit k form tra cu sch theo mt nh xut bn no nh sau:
Sau khi chn mt Nh xut bn, thng tin v cc cun sch ca nh xut bn s c hin th ln mt DbGrid;
Trang 132 -
Nhn chut ln nt In kt qu, d liu tm c s in ra mt Data Report. 7. Thit k form tm kim sch theo tn gn ng. Tn gn ng l tn c cha trong trng Tensach. Giao din s dng form yu cu nh sau:
Sau khi nhp mt tn cn tm, nhn nt Tm. Danh sch cc cun sch m tn sch c cha cm t va g vo s c hin th ln DbGrid; Nht nt In kt qu, thng tin ny s c in ra mt Data Report. 8. Thit k form tm kim sch theo chng loi (thng tin chng loi ca mi cun sch c lu vo trng VANTAT) nh sau:
Trang 133
Sau khi g vo tn chng loi cn tm, nhn nt Tm, phn mm s lit k cc cun sch c cha cm t va nhp vo trong trng VANTAT; Nu nhn nt In kt qu, ton b kt qu tm c s c in ra mt Data Report.
Trang 134
CHNG
HON THIN D N
Chng ny trang b nhng kin thc cng nh k thut thit k giao din chnh cho mt ng dng v dch, ng gi d n thnh b gi t ng dng mang tnh thng mi. Ni dung ca chng tp trung vo cc vn : Thit k giao din chnh ng dng; Thit k Menu, Toolbar; Dch ng dng ra dng .exe; ng gi d n thnh b gi t phn mm.
Trang 135
Trong VB, mi Project ch tn ti nhiu nht mt MDI form. Khc vi form thng thng, trn MDI ch c th thit k c mt s cc iu khin nh:
Trang 136 -
Menu, ToolBar, Picture Box, ListImage, StatusBar, Timer v Common Dialog. a s cc iu khin cn li khng th t trc tip ln MDI form c, nu mun phi t chng trn mt iu khin dng Container nh Picture Box. Nhng form c qun l bi MDI form c gi l MDI Child forms (form con). Khi MDI form ng li, ton b cc form con ang m cng s b gii phng khi b nh. Vi hnh trn, ca s c tiu VisData l MDI form, 2 ca s cn li: Database Window v SQL Statement u l cc MDI Child forms.
Chn MDI Form, nhn Open, mt MDI form c chn vo Project; Tip theo c th thit k menu, toolbar v cc giao din cn thit khc ln MDI v gi t cc th tc cn thit (tm hiu tip cc mc sau).
Bc 2: Thit lp cc MDI Child form bng cch: thit lp thuc tnh MDIChild = True cho cc form mun lm MDI Child.
Trang 137 -
2. Thit k Menu
Menu l loi iu khin ph bin dng gi cc th tc, cc giao din hoc chc nng ca mt ng dng ra lm vic. Thng thng, menu c thit k ngay trn MDI form ca mi ng dng.
Trong VB, mun to ra menu cho ng dng, cn s dng trnh Menu Editor. Tip theo y, s hng dn cch s dng Menu Editor thit k h thng menu trn mt MDI form. Bc 1: To mt MDI Form l giao din chnh ca ng dng, ni s cha menu cn to (hnh trn); Bc 2: Gi trnh Menu Editor bng cch: nhn phi chut ln MDI Form, tip theo chn Menu Editor (hnh di):
trnh Menu Editor xut hin! Bc 3: Thc hin thit k cu trc menu trn hp thoi Menu Editor nh sau:
Trang 138
Ton b h thng menu trn MDI Form c thit k trn mt hp thoi Menu Editor (mt phn ca chng nh hnh trn). Cch thc: xy dng tng mc ca menu. Mi mc ca menu c th phi thit lp cc thng tin sau: Caption nhn th hin ca mc menu (bt buc phi nhp). c bit:
to ng phn cch ( ngang); thit lp phm nng cho mc menu, g k t & ln trc k t mun thit lp phm nng (ch k t H ca mc &He thong). ) thit lp Caption l (gch
Name - nh tn cho mi mc menu. Gi tr ny phi duy nht v bt buc phi nhp (Name khng c trng nhau);
Shortcut - chn phm nng cho mc menu ny (vi nhng mc menu cp mt nh: H thng hoc D liu hoc Bo co trn khng th thit lp c phm nng, chng ch dnh cho cc mc menu cp 2 tr i);
Enable cho php lm vic hoc cm (khng cho php lm vic) mc menu ny. Nh hnh trn, mc menu Quan ly nguoi dung l ang b cm;
Trang 139 -
Visible cho php hin th hoc n mc menu. Nu khng chn thuc tnh ny, mc menu s khng hin th trn h thng menu khi chng trnh hot ng;
Nt Next chuyn n mc menu tip theo sau; Nt Insert - chn thm mt mc menu trng; Nt Delete - xa mc menu ang chn; H thng cc nt ca cc mc menu; dch chuyn v tr cng nh th cp
Bc 3: vit cc th tc p ng s kin cho cc mc ca h thng menu ( l cc lnh gi thi hnh cc th tc hoc Form trong Project). Thng thng, vit th tc p ng s kin Click cho cc mc bng cch: ti ca s thit k MDI Form, dng chut tr n mc menu cn vit th tc p ng s kin, mn hnh son tho chng trnh s xut hin lm vic. Lnh hin th mt Form ra lm vic l:
<tn form>.Show
3. Thit k ToolBar
Cng vi Menu, ToolBar l mt iu khin quan trng thit k giao din chnh cho cc ng dng. Thng thng, mi ng dng u s dng c Menu ln ToolBar. Menu l cng c chnh gi cc chc nng ca ng dng, cn
Trang 140
ToolBar c dng gi nhng tnh nng hay s dng nht cho mi ng dng. Bi v, dng ToolBar thao tc nhanh hn Menu. Di y l mt giao din chnh ca ng dng s dng c Menu v ToolBar:
Di y s hng dn cch thit k v gi t ToolBar trn theo ng mc ch ca n. Bc 1: Mt Toolbar c th c trang tr nhng nt lnh bng hnh nh (nh hnh trn), khi cn to mt iu khin ImageList trn form c cha ToolBar ny. iu khin ImageList (c ToolBar) cng nm trong th vin Microsoft Windows Common Controls 6.0. Nn phi khai bo th vin ny trn ca s Components trc khi c th s dng chng. Cch thit k ImageList nh sau: a mt ImageList ln Form (gi s c tn ImageList1); Nhn nut phi chut ln ImageList, chn Properties, hp thoi Property Page xut hin nh sau:
Trang 141
S dng nt Insert Picture a danh sch cc nh s s dng vo thit k ToolBar ln ImageList ny (hnh trn a c 3 nh).
Bc 2: a i tng ToolBar ln form. Nhn phi chut ln ToolBar, chn Properties, hp thoi thit k ToolBar xut hin nh sau:
Trang 142
Style hnh dng ca cc nt trn ToolBar kiu 1 tbrFlat (kiu phng) hoc 0 3D (3 chiu);
to mi mt nt ln toolbar nhn nt Insert Button. Tip theo khai bo cc thuc tnh cho nt va to bao gm: Caption nhn tiu ca nt; Key kha ca nt. Gi tr kha gia cc nt l duy nht. Thuc tnh ny cng c th dng nhn bit cc nt khi dng; Style - kiu nt. Mi nt lnh trn Toolbar c th nhn 1 trong cc kiu nh l: 0 tbrDefault - kiu nt lnh thng thng; 1 tbrCheck - kiu nt 2 trng thi n xung v khng; 3 tbrSeparator lm vch ngn gia cc nt; ToolTip Text - thit lp xu k t nhc mi khi di chut ln nt ny;
Trang 143
Image - chn nh cho nt lnh (nu cn). nh c ly t iu khin ImageList. Ga tr g vo y l th t ca nh cn hin th ln nt trong danh sch ImageList.
Bc 3: gi t th tc cho Toolbar gi n cc chc nng ng dng nh thit k. Bt s kin Click ca Toolbar gi t cc th tc gi chc nng ng dng tng ng. Trong s kin ny, tham s Button cho bit nt va c nhn chut. C th thng qua gi tr Key ca Button bit va bm ln nt no. Vi Toolbar trn, th tc ny s nh sau:
Private Sub Tbr1_ButtonClick(ByVal Button As MSComctlLib.Button) '--------------------------------'S dng thuc tnh Key nhn bit cc nt ' Select Case Button.Key '---------------------------'Key = m1 nhn ln nt Quan ly nguoi dung ' Case "m1" frmQuanlynguoidung.Show '---------------------------'Key = m2 nhn ln nt Nhap ho so ' Case "m2" frmQuanlyhoso.Show '-------------------------------'Key = m3 nhn ln nt Thoat ' Case "m3" End End Select End Sub Trang 144 -
4. ng gi d n
ng gi d n l qui trnh cui cng dch d n vit trn VB thnh b gi t phn mm - mt sn phm c th chuyn giao n khch hng. Bc ny s bao gm cc cng vic dch v ng gi ton b cc ti nguyn cn thit d n c th chy c lp trn bt k mt my tnh no, kt qu s l mt b gi t phn mm (Setup). Cc bc thc hin to mt b gi t nh sau: Bc 1: Dch Project ra tp c th thc thi c (tp .exe) bng cch ra lnh File \ Make <project>.exe Nu khng c li g, ton b d n VB s c dch ra mt tp c tn <tn project>.exe. Bc 2: Kch hot trnh Package and Deployment Wizard cu VB - mt cng c dng ng gi d n i km VB6 bng cch: Ra lnh Add-in \ Add in Manager; Tip theo kch hot trnh Package and Deployment Wizard bng cch nhn p chut ln mc Package and Deployment Wizard:
Trang 145
hp thoi trn, nhn nt Package tip tc. Hp thoi sau xut hin hi li mt ln na c mun dch li d n hay khng?
Nhn Yes nu mun dch li, tri li nhn No tip tc. Hp thoi tip theo xut hin hi chn kiu ng gi. Thng thng chn kiu Standard Setup Package:
Trang 146
Nhn Next tip tc: Hp thoi tip theo yu cu xc nh th mc trn a ni s lu tr b gi t s to c sau ny:
Chn th mc xong, nhn Next tip tc: Hp thoi sau y xut hin cho php ty chn cc th vin iu khin DAO vo b gi t. VB s t ng xc nh cc th vin cn thit, cch tt
Trang 147 -
nht l a chng ln b gi t bng cch a chng t danh sch Available drivers sang danh sch Included drivers (hnh di):
Nhn Next tip tc: Hp thoi tip theo xut hin cho php thm (Add) hoc g b (Remove) cc tp tin trn b ng gi. Thng thng, cc tp CSDL cng nh mt s cc tp tin lin quan khc n d n VB phi s dng tnh nng ny a vo b gi t. Nt Add thc hin thm cc tp tin:
Trang 148
Nhn Next tip tc: Hp thoi tip theo la chn cch to ra cc tp tin trong b gi t. C hai ty chn l: Single cab ton b a gi t ch gom li thnh mt tp tin Setup.exe; hoc Multiple cap - s chia b a gi t thnh cc tp tin nh dng nn c dung lng nh (trc y thng dng ty chn ny c th copy b gi t ra cc a mm).
Trang 149
Nhn Next tip tc: Hp thoi tip theo dng g tiu b gi t. Hy g tiu phn mm vo hp: Installation title:
Nhn Next tip tc: Hp thoi tip theo dng qun l cc Shortcut ca phn mm trn thanh tc nghip Start ca Windows:
Trang 150
Nt New Item - to mt Shortcut mi trn mt Group no ; Nt Properties thit lp thm cc thuc tnh cho cc Group hoc Items;
Nhn Next tip tc: Hp thoi tip theo cho php khai bo li v tr cc tp tin c ng gi trn a sau khi chng c gi t. C th thay i v tr ny ct Install Location trn bng hin th danh sch cc tp tin c ng gi:
Nhn Next tip tc: Hp thoi cui cng tin trnh gi t xut hin. Ti y c th nhn nt Finish kt thc qu trnh ng gi d n. Hoc c th s dng nt Back tr li cc bc lm thit lp li.
Trang 151
Trang 152
Bi tp chng 4
1. Vi Project Qun l sch th vin, hy to MDI form v h thng Menu, Toolbar nh sau:
2. S dng cng c Package and Deployment Wizard ng gi Project Qun l sch th vin thnh b gi t hon chnh.
Trang 153
Trang 154
ADO - ActiveX Data Access CNTT - Cng ngh thng tin COM - Common Object Model CSDL - C s d liu DAO - Data Access Objects GUI - Graphical User Interface MDI - Multi Document Interface VB - Visual Basic
Trang 155
Trang 156
Form
i tng dng thit k giao din trong pht trin phn mm. Kt qu ca form khi s dng s l cc ca s, hp thoi- ni m ngi dng c th s dng thao tc trn phn mm.
Function Group By Mt mnh trong cu lnh SQL dng nhm cc bn ghi phc v cc vic tng hp d liu no . Object i tng - mt thnh quan trng trong lp trnh hng i tng, trc quan nh VB. Package & Deployment Project Mt cng c dng ng gi d n, to b gi t trong mi trng pht trin VB. Mt d n VB bao gm nhiu thnh phn, nhiu tp tin v ti nguyn phc v xy dng d n phn mm no trn VB. Query Record Recordset Relationship SQL Mt i tng dng truy xut, x l d liu trn cc h c s d liu Bn ghi Tp hp cc bn ghi Ch quan h gia cc bng trong c s d liu Structured Query Laguage ngn ng truy vn d liu c cu trc. Mt ngn ng x l d liu kh ph dng trn cc h c s d liu. Vi Access, Query Design chnh l ni thit k to ra cc cu lnh SQL thi hnh cc php x l d liu. Sub T kha khai bo chng trnh con dng th tc (Procedure) trong VB. Wizard L trnh iu khin gip ngi lp trnh n gin trong vic xy dng ng dng. Trong VB, chng ta c tm hiu Data Form Wizard.
Trang 157
MC LC
GII THIU .............................................................................................................2 BI M U ............................................................................................................4 1. Gii thiu Visual Basic 6.0.......................................................................................4 2. Khi ng .................................................................................................................6 3. Lu tr ......................................................................................................................8 4. M d n c .........................................................................................................9 CHNG 1: LP TRNH VB CN BN ...............................................................11 1. Kiu d liu - bin v hng ....................................................................................12 1.1 Kiu d liu......................................................................................................12 1.2 Bin ..................................................................................................................14
a. Bin khai bo bin.................................................................................................. 14 b. Phm vi bin ............................................................................................................. 15
2. Cc cu trc lnh VB..............................................................................................18 2.1 Cu trc IF END IF......................................................................................18 2.2 Cu trc SELECT CASE .. END SELECT .....................................................19 2.3 Cu trc FOR NEXT...................................................................................22 2.4 Cu trc WHILE WEND ............................................................................24 3. Chng trnh con....................................................................................................26 3.1 Chng trnh con dng hm.............................................................................26 3.2 Chng trnh con dng th tc.........................................................................31 3.3 S dng chng trnh con ................................................................................33
a. S dng th tc ......................................................................................................... 33 b. S dng hm ............................................................................................................. 34
4. Son tho chng trnh v x l li .......................................................................35 4.1 Son tho chng trnh ....................................................................................35 4.2 Li v x l li .................................................................................................38
a. X l li..................................................................................................................... 38 b. By li ....................................................................................................................... 42
Bi tp chng 1.........................................................................................................45 CHNG 2: S DNG IU KHIN ...................................................................47 1. S lc v iu khin .............................................................................................48 1.1. Tp thuc tnh..................................................................................................48 1.2. Tp phng thc .............................................................................................54 1.3. Tp s kin ......................................................................................................55 2. Mt s iu khin c bn .......................................................................................57 2.1 iu khin Form...............................................................................................57 2.2 iu khin Label ..............................................................................................59 2.3 iu khin Textbox..........................................................................................60 2.4 iu khin CommandButton............................................................................63 2.5 iu khin Picture............................................................................................65 3. Nhm iu khin trnh by giao din .....................................................................66 3.1 iu khin ComboBox.....................................................................................66
Trang 158 -
3.2 iu khin ListBox ..........................................................................................68 3.3 iu khin CheckBox ......................................................................................69 3.4 iu khin OptionButton .................................................................................71 4. Nhm iu khin lm vic th mc, tp tin ...........................................................73 4.1 iu khin DriveListbox..................................................................................74 4.2 iu khin DirListBox .....................................................................................74 4.3 iu khin FileListBox ....................................................................................75 4.4 V d tng hp..................................................................................................75 5. Mt s iu khin chung ........................................................................................78 5.1 iu khin MS Common Dialog......................................................................78 5.2 iu khin Treeview ........................................................................................82 Bi tp chng 2.........................................................................................................88 CHNG 3: LP TRNH C S D LIU ..........................................................91 1. K thut DAO.........................................................................................................93 1.1 Lp i tng DAO .........................................................................................94 1.2 i tng Database..........................................................................................96 1.3 i tng RecordSet........................................................................................97 1.4 i tng QueryDef ......................................................................................102 1.5 i tng TableDef .......................................................................................104 1.6 i tng Relation.........................................................................................107 1.7 S dng Data Form Wizard ...........................................................................108 1.8 Bi ton cp nht d liu................................................................................110 1.9 Bi ton tm v lc d liu .............................................................................114 2. K thut ADO.......................................................................................................117 2.1 Kin trc ADO ...............................................................................................117 2.2 i tng Connection ....................................................................................118 2.3 i tng Command......................................................................................119 2.4 i tng Recorset ........................................................................................120 3. Data Report...........................................................................................................122 3.1 Xy dng ngun d liu.................................................................................122 3.2 Thit k Data Report ......................................................................................126 3.3 S dng Data Report ......................................................................................128 Bi tp chng 3.......................................................................................................130 CHNG 4: HON THIN D N ....................................................................135 1. Thit k MDI Form...............................................................................................136 1.1 Mt s khi nim............................................................................................136 1.2 S dng MDI form.........................................................................................137 2. Thit k Menu.......................................................................................................138 3. Thit k ToolBar...................................................................................................140 4. ng gi d n .....................................................................................................145 Bi tp chng 4.......................................................................................................153 TI LIU THAM KHO ......................................................................................154 DANH SCH CC T VIT TT .......................................................................155 THUT NG TING ANH ..................................................................................156
Trang 159