Professional Documents
Culture Documents
Chuong 5 Lap Trinh Vba Can Ban
Chuong 5 Lap Trinh Vba Can Ban
CHNG 5
LP TRNH VBA CN BN
1. Mi trng lp trnh VBA
VBA Visual Basic for Application gip ngi dng c th to ra cc
tu bin mnh hn, thn thin hn vi trong cng vic ca mnh. Hn th na
VBA trn Access th hin tnh chuyn nghip trong lp trnh, phn no bin
c mt CSDL n gin tr thnh nhng sn phm ng gi thng mi.
Mn hnh lm vic ngn ng VBA thng c dng:
* Ca s Project Explorer
C rt nhiu cc thnh phn c th lp trnh c bi VBA nh: Forms,
Reports, Modules. Ca s Project Explorer l cy phn cp lp cc i tng c
cha m lnh VBA, ng thi gip lp trnh vin d dng trong vic vit
(coding) cng nh qun l cc m lnh VBA vit.
* Ca s vit lnh
Ca s vit lnh l ni son tho cc dng lnh VBA. Mi ca s s cha
ton b m lnh cho mt i tng nh: Forms, Reports, Modules. Trong mi
ca s c th c nhiu phn c vit lnh, mi phn c th l ni dung mt
khai bo, mt chng trnh con, ni dung mt th tc p ng s kin.
* Ca s Intermediate
Ca s Intermediate l ni gip thi hnh trc tip mt cu lnh no , rt
hu dng trong vic g li phn mm.
2. Kiu d liu - Bin - Hng
2.1 Kiu d liu c bn
a, Boolean
Kiu l gc, tng t kiu Boolean trn Pascal. Kiu ny chim 2 byte b
nh; ch nhn mt trong 2 gi tr l: Yes No hoc True False hoc i khi th
hin di dng s 0 tng ng vi False, True tng ng vi bt k s no
khc 0.
Khi lp trnh CSDL, kiu Boolean tng ng vi kiu Yes/No trong bng
d liu.
b, Byte
Kiu s nguyn dng trong phm vi t 0..255. Kiu ny chim 1 byte b
nh.
c, Integer
Kiu nguyn, c gi tr trong khong -32768...32767. Kiu ny chim 2
bytes b nh.
d, Long
Kiu s nguyn di, c gi tr trong khong 2,147,483,648 ..
2,147,483,647.
Kiu ny chim 4 bytes b nh.
e, Single
Kiu s thc, c gi tr trong khong 1.401298E-45 to 3.402823E38.
Chim 4 bytes b nh.
46
f, Double
Kiu s thc c ln hn kiu Single, c gi tr trong khong
4.94065645841247E-324 n 1.79769313486232E308.
Chim 8 bytes b nh.
g, Currency
Kiu tin t. Bn cht l kiu s, ln 8 bytes, c gi tr trong khong 922,337,203,685,477.5808 n 922,337,203,685,477.5807.
c bit, kiu ny lun c k hiu tin t i km.
h, String
Kiu xu k t. Kiu ny tng ng vi kiu String trong Pascal, tng
ng vi kiu Text trong cc trng CSDL Access. ln ti a 255 bytes
tng ng vi kh nng x l xu di 255 k t.
i, Variant
Variant l kiu d liu khng tng minh. Bin kiu ny c th nhn bt
k mt gi tr no c th.
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.
j, 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 VBA bi tnh nng Tool | Reference. Chng ta
s cn tr li vn ny khi lp trnh CSDL.
2.2 Bin v cch s dng bin
a. 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
VBA 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 VBA. 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.
47
Const ok = True
b. Phm vi hng
Tng t nh bin, hng cng c nhng phm vi hot ng ca n. Hng
c khai bo trong th tc no, hoc cc b trong form, report hoc module
no s ch c tc dng trong phm vi .
Mun hng c phm vi ton cc, phi c khai bo sau t kho Public
Const, ti vng Decralations ca mt module no nh sau:
Public Const <tn_hng> = <gi_tr>
3. Cc cu trc lnh VBA
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 VBA 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.
3.1 Cu trc r nhnh
Cu trc r nhnh hay cn gi l lnh la chn. Tc l nu mt iu kin
no xy ra s l g, hoc tri li c th lm g.
C php:
If <iu kin> Then
<th tc 1>
[ Else
<th tc 2> ]
End If
ngha lnh trn l: nu <iu kin> = True th thc hin cc lnh trong
<th
tc1>. Tri li thc hin cc lnh trong <th tc 2>.
Phn trong cp du ngoc vung [..] c th c hoc khng c trong cu
lnh, tu
49
thuc vo mc ch x l.
3.2 Cu trc la chn
y l mt loi ca cu trc la chn. Thng thng hon ton c th s
dng If .. End If thc hin cc x l lin quan n kiu cu trc ny, nhng
trong nhng trng hp c bit, cu trc Select Case .. End Select th hin
c s tin dng vt tri.
C php
Select Case <biu thc>
Case <gi tr 1>
<th tc 1>
Case <gi tr 2>
<th tc 2>
50
3.3 Cu trc lp
a, Cu trc FOR NEXT
For Next l mt cu trc lp bit trc s ln lp trong VBA, tuy nhin
trong nhng tnh hung c bit, vn c th s dng cu trc ny nh cu trc
khng bit trc c s ln lp.
C php:
For <bin chy> = <gi tr 1> To <gi tr 2> [Step <n>]
<th tc>
[Exit For]
Next
Trong :
- <bin chy> l bin kiu v hng m c, hay dng nht l
bin kiu nguyn;
- <gi tr 1>, <gi tr 2> l cc gi tr m bin chy s nhn v
thc hin dch chuyn sau mi ln lp. C th dch chuyn i 1 n v, c
th dch chuyn i nhiu n v mt ln, c th dch chuyn tin, cng c
th dch chuyn li- tt c iu ny tu thuc vo vic c hay khng c
tu chn [Step <n>];
- 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, VBA 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.
b, Cu trc WHILE WEND
While Wend l mt cu trc lp khng bit trc s ln lp trong
VBA.
C php:
While <iu kin>
<th tc>
Wend
Trong :
- While, Wend l cc t kho ca lnh lp;
51
52
53
54
- <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 chng trnh con. 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.
Ch :
- 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 Access . Tt nhin, tt c nhng g
khai bo l Public phi c khai bo trong phn Decralations ca mt Module
no .
V d:
* Thit k hm tng tnh tng hai s:
Function Tong(a, b As Double) As Double
Tong = a + b
End Function
55
6. K thut x l li
X l li l k thut rt quan trng trong lp trnh. lp trnh th kh
trnh khi li (Errors). C rt nhiu nguyn nhn gy ra li; cc nguyn nhn
ny c th c lng trc hoc khng c lng trc. K thut x l li
bao gm cc k nng pht hin v x l cc tnh hung khi chng trnh gy li.
6.1 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:
56
Kt qu
Err.Description M t tn li
Err.Number
a ra m li
58