Professional Documents
Culture Documents
GT LapTrinhTrucQuan PDF
GT LapTrinhTrucQuan PDF
Nng - 2000
ii
PHN I
MICROSOFT ACCESS
iii
iv
Lp trnh trc quan
BI 1. M U
Lch s pht trin ca Tin hc lun gn lin vi vic tm kim cc phng php lp trnh
gip cho ngi s dng trin khai cc ng dng mt cch d dng, nhanh chng v hiu qu.
Tuy nhin, vi cc phng php lp trnh trn u i hi lp trnh vin phi nh rt nhiu
cu lnh vi mi lnh c mt c php v tc dng ring, khi vit chng trnh phi t lp ni
cc lnh c mt chng trnh gii quyt tng bi ton ring bit.
1
Lp trnh trc quan
Trong xu hng pht trin mnh m hin nay ca Tin hc, s ngi s dng my tnh tng
ln rt nhanh v my tnh c s dng trong hu ht cc lnh vc ca i sng nn i hi
cc ngn ng lp trnh cng phi n gin, d s dng v mang tnh i chng cao. Chnh v
vy phng php lp trnh trc quan ra i. c im ca cc ngn ng lp trnh trc quan l
d s dng, trin khai cc ng dng mt cch nhanh chng.
Hin nay cc ngn ng lp trnh, h qun tr c s d liu theo hng trc quan thng
dng nh : Visual Basic, Visual Foxpro, Visual C, Delphi...
Trong chng trnh ny gii thiu mt s chng trnh lp trnh thng dng nh Access,
Basic v VB .Net lm quen vi phng php lp trnh trc quan trong vic trin khai mt
s cc ng dng.
- Cho php xy dng chng trnh theo mt hng khc gi l event - driven programming
(lp trnh theo tnh hung), ngha l mt chng trnh ng dng c vit theo kiu ny
p ng da theo tnh hung xy ra lc thc hin chng trnh. Tnh hung ny bao gm
ngi s dng n mt phm tng ng, chn la mt nt lnh hoc gi mt lnh t mt
ng dng khc chy song song cng lc.
- Ngi lp trnh trc tip to ra cc khung giao din (interface), ng dng thng qua cc
thao tc trn mn hnh da vo cc i tng (ojbect) nh hp hi thoi hoc nt iu
khin (control button), nhng i tng ny mang cc thuc tnh (properties) ring bit
nh : mu sc, Font ch.. m ta ch cn chn la trn mt danh sch cho sn.
- Khi dng cc ngn ng lp trnh trc quan ta rt t khi phi t vit cc lnh, t chc
chng trnh... mt cch rc ri m ch cn khai bo vic g cn lm khi mt tnh hung
xut hin.
2
Lp trnh trc quan
BI 2. ACCESS
- B nh RAM 32 MB tr ln.
- H iu hnh Windows 95 tr i.
- Bt my tnh
3
Lp trnh trc quan
To c s d liu mi
To c s d liu mi theo
mu c sn.
M c s d liu c
- QUERY (vn tin) : l cng c truy vn thng tin v thc hin cc thao tc trn d liu.
Query cho php lin kt cc d liu t nhiu Table khc nhau, chn la cc thng tin cn
quan tm, n l nn tng xy dng cc bo co theo yu cu thc t.
- FORM (mu) : cho php xy dng cc mu nhp s liu ging nh trong thc t. Ta c th
cng lc nhp s liu vo nhiu Table khc nhau thng qua SubForm.
4
Lp trnh trc quan
- ^ : ly tha.
- * : nhn.
- / : chia
- + : cng
- - : tr
5
Lp trnh trc quan
2.4.4 Du ro :
6
Lp trnh trc quan
BI 3. LM VIC VI C S D LIU
3.1. TO C S D LIU
Lc ny ta chn mt mu c s d liu trn bng cch Double Click chut ti biu tng
tng ng ri chn OK.
7
Lp trnh trc quan
- Bc 1 : khi khi ng chn Blank Database hoc chn File - New Database
8
Lp trnh trc quan
- Bc 1 : khi khi ng chn Blank Database hoc chn File - New Database
9
Lp trnh trc quan
BI THC HNH
- Bc 2 : chn nt General, bm chut vo biu tng Blank Database, sau chn OK.
Nu mun to CSDL theo mu th chn nt Database, sau chn biu tng tng ng.
10
Lp trnh trc quan
BI 4. LM VIC VI TABLE
lu tr s liu trn Table trc ht ta phi to cu trc ca Table bng cch qui nh tn
ca Table, tn v thuc tnh ca cc trng.
Ta c th to Table bng cch chn New trong hp thoi c s d liu hoc chn trn thanh
thc n Insert - Table, lc xut hin ca s cho php chn cch to Table nh sau :
Phng php ny cho php to Table theo cch s dng mt mu biu cho trc v
ACCESS da vo to ra Table.
11
Lp trnh trc quan
12
Lp trnh trc quan
Phng php ny cho php to Table hon ton do ngi s dng qui nh.
Tn ngha
Text Cha tp hp cc k t ty , di ti a 255 k t
Memo Di ti a 65535 k t
Number Cha gi tr s
13
Lp trnh trc quan
Tn ngha
Field Size rng ti a cha sn
Format Cch hin th gi tr
Input Mask Qui nh mu nhp liu
Caption Mt ch thch khc cho Field, dng vi Form, Report
Default Value Gi tr cho trc
Validation Rule Qui nh cch kim tra s liu nhp
Validation Text Thng bo khi nhp s liu sai
Required Chn Yes nu bt buc phi nhp ni dung
Allow Zero Length Chn Yes nu chp nhn gi tr rng
Indexed C ch mc hay khng, nu c th c trng hay khng (No, Yes
Duplicate OK, Yes No Duplicate)
- Chn Design
Ta c th thay i cc thng tin lin quan n cc trng trong Table t tn trng, kiu,
cc thuc tnh, thm bt cc trng...
15
Lp trnh trc quan
Cells : thay i cch th hin nh : Gridlines Shown (che hay hin ng li),
Cell Effect (trnh by s liu phng, nh ln hoc lm xung), Gridline Color
(mu sc ca nt gch), Background Color (mu nn ca ).
Cho php khai thc s liu mt cch tc thi khi ang lm vic trc tip trn Table. Nu
mun t ng ha cng tc khai thc thng tin v c cc bo co p mt th ta phi dng
Report, Query, Macro hoc lp trnh bng Visual Basic.
4.4.1 Tm v thay th
4.4.3 Sp xp
16
Lp trnh trc quan
- Chn trn thanh thc n Record - Sort (hoc chn biu tng)
4.4.4 Lc bn ghi
- Chn trn thanh thc n Record - Filter (hoc chn biu tng)
Qui nh cch lc :
17
Lp trnh trc quan
BI THC HNH
Cu 1 : To Table qun l h s sinh vin gm cc thng tin : s th sinh vin, h lt, tn,
ngy sinh, gii tnh, qu qun, m lp, a ch v ghi ch.
Lc ta c bng sau :
18
Lp trnh trc quan
- a con tr v tn Table.
- Chn Open.
Cu 3 : sp xp theo th t ABC ca tn
- Chn trn thanh thc n Record - Sort (hoc chn biu tng)
- Chn trn thanh thc n Record - Filter (hoc chn biu tng)
Cu 5 : xa mt bn ghi.
- Bm phm Delete
- My hi c mun xa hay khng (You are about to delete n records ?), chn Yes nu mun
xa, No nu khng.
20
Lp trnh trc quan
21
Lp trnh trc quan
BI 5. LM VIC VI QUERY
Query l mt cng c cho php ngi s dng thng k s liu, xy dng cc bo co tng
hp di nhiu hnh thc khc nhau trn d liu gc trong Table.
- Select Query : cho php chn la cc bn ghi, to thm cc vng tnh ton v tr v kt qu
l cc bn ghi tha mn iu kin. Ta c th dng Query thao tc trn nhiu Table cng
lc.
- Cross Tab Query : Query tham chiu cho, c dng to nhm d liu v tr v kt
qu di dng mt bn tnh km theo s cng ngang, cng dc. Ta thng dng loi ny
to d liu phc v cho cc Report v Chart.
- Find Duplicate Query : tm trong Table nhng bn ghi c gi tr ging nhau trn tt c
cc trng.
22
Lp trnh trc quan
- Union Query : ni cc bn ghi ca hai hay nhiu Table thnh mt danh sch chung.
- Pass-Through Query : Query chuyn giao, dng gi lnh trc tip n h ngn ng SQL
(Structured Query Language) ca ACCESS.
Add : b sung Table hoc Query c chn cho vic to Query mi.
Close : ng ca s chn.
- Bc 5: thit k Query theo yu cu. Nu mun thay i loi Query th ta chn trn thanh
thc n chc nng Query sau chn trng danh sch loi Query.
- Bc 6: ty theo tng loi Query ta c cch thit k ring. Sau khi to Query xong ta ng
li v t tn cho Query khi my yu cu.
Sau khi chn 5 bc trn v loi Query l Select Query mn hinh s xut hin ca s khai
bo Query nh sau :
24
Lp trnh trc quan
- Show : cho php hin th ni dung ca trng hay khng ( : khng, : c).
Ch :
- Nu mun tnh tng theo tng b phn th ta bm phm phi ca chut v chn Total, lc
trong Query xut hin mt dng Total ta qui nh phng thc tnh ton.
Khi bm vo Total ta thy xut hin cc hm tnh ton : Sum (tnh tng), Avg (tnh gi tr
trung bnh), Min (tm gi tr nh nht), Max (tm gi tr ln nht), Count (m s lng cc gi
tr), StDev ( lch chun ca cc gi tr), Var (s bin thin ca cc gi tr) v cc ty chn
khc l : Group By (nh ngha nhm mun tnh ton), Expression (to ra mt biu thc tnh
ton, Where (ch nh iu kin khi tnh ton).
25
Lp trnh trc quan
y l loi Query cho php lp bng tham chiu cho : tng hp t mt n nhiu ch tiu
theo hng, trn mi hng li tng hp mt ch tiu khc theo ct, vng giao nhau gia hng v
ct th hin tr s tng hp ca mt ch tiu th ba.
Chn Cross Tab Query, sau chn tn cc Table cha s liu lp Query hoc tn Query
c s to Query k tip. Sau chn Next xut hin ca s :
26
Lp trnh trc quan
27
Lp trnh trc quan
- G vo tn ca Query cn to.
28
Lp trnh trc quan
BI THC HNH
29
Lp trnh trc quan
Chn Design.
30
Lp trnh trc quan
ln mn hnh.
Cu 2 : to Query thng k s lng sinh vin theo tng lp, mi lp th cho bit s
lng nam, n.
31
Lp trnh trc quan
Bc 6 :qui nh cng thc tnh. Trong trng hp ny ta chn hm COUNT theo s th.
Sau chn Next
32
Lp trnh trc quan
Bc 8: lc ny trn mn hnh xut hin ca s cho xem liu sau khi thng k nh sau:
ng ca s trn.
Bi tp: t Table im ta thc hin cc Query : xem bng im tng lp, xem danh sch
thi li, thng k s lng theo xp loi tng lp.
33
Lp trnh trc quan
BI 6. LM VIC VI REPORT
- Columnar Report : bo co dng ct. Thng s dng in cc phiu theo mu cho trc.
V d : in li phiu thu, phiu chi, phiu bo im...
34
Lp trnh trc quan
- Choose the table or query where the object's data comes from : chn tn ca Table hoc
Query cha s liu c s ca Report.
Sau y gii thiu phn thit k Report theo cc kiu chn trn :
Report Wizard :
- Chn tn cc trng c ni dung cn xem trong Report t Available Fields chuyn sang
Selected Fields.
35
Lp trnh trc quan
- You can sort records by up to four fields, in either ascending or descending order : qui nh
vic sp xp bn ghi theo th t tng hoc gim ti a theo bn kha. Nu mun sp xp
th ta chn tn trng kha v qui nh tng hoc gim.
36
Lp trnh trc quan
- Summary Option : Cho php thc hin tnh ton theo cc trng. Lc xut hin mu
khai bo :
Lc ny ta phi qui nh tn trng v cng thc tnh ton cho tng trng . Trong Table
c bao nhiu trng kiu s th c by nhiu trng c th c tnh ton. Trong mc Show
nu chn Detail and summary s c cc dng chi tit ln cc dng tm tt, nu chn Summary
Only th ch c cc dng tnh tng. Nu chn Calculate Percent th s c tnh tnh t l phn
trm.
37
Lp trnh trc quan
Qui nh cch trnh by Report theo mt trong 6 kiu trn mc Layout. Mc Orientation
cho php qui nh cch b tr theo chiu ngang hay dc ca trang giy.
Qui nh cch trnh by tiu . Sau chn Next hon tt vic khai bo. Lc ny khai
bo tn ca Report ghi vo a v chn Finish hon tt.
- Chn tn ca Table hoc Query cha d liu c s ri chn kiu t thit k Design View.
Lc trn mn hnh xut hin ca s cho php thit k Report nh sau :
38
Lp trnh trc quan
Label : to nhn
Textbox : hp d liu
Toggle Button : to nt
- Chn Design.
39
Lp trnh trc quan
BI THC HNH.
DANH SCH LP
40
Lp trnh trc quan
Tng t ta thc hin cc Report khc nh bng im, danh sch thi li, thng k...
41
Lp trnh trc quan
BI 7. LM VIC VI FORM
Form l mth cng c cho php ngi s dng thit k cc mu nhp v xem s liu ging
nh mu biu ngoi thc t.
Ta thy khi nhp liu bng Table th tuy vic nhp liu rt d dng nhng cc mu nhp ca
n khc nhiu vi trong thc t to cm gic kh chu khi cha quen. V vy, khi xy dng
chng trnh cho nhiu ngi s dng c bit l nhng ngi khng chuyn dng my tnh
th ta phi to ra cc mu biu ging ht trong thc t d dng khi s dng.
- T thit k Form
S dng AutoForm :
Auto Form cho php t ng to Form vi tt c cc trng trong Table hoc Query.
Bc 2: Xut hin ca s :
42
Lp trnh trc quan
- Chn loi Form v phng php to Form. Trong trng hp ny ta chn AutoForm v
km theo loi Form (Columnar : dng ct, Tabular : dng bng v Datasheet : dng bng
tnh).
Bc 1: chn Form Wizard trn hp thoi v tn Table hoc Query cha d liu.
43
Lp trnh trc quan
44
Lp trnh trc quan
T thit k Form
- Chn tn Table hoc Query, chn kiu thit k Form l Design View ri OK.
- Label : to nhn.
45
Lp trnh trc quan
- Line: v ng thng.
46
Lp trnh trc quan
b. T thit k :
- Chn tn ca Form.
- Chn Open
47
Lp trnh trc quan
BI THC HNH
To Form nhp h s.
Bc 4: chn cch nhp hoc xem trn Form. Ta chn Column, tip n chn Next
48
Lp trnh trc quan
Bc 5: chn mu sc v cch th hin d liu trn Form. Ta chn Flax sau bm vo Next
chuyn sang bc k tip.
- i cc tiu thnh ting Vit c du. Chn Font ch VN Times new roman.
Cch lm :
Drag chut ch nh v tr cn t nt bm
Cch lm :
Drag chut ch nh v tr cn t nt bm
50
Lp trnh trc quan
Cch lm :
Drag chut ch nh v tr cn t nt bm
51
Lp trnh trc quan
Bi tp: tng t hy thm mt s chc nng khc vo Form trn. To cc Form nhp
im, nhp danh mc lp...
52
Lp trnh trc quan
8.1. MACRO
- Macro Group : l mt tp hp cc Macro c cc tnh nng ging nhau. N cho php qun
l c s d liu d dng hn. thi hnh mt Macro trong Macro Group ta ch tn ca n
nh sau : Tn Macro Group.Tn Macro thc hin.
53
Lp trnh trc quan
- Trong Action ta chn mt hnh ng cn thc hin. Ta c th chn nhiu hnh ng tng
ng vi nhiu dng.
thc hin Macro ta c th chn tn ca Macro trong Database ri chn tip Open
Ta c th s dng Macro xy dng h thng thc n cho php la chn cng vic mt
cch d dng v tin li. Thng qua h thng thc n ta c th lin kt tt c cc i tng
trn Database thnh mt h thng chng trnh thng nht tin li cho ngi s dng chng
trnh.
Mc 1 Mc 2 Mc 3
54
Lp trnh trc quan
Bc 1: to menu cp 1.
- Menu Name : ghi ni dung dng ch s hin trn thanh thc n. Trong trng hp ny ta
t tn l : Mc 1, Mc 2, Mc 3. Nu mun xut hin du gch chn di ch ci dng
lm phm nng th thm vo trc ch &
- Status Bar Text : ni dung dng ch s xut hin trn thanh Menu Bar khi ta chn vo mc
ny.
Bc 2: to cc menu cp 2.
- Xut hin ca s ging bc 1, ta chn thm View - Macro Name, s xut hin ca s mi
nh sau :
55
Lp trnh trc quan
- Action : hnh ng cn thc hin khi ta chn vo chc nng ny. Ta chn cc Action ny
trong danh sch m ACCESS cho trc.
56
Lp trnh trc quan
Khi no mun dng thc n chn vin ta ch vic m Form c gn vi thanh thc n
c to.
57
Lp trnh trc quan
BI THC HNH
Thc n nh sau :
Nhp s liu Xem bo co Kt thc
H s Danh sch lp
T chc lp Thng k s lng
... ...
Bc 1: to Macro cho thc n nm ngang..
58
Lp trnh trc quan
Bc 2: to cc Macro ng.
- To Macro nhap :
Ta khai cc mc nh sau :
- To Macro baocao :
59
Lp trnh trc quan
Bc 3: gn Macro vi mt Form.
- Nh vy, t y v sau nu mun chn cng vic trn thanh thc n ta ch vic m Form
c tn l MENU
60
PHN II
VISUAL BASIC
Lp trnh trc quan
BI 9. M U
Trc , chng ta khng c mt giao din bng hnh nh (GUI) vi mt IDE (Integrated
Development Environment) gip cc chuyn gia lp trnh tp trung cng sc v th g vo
cc kh khn lin quan n doanh nghip ca mnh. Mi ngi phi t thit k giao din qua
th vin c sn Windows API (Application Programming Interface) trong nn Windows. iu
ny to ra nhng tr ngi khng cn thit lm phc tp vic lp trnh.
Visual Basic gip chng ta b qua nhng kh khn , cc chuyn gia lp trnh c th t v
cho mnh giao din cn thit trong ng dng (application) mt cch d dng v nh vy, tp
trung n lc gii p cc vn cn gii quyt trong doanh nghip hay k thut.
Ngoi ra, cn nhiu cng ty ph pht trin thm cc th tc, hm (modules), cng c (tools,
controls) hay ng dng (application) ph gip di hnh thc VBX cng thm vo giao din
chnh nn VB cng lc cng thm phong ph.
Khi Visual Basic phin bn 3.0 c gii thiu, th gii lp trnh li thay i ln na. Vi
phin bn ny, chng ta c th thit k cc ng dng (application) lin quan n c s d liu
(Database) trc tip tc ng (interact) n ngi dng qua DAO (Data Access Object). ng
dng ny thng gi l ng dng trc din (front-end application).
61
Lp trnh trc quan
Visual Basic l mt ngn ng lp trnh trc quan v thng c s dng hin nay. Ging
nh cc ngn ng khc, khi lp trnh ta buc phi tun theo cc qui tc, trnh t Logic nht
nh nhng nu so vi cc ngn ng lp trnh c cu trc nh Turbo Pascal, C... th Visual
Basic i theo mt phng php lp trnh mi. Visual Basic xy dng mt mi trng lm vic
di dng cc biu mu (Form), cc hp iu khin (Control Box), thin v cc i tng
(Object oriented), nhng th tc c x l theo tnh hung v cc phng thc (Method).
Khi lm vic vi Visual Basic ngi lp trnh c nhim v chnh l thit k biu mu, cc
khung giao din, cc nt lnh v cng vic s thc hin tng ng trn ; cc lnh, cc ch
th phi c vit ra s hn ch ti a.
Mt trong nhng im khc bit r rng nht gia Visual Basic v cc ngn ng lp trnh
c cu trc l mt ngn ng x l theo tnh hung (event - driven language) v mt ngn ng
x l theo th tc (procedural - language).
62
Lp trnh trc quan
9.3.1 Ci t :
a. Yu cu v thit b:
63
Lp trnh trc quan
- Con chut.
b. Ci t:
- Khi ng WINDOWS.
- Chn a CD ROM v o .
- Chn File Run, sau g D:\SETUP hoc E:\SETUP (thng thng my s t khi
ng phn Setup)
9.3.2 Khi ng
Nu trn my tnh ang s dng c ci t chng trnh Visual Basic th ta tin hnh khi
ng nh sau :
- Khi ng WINDOWS
Sau khi khi ng s xut hin mn hnh lm vic ca Visual Basic vi cc ca s chnh
nh sau :
a. Menu Bar (thanh thc n): ghi cc chc nng lnh ca Visual Basic ngi s dng
c th chn thc hin. Mun chn mt chc nng trn ta c th thc hin :
64
Lp trnh trc quan
b. Tools Bar (thanh cc cng c): cha cc biu tng v mi biu tng s tng ng
vi mt lnh c thc hin. y l nhng lnh thng c s dng trong Visual Basic.
Mun chn mt lnh no ta ch cn Double Click ti biu tng tng ng.
c. Tools Box (hp cng c): cha cc biu tng v mi biu tng tng ng vi mt
hp iu khin (Control Box). N cho php chn hp iu khin a vo biu mu trong
qu trnh thit k. Mun a mt hp iu khin vo biu mu ta thc hin qua cc bc sau :
d. Form Window (ca s biu mu): l ca s dnh thit k chng trnh. Trn ny ta
s t cc hp iu khin xem, nhp s liu hoc cc nt chn th tc cn thc hin.
9.3.4 Kt thc
- Chn File.
- Chn Exit.
65
Lp trnh trc quan
Khi lp trnh trong Visual Basic, mi ng dng u thng bt u bng biu mu (Form),
y l ni hin th tt c cc thng tin lin quan n ng dng.
66
Lp trnh trc quan
Hp iu khin l thnh phn c bn nht ca biu mu, n quyt nh hnh dng v hot
ng ca ng dng. Mt ng dng c linh hot, cung cp tin nghi cho ngi dng hay
khng s ph thuc phn ln vo vic s dng v khai thc cc hp iu khin.
Tn gi ngha
Pointer Di chuyn im t
Label Box Ghi ni dung dng vn bn. Ni dung c nh.
Frame To khung hnh ch nht cha nhiu hp iu khin
Check Box Dng chn gi tr True hoc False, nhiu hn mt mc
List Box Lit k cc gi tr chn la
Horizontal Scroll Thanh cun ngang thay i phn mn hnh cn xem
Timer Dng by tnh hung theo thi gian. Kim tra qu hn
Directory List Lit k tn cc th mc
Shape Control Cung cp cng c v hnh.
Image Control Hin th hnh nh trong tp tin Bitmap
67
Lp trnh trc quan
Cch 1 :
- Click chut ti biu tng tng ng vi loi hp iu khin cn chn cho n i mu.
Cch 2 :
Cch 3 :
- Nhn gi phm CTRL ng thi Click chut ti biu tng tng ng vi loi hp iu
khin cn chn.
68
Lp trnh trc quan
Dn : Ctrl + V dn nt t b nh ra mn hnh.
Thng thng, khi thit k biu mu ta phi khai bo cc thuc tnh c sn v t b thay i.
Sau khi thc hin chng trnh nu mun thay i cc tham s m t thuc tnh th ta tip
tc thc hin cc thay i .
- Click chut vo i tng (hp iu khiu hoc biu mu) m ta cn thay i thuc
tnh.
- Xut hin ca s cha cc thuc tnh nh bn. Ta thc hin thay i cc thuc tnh theo
yu cu.
- Ca s thuc tnh :
69
Lp trnh trc quan
Mun thay i thuc tnh trong qu trnh thc hin chng trnh ta vit trong chng trnh
dng lnh:
70
Lp trnh trc quan
- Control Box : qui nh s c mt hay khng ca thanh trnh n iu khin trn biu
mu. Thuc tnh ny khng thay i c khi chy chng trnh.
- Font : thay i kiu ch. Ta c th s dng cc thuc tnh sau lin quan n Font ch:
FontName (tn kiu ch), Font Size (kch thc ch), FontBold (ch m), FontItalic (ch
nging), FontStrikethru (gch xa), FontTransparent (nu True th c nn), FontUnderline
(gch chn).
4 : K t.
5 : Inch.
6 : mm
71
Lp trnh trc quan
7 : cm
Ngoi ra, cn c nhiu thuc tnh khc nhng t c dng. Trong cc phn sau nu gp s
gii thch thm.
Cch 2 : Click chut vo i tng sau nhn phm F7 (hoc chn View - Code).
Ch :
- Sau khi thit k xong biu mu ta lu tr ng dung vo a bng cch chn File -
Save ri t tn cho biu mu.
72
Lp trnh trc quan
BI THC HNH
thc hin cng vic trn ta tin hnh theo trnh t sau :
B xung hp iu khn :
73
Lp trnh trc quan
10.4.1 Hp Text :
- i cc thuc tnh :
MultiLine : True.
ScrollBar : Both.
Name : txt
- Sau , mi ln ta thay i :
- Sau , mi ln ta thay i :
10.4.4 i Font :
- G phm F4 gi ca s Properties.
74
Lp trnh trc quan
10.5.2 Th tc ca cc hp Command :
75
Lp trnh trc quan
End Sub
Private Sub cmddel_Click()
txt.Text = ""
txt.SetFocus
End Sub
10.6.1 Lu tr :
- Chn File.
76
Lp trnh trc quan
77
Lp trnh trc quan
78
Lp trnh trc quan
weight = 400
size = 9.75
underline = 0 'False
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 375
Left = 240
TabIndex = 6
Top = 360
Width = 1215
End
End
Begin VB.CommandButton cmddel
Caption = "Xa"
BeginProperty Font
name = "VNtimes new roman"
charset = 1
weight = 400
size = 9.75
underline = 0 'False
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 495
Left = 4920
TabIndex = 4
Top = 2520
Width = 1215
End
Begin VB.CommandButton cmdpaste
Caption = "Dn"
BeginProperty Font
name = "VNtimes new roman"
charset = 1
weight = 400
size = 9.75
underline = 0 'False
79
Lp trnh trc quan
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 495
Left = 3480
TabIndex = 3
Top = 2520
Width = 1215
End
Begin VB.CommandButton cmdcopy
Caption = "Sao chp"
BeginProperty Font
name = "VNtimes new roman"
charset = 1
weight = 400
size = 9.75
underline = 0 'False
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 495
Left = 1920
TabIndex = 2
Top = 2520
Width = 1215
End
Begin VB.CommandButton cmdcut
Caption = "Ct"
BeginProperty Font
name = "VNtimes new roman"
charset = 1
weight = 400
size = 9.75
underline = 0 'False
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 495
80
Lp trnh trc quan
Left = 360
TabIndex = 1
Top = 2520
Width = 1095
End
Begin VB.TextBox txt
BeginProperty Font
name = "VNtimes new roman"
charset = 1
weight = 400
size = 9.75
underline = 0 'False
italic = 0 'False
strikethrough = 0 'False
EndProperty
Height = 2055
Left = 360
MultiLine = -1 'True
ScrollBars = 3 'Both
TabIndex = 0
Text = "THU1.frx":0000
Top = 120
Width = 3735
End
End
Attribute VB_Name = "Form1"
Attribute VB_Creatable = False
Attribute VB_Exposed = False
Private Sub chkbold_Click()
txt.FontBold = Not (txt.FontBold)
txt.SetFocus
End Sub
81
Lp trnh trc quan
82
Lp trnh trc quan
BI 11. BIN NH
- Khng di qu 40 k t.
83
Lp trnh trc quan
- String*num : cha chui k t c chiu dai nh trc. Khi khai bo phi n nh trc
di t 0 n 32767 k t.
Ta c th khng cn dng AS <kiu d liu> m ghi trc tip k hiu hu t khai bo kiu
d liu vo sau tn bin nh kiu.
- % : Integer.
- & : Long.
- ! : Single.
- # : Double.
- @ : Currency.
- $ : String.
V d :
84
Lp trnh trc quan
DIM hoten$
DIM sotien@
DIM luong%
11.2.3 Khai bo bin ton cc : GLOBAL <Tn bin> AS <Tn kiu d liu>
Trong Visual Basic nu mt bin c s dng m khng khai bo th Visual Basic ngm
hiu l bin Varian. Vi ch th DefType ta c th chuyn bin Varian thnh mt kiu d liu
khc.
DefInt : Integer.
DefLng : Long.
DefSng : Single.
DefDbl : Double.
DefCur : Currency.
DefStr : String.
- DefVar : Varian.
V d : DefInt S
85
Lp trnh trc quan
Hng (Constant) l mt i lng c gi tr khng thay i trong sut thi gian thc hin
chng trnh.
Cch khai bo :
CONST <Tn hng> = <Biu thc>, <Tn hng 2> = <Biu thc 2>, ...
V d :
CONST diemgioi% = 7
Phm vi hot ng ca hng ging nh ca bin. Nu mun khai bo hng c tc dng ton
c th vit :
Phm vi hot ng ca bin mng cng ging nh cc bin bnh thng khc.
- Khai bo bng GLOBAL: lc ny bin s c tc dng trn ton chng trnh. Khai bo
ny phi t trong phn khai bo ca n th ch khng t trong th tc hoc biu mu.
Bin mng c s dng trong chng trnh ging nh cc bin thng thng khc, tuy
nhin phi ch r s hiu phn t ca n.
87
Lp trnh trc quan
Bn ghi l kiu d liu c bit bao gm nhiu gi tr thuc nhiu kiu d liu khc nhau.
Bin bn ghi c s dng nhiu gii quyt cc bi ton trong qun l s liu.
11.5.1 Khai bo :
Cch khai bo :
TYPE <Tn bn ghi>
<Tn trng 1> AS <Tn kiu d liu 1>
<Tn trng 2> AS <Tn kiu d liu 2>
..........................
<Tn trng n> AS <Tn kiu d liu n>
END TYPE
DIM <Tn bin> AS <Tn bn ghi>
Cc bin bn ghi c s dng nh cc bin bnh thng khc nhng phi ch r tn trng
pha sau v ngn cch vi tn bin bi du . (chm).
88
Lp trnh trc quan
Nhiu lc ta cn phi convert data type ca mt variable t loi ny qua loi khc, VB6 cho
ta mt s cc Functions di y. Xin lu rng khi gi cc Functions ny, nu chng ta a
mt data value bt hp l th c th b li.
Function Ch thch
CBool () i parameter ra True hay False. Nu Integer khc 0 th c i thnh True
CByte () i parameter ra mt con s t 0 n 255 nu c th c, nu khng th l 0.
CDate () i parameter ra Date
CDbl () i parameter ra Double precision floating point number
CInt () i parameter ra Integer
CSng () i parameter ra Single precision floating point number
CStr () i parameter ra String
Ngoi cc Function ni trn chng ta cng c th dng Function Val convert mt String
ra Number. Lu l khi Function Val process mt String nu n gp mt character no khng
phi l digit hay decimal point th n khng process tip na. Do nu Input String l
"$25.50" th Val returns con s 0 v $ khng phi l mt digit. Nu Input String l "62.4B" th
Val returns 62.4.
CDbl l Function dng convert mt String ra s an ton nht. Input String c th cha
cc du , v . (th d: 1,234,567.89) ty theo ni chng ta trn th gii (th d nh u Chu
hay M). CSng cng lm vic ging nh CDbl nhng nu con s ln hn 1 triu n c th b
bug.
89
Lp trnh trc quan
V d :
12.1.2 Cu trc : IF <iu kin> THEN <Ch th 1> ELSE <Ch th 2>
V d :
IF dtb > 5 THEN Print "Bn im" ELSE Print "Bn thiu im"
Ch :
- Nu mun sau THEN hoc ELSE c nhiu ch th cn thc hin th phi vit xung
dng v cui cu trc ny phi c END IF.
Cch vit :
IF <iu kin> THEN
<Ch th 1>
....................
<Ch th n>
90
Lp trnh trc quan
ELSE
<Ch th 1'>
....................
<Ch th n'>
END IF
Trong :
- Lit k biu thc I : l biu thc s c em so snh vi biu thc u. Trong phn ny
biu thc lit k c th c vit di cc dng sau :
V d : vit chng trnh nhp vo tui mt ngi v cho bit ngi thuc la tui no.
Sub Form_Click()
Dim Cauhoi, Tuoi 'Khai bo bin Cauhoi v Tuoi
Cauhoi = "Bn bao nhiu tui :"
91
Lp trnh trc quan
12.2.1 Cu trc :
FOR <Bin m> = <Gi tr u> TO <Gi tr cui> [STEP n]
[Khi ch th 1]
[Exit For]
[Khi ch th 2]
NEXT <bin m>
92
Lp trnh trc quan
12.2.2 Cu trc :
WHILE <iu kin>
[Khi ch th]
Wend
12.2.3 Cu trc :
DO [WHILE | UNTIL <iu kin>]
[Khi ch th]
[Exit Do]
[Khi ch th]
LOOP [WHILE | UNTIL <iu kin>]
93
Lp trnh trc quan
- Exit Do : cho php dng vng lp m khng cn qua kim tra iu kin.
Hoc :
So! = 1
Do
Print so!
So! = so! + 1
Loop While so! <= 10
Hoc :
So! = 1
Do
Print so!
So! = so! + 1
Loop Until so! > 10
12.3. Nhn :
Trong Visual Basic ta c th chuyn n thc hin mt on chng trnh hoc mt dng
lnh mi bng cch dng nhn hoc s th t dng lnh.
94
Lp trnh trc quan
12.3.1 Nhn :
Mi nhn c dng trong biu mu hoc n th phi l duy nht. Khng th s dng hai
nhn trng tn trong mt biu mu, th tc, hp iu khin...
- Cch gi :
V d :
Sub Form_Click()
Print "Gio trnh"
GOTO Nhan1
Print "Khng in"
Nhan1:
Print "Lp trnh trc quan"
End Sub
Gio trnh
95
Lp trnh trc quan
Mi s c dng trong biu mu hoc n th phi l duy nht. Khng th s dng hai s
trng gi tr nh s dng lnh trong mt biu mu, th tc, hp iu khin...
Khi thc hin lnh ny Visual Basic s chuyn n dng lnh c nh s tnmg ng.
V d :
100 MsgBox "Dng lnh mang s 100"
101 MsgBox "Dng lnh mang s 101"
57 MsgBox "Dng lnh mang s 57"
GOTO 101
96
Lp trnh trc quan
BI 13. METHOD
Method l cc chng trnh c xy dng sn phc v cho vic thc hin cc thao tc
thng gp. Method c tc dng gn ging nh lnh, th tc hoc hm c xy dng sn
trong cc ngn ng lp trnh c cu trc. Thng thng Method ch tc dng ln mt lp cc
i tng.
- Step : cho bit y l ta tng i so vi v tr hin hnh do hai thuc tnh CurrentX
v CurrentY cung cp.
- Radius : ch nh bn knh.
- Start, End : tr s tnh theo Radian, cho bit im xut pht v im kt thc khi v mt
cung trn hoc Ellipse.
- Aspect : tr s cho bit gc xoay mt phng cha hnh trn to ra hnh Ellipse.
Tc dng : cho php to ra mt hnh trn, cung trn hoc hnh Ellipse theo yu cu ngi
s dng.
V d 2 : v mt dy cc hnh trn ng tm vi mu sc ty .
97
Lp trnh trc quan
- X2, Y2 : ch nh ta im kt thc.
- Step : cho bit y l ta tng i so vi v tr hin hnh do hai thuc tnh CurrentX
v CurrentY cung cp.
Tc dng : cho php to ra mt on thng hoc khung hnh ch nht theo yu cu ngi s
dng.
98
Lp trnh trc quan
C php : [object.]Cls
V d :
Private Sub Xoa_Click()
Dim Msg ' Declare variable.
AutoRedraw = -1 ' Turn on AutoRedraw.
ForeColor = QBColor(15) ' Set foreground to white.
99
Lp trnh trc quan
C php : [Object.]Hide
C php : [Object.]Show
100
Lp trnh trc quan
C php : [Object.]Item(Index)
V d :
Dim SmithBillBD As Object
Dim SmithAdamBD As Object
Set SmithBillBD = Birthdays.Item("SmithBill")
Set SmithAdamBD = Birthdays("SmithAdam")
V d :
Private Sub dichuyen_Click()
Dim Inch, Msg ' Declare variables.
Msg = "Choose OK to resize and move this form by "
Msg = Msg & "changing the value of properties."
MsgBox Msg ' Display message.
Inch = 1440 ' Set inch in twips.
101
Lp trnh trc quan
- X : Honh ca im cn v.
- Y : Tung ca im cn v.
V d : t mu bng cc du chm.
Private Sub vediem_Click()
Dim LeftColor, MidColor, Msg, RightColor 'Declare variables.
AutoRedraw = -1 ' Turn on AutoRedraw.
Height = 3 * 1440 ' Set height to 3 inches.
Width = 5 * 1440 ' Set width to 5 inches.
BackColor = QBColor(1) ' Set background to blue.
ForeColor = QBColor(4) ' Set foreground to red.
Line (0, 0)-(Width / 3, Height), , BF ' Red box.
ForeColor = QBColor(15) ' Set foreground to white.
Line (Width / 3, 0)-((Width / 3) * 2, Height), , BF
LeftColor = Point(0, 0) ' Find color of left box,
MidColor = Point(Width / 2, Height / 2) ' middle box, and
RightColor = Point(Width, Height) ' right box.
Msg = "The color number for the red box on the left side of "
Msg = Msg & "the form is " & LeftColor & ". The "
Msg = Msg & "color of the white box in the center is "
Msg = Msg & MidColor & ". The color of the blue "
Msg = Msg & "box on the right is " & RightColor & "."
102
Lp trnh trc quan
C php : [Object.]PrintForm
V d
Private Sub Command1_Click()
Dim Msg ' Declare variable.
On Error GoTo ErrorHandler ' Set up error handler.
PrintForm ' Print form.
Exit Sub
ErrorHandler:
Msg = "The form can't be printed."
MsgBox Msg ' Display message.
Resume Next
End Sub
103
Lp trnh trc quan
- Object : An object expression that evaluates to an object in the Applies To list. If object
is omitted, the Form with the focus is assumed to be object.
- Step : A keyword specifying that the coordinates are relative to the current graphics
position given by the CurrentX and CurrentY properties.
- (X, Y) : Single-precision values indicating the horizontal (x-axis) and vertical (y-axis)
coordinates of the point to set.
- Color: Long integer value indicating the RGB color specified for point.
104
Lp trnh trc quan
C php : [Object.]Refresh
Tc dng : cho php "lm ti'" li i tng, ngha l n cho php v li hnh nh ca
Object.
V d :
Private Sub Form_Click ()
Dim FNMA, I, Msg ' Declare variables.
File1.Pattern = "TestFile.*" ' Set file pattern.
For I = 1 To 8 ' Do eight times.
FNMA = "TESTFILE." & I
Open FNMA For Output As FreeFile ' Create empty file.
File1.Refresh ' Refresh file list box.
Close ' Close file.
Next I
Msg = "Choose OK to remove the created test files."
MsgBox Msg ' Display message.
Kill "TESTFILE.*" ' Remove test files.
File1.Refresh ' Update file list box.
End Sub
V d :
105
Lp trnh trc quan
C php : [Object.]SetFocus
V d : Vehinh.SetFocus
V d :
[Object.]TextWidth (String)
- String : ni dung chui k t m Method s tnh ton chiu cao v chiu rng.
107
Lp trnh trc quan
V d :
Private Sub Inchu_Click()
Dim HalfWidth, HalfHeight, Msg ' Declare variable.
AutoRedraw = -1 ' Turn on AutoRedraw.
BackColor = QBColor(4) ' Set background color.
ForeColor = QBColor(15) ' Set foreground color.
Msg = "Visual Basic" ' Create message.
FontSize = 48 ' Set font size.
HalfWidth = TextWidth(Msg) / 2 ' Calculate one-half width.
HalfHeight = TextHeight(Msg) / 2 ' Calculate one-half height.
CurrentX = ScaleWidth / 2 - HalfWidth ' Set X.
CurrentY = ScaleHeight / 2 - HalfHeight ' Set Y.
Print Msg ' Print message.
End Sub
108
Lp trnh trc quan
BI 14. HM
14.1. Cc hm x l chui :
Tr v kt qu l s k t c trong String.
V d : LEN("ABCD") tr v kt qu l 4.
V d : LCase("ABCD") tr v kt qu l abcd.
V d : UCase("abcd") tr v kt qu l ABCD.
14.1.4 Ly cc k t bn tri :
V d : Left("ABCD",2) tr v kt qu l AB
109
Lp trnh trc quan
14.1.5 Ly cc k t bn phi:
V d : Right("ABCD",2) tr v kt qu l CD
14.1.6 Ly nhm k t bt k:
Tr v kt qu l chui k t mi gm n k t bt u t k t th m ca chui c.
V d : Mid("ABCD",2,2) tr v kt qu l BC
14.1.7 B cc k t trng:
110
Lp trnh trc quan
14.1.10 i m s sang k t:
V d : Chr(65) tr v kt qu l "A"
14.1.11 i k t sang m s:
Asc(K t)
V d : Asc("A") tr v kt qu l 65.
Str[$](biu thc s)
- Cc k t nh dng s :
111
Lp trnh trc quan
V d :
So! = 1234.5
Format(so, "#.###") kt qu 1234.5
Format(so, "###,#.##") kt qu 1,234.5
Format(so, "0.000") kt qu 1234.5000
Format(so, "0%") kt qu 1234500%
Format(so, "$0.00") kt qu $1234.50
- Cc k t nh dng chui k t :
V d :
Format("visual basic",">") tr v "VISUAL BASIC"
Format("VISUAL BASIC",">") tr v "visual basic"
Trong :
112
Lp trnh trc quan
- Chui 2 : chui con. y l chui cn tm xem c c cha trong chui 1 hay khng.
14.2. Cc hm x l s :
5. EXP(s) Expenential
6. LOG(s) Logarithm
113
Lp trnh trc quan
114
Lp trnh trc quan
C hai loi List controls dng trong VB6. l Listbox v Combobox. C hai u hin th
mt s dng ta c th la chn. Listbox chim mt khung ch nht, nu chiu ngang nh
th c khi khng hin th y mt dng, nu chiu di khng hin th tt c mi dng
th Listbox t ng cho ta mt vertical scroll bar cho bit cn c nhiu dng b che v ta c
th xem cc dng y bng cch dng vertical scroll bar.
Listbox c rt nhiu cng dng v n rt uyn chuyn khi s dng. Trong bi ny chng ta s
xem xt cc ng dng sau ca Listbox :
- Hin th nhiu s la chn ngi s dng c th chn bng cch click hay drag-drop
- Dng lm Queue
115
Lp trnh trc quan
15.1. Listbox
Ngoi lstNames ta cho thm mt Label vi Caption STUDENTS trang tr, v mt Label
khc tn lblName. Mi khi ngi s dng click ln dng tn no ta mun hin th dng tn y
trong lblName. Sau cng ta cho vo mt CommandButton tn CmdExit cho dng dng
chng trnh. Ta s c chng trnh nh sau:
Private Sub lstNames_Click()
lblName.Caption = lstNames.List(lstNames.ListIndex)
End Sub
Private Sub CmdExit_Click()
End
End Sub
116
Lp trnh trc quan
- lstNames.List(lstNames.ListIndex)
- lstNames.text.
117
Lp trnh trc quan
App l mt Object c bit i din cho chnh chng trnh ang chy. y ta dng
Property Path bit lc chng trnh ang chy th thc thi module EXE ca n nm u.
L do l ta thng cc files lin h cn thit cho chng trnh ln qun hoc ngay trong
folder ca chng trnh hay trong mt subfolder, chng hn nh data, logs, .v.v..
App cn c mt s Properties khc cng rt hu dng nh PrevInstance, Title, Revision
..v.v.
Nu mi khi ng mt chng trnh m thy App.PrevInstance = True th lc by gi cng
c mt copy khc ca chng trnh ang chy. Nu cn ta End program ny trnh chy 2
bn sao ca chng trnh cng mt lc.
App.Title v App.Revision cho ta tin tc v Title v Revision ca chng trnh ang chy.
vit ra mt Text file ta cn phi Open n trong mode Output v khai bo t y tr i s
dng mt con s (FileNumber) i din tp tin thay v dng chnh FileName. trnh dng
mt FileNumber hin hu, tt nht ta hi xin h iu hnh cung cp cho mnh mt con s
cha ai dng bng cch gi Function FreeFile. Con s FileNumber ny cn uc gi l
FileHandle (Handle l tay cm). Sau khi ta Close FileNumber con s ny tr nn FREE v h
iu hnh s c th dng n li.
118
Lp trnh trc quan
Do chng ta phi trnh gi FreeFile lin tip hai ln, v OS s cho chng ta cng mt
con s. Tc l, sau khi gi FreeFile phi dng n ngay bng cch Open mt File ri mi gi
FreeFile ln k c mt con s khc.
119
Lp trnh trc quan
Sau ta dng method AddItem cho thm tng dng vo trong Listbox. By default,
nu ta khng ni nht vo ch dng no th AddItem nht Item mi vo di cht ca
Listbox.
Nu mun nht dng mi vo ngay trc item th 5 (ListIndex = 4), ta vit:
stNames.AddItem newItemString, 4 ' newItemString contains
' To insert a new Item at the beginning of the Listbox, write:
lstNames.AddItem newItemString, 0
lstNames.RemoveItem 2
Ta c tng dng ca mt Text file bng cch dng Line Input #FileNumber. Khi c n
cui File, system d cho ta value EOF(FileNumber) = True. Ta dng value y cho chng
trnh nhy ra khi While.. Loop.
15.2. Drag-Drop
Ta xem qua Click Event ca Listbox. By gi dng Drag-Drop cho Listbox chng ta
hy t 2 Labels mi ln Form. Ci th nht tn g cng c nhng c Caption l Room A.
Hy gi Label th hai l lblRoom v cho Property BorderStyle ca n bng Fixed Single. K
n select c hai Labels (Click a Label then hold down key Ctrl while clicking the second
Label) ri click copy v paste ln Form. VB6 s cho chng ta Array cahailblRoom labels.
120
Lp trnh trc quan
cho lstNames mt DragIcon, chng ta click lstNames, click Property DragIcon pop-
up mt dialog cho chng ta chn mt dragdrop icon t folder C:\Program Files\Microsoft
Visual Studio\Common\Graphics\Icons\Dragdrop, chng hn nh DRAG2PG.ICO:
Ta s dng Event MouseDown ca lstNames pop-up DragIcon hnh 2 trang giy cho
UserDrag n qua bn phi ri b xung ln mt trong hai lblRoom. Khi DragIcon ri ln
lblRoom, lblRoom s generate Event DragDrop. Ta s dng Event DragDrop ny
assignproperty Text ca Source (tc l lstNames, mc control t n pht xut Drag action) vo
Property Caption ca lblRoom. Lu v y ta dng cng mt tn cho c hai lblRoom nn
ch cn vit code mt ch handle Event DragDrop.
Private Sub lstNames_MouseDown(Button As Integer, Shift As
Integer, X As Single, Y As Single)
' Start Pop-up DragIcon and start Drag action
lstNames.Drag
End Sub
Private Sub lblRoom_DragDrop(Index As Integer, Source As Control,
X As Single, Y As Single)
' Assign Property Text of Source (i.e. lstNames) to Caption
lblRoom(Index).Caption = Source.Text
End Sub
121
Lp trnh trc quan
122
Lp trnh trc quan
lstTemp.AddItem lstNames.List(i)
Next
lstNames.Clear ' Clear lstNames
' Iterate though every item of lstTemp
For i = 0 To lstTemp.ListCount - 1
' Add the lstTemp item to lstNames
lstNames.AddItem lstTemp.List(i)
Next
lstTemp.Clear ' Tidy up - clear temporary Listbox
End Sub
Nhn tin, ta mun c option sort cc tn theo FirstName hay Surname. Vic ny hi rc
ri hn mt cht, nhng nguyn tc vn l dng ci sorted Listbox v hnh tn lstTemp.
123
Lp trnh trc quan
124
Lp trnh trc quan
sort theo SurName ta cn phi tm thi SurName qua bn tri ca Item trc khi b
vo lstTemp. Ta thc hin chuyn ny bng cch hon chuyn v tr ca FirstName v
SurName trong Item trc khi b vo lstTemp. Sau , khi copy cc Items t lstTemp t
vo li lstNames ta li nh hon chuyn FirstName v SurName chng nm ng li v tr.
Code sort tn theo SurName cng ging nh CmdSort_Add nhng sa i cht t nh sau:
Private Sub lblSurName_Click()
Dim i, anItem
Dim sFirstName As String*10 'fixed length string of 10 chars
Dim sSurName As String * 10 ' fixed length string of 10 chars
lstTemp.Clear ' Clear temporary Listbox
' Iterate though every item of lstNames
For i = 0 To lstNames.ListCount - 1
anItem = lstNames.List(i)
' Identify FistName and SurName
sFirstName = Left(anItem, 10)
sSurName = Mid(anItem, 11)
' Swap FirstName/SurName positions before adding to lstTemp
lstTemp.AddItem sSurName & sFirstName
Next
lstNames.Clear ' Clear lstNames
' Iterate though every item of lstTemp
For i = 0 To lstTemp.ListCount - 1
anItem = lstTemp.List(i)
sSurName = Left(anItem, 10) ' SurName now is on the left
sFirstName = Mid(anItem, 11)
' Add FirstName/SurName in correct positions to lstNames
lstNames.AddItem sFirstName & sSurName
Next
lstTemp.Clear ' Tidy up - clear temporary Listbox
End Sub
125
Lp trnh trc quan
Nhn tin y ta sa Sub CmdSave_Click Save Items theo sorted order mi nu cn:
Private Sub CmdSave_Click()
Dim i, FileName, FileNumber, anItem
' Obtain Folder where this program's EXE file resides
FileName = App.Path
' Make sure FileName ends with a backslash
If Right(FileName, 1) <> "\" Then FileName = FileName & "\"
' Call Output filename "MyList.txt"
FileName = FileName & "MyList.txt"
' Obtain an available filenumber from the operating system
FileNumber = FreeFile
' Open the FileName as an output file, using FileNumber
Open FileName For Output As FileNumber
' Now iterate through each item of lstNames
For i = 0 To lstNames.ListCount - 1
anItem = lstNames.List(i)
anItem=Trim(Left(anItem, 10)) & "," & Trim(Mid(anItem, 11))
' Write the List item to file. Make sure you use symbol #
in front of FileNumber
Print #FileNumber, anItem
Next
Close FileNumber ' Close the output file
End Sub
126
Lp trnh trc quan
BI 16. T TO OBJECT
T trc n gi, ta lp trnh VB6 bng cch thit k cc Forms ri vit codes x l cc
Events ca nhng controls trn Form khi ngi s dng click mt Button hay Listbox, .v.v..
Ni chung, cch y cng hu hiu trin khai chng trnh, nhng nu ta c th hng c
cc li ch sau y th cng tt hn :
- D bo tr
Ngay c mt form tn frmMyForm m ta vit trong VB6 chng hn, n cng l mt Class.
Thng thng ta dng thng frmMyForm nh sau:
frmMyForm.Show
127
Lp trnh trc quan
Khi Add Class Module dialog hin ra chn Class Module v click Open.
128
Lp trnh trc quan
K nh vo nhng dng code di y, trong c biu din cch dng Class clsBox.
Option Explicit
Private mX As Integer
Private mY As Integer
Private mWidth As Integer
Private mHeight As Integer
129
Lp trnh trc quan
130
Lp trnh trc quan
Mi ln chng ta dng Property Window edit Font size, forcolor hay backcolor th chng
nhng cc properties y ca Label thay i, m kt qu ca s thay i c c hiu lc ngay
lp tc, ngha l Label c hin th tr li vi tr s mi ca property. l v trong method
Property c c code bo Label thc hiu redisplay.
Ngc li, khi ta dng property X ca Object myBox, khng phi ta ch c tr s thi m
cn thc thi c ci method Property Get X. Ni tm li, Property cho ta c hi thc thi
mt method mi khi ngi s dng c hay vit tr s variable y.
Property c th l Read Only hay Write Only. Nu mun mt Property l Read Only th ta
khng cung cp Property Let. Nu mun mt Property l Write Only th ta khng cung cp
Property Get. Ngoi ra nu lm vic vi Object, thay v Data type thng thng, th ta phi
dng Property Set, thay v Property Let.
131
Lp trnh trc quan
V d ta cho clsBox mt Property mi, gi l Font dng object ca class stdFont ca VB6.
Trong clsBox ta declare mt Private variable mFont v vit mt Property Set Font nh sau:
Private mFont As StdFont
Public Property Set Font(ByVal newFont As StdFont)
Set mFont = newFont
End Property
Class clsBox c hai Public Subs, DrawBox v ClearBox. ClearBox cng v mt box nh
DrawBox, nhng n dng BackColor ca mn nh (canvas), nn coi nh xa ci box c sn.
Do , nu mun, chng ta c th sa Sub DrawBox li mt cht nhn mt Optional draw
color nh sau:
Public Sub DrawBox(Canvas As Object, Optional fColor As Long)
If IsMissing(fColor) Then
Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B
Else
Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), fColor, B
End If
End Sub
Trong form chnh ca chng trnh dng test clsBox, mi khi ta refer n mt object
thuc class clsBox, IDE Intellisense s hin th cc Properties v Subs/Functions ca clsBox
nh trong hnh di y:
132
Lp trnh trc quan
Trong chng trnh ny, mi khi ta click nt Draw th mt Box c instantiate, cho ta
X,Y v kch thc Width, Height, ri c v ra ngay trn form. Ch Me trong code ni n
chnh ci form frmClass.
cho chng trnh th v hn, khi ngi s dng clicks nt Animate, ta s cho mt box
mu chy t tri qua phi.
Khi ngi s dng clicks nt Two Boxes ta s v hai boxes, hp trong mu xanh, hp ngoi
mu , v cho chng chy t tri sang phi. y ta biu din cho thy mnh mun
instantiate bao nhiu boxes t clsBox cng c, v d nhin mi box c mt b properties vi
gi tr ring ca n.
133
Lp trnh trc quan
Ta th khai bo mt Event tn Draw trong clsBox, v vit code mi khi Sub DrawBox
executes th Class s Raise mt event Draw.
Public Event Draw(X As Integer, Y As Integer)
Public Sub DrawBox(Canvas As Object, Optional fColor As Long)
If IsMissing(fColor) Then
Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), , B
Else
Canvas.Line (mX, mY)-(mX + mWidth, mY + mHeight), fColor, B
End If
RaiseEvent Draw(mX, mY)
End Sub
134
Lp trnh trc quan
By gi, trong frmClass thay v ch declare Dim myBox as clsBox, ta s declare Private
WithEvents myBox as clsBox. Ngay sau , ch myBox s hin ra trong danh sch cc Object
c h tr Event ca frmClass. K ta s vit code handle Event Draw ca myBox, tc l
ta cung cp code cho Private Sub myBox_Draw (X as Integer, Y as Integer). y ta ch hin
th mt thng ip bo co mt hp va c v u.
Khi chy chng trnh, mi ln mt clsBox object thc hin Sub DrawBox ta s thy
frmClass hin th mt message ging nh di y.
135
Lp trnh trc quan
BI 17. DEBUG
Bugs l nhng li ca chng trnh m ta pht hin khi chy n. Debug l cng vic loi tt
c nhng lm trong chng trnh n chy m xui trong mi tnh hung.
Chng trnh khng thc hin ng nh lp trnh vin mun, tc l lp trnh vin mun
mt ng m bo chng trnh lm mt ng v v tnh khng vit chng trnh ng cch.
Trng hp ny ta gii quyt bng cch dng nhng Software Tools (k c ngn ng lp
trnh) thch hp, v c nhng qu trnh lm vic c h thng.
C nhiu chng trnh phi b thay i na chng v lp trnh vin hiu lm iu khch
hng mun. Do trong s lin h vi khch hng ta cn phi hi i, hi li, phn hi vi
khch hng nhiu ln iu ta hiu bng th t, ti liu, khch xc nhn l ta bit ng h
trc khi xc tin vic thit k chng trnh. Nu sau ny khch i , l quyn ca h,
nhng h phi tr tin thay i (variation).
136
Lp trnh trc quan
Nu ta mun dng mt k thut g trong mt hon cnh no m ta khng bit chc n chy
khng th nn th ring r n trc. Phng php y c gi l Prototype.
Ngoi ra, ta cng nn xy dng nhng kch bn test cho nhng trng hp c bit, in
hnh l bad data - khi ngi s dng bm lung tung hay database cha nhiu rc.
Nu chng trnh chy trong real-time (tc l data thu nhp qua Serial Com Port, Data
Acquisition Card hay mng), chng ta cn phi lu nhng trng hp khc nhau ty theo
vic g xy ra trc, vic g xy ra sau. Lc by gi Logic ca chng trnh s ty thuc vo
trng thi (State) ca data. Tt nht l ngh n nhng Scenarios c th th tng giai on
v tnh hung.
Nu giai on thit k kin trc ca chng trnh ta chia ra tng Class, th khi lp trnh ta
li thit k chi tit v Subs, Functions .v.v.., mi th s cn phi th nh th no. Nu ta c th
chia cng vic ra tng giai on th mi giai on c th m mt call n mt Sub. Th g cn
phi tnh ra hay ly t ni khc th c th c thc hin bng mt Function.
137
Lp trnh trc quan
Tht ra, chng ta c th dng ByRef cho mt parameter chuyn vo mt Function. Trong
trng hp d nhin variable y c th b sa i. iu ny gi l phn ng ph (side
effect), v bnh thng t ai lm vy. Do , nu chng ta tht s mun vt ngoi qui c
thng thng th nn Comment r rng cnh bo ngi s c chng trnh chng ta sau
ny.
17.2. Mt s lu
17.2.1 ng s Error
Mi khi chng trnh c mt Error, hoc l Compilation Error (v ta vit code khng ng
vn phm, ng vng), hoc l Error trong khi chy chng trnh, th chng ta khng nn s
n. Hy bnh tnh c ci Error Message xem n mun ni g. Nu khng hiu ngay th
c i c li vi ln v suy nghim xem c tm c s hng dn no khng. Khi lp trnh
chng ta s gp Errors rt nhiu, nn chng ta phi tp bnh tnh i din vi chng.
138
Lp trnh trc quan
Nh th khng nht thit chng ta phi vit rt nhiu Comment nhng h c im no khc
thng, b him th chng ta cn thng bo v gii thch ti sao chng ta lm cch y. C th
sau ny ta khm ph ra on code c bugs; lc c li c th ta s thy du rng nh v thit
k ng nhng cch lp trnh c phn thiu kim sot chng hn.
Mt trong nhng bugs kh thy nht l ta dng cng mt tn cho local variable (variable
declared trong Sub/Function) v global variable (variable declared trong Form hay Basic
Module). Local variable s che y global variable cng tn, nn nu chng ta mun ni n
global variable trong hon cnh y chng ta s dng lm local variable.
Chng ta nn trung thnh vi cch dng Option Explicit u mi Form, Class hay
Module. Nu c variable no nh vn sai VB6 IDE s cho chng ta bit ngay. Nu chng ta
khng dng Option Explicit, mt variable nh vn sai c xem nh mt variable mi vi
gi tr 0 hay "" (empty string).
139
Lp trnh trc quan
Ni chung chng ta nn thn trng khi assign mt data type cho mt variable vi data type
khc. Chng ta phi bit r chng ta ang lm g khi b phn ng ph (side effect).
Kim li code trc khi compile. Khi ta compile code, nu khng c error ch c ngha l
Syntax ca code ng, khng c ngha l logic ng. Do ta cn phi bit chc l code ta
vit s lm ng iu ta mun bng cch c li code trc khi compile n ln u tin. Cng
vic ny gi l Desk Check (Kim trn bn). Mt chng trnh c Desk Checked k s cn
t debug v cha t bugs khng ng trc. L do l mi scenarios c tin liu chu o.
Test Plan lit k tt c nhng g ta mun th v cch th chng. Khi th theo Test Plan ta
s khm ph ra nhng bug v tm cch loi chng ra. H s ghi li lch s ca Test Plan (trc
trc g xy ra, chng ta dng bin php no gii quyt) s b ch trn nhiu phng din.
Ta s hc c t kinh nghim Debug v bit r nhng th g trong d n c th theo
cch no.
17.3. Cc k thut x l li
Khi EXE ca mt chng trnh vit bng VB6 ang chy, nu gp Error, n s hin th mt
Error Dialog cho bit l do gy li. Sau khi chng ta click OK, chng trnh s ngng. Nu
chng ta chy chng trnh trong VB6 IDE, chng ta c dp bo chng trnh ngng trong
source code ch c Error bng cch bm button Debug trong Error Dialog. Tip theo chng
ta c th tm hiu tr s cc variables on nguyn do ca Error. Do , nu chng ta bt
u cho dng mt chng trnh chng ta vit cho ni b n v, nu tin th trong vi tun
u, thay g chy EXE ca chng trnh, chng ta chy source code trong VB6 IDE. Nu c
bug no xy ra, chng ta c th cho chng trnh ngng trong source code debug.
Cch hay nht theo di execution ca chng trnh l dng Breakpoint lm cho
chng trnh ngng li mt ch ta mun trong code, ri sau ta cho chng trnh bc
tng bc. Trong dp ny ta s xem xt tr s ca nhng variables coi chng c ng nh
d nh khng.
Lc chng trnh ang dng li, chng ta c th xem tr s ca mt variable bng cch
cursor ln trn variable y, tooltip s hin ra nh trong hnh di y:
141
Lp trnh trc quan
C khi chng ta mun chng trnh ngng gia mt For Loop khi Iterator value c mt
tr s kh ln. Nu ta sn mt breakpoint ri c bm F5 nhiu ln th hi bt tin. C
mt phng php hu hiu l dng mt IF statement th khi Iterator value c tr s y th ta
ngng breakpoint ti statement Beep (thay g statement Print ICounter) nh trong hnh
di y:
142
Lp trnh trc quan
Immediate Window cho php ta thc thi nhng VB statement trong khi chng trnh ang
dng li. Ta c th dng mt Print statement hin th tr s ca mt variable hay kt qu
ca mt Function, gi mt Sub hay thay i tr s mt variable trc khi tip tc cho chng
trnh chy li.
i khi khng tin ngng chng trnh nhng chng ta vn mun bit chng trnh
ang lm g trong mt Sub. Chng ta c th gia code ca mt Sub/Function mt statement
ging nh di y.
143
Lp trnh trc quan
Debug.Print Format ( Now,"hh:mm:ss ") & "(Sub ProcessInput) Current Status:" & Status
chng trnh hin th trong Immediate Window value ca Status khi n thc thi bn trong
Sub ProcessInput lc my gi.
C mt cch khc l thay v cho hin th trong Immediate Window chng ta cho vit xung
(Log) vo trong mt text file. Di y l mt Sub in hnh chng ta c th dng Log mt
Event message:
Sub LogEvent(ByVal GivenFileName, ByVal Msg As String, HasFolder
As Boolean, IncludeTimeDate As Integer)
' Append event message Msg to a text Logfile GivenFileName
' If GivenFileName is fullPathName then HasFolder is true
' IncludeTimeDate = 0 : No Time or Date
' = 1 : Prefix with Time
' = 2 : Prefix with Time and Date
Dim FileNo, LogFileName, theFolder
If HasFolder Then
LogFileName = GivenFileName
Else
If Right(App.Path, 1) <> "\" Then
theFolder = App.Path & "\"
Else
theFolder = App.Path
End If
LogFileName = theFolder & GivenFileName
End If
FileNo = FreeFile
If Dir(LogFileName) <> "" Then
Open LogFileName For Append As FileNo
Else
Open LogFileName For Output As FileNo
End If
Select Case IncludeTimeDate
Case 0 ' No Time or Date
Print #FileNo, Msg
Case 1 ' Time only
Print #FileNo, Format(Now, "hh:nn:ss ") & Msg
Case 2 ' Date & Time
Print #FileNo, Format(Now, "dd/mm/yyyy hh:nn:ss ") & Msg
144
Lp trnh trc quan
End Select
Close FileNo
End Sub
i khi chng ta mun chng trnh ngng khng phi mt ch no nht nh, nhng khi
tr s ca mt variable hay ca mt expression l bao nhiu, c th l chng ta khng bit ti
sao mt variable t nhin c mt tr s nh vy. V d chng ta mun chng trnh ngng li
khi ICounter = 15. Chng ta c th dng Menu command Debug | Add Watch. VB6 IDE s
hin th dialog di y. Chng ta nh ICounter = 15 vo textbox Expression v click
option box Break When Value Is True trong hp Watch Type. Lm nh vy c ngha l ta
mun chng trnh ngng khi ICounter bng 15.
C mt phng php rt thng dng khi debug l loi b nhng dng code nghi ng
xem bug c bin mt khng. N c gi l Elimination Method. Nu bug bin mt th
nhng dng code c loi b l th phm. Chng ta c th Comment Out mt s dng
cng mt lc bng cch highlight cc dng y ri click Comment Block trn Edit ToolBar.
145
Lp trnh trc quan
Khi dng Elimination Method chng ta phi cn nhc Logic ca code chng ta trong khi
quyt nh Comment Out nhng dng no, nu khng, l mt phng php kh nguy him.
Ngoi ra, Menu Command View | Locals Window lit k cho chng ta tr s ca tt c
variables trong mt Sub/Function v View | Call Stack lit k th bc cc Sub gi ln lt t
ngoi vo trong cho n v tr code ang ngng hin thi.
146
Lp trnh trc quan
C hai loi menu ta thng gp : drop-down (th xung) menu v pop-up (hin ln)
menu. Ta dng drop-down menu lm Menu chnh cho chng trnh. Thng thng n nm
pha trn chp mn hnh. Nm dc theo chiu ngang l Menu Bar, nu ta click ln mt
command trong Menu Bar th chng trnh s th xung mt menu vi nhng MenuItems
nm dc theo chiu thng ng. Nu ta click ln MenuItem no c du hnh tam gic nh bn
phi th chng trnh s popup mt Menu nh trong hnh di y (khi ta click Format |
Make Same Size):
Ta dng Menu Editor to hoc sa mt Menu cho chng trnh. Menu thuc v mt
Form. Do , trc ht ta select mt Form lm vic vi Designer ca n (ch khng phi
code ca Form). K ta dng Menu Command Tools | Menu Editor hay click ln icon ca
Menu Editor trn Toolbar lm cho Menu Editor hin ra.
147
Lp trnh trc quan
148
Lp trnh trc quan
149
Lp trnh trc quan
Nu mun cho ngi s dng dng Alt key x dng Menu, chng ta nh thm du &
trc character chng ta mun trong menu Caption. V d Alt-F s th xung Menu ca Menu
Command File.
Ngoi Alt key ta cn c th cho ngi s dng dng Shortcut ca menuItem. cho
MenuItem mt Shortcut, chng ta chn cho n mt Shortcut t ComboBox Shortcut trong
Menu Editor.
150
Lp trnh trc quan
Trong khi chy chng trnh (at runtime), chng ta cng c th thay i cc values Enabled
v Visible nh sau:
mnuSave.Enabled = False
mnuOpen.Visible = False
i vi ngi s dng, ang khi lm vic vi mt Object trong Windows tin nht l ta c
th lm hin th Context Menu (Menu p dng cho ng tnh hung) bng mt Mouse click.
Thng thng l Right Click v ci Context Menu cn c gi l Pop-up Menu. Chnh ci
151
Lp trnh trc quan
Pop-Up menu tht ra l Drop-down menu ca mt Menu Bar Command. Bnh thng Menu
Bar Command y c th visible hay invisible (tn hnh).
Trong hnh di y, khi ngi s dng Right click trn Form, mnuEdit s hin ln. Nu
bnh thng chng ta khng mun cho ngi s dng dng n trong Main Menu th chng ta
cho n invisible:
Code lm cho Popup menu hin ln c vit trong Event Mousedown ca mt Object m
tnh c y l ca chnh ci Form:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X
As Single, Y As Single)
' Popup the Edit Menu if User clicked the Right Button of the
Mouse
If Button = vbRightButton Then
PopupMenu mnuEdit
End If
End Sub
Ngay c khi chng ta mun cho mnuEdit bnh thng l invisible, chng ta cng nn
cho n visible trong lc u tin b code vo dng x l Click Events ca nhng
MenuItems thuc v mnuEdit nh mnuCopy, mnuCut v mnuPaste.
152
Lp trnh trc quan
Chng ta mun chng trnh nh Option m ngi s dng chn, ln ti khi ngi s
dng khi ng chng trnh th Option WordWrap cn gi nguyn gi tr nh c.
Cch tin nht l cha value ca Option WordWrap nh mt Key trong Registry. Registry
l mt loi c s d liu c bit ca Windows Operating System dng cha nhng d kin
lin h n Users, Hardware, Configurations, ActiveX Components ..v.v. dng trong
computer. Trong Registry, data c sp t theo tng loi theo ng cp. Chng ta c th
Edit trc tip tr s cc Keys trong Registry bng cch dng Registry Editor.
153
Lp trnh trc quan
Trong chng trnh ny ta cng nhn tin bt chng trnh nh lun v tr ca Form khi
chng trnh ngng li, ln ti khi ngi s dng khi ng chng trnh th chng trnh
s c v tr lc u ging y nh trc.
154
Lp trnh trc quan
Mun cho chng trnh c cc gi tr ca Keys cha trong Registry khi n khi ng ta ch
cn dng Function GetSetting trong Sub Form_Load c vo t Registry nh di y:
Private Sub Form_Load()
' Initialise Location of the form by reading the Settings from
the Registry
Me.Left = Val(GetSetting(App.Title, "Location", "Left", "0"))
Me.Top = Val(GetSetting(App.Title, "Location", "Top", "0"))
' Initialise setting of WordWrap in the menu
mnuWordWrap.Checked = ( GetSetting(App.Title, "Settings",
"WordWrap", "False") = "True" )
End Sub
"LattestFileName.txt|OldFileName.txt|OldestFilename.txt"
Mi ln ngi s dng Open mt File ta s thm tn File y vo trong Registry v bt c lc
no ch gi li tn ca 3 Files mi dng nht.
155
Lp trnh trc quan
156
Lp trnh trc quan
157
Lp trnh trc quan
UpdateMenu
End Sub
158
Lp trnh trc quan
End If
' Assign FileName to Caption of mnuRFile array and make the
MenuItem elements visible
For i = 1 To RecentFiles.TokenCount
myForm.mnuRFile(i - 1).Caption = RecentFiles.TokenAt(i) '
Assign to Caption
myForm.mnuRFile(i - 1).Visible = True ' Make the MenuItem
visible
If i = MaxFiles Then Exit For ' This line maybe
unnecessary
Next
' Make the rest of the MenuItem array mnuRFile invisible if
there are less than MaxFiles
If RecentFiles.TokenCount < MaxFiles Then
For i = RecentFiles.TokenCount To MaxFiles - 1
myForm.mnuRFile(i).Visible = False
Next
End If
End Sub
Chng ta c th chy Line Command RegEdit sau khi click Start | Run
xem chi tit ca cc Keys m chng trnh cha trong Sections Location v Settings
ca Folder HKEY_CURRENT_USER\Software\VB and VBA Program Settings\Menu
159
Lp trnh trc quan
160
Lp trnh trc quan
Dialogs (hi thoi) c dng hin th tin tc v nhn thng tin t chut hay bn phm
t ngi s dng ty theo tnh hung. Chng c dng tp trung s ch ca ngi s
dng vo cng vic hin ti ca chng trnh nn rt hu dng trong cc chng trnh ca
Windows
C nhiu dng Dialogs, mi th p dng cho mt hon cnh ring bit. Trong chng ny
ta s bn qua 4 loi Dialogs chnh v nghin cu v khi no v cch no ta dng chng:
- Message Boxes
- Input Boxes
- Common Dialogs
- Custom Dialogs
161
Lp trnh trc quan
Parameter (thng s) th nht ca MsgBox l text message Close the program down?,
parameter th nh l tp hp ca icon (vbQuestion) v s buttons (vbOKCancel) bng cch
cng hai constants: vbQuestion + vbOKCancel (hai buttons OK v Cancel), parameter th ba
l title (tiu ) ca Dialog.
Constant Cc buttons
vbOKOnly OK
vbOKCancel OK Cancel
vbYesNo Yes No
vbRetryCancel Retry Cancel
vbYesNoCancel Yes No Cancel
vbAbortRetryIgnore Abort Retry Ignore
Constant ca cc icons ta c th dng l vbCritical, vbQuestion, vbExclamation v
vbInformation.
162
Lp trnh trc quan
Khi mt Message Box c m ra, c chng trnh ngng li v i ngi s dng phn
ng. Ta ni Message Box c hin th trong Modal Mode, n dnh mi s ch v tm
ngng cc execution khc trong cng chng trnh. Sau khi ngi s dng click mt button,
Message Box s bin mt v chng trnh s tip tc chy t dng code ngay di dng
MsgBox.
Tr s Tn Const
1 OK vbOK
2 Cancel vbCancel
3 Abort vbAbort
4 Retry vbRetry
5 Ignore vbIgnore
6 Yes vbYes
7 No vbNo
Chng ta c th hin th Text message trong Message Box thnh nhiu dng bng cch
dng Constant vbCrLf (CarriageReturn v LineFeed) nh du nhng ch ngt khc nh
sau:
MsgBox "This is the first line" & vbCrLf & " followed by the
second line"
163
Lp trnh trc quan
Nu chng ta thy mnh thng dng MsgBox vi cng mt icon v nhng buttons, nhng
c Text message khc nhau, chng ta c th vit mt Global Subroutine trong .BAS module
dng li nhiu ln. V d chng ta c mt Global Sub nh sau:
Public Sub DisplayError(ByVal ErrMess As String )
MsgBox ErrMess, vbCritical + vbOKOnly, "Error"
End Sub
Input Boxes ging ging Message Box, nhng n chuyn nhn input data t ngi s dng
v khng hin th mt icon. V d:
Private Sub CmdGreeting_Click()
Dim strReply As String
strReply = InputBox$("Please enter your name", "What 's your
name?", "John", 2000, 1000)
MsgBox "Hi " & strReply & ", it 's great to meet you!",
vbOKOnly, "Hello"
End Sub
164
Lp trnh trc quan
Nu chng ta click nt Cancel th returned Value l empty string, chng ta c th test empty
string nhn din trng hp ny.
165
Lp trnh trc quan
- Ta khng th lm g c trong lc ngi s dng input data, phi i sau khi ngi s
dng click OK th mi bt u x l input textstring. Ngc li nu ta dng mt Textbox
trong mt Form thng thng, ta c th code trong cc Event handlers ca Events
KeyPress hay Change kim sot cc keystrokes ca ngi s dng.
- Input Boxes ch cho ta nh vo mt text string duy nht. Nhiu khi ta mun ngi s
dng nh vo nhiu th nn cn phi c mt form ring.
- Sau cng, Input Boxes xem khng p mt. Chng trnh dng Input Boxes c v nh
khng chuyn nghip, do ta cn phi dng Custom Dialogs.
Mun dng cc Dialogs y trong VB6 ta phi reference Comdlg32.ocx bng IDE Menu
command Project | Components... ri chn v Apply Microsoft Common Dialog Control
6.0.
Microsoft Common Dialog Control 6.0 cho ta su dng Dialogs ty theo gi Method no:
166
Lp trnh trc quan
Tn Method
Open File ShowOpen
Save File ShowSave
Color ShowColor
Font ShowFont
Print ShowPrinter
Help ShowHelp
167
Lp trnh trc quan
Exit Sub
End If
End Sub
Hy chy chng trnh y v click button Open, chng trnh s hin th error message
di y:
Chng ta c th chn folder no ty bng cch di chuyn t folder ny qua folder khc
hay thay i disk drive. Nu chng ta click vo bn phi ca combobox File of type, n s
dropdown cho thy chng ta c th chn mt trong hai loi Files nh lit k trong
statement:
168
Lp trnh trc quan
Sau khi chn mt Filename c sn hay nh mt tn vo File name textbox, chng ta click
Open. Sau , CommonDialog1.Filename s cha tn file chng ta chn hay nh vo.
Save Dialog cng tng t nh Open Dialog, ta dng method ShowSave hin th n.
169
Lp trnh trc quan
170
Lp trnh trc quan
Color Dialog cho ngi s dng mt cch chn mu rt d dng. Ngoi nhng mu c sn,
ngi s dng c th t to ra mt mu ri cho n thm vo trong bng mu c cung cp,
gi l Windows Palette bng cch click button Add to Custom Colors.
171
Lp trnh trc quan
Ta dng method ShowColor hin th Color Dialog. Sau khi ngi s dng chn mt
mu ri, ta c th trc tip assign n cho property ForeColor hay BackColor ca mt control.
Trong v d di y ci mu m ngi s dng va chn c assigned cho background ca
picturebox Picture1:
Private Sub CmdSelectColor_Click()
On Error GoTo NoColorChosen
With CommonDialog1
.CancelError = True
' Entire dialog box is hin thed, including the Define
Custom Colors section
.Flags = cdlCCFullOpen
.ShowColor ' Launch the Color Dialog
Picture1.BackColor = .Color ' Assign selected color to
background of Picture1
Exit Sub
End With
NoColorChosen:
' Get here if user clicks the Cancel button
MsgBox "You did not select a color!", vbInformation,
"Cancelled"
Exit Sub
End Sub
172
Lp trnh trc quan
Font Dialog cho ta chn Font cho mn nh hay printer v chn mu dng cho ch ca
Font. Ta dng method ShowFont hin th FontDialog. Cc chi tit trnh by trong Font
Dialog ty thuc vo tr s ca Flags nh sau:
Constant Tr s Hiu qu
cdlCFScreenFonts 1 Ch hin th cc Fonts printer h tr
cdlCFPrinterFonts 2 Ch hin th cc Fonts ca mn nh, cha chc
tt c u c printer h tr
cdlCFBoth 3 Hiin th cc Fonts mn nh v printer
cdlCFScalableOnly &H20000 Ch hin th cc scalable Fonts nh TrueType
fonts m chng ta ci vo my
Nu chng ta mun cho ngi s dng ty chn chn mu th thm 256 vo tr s ca
Flags.
173
Lp trnh trc quan
Ch : Nu chng ta qun cho Flags mt trong nhng hng s ni trn chng trnh s cho
mt Error message nh sau:
Print Font cho ta mt giao din cng ging nh trong Microsoft Office chn nhng ty
chn v vic in. Vi Print Dialog ta c th chn printer no vi nhng c tnh no bng cch
click button Properties hay button Preferences. Ta cng c th quyt nh in t trang no n
174
Lp trnh trc quan
175
Lp trnh trc quan
Ta dng method ShowHelp hin th cc thng tin gip , nhng nh phi cho
CommonDialog t nht tr s ca cc properties HelpFile v HelpCommand.
Private Sub CmdHelp_Click()
CommonDialog1.HelpFile = "YourProgram.hlp"
CommonDialog1.HelpCommand = cdlHelpContents
CommonDialog1.ShowHelp
End Sub
bit thm chi tit v cch dng ShowHelp, highlight ch HelpContext trong source
code VB6 ri n phm F1 v chn MsComDlg.
Nhiu khi Message Box, Input Box hay cc dng Common Dialogs vn khng thch hp
cho hon cnh lp trnh. Trong trng hp y chng ta c th dng mt Form bnh thng
lm thnh mt Dialog theo yu cu. N hi mt cng hn mt cht, nhng th nht n c
nhng mu sc ging nh cc Forms khc trong chng trnh, v th hai ta mun lm g ty .
Ch c ci bt li l chng trnh s dng nhiu ti nguyn hn v cn thm mt t b nh.
Sau y ta th trin khai mt Login Form tng qut, c th dng trong nhiu trng hp.
Khi khi ng, chng trnh ny s hin th mt Login form yu cu ngi s dng nh vo
tn v mt khu. Sau , nu tn v mt khu hp l th ci Form chnh ca chng trnh mi
hin ra. Cch ta thc hin l cho chng trnh khi ng vi mt Sub Main trong .BAS
Module. Sub Main s gi Sub GetUserInfo (cng nm trong cng Module) hin th form
frmLogin trong Modal mode n lm vic cng mt cch nh Message Box, Input Box hay
Common Dialogs.
Sau khi user in chi tit v click OK, tm thi ta ch hin th mt thng ip xc nhn
cc chi tit y.
177
Lp trnh trc quan
Trong tng lai, chng ta c th vit thm code kim tra xem tn v mt khu c hiu
lc khng. C mt vi chi tit v form frmLogin n lm vic ging mt Common Dialog:
Ta cho Property PasswordChar ca textbox txtPassword bng "*" khi ngi s dng
in mt khu, ta ch thy mt dng du hoa th.
Property Default ca button cmdOK l True khi ngi s dng n phm Enter trong
form l coi nh tng ng vi click button cmdOK.
Tng t nh th, Property Cancel ca button cmdCancel l True khi ngi s dng
n phm Esc trong form l coi nh tng ng vi click button cmdCancel.
End If
End Sub
179
Lp trnh trc quan
BI 20. DNG HA
Khi ni n ha, ta mun phn bit n vi Text thng thng. V d ta dng Notepad
edit mt bi th trong mt ca s (V d : Hm qua em i tnh v ). Trong lc bi th ang
c hin th ta c th sa i d dng bng cch dng bn phm nh thm cc ch mi
vo, dng cc nt Delete, Backspace xa cc ch. l ta lm vic vi Text.
By gi, trong khi bi th cn ang hin th, ta dng mt chng trnh Graphic nh
PhotoImpact Capture ca ULead chp ci hnh ca s ca bi th (active window) thnh
ging nh mt photo, th ta c mt Graphic. Sau , mun sa i bi th t graphic ny ta
phi dng mt graphic editor nh MSPaint, PaintShopPro,.v.v.. Cc ch trong hnh cng c
cng dng graphic nh ta thy mt photo, nn mun edit phi dng mt c vi mu sn.
20.1.1 mn (resolution)
180
Lp trnh trc quan
Mt byte c 8 bits. i khi ta nghe ni 16 bit color, ni thay v mt byte, ngi ta dng
n 2 bytes cho mi pixel. Nh vy mi pixel ny c kh nng hin th 216 = 65536 mu khc
nhau. Mun dng 16 bit color cho SuperVGA, ta cn phi c 1024x768x2 =1572864 bytes,
tc l gn 1,6 MB. l l do ti sao ta cn 2MB RAM. Lu l RAM ca VGA (Vector
Graphic Adapter) card khng lin h g vi RAM ca b nh computer.
181
Lp trnh trc quan
20.1.2 Mu (color)
Khi ta dng ch c mt bit (ch c tr s 0 hay 1) cho mi pixel th ta ch c trng hay en.
Lc y ta c th dng mt byte (8 bits) cho 8 pixels. Du vy, nu mn ca graphic cao ,
th hnh cng p. Th xem cc tuyt tc photos trng en ca Cao m, Cao Lnh th bit.
Cc my Fax dng nguyn tc scan hnh giy c A4 ra thnh nhng pixels trng en ri gi
qua ng dy in thoi qua u kia ti to li hnh t nhng d kin pixels.
182
Lp trnh trc quan
Dng Function QBColor chn mt trong 16 mu. Function QBColor xut pht t thi
Quick Basic (QBasic) ca Microsoft. QBsic l tin thn ca Visual Basic. Trong QBasic
chng ta c th dng cc con s 1,2,3 .. ch nh cc mu Blue, Green, Cyan ,
.v.v..Function QBColor gin tin ha cch dng mu, ngi s dng khng cn phi bn tm
v cch trn ba th mu cn bn Red, Green, Blue. Chng ta vit code mt cch n gin nh:
Tr s Mu Tr s Mu
0 Black 8 Gray
1 Blue 9 Light Blue
2 Green 10 Light Green
3 Cyan 11 Light Cyan
4 Red 12 Light Red
5 Magenta 13 Light Magenta
6 Yellow 14 Light Yellow
7 White 15 Bright White
Dng Function RGB trn ba mu Red, Green v Blue. Trong ci bng lit k cc
intrinsic color constants pha trn, nu chng ta s thy vbWhite(0xFFFFFF) l tng s
183
Lp trnh trc quan
H thng s ta dng hng ngy l Thp Phn. Tr s 0xFF ca vbRed l con s 255 vit
di dng Thp lc phn (Hexadecimal hay Hex cho gn v y c nh du bng 0x
trc con s phn bit vi s Thp phn). Trong h thng s Hex ta m t 0 n 9 ri
A,B,C,D,E,F ri qua s dng thp lc 10, 11,.., 19, 1A, 1B, ..1E,1F,20,21..v.v. Tc l thay v
ch dng 10 symbols t 0 n 9 trong Thp phn, ta dng 16 symbols t 0 n F. Mun bit
thm v h thng s Hex hy c bi C s Nh Phn.
Ghi ch: Chng ta c th dng Windows Calculator hon chuyn s gia cc dng
Decimal, Binary v Hexadecimal. Chn View|Scientific thay v View|Standard.
184
Lp trnh trc quan
185
Lp trnh trc quan
186
Lp trnh trc quan
187
Lp trnh trc quan
Mt trong nhng features ca MSWindows l cho ta chn Color Scheme ca Windows theo
s thch. Bnh thng, Color Scheme ca Windows l Blue, nhng ta c th chn Olive Green
hay Silver, nu ta mun.
188
Lp trnh trc quan
dng s c bin i theo Color Scheme m ngi s dng chn khi b trng hp ci
mu tr nn chng ging ai. Lc thit k, ta cng c th chn Intrinsic Color Constant t Tab
System khi chn mu.
189
Lp trnh trc quan
Trong database ny c 4 tables: Authors (tc gi), Publishers (nh xut bn), Titles (
mc) v Title Author.
Table Authors cha nhiu records. Mi bn ghi trong table Authors cha 3 fields: Au_ID,
Author v Year Born (nm sanh). Ta c th trnh by Table Authors di dng mt
spreadsheet nh sau:
190
Lp trnh trc quan
191
Lp trnh trc quan
Khng phi lc no ta cng mun truy cp mt bn ghi Author da vo Au_ID. Nhiu khi
ta mun dng chnh tn ca Author truy cp, do ta cng cn phi sort sn cc records
theo th t alphabet. Ta cng c th hp nhiu fields li sort cc records. Tht ra, chnh cc
records khng cn phi c di i nm ng v tr th t. Ta ch cn nh v tr ca n
u trong table l ri.
192
Lp trnh trc quan
By gi, nu chng ta ang chy Microsoft Access quan st database biblio.mdb, chng
ta c th dng Menu Command Tools | Relationships nh sau xem s lin h
(relationships) gia cc tables.
193
Lp trnh trc quan
Tng t nh vy, trong mi lin h one-to-many gia table Authors v Title Author, ta
thy mt tc gi (bn u c con s 1) c th sng tc nhiu tc phm c i din bi cc
bn ghi Title Author.
Trong khi gia hai tables Titles v Title Author, ta c mt mi lin h one-to-one, tc l
tng ng vi mi bn ghi Title ch c mt bn ghi Title Author. Cu hi t ra l cc mi
lin h one-to-many c ci g quan trng.
Tng tng khi ta lm vic vi table Titles (tm gi l Tc phm), nhiu khi ta mun bit
chi tit ca nh xut bn ca tc phm y. Tht ra ta c th cha chi tit ca nh xut bn
ca mi tc phm ngay trong table Titles. Tuy nhin, lm nh th c im bt li l records
ca cc tc phm c cng nh xut bn s cha nhng d liu ging nhau. Mi ln mun sa
i chi tit ca mt nh xut bn ta phi sa chng trong mi bn ghi Title thuc nh xut bn
y. V mun cha chi tit ca mi nh xut bn mt ch duy nht, trnh s lp li, nn ta
cha chng trong mt table ring, tc l table Publishers.
194
Lp trnh trc quan
Trong mi lin h one-to-many gia tables Publishers v Titles, field PubID l Primary Key
trong table Publishers. Trong table Titles, field PubID c gi l Foreign Key, c ngha rng
y l Primary Key ca mt table l (foreign). Hay ni mt cch khc, trong khi lm vic vi
table Titles, lc no cn chi tit mt nh xut bn, ta s ly cha kha l (Foreign Key) dng
lm Primary Key ca Table Publishers truy cp bn ghi ta mun. l chnh Table Titles
c Primary Key ISBN ca n.
21.5. Cc li ch
195
Lp trnh trc quan
Integrity Rules c dng ni v nhng qui lut cn phi tun theo trong khi lm vic
vi database m bo l database cn tt. C hai loi quy lut: lut tng qut (General
Integrity Rules) v lut ring cho database (Database-Specific Integrity Rules). Cc lut ring
ny thng ty thuc vo cc quy lut v mu dch (Business Rules).
C hai quy lut lim chnh lin h hon ton vo database: Entity (bn th) Integrity Rule
v Referential (ch n) Integrity Rule.
Referential Integrity Rule ni rng database khng th cha mt Foreign Key m khng
c Primary Key tng ng ca n trong mt table khc. iu y hm rng:
- Disallow (khng cho lm): Hon ton khng cho php chuyn ny xy ra.
196
Lp trnh trc quan
- Nullify (cho thnh NULL): Nu Row cha Primary Key b deleted th tr s Foreign
Key tng ng trong cc records ca table bn pha many () c i thnh NULL,
hm ng c i tm thm chi tit u c.
Nhng quy lut lim chnh no khc khng phi l Entity Integrity Rule hay Referential
Integrity Rule th c gi l Database-Specific Integrity Rules. Nhng quy lut ny da vo
chnh loi database v nht l ty thuc vo cc quy lut v mu dch (Business Rules) ta dng
cho database, v d nh mi bn ghi v tin lng ca cng nhn phi c mt field S Thu
(Tax Number) do s Thu V pht hnh cho cng dn. Lu l cc quy lut ny cng quan
trng khng km cc quy lut tng qut v lim chnh. Nu ta khng p dng cc Database-
Specific Integrity Rules nghim chnh th database c th b h v khng cn dng c.
Khi thit k mt table field, lu property Required v nht l property Allow Zero Length
ca Text. Nu property Required ca mt field l Yes th ta khng th update (vit) mt bn
ghi vi field y c tr s NULL. Nu mt Text field c property Allow Zero Length l No th
th ta khng th update mt bn ghi khi field y cha mt empty string.
197
Lp trnh trc quan
198
Lp trnh trc quan
Access DBMS Menu Command Tools | Database Utilities | Compact and Repair
Database... hay dng function DBEngine.CompactDatabase trong VB6.
Mt cch truy cp database l dng ngn ng Structured Query Language (SQL) theo
chun do ISO/IEC pht hnh nm 1992, gi tt l SQL92. Tt c mi database thng dng u
h tr SQL, mc du nhiu khi chng cn cho thm nhiu chc nng rt hay nhng khng
nm trong chun. Cc lnh SQL thng dng l SELECT, UPDATE, INSERT v DELETE.
Ta c th dng phng tin thit k Query ca MSAccess vit SQL. Sau khi thit k Query
bng cch drag drop cc fields, chng ta c th dng Menu Command View | View SQL nh
sau:
199
Lp trnh trc quan
21.11. Dng Link Table lm vic trc tip vi database loi khc
Ta c th dng mt database loi khc, nh DBase, trc tip trong VB6 nh dng mt
Access database bnh thng. Mun thit lp mc ni y, chng ta dng Menu Command File
| Get External Data | Link Tables... ri chn loi DBase v chnh file ca table m chng ta
mun dng nht n vo Access database ang m:
D Jet Database Engine l mt relational database rt tt v hiu nng, n thuc loi File
Based database, tc l n th ng, khng chy mt mnh nhng phi ty thuc vo chng
trnh dng n. File Based database khng thch hp vi nhng ng dng c nhiu ngi dng
cng mt lc.
200
Lp trnh trc quan
Ngy nay ta thu thp d liu di nhiu hnh thc nh Email, Word documents,
Speadsheet. Khng nht thit d liu lun lun c cha di dng table ca nhng records
v khng nht thit d liu lun lun c lu tr trong mt database ng hong. D vy,
chng vn c xem nh database di mt mt chng trnh ng dng. Do , ta dng t
Data Store (kho d liu) thay th cho database ni n ni cha d liu. V i vi
chng trnh s dng d liu, ta ni n Data Source (ngun d liu) thay v database.
Khi lp trnh bng VB6 truy cp database, ta nhn database mt cch tru tng, tc l
du n l Access, DBase, SQLServer hay Oracle ta cng xem nh nhau. Nu c thay i loi
database bn di, cch lp trnh ca ta cng khng thay i bao nhiu.
Trong tng lai, mt XML file cng c th c xem nh mt database nho nh. N c th
ng mt mnh hay l mt table trch ra t mt database chnh huy. XML l mt chun m ta
c th dng import/export d liu vi tt c mi loi database h tr XML. Ta c th trao
i d liu trn mng Intenet di dng XML. Ngoi ra, thay v lm vic trc tip vi mt
database ln, ta c th trch ra vi tables t database y thnh mt XML file. K ta ch lp
trnh vi XML file cho n khi kt thc s trn (merge/reconcile) tp tin XML vi database
ln. Nu phn ln cc chng trnh p dng c thit k lm vic cch ny, th trong
tng lai ta khng cn mt Database Server tht mnh.
201
Lp trnh trc quan
VB6 tip tc h tr cc k thut ni trn, v cho thm mt k thut truy cp database mi,
rt quan trng, l ADO (ActiveX Data Objects). Trong mt bi ti ta s kho st v ADO
vi nhng u im ca n. Tuy nhin, v DAO rt n gin v hiu nng nn ta vn c th
tip tc dng n rt hu hiu trong hu ht cc p dng. Do bi ny v bi k s tp trung
vo nhng k thut lp trnh ph bin vi DAO.
202
Lp trnh trc quan
DoubleClick ln Icon ca Control Data trong Toolbox. Mt Control Data tn Data1 s hin
ra trn Form. Mun cho n nm bn di Form, ging nh mt StatusBar, hy set property
Align ca n trong Properties Window thnh 2 - Align Bottom.
Trong chng trnh ny ta mun lm vic vi table Titles ca database BIBLIO.MDB, xem
v edit cc records. property DefaultType ca Data1 c tr s 2- UseJet, tc l dng k
thut DAO, thay v dng k thut ODBC.
203
Lp trnh trc quan
Thut ng mi m ta s dng thng xuyn khi truy cp d liu trong VB6 l Recordset
(b cc bn ghi). Recordset l mt tp hp cc bn ghi, n c th cha mt s cc bn ghi hay
khng c bn ghi no c. Mt bn ghi trong Recordset c th l mt bn ghi ly t mt Table.
Trong trng hp y c th ta ly v tt c records trong table hay ch nhng records tha mn
mt iu kin, v d nh ta ch mun ly cc bn ghi ca nhng sch xut bn trc nm 1990
(Year Published < 1990).
204
Lp trnh trc quan
Chn textbox txtTitle, ri set property Datasource ca n trong Properties Window thnh
Data1. Khi click ln property Datafield ca txtTitle v m ComboBox ra chng ta s thy lit
k tn cc Fields trong table Titles. l v Data1 c coi nh trung gian ly table Titles t
database. y ta s chn ct Title.
Lp li cng tc ny cho 3 textboxes kia, v chn cc ct Year Published (nm xut bn),
ISBN (s l lch trong th vin quc t), v PubID (s l lch nh xut bn) lm Datafield cho
chng.
Khi bn ghi cui ca Recordset ang hin th, nu ta gi method MoveLast th property
EOF (End-Of-File) ca Recordset tr thnh True. Tng t nh vy, khi bn ghi th nht ca
Recordset ang hin th, nu ta gi method MovePrevious th property BOF (Begin-Of-File)
ca Recordset tr thnh True. Nu mt Recordset khng c cha mt bn ghi no c th c hai
properties EOF v BOF u l True.
c tnh hin th d liu trong cc textboxex theo ng bn ghi hin thi (current record)
c gi l data binding hay data bound (rng buc d liu) v control TextBox h tr chc
nng ny c ni l Data Aware (nhn bit d liu).
Khi bn ghi u tin ang hin th, nu chng ta edit Year Published i t 1985 thnh
1983 ri click Navigator button Next hin th bn ghi th nh, k click Navigator button
Previous hin th li bn ghi u tin th chng ta s thy l field Year Published ca bn
ghi u tin tht s c thay i (updated) thnh 1983.
206
Lp trnh trc quan
Cch ch nh tn DatabaseName trong giai on thit k (at design time) ta dng trc
y tuy tin li nhng hi nguy him, v khi ta ci chng trnh ny ln computer ca khch,
cha chc file database y nm trong mt folder c cng tn. V d trn computer mnh th
database nm trong folder E:\Program Files\Microsoft Visual Studio\VB98, nhng trn
computer ca khch th database nm trong folder C:\VB6\DataControl chng hn. Do , khi
chng trnh khi ng ta nn xc nh li v tr ca database. Gi d ta mun database
trong cng mt folder vi chng trnh ang chy, ta c th dng property Path ca
Application Object App nh sau:
Dim AppFolder As String
Private Sub Form_Load()
' Fetch Folder where this program EXE resides
AppFolder = App.Path
' make sure it ends with a back slash
If Right(AppFolder, 1) <> "\" Then AppFolder = AppFolder & "\"
' Assign Full path database filename to Data1
Data1.DatabaseName = AppFolder & "BIBLIO.MDB"
End Sub
Vi cch code ni trn ta s m bo chng trnh tm thy file database ng ch, khng
cn bit ngi ta ci chng trnh chng ta u trong hard disk ca computer khch.
Chng trnh trn dng cng tm c, nhng n khng cho ta phng tin thm (add),
bt (delete) cc records. By gi chng ta hy vo Form 5 buttons tn: cmdEdit, cmdNew,
cmdDelete, cmdUpdate v cmdCancel.
207
Lp trnh trc quan
Lc chung trnh mi khi ng, ngi s dng ang xem (browsing) cc records th hai
buttons Update v Cancel khng cn phi lm vic. Do ta s nhn tin Lock (kha) cc
textboxes v disable (lm cho bt lc) hai buttons ny v khng cn dng chng.
Sub SetControls c gi trong Sub Form_Load khi chng trnh khi ng v trong Sub
CmdEdit khi ngi s dng click nt Edit nh sau:
208
Lp trnh trc quan
Trong lc code, ta Update (cp nht) mt bn ghi trong Recordset bng method Update.
Nhng ta ch c th gi method Update ca mt Recordset khi Recordset ang trong Edit
hay AddNew mode. Ta t mt Recordset vo Edit mode bng cch gi method Edit ca
209
Lp trnh trc quan
Sau khi Recordset gi method Update th Recordset y ra khi AddNew hay Edit modes.
Ta cng c th t thot ra khi AddNew hay Edit modes, hay ni cho ng hn l hy b mi
pending (ang ch i) Update bng cch gi method CancelUpdate, v d nh
Data1.Recordset.CancelUpdate.
210
Lp trnh trc quan
211
Lp trnh trc quan
Khi trong Edit mode user chn mt Company Name khc trong DBCombo1 ri click nt
Update chng ta s thy Textbox txtPublisherID cng i theo v hin th con s l lch PubID
mi. Nu trc khi Update chng ta mun thy PubID mi hin th trong Textbox
txtPublisherID th chng ta c th dng Event Click ca DBCombo1 nh sau:
Private Sub DBCombo1_Click(Area As Integer)
' Hin th new PuBID
txtPublisherID.Text = DBCombo1.BoundText
End Sub
212
Lp trnh trc quan
Sau trong code ca Form chnh ta s declare variable myDatabase cho mt instance ca
DAO database v variable myRS cho mt DAO recordset. y ta ni r Database v
Recordset l thuc loi DAO phn bit vi Database v Recordset thuc loi ADO
(ActiveX Data Object) sau ny.
213
Lp trnh trc quan
Mc ch l VB6 runtime dynamically allocates (dnh ra cho khi cn) mt phn trong b
nh (memory) cha Object Database khi ta nhn c n t execution ca Method
OpenDatabase. Du v tr ch cha Object Database trong b nh khng nht nh, nhng v
ta nm con tr ch n v tr y nn ta vn c th lm vic vi n mt cch bnh thng. Con
tr l value (tr s) ca variable myDB. V value ny khng phi l Object, nhng n cha
memory address ch n (point to hay refer to) Object Database, nn ta gi n l Pointer.
214
Lp trnh trc quan
Lp trnh dng Pointer ni chung rt linh ng mang li hiu qu cao trong cc ngn ng
nh C, Pascal, C++ ,v.v.. Tuy nhin, lp trnh vin phi nh tr li Operating System phn
memory mnh dng khi khng cn cn n na Operating System li allocate cho Object
khc. Nu cng vic qun l dng li memory khng n tha th c nhng mnh memory nm
ri rc m Operating Sytem khng bit. Dn dn Operating System s khng cn memory d
na. Ta gi hin tng y l memory leakage (r). Cc ngn ng sau ny nh Java, C# u
khng dng Pointer na. Visual Basic khng mun lp trnh vin dng Pointer. Ch trong vi
trng hp c bit VB6 mi l ra cho ta thy tht ra trong hu trng VB6 Runtime dng
Pointer, nh trong trng hp ny.
215
Lp trnh trc quan
23.3. Cc nt di chuyn
Code cho cc nt ny cng n gin, nhng ta phi coi chng khi ngi s dng mun di
chuyn qu bn ghi cui cng hay bn ghi u tin. Ta phi kim tra xem EOF c tr thnh
True khi ngi s dng click CmdNext, hay BOF c tr thnh True khi ngi s dng click
CmdPrevious:
Private Sub CmdNext_Click()
myRS.MoveNext ' Move to next record
' Display record details if has not gone past the last record
If Not myRS.EOF Then
216
Lp trnh trc quan
Khi chy chng trnh chng ta s thy n hin th chi tit ca Bn ghi u tin khc vi
trong bi trc y v cc records c sorted:
217
Lp trnh trc quan
Ging nh chng trnh trong bi ri, ta s thm phng tin thm (add), bt (delete)
cc bn ghi. By gi chng ta hy vo Form 5 buttons tn: cmdEdit, cmdNew, cmdDelete,
cmdUpdate v cmdCancel.
Ngoi ra, khi ngi s dng sp thm mt bn ghi mi bng cch click nt New th ta phi
t clear (lm trng) ht cc textboxes bng cch assign Empty string vo text property ca
chng nh sau:
' If Editing existing record then AddNewRecord = False
' Else AddNewRecord = true
Dim AddNewRecord As Boolean
218
Lp trnh trc quan
Nu ngi s dng clicks Cancel trong khi ang edit cc textboxes, ta khng cn gi
method CancelUpdate v Recordset cha b t vo AddNew hay Edit mode. y ta ch
cn hin th li chi tit ca current record, tc l hy b nhng g ngi s dng ang nh
vo:
Private Sub CmdCancel_Click()
' Cancel update
SetControls (False)
' Redisplay details or current record
Displayrecord
End Sub
Lc ngi s dng clicks Update, chng ta c dp kim tra data xem c field no b b
trng (nht l Primary Key ISBN bt buc phi c tr s) hay c g khng valid bng cch gi
Function GoodData. Nu GoodData tr li mt tr s False th ta khng xc tin vi vic
Update. Nu GoodData tr v tr s True th ta t Recordset vo AddNew hay Edit mode ty
theo tr s ca Boolean variable AddNewRecord.
Ging nh khi hin th chi tit ca mt bn ghi ta phi assign tng Field vo textbox, th
by gi khi Update ta phi lm ngc li, tc l assign property Text ca tng textbox vo
Record Field tng ng. Sau cng ta gi method Update ca recordset v cho cc controls
tr li Browse mode:
Private Function GoodData() As Boolean
' Check Data here. If Invalid Data then GoodData = False
GoodData = True
End Function
Private Sub CmdUpdate_Click()
219
Lp trnh trc quan
Cng v khng c Data Binding, nn khi ngi s dng xa mt bn ghi, sau khi di chuyn
qua bn ghi k tip ta phi t hin th chi tit ca bn ghi nh sau:
Private Sub CmdDelete_Click()
On Error GoTo DeleteErr
With myRS
.Delete ' Delete new record
.MoveNext ' Move to next record
If .EOF Then .MoveLast
Displayrecord ' Display details of current record
Exit Sub
End With
DeleteErr:
MsgBox Err.Description
Exit Sub
End Sub
220
Lp trnh trc quan
23.5. Tm mt bn ghi
Bnh thng frame fraSearch ch hin ra khi cn, nn lc u hy set property Visible ca
n thnh False. Ta s cho ImgSearch hin th hnh mt ng dm nn chng ta hy click vo
bn phi property Picture trong Properties Window chn Icon BINOCULR.ICO t folder
E:\Program Files\Microsoft Visual Studio\Common\Graphics\Icons\Misc:
Ci Primary Key ca table Titles l ISBN. Khi ngi s dng select mt sch ta mun bit
ISBN ca sch y locate (nh ch) n trong Recordset myRS. Do trong khi thm tiu
ca mt sch vo List1, ta ng thi thm ISBN ca sch y vo mt Listbox th hai tn
221
Lp trnh trc quan
List2. Ta ch s dng List2 sau hu trng, nn hy set property Visible ca n thnh False.
Di y l code load tiu sch v ISBN vo cc Listboxes:
Private Sub ImgSearch_Click()
' Show Search Frame
fraSearch.Visible = True
Dim SrchRS As DAO.Recordset
Dim SQLCommand As String
' Define SQL statement
SQLCommand = "Select * from Titles where Title LIKE '" & "*" &
txtSearch & "*" & "' ORDER BY Title"
' Fetch all records having Title containing the text pattern
given by txtSearch
Set SrchRS = myDB.OpenRecordset(SQLCommand)
' If Recordset is not Empty then list the books' titles in
List1
If SrchRS.RecordCount > 0 Then
List1.Clear ' Clear List1
' We use List2 to contain the Primary Key ISBN
corresponding to the books in List1
List2.Clear ' Clear List2
With SrchRS
' Iterate through the Recordset until EOF
Do While Not SrchRS.EOF
' Hin th Title in List1
List1.AddItem .Fields("Title")
' Store corresponding ISBN in List2
List2.AddItem .Fields("ISBN")
.MoveNext ' Move to next record in the Recordset
Loop
End With
End If
End Sub
Khi ngi s dng Click ImgSearch vi text pattern l ch Guide, ta s thy hnh di y:
222
Lp trnh trc quan
Trong SELECT statement bn trn ta dng operator LIKE trn text pattern, ch Guide, c
wildcard character (*) hai bn. Wildcard character l ch c (hay khng c) ch g cng
c. Trong trng hp ny c ngha l h c ch Guide trong tiu sch l c, khng
cn bit n nm u. Ngoi ra s chn la ny Khng c Case Sensitive, tc l ch guide,
Guide hay GUIDE u c c.
Khi ngi s dng clicks nt Go, ta s dng method FindFirst ca Recordset myRS
nh ch ca bn ghi c tr s Primary Key l dng text trong List2 tng ng vi tiu dc
chn trong List1 nh sau:
Private Sub CmdGo_Click()
Dim SelectedISBN As String
Dim SelectedIndex As Integer
Dim Criteria As String
' Index of line selected by user in List1
SelectedIndex = List1.ListIndex
' Obtain corresponding ISBN in List2
SelectedISBN = List2.List(SelectedIndex)
' Define Search criteria - use single quotes for selected text
Criteria = "ISBN = '" & SelectedISBN & "'"
' Locate the record, it will become the current record
myRS.FindFirst Criteria
' Hin th details of current record
Hin threcord
' Make fraSearch disappeared
fraSearch.Visible = False
End Sub
223
Lp trnh trc quan
Lu l trong string Criteria, v ISBN thuc loi text, ch khng phi l mt con s, nn ta
phi kp n gia hai du ngoc n.
23.6. Bookmark
23.7. LastModified
224
Lp trnh trc quan
225
Lp trnh trc quan
Visual Basic 6 cho ta s la chn v k thut khi lp trnh vi database, hoc l dng DAO
nh trong hai bi trc, hoc l dng ADO (ActiveX Data Objects).
S khc bit chnh gia ADO v DAO l ADO cho php ta lm vic vi mi loi ngun d
kin (data sources), khng nht thit phi l Access database hay ODBC. Ngun d kin c
th l danh sch cc a ch Email, hay mt file text string, trong mi dng l mt bn ghi
gm nhng fields ngn cch bi cc du phy (comma separated values).
Bnh thng, khi ta mi khi ng mt project VB6 mi, Control Data ADO khng c sn
trong IDE. Mun c n, chng ta hy dng Menu Command Project | Components..., ri
chn Microsoft ADO Data Control 6.0 (OLEDB) t giao din Components nh di y:
226
Lp trnh trc quan
DoubleClick ln Icon ca Control Data ADO trong Toolbox. Mt Control Data ADO tn
Adodc1 s hin ra trn Form. Mun cho n nm bn di Form, ging nh mt StatusBar, hy
set property Align ca n trong Properties Window thnh 2 - vbAlignBottom.
Trong giao thoi Data Link Properties, Tab Provider, chn Microsoft Jet 3.51 OLE DB
Provider, ri click nt Next >> hay Tab Connection.
227
Lp trnh trc quan
228
Lp trnh trc quan
- Static Cursor: Static Cursor cho chng ta mt static copy (bn sao cng ngc) ca cc
records. Trong lc chng ta dng Static Cursor, nu c ai khc sa i hay thm, bt g vo
recordset chng ta s khng thy.
229
Lp trnh trc quan
thc hin Data Binding, chng ta hy chn textbox txtYearPublished (nm xut bn),
ri set property Datasource ca n trong Properties Window thnh Adodc1. Khi click ln
property DataField ca txtYearPublished v m ComboBox ra chng ta s thy lit k tn
cc Fields trong table Titles. l v Adodc1 c coi nh trung gian ly table Titles t
database. y ta s chn ct Year Published.
230
Lp trnh trc quan
gip lp trnh vin thit k cc data forms nhanh hn, VB6 cho ta Data Form Wizard
generate (pht sinh) ra mt form c h tr Edit, Add v Delete records.
Mun dng Data Form Wizard, trc ht ta phi thm n vo mi trng pht trin (IDE)
ca VB6. Chng ta hy dng IDE Menu Command Add-Ins | Add-In Manager.... Chn VB6
Data Form Wizard trong giao thoi, ri click Checkbox Loaded/Unloaded ch Loaded
hin bn phi dng "VB6 Data Form Wizard" nh trong hnh di y:
231
Lp trnh trc quan
Nu chng ta mun mi ln khi ng VB6 IDE l c sn Data Form Wizard trong menu
Add-Ins th ngoi option Loaded, chng ta click thm check box Load on Startup.
Khi trang Data Form Wizard - Introduction hin ra, click Next
232
Lp trnh trc quan
Trong trang Database, click Browse chn mt MS Access database file. y ta chn
file BIBLIO.MDB t chnh folder ca chng trnh ny. on click Next.
233
Lp trnh trc quan
Trong trang Form, ta chn Single Record cho Form Layout v Class cho Binding Type.
on click Next. Nu ta chn ADO Data Control th kt qu s ging ging nh khi ta dng
Control Data DAO nh trong mt bi trc.
Trong trang bn ghi Source ta chn table Titles. Listbox ca Available Fields s hin th
cc trng ca table Titles. Sau khi chn mt field bng cch click ln tn field y trong
Listbox, nu chng ta click hnh tam gic ch qua phi th tn field y s c di qua nm
di cng trong Listbox Selected Fields bn phi.
Nu chng ta click hnh hai tam gic ch qua bn phi th tt c mi fields cn li bn tri s
c di qua bn phi. Chng ta cng c th sp t v tr ca cc selected fields bng cch
click ln tn field y ri click hnh mi tn ch ln hay xung di chuyn field y ln hay
xung trong danh sch cc fields.
234
Lp trnh trc quan
Khi Data Form Wizard chm dt, n s generate form frmADODataForm. Chng ta hy
remove Form1 v dng Menu Command Project | ADODataControl Properties... i
235
Lp trnh trc quan
Chng ta hy quan st ci Form v phn code c Data Form Wizard generated. Trong
frmADODataForm, cc textboxes lm thnh mt array tn txtFields. Mi textbox u c
property DataField nh sn tn field ca table Titles. V d nh txtFields(2) c DataField l
ISBN. Form chnh khng dng Control Data ADO nhng dng mt Object ca class clsTitles.
236
Lp trnh trc quan
Trong Sub Form_Load, ta c th dng For Each i qua ht cc textboxes trong array
txtFields. V property Datasource ca textbox l mt Object nn ta dng keyword Set point
n n Object PrimaryCLS. ng thi ta cng phi ch nh tn ca DataMember ca mi
textbox l Primary:
Private Sub Form_Load()
' Instantiate an Object of class clsTitles
Set PrimaryCLS = New clsTitles
Dim oText As TextBox
' Iterate through each textbox in the array txtFields
'Bind the text boxes to the data source, i.e. PrimaryCLS
For Each oText In Me.txtFields
oText.DataMember = "Primary"
' Use Set because property Datasource is an Object
Set oText.DataSource = PrimaryCLS
Next
End Sub
Khi s di chuyn t bn ghi ny n bn ghi khc chm dt, chnh Recordset c raise
Event MoveComplete. Event y c handled (gii quyt) trong class clsTitles bng cch li
raise Event MoveComplete n c handled trong Form.
Dim WithEvents adoPrimaryRS As Recordset
Private Sub adoPrimaryRS_MoveComplete(ByVal adReason As
ADODB.EventReasonEnum, _
ByVal pError As ADODB.Error, adStatus As
ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
' Raise event to be handled by main form
RaiseEvent MoveComplete
End Sub
Mun handle Event trong clsTitles ta phi declare recordset adoPrimaryRS vi WithEvents:
237
Lp trnh trc quan
Khi ngi s dng clicks Refresh, cc textboxes s c hin th li vi chi tit mi nht
ca bn ghi t trong recordset, nh khi c ai khc sa i bn ghi. Method Requery ca
clsTitles li gi method Requery ca Recordset nh sau:
Private Sub cmdRefresh_Click()
'This is only needed for multi user applications
On Error GoTo RefreshErr
' fetch the latest copy of Recordset
PrimaryCLS.Requery
Exit Sub
RefreshErr:
MsgBox Err.Description
End Sub
238
Lp trnh trc quan
MC LC
BI 1. M U ........................................................................................................1
BI 2. ACCESS ........................................................................................................3
2.1. Gii thiu ...........................................................................................................3
2.2. Khi ng ACCESS..........................................................................................3
2.3. Khi nim v c s d liu trong Access ........................................................4
2.4. Cc php ton....................................................................................................5
2.4.1 Cc php ton Logic ...............................................................................5
2.4.2 Cc php ton s hc ..............................................................................5
2.4.3 Cc php ton so snh : >, >=, <, <=, = v <> .......................................6
2.4.4 Du ro :..................................................................................................6
BI 3. LM VIC VI C S D LIU..................................................................7
3.1. TO C S D LIU.....................................................................................7
3.1.1 To c s d liu bng WIZARD...........................................................7
3.1.2 To c s d liu trng ...........................................................................8
3.2. Hiu chnh c s d liu ...................................................................................9
BI 4. LM VIC VI TABLE ...............................................................................11
4.1. To cu trc ca Table...................................................................................11
4.1.1 To Table bng Wizard.........................................................................11
4.1.2 To Table bng DATASHEET VIEW..................................................11
4.1.3 To Table bng DESIGN VIEW .........................................................13
4.2. Nhp s liu vo Table....................................................................................14
4.3. Hiu chnh Table.............................................................................................15
4.3.1 Thay i cu trc bn ghi......................................................................15
4.3.2 Thay i ni dung bn ghi ....................................................................15
4.3.3 Thay i cch trnh by.........................................................................16
4.4. Khai thc s liu trn Table...........................................................................16
4.4.1 Tm v thay th .....................................................................................16
4.4.2 Thay i v tr trng ............................................................................16
4.4.3 Sp xp ..................................................................................................16
4.4.4 Lc bn ghi............................................................................................17
BI 5. LM VIC VI QUERY...............................................................................22
5.1. Khi nim.........................................................................................................22
5.2. Cch to QUERY............................................................................................23
5.2.1 Select Query.........................................................................................24
5.2.2 Cross Tab Query .................................................................................26
5.3. Hiu chnh QUERY .......................................................................................28
5.4. Thc hin QUERY..........................................................................................28
BI THC HNH ...................................................................................................29
BI 6. LM VIC VI REPORT ............................................................................34
6.1. Khi nim.........................................................................................................34
6.2. Cch to Report ..............................................................................................34
6.3. Hiu chnh Report...........................................................................................39
239
Lp trnh trc quan
240
Lp trnh trc quan
241
Lp trnh trc quan
242
Lp trnh trc quan
243
Lp trnh trc quan
244