Professional Documents
Culture Documents
Giao Trinh Visual Basic 6.0 - FPT PDF
Giao Trinh Visual Basic 6.0 - FPT PDF
1 Mc lc
1 Mc lc ...............................................................................................................................1
2 Lm quen vi visual basic 6.0 ............................................................................................9
2.1 Xy dng ng dng ban u ............................................................................... 9
2.1.1 Vit ng dng ban u....................................................................................9
2.1.2 Xy dng tnh nng Calendar .........................................................................9
2.1.3 Thm tnh nng Clock...................................................................................11
2.2 Cc tnh nng mi trong Visual basic 6.0 ........................................................ 11
2.2.1 Khi qut vn tt v Visual basic 6.0............................................................11
2.2.2 Khai thc th mnh ca cc iu khin m rng ..........................................12
2.3 Lm vic vi mi trng lp trnh trong Visual basic ...................................... 12
2.3.1 Tm hiu cc phn ca IDE...........................................................................12
2.3.2 Thm v xo cc thanh cng c trong IDE ca Visual basic........................13
2.3.3 Thm cc iu khin vo hp cng c..........................................................14
2.3.4 nh hng thng qua ca s form v code .................................................14
2.3.5 Qun l ng dng vi project explorer.........................................................14
2.3.6 Ca s properties ..........................................................................................14
2.3.7 Hin th IDE..................................................................................................14
2.3.8 Tr gip.........................................................................................................15
3.2.6 M n c sn ............................................................................................26
3.2.7 Thm xo v lu tp tin trong n .............................................................27
3.2.8 Thm iu khin vo n ...........................................................................29
3.2.9 To tp tin EXE ............................................................................................30
3.2.10 Sa i thuc tnh n.............................................................................31
3.3 Lm vic vi nhiu n .................................................................................. 32
3.3.1 S dng Project Group..................................................................................32
3.3.2 Thm n vo nhm n .........................................................................32
3.3.3 Xo n trong nhm n .........................................................................33
7 X l tp tin ......................................................................................................................72
7.1 M hnh FSO(File System Object model)......................................................... 72
7.2 X l cc tp tin vi cc dng lnh v hm I/O c in ................................... 72
7.2.1 Cc kiu truy cp tp tin ...............................................................................72
7.3 Cc iu khin trn h thng tp tin.................................................................. 75
7.3.1 Hp danh sch a......................................................................................75
15.5.2 Dng Microsotf Query xy dng chui SQL trong trnh thit k
UserConnection.....................................................................................................209
15.6 S dng d liu vi i tng rdorerultset................................................... 210
15.7 Thi hnh truy vn vi i tng rdoQuery................................................... 210
16 Truy cp c s d liu vi lp........................................................................................212
16.1 Lm vic vi lp v i tng...................................................................... 213
16.1.1 To cy phn nhnh lp vi tin ch xy dng lp..................................213
16.1.2 S dng biu mu nh lp .......................................................................217
16.2 To Intance bi cho biu mu....................................................................... 219
16.2.1 S dng lp v i tng trong truy cp c s d liu ...........................219
16.3 To cc lp cn s dng d liu ................................................................... 222
16.3.1 To lp xut d liu .................................................................................224
16.3.2 Trin khai lp thnh Active Server..........................................................225
16.4 Tng kt ........................................................................................................ 230
17 Truy cp d liu t xa ....................................................................................................231
17.1 Client / Server v cc thnh phn ................................................................. 231
17.1.1 Cu trc Cilent/Server Three- Tier ..........................................................231
17.2 252
18 i tng d liu ActiveX..............................................................................................253
18.1 Xy dng ng dng Visual basic vi ADO .................................................. 253
18.1.1 Tm hiu cu trc OLE DB / ADO ..........................................................253
18.1.2 Ci t v thit lp tham chiu n ADO trong ng dng Visual basic ..254
18.1.3 S dng ADO vi cc th vin i tng truy cp d liu khc.............255
18.1.4 Dng i tng connection ca ADO kt ni vi ngun d liu .......255
18.1.5 Lm vic vi con tr ................................................................................256
18.1.6 Kho bn ghi trong ADO.........................................................................258
18.1.7 S dng i tng Recordset ca ADO thao tc vi d liu..............258
18.1.8 To Recordset ngt kt ni ......................................................................259
18.2 S dng dch v d liu t xa ca ADO....................................................... 260
ActivateX l g?
ActivateX l sn phm ca Microsoft cho php ta to nhng chng trnh nh, gi
l cc thnh phn(componet) v cc iu khin (control) c th thm vo cc
chng trnh ln. c th l cc chng trnh c lp (Standalone program) hay cc
chng trnh chy trn Internet. Ta c th dng Visual basic t to cc iu khin
ActivateX. Phn ny s c trnh by trong mt ring.
n y iu khin lch c np vo thanh cng c. Tn chnh thc ca n l
iu khin ActivateX MonthView.
K tip ta a iu khin vo biu mu.
Thm iu khin MonthView vo biu mu
Chn biu tng iu khin MonthView t hp cng c
Nhn p chut ln biu tng iu khin a n vo biu mu.
Bn va to xong chng trnh nhn F5 chy.
Cc biu mu (Form) - khi xy dng cc chng trnh Visual basic - xut hin
trong ca s form. Hp cng c thm cc iu khin vo cc biu mu ca n.
Project explorer hin th cc n m bn ang lm cng nh cc thnh phn ca cc
n. Bn duyt v ci t cc thuc tnh ca iu khin, biu mu v module trong
ca s property. Cui cng, bn b tr v xem xt mt hoc nhiu biu mu trn mn
hnh thng qua ca s form layout.
2.3.6 Ca s properties
Mi thuc tnh c mt hoc nhiu gi tr. Ca s properties gip bn xem sa i
v iu khin cc thuc tnh ca cc iu khin ActivateX trong chng trnh.
2.3.8 Tr gip
Khng nhng lm ch ngn ng lp trnh Visual basic, bn cng cn phi s dng
thun thc mi trng Visual basic cng nh hiu cc thng ip m Visual basic gi
ra. Microsoft cung cp mt trong nhng h thng tr gip tt nht cho cc cng c
pht trin ng dng.
Tr gip nhy vi ng cnh
Ti mt v tr bt k trong Visual basic, bn nhn phm F1, nt tr gip. N s
kch hot h thng tr gip ca Visual basic, ni c th gii thch hoc a ra nhng
li khuyn, cng nh cc on chng trnh mu.
Visual basic c h thng tr gip l h thng th vin MSDN c s dng rng
ri cho cc cng c pht trin ca Microsoft cung cp truy cp n s tay hng
dn s dng sn phm trc tuyn.
3.1.1 i tng
Trong VB, i tng l nhng thnh phn to nn giao din gia ngi s dng
cho ng dng. Cc iu khin l nhng i tng. Nhng ni cha (container) nh
biu mu(form), khung(frame), gay hp nh (picture box) cng l mt i tng.
VB 6 h tr mt cch lp trnh tng i mi, lp trnh hng i tng (Object
Oriented Programming).
Trong lp trnh c in, ta c kiu lp trnh theo cu trc. Nu nh ng dng c
thit k gii quyt mt vn ln, th lp trnh vin c th chia thnh nhiu vn
nh v vit cc on chng trnh nh gii quyt ring tng ci.
Vi lp trnh hng i tng, lp trnh vin s chia nh vn cn gii
quytthnh cc i tng. Tng i tng s c i sng ring ca n. N c cc c
im m ta gi l thucc tnh v nhng chc nng ring bit m ta gi l phng thc.
lp trnh vin cn a ra cc thuc tnh v phng thc m cc i tng cn th
hin.
3.1.4 S kin
Nu nh thuc tnh m t i tng, phng thc ch ra cch thc i tng hnh
ng th s kin l nhng phn ng ca i tng.
Tng t thuc tnh v phng thc, mi iu khin c nhng b s kin rt
thng dng vi hu ht cc iu khin. Cc s kin ny xy ra thng l kt qu ca
mt hnh ng no , nh l di chuyn chut, nhn nt bn phm, hic g vo hp
vn bn. kiu s kin ny c gi l s kin khi to bi ngi s dng, v ta s
phi lp trnh cho chng.
cc s kin thng dng
S kin Xy ra khi
Change Ngi s dng sa i chui k t trong hp kt hp hoc hp vn
bn
Click Ngi s dng dng chut click ln i tng
Dblclick Ngi s dng dng chut click p ln i tng
DragDrop Ngi s dng ko r mt i tng sang ni khc
DragOver Ngi s dng ko r mt i tng ngang qua mt iu khin khc
GotFocus a mt i tng vo tm ngm ca ngi s dng
KeyDown Ngi s dng nhn mt nt trn bn phm trong khi mt i tng
ang trong tm ngm
KeyPress Ngi s dng nhn v th mt nt trn bn phm trong khi mt i
tng ang trong tm ngm
KeyUp Ngi s dng th mt nt trn bn phm trong khi mt i tng
ang trong tm ngm
LostFocus a mt i tng ra khi tm ngm
MouseDown Ngi s dng nhn mt nt chut bt k trong khi con tr chut
ang nm trn mt i tng
MouseMove Ngi s dng di chuyn con tr chut ngang qua mt i tng
MouseUp Ngi s dng th nt chut trong khi con tr chut ang nm trn
mt i tng
3.1.6 Ca s Properties
ca s ny cho php lp trnh vin xem xt v sa i cc thuc tnh ca biu mu
v cc iu khin trong lc thit k
Phn trn ca s l cc danh sch i tng, i tng c chn trong danh sch
ny c cc thuc tnh ca n hin th trong phn bn di ca ca s.
3.1.7.1 To GUI
1. t menu File, chn New Project m hp thoi n. Chn kiu
standard EXE
2. vo ca s Properties, sa tn biu mu thnh frmMove
3. thm 4 nt lnh vo 4 gc biu mu. ta s xa li v tr chnh xc
hin cho ng bng chng trnh
4. nhn p chut ln bi mu to th tc Form_Load()
5. i thuc tnh BorderStyle ca biu mu thnh 1- Fixed Single
cm biu mu co gin khi chng trnh thi hnh. sau i cc
thuc tnh Alignment ca nhn thnh 2- Center v BorderStyle ca
nhn thnh 1- Fixed Single
6. Lu biu mu vi tn l frmmove v lu n vi tn l Movelt.vbp
lblNotify.Width = 3000
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
End Sub
3.2 Lm vic vi mt n
3.2.1 nh ngha
Mt n gm c :
a. 1 tp tin n (.vbp) theo di ton b cc thnh phn
b. 1 tp tin cho biu mu (.frm)
c. 1 tp tin nh phn (.frx) cho tng biu mu. Ngi s dng khng c sa
i. Cc tp tin ny c pht sinh t ng cho mi tp tin .frm bt k v
dng cha cc thuc tnh nh phn nh Picture hay Icon.
d. 1 tp tin cho tng module lp (.cls)- tu chn
e. 1 tp tin cho tng module chun (.bas)- tu chn
f. 1 hoc nhiu tp tin cha cc iu khin Activex (.ocx)- tu chn
g. 1 tp tin ti nguyn (.res)- tu chn
3.2.3 To n
mi ln khi ng Visual Basic, ta s thy hp thoi New Project. T y, ta c
th chn loi n m ta mun to v n Open.
Khi Visual Basic c sn, ta c th to n bng cch: t menu File chn New
Project. Hp thoi New Project xut hin, ta chn loi n cn thit v nhn OK.
3.2.5 Lu v t tn n
3.2.5.1 Lu n
Khi lu n tng tp tin trong n s c lu trc k tip l tp tin n.
Trong ln lu n u tin, Visual Basic ngh tn cho tng tp tin, thng n ly
tn biu mu v c phn m rrngt u thuc vo loi tp tin
1. t menu file chn Save Project
2. nu y l ln u lu n hoc ta va thm mt biu mu hoc
module, hp thoi save File as xut hin ln lt cho tng tp tin
3.2.5.2 i tn
Ta khng nht thit dng tn m Visual Basic ngh, m c th t tu . tuy
nhin nn dt tn sao cho gi nh
1. a vo mt tn v n nt save
2. Tp tin cui cng c lu l tp tin n Nu ta t tn cho n
thng qua hp thoi project properties, Visual Basic s t ng ngh
Project_Name.vbp. Lc ny, ta c th i li tn khc tu thch, v d
nh SaveTest.vbp
3.2.6 M n c sn
Ta c mt s n ang lm vic. Khi ng Visual Basic, chn menu File. Phn
di menu lit k danh sch cc n mi nht m ta lm vic, chn n cn m.
nu n khng xut hin trong danh sch, ta phi ch ra ng dn.
3.2.6.2 M n c sn
a. T menu File, chn Open Project.
b. trn trang Existing, chuyn n th mc cha n. nu n cn m l n
lu gn nht, chuyn sang trang Recent
c. chn tn tp tin n v nhn OK
- nu mun to mi, chn tab new. Visual Basic cung cp cc danh sch
c sn
- nu mun dng mt tp tin c sn, chn Tab Existing, chn tn tp tin,
nhn Open
cch 2:
- Nhn nt chut trong ca s Project Explorer
- Trong menu ng cnh chn Add
- xut hin hp thoi nh trn
3.2.7.2 Xo tp tin
a. Chn tp tin trong ca s Project Explorer
b. T menu Project chn Remove
c. Tham chiu tp tin b xo trong n (thc cht n vn c lu trn a)
Khi mt tp tin trong n b xo Visual Basic s cp nht nhng thay i ny
trong tp tin.vbp khi ta lu n. Do nu ta xo tp tin bn ngoi Visual
Basic, tp tin n s khng c cp nht. khi ta m li n Visual Basic s
bo li l thiu tp tin
3.2.7.3 Lu tp tin
a. Chn tp tin trong ca s Project Explorer
b. t menu chn Save
4 Lm vic vi cc iu khin
4.1.1.1 Hp cng c
t mt hp vn bn hay nt lch vo biu mu, n gin l tr v nhn chut. Tt
c cc iu khin ni ti cha trong hp cng c (toolbox) thng hin
th bn tri mn hnh.
Mun hin th hp cng c, t menu View, chn Toolbox hoc l
nhn chut trn biu tng (icon). Khi hp cng c hin th, ta c th dch
chuyn hp cng c xung quanh mn hnh bng cch nhn thanh tiu
ca n(title bar) ri gi chut v ko ti ni ta mun v th ra
Mun ng hp cng c, nhn chut ln nt ng(nm trn gc phi
ca thanh tiu ).
Ngoi hp cng c, ta cng cn xem mt s ca s tng t phc v cho
vic thit k ng dng nh G ri chng trnh(Debug), vit chong trnh
(Edit), thit k biu mu(Form Editor). hin th cc ca s ny, nhn
nt phi chut trn thanh cng c(tool bar), ta s thy mt menu theo ng
cnh(context sensitive menu), chn trong menu ca s m ta mun xem.
Cc ca s ny c th hin th theo hai cch: tri ni v c nh. Hai cch
ny c th chuyn i qua li bng ch nhn p chut trn thanh tiu
ca ca s .
Chn iu khin, sau , t menu Format, chn Lock Controls hoc l nhn chut
vo biu tng vo biu tng kho trn Form Editor.
Khi , ta khng th dng chut iu chnh kch c iu khin. Tuy vy, ta
vn c th dng t hp phm.
4.2 Cc iu khin ni ti
Cc iu khin ni ti gm c:
iu khin M t
Label Hin th chui k t khng i trn biu mu
Frame Cho php ngi s dng chn hoc khng chn mt kh nng
no .
CheckBox Cho php ngi s dng chn hoc khng chn mt kh nng
no
ComboBox Cho php ngi s dng chn t danh sch cc chn la hay
nhp liu mi
HscrollBar Cho php ngi dng s dng cun ngang qua mt iu khin
cha d liu khc
Timer Cho php chng trnh t ng thi hnh mt cng vic no
vo mt thi im, khng cn tng tc ca ngi s dng.
DirListBox Cho php ngi s dng chn mt th mc
Shape Hin th mt dng hnh hc trn biu mu
Image Hin th hnh nh ho trn biu mu nhng khng th lm
ni cha
OLE Container Cho php thm chc nng lp trnh ca mt iu khin vo ng
dng
PictureBox Hin th hnh anh trn biu mu v c th dng lm ni cha.
TextBox Dng trnh by vn bn, nhng cng cng cho php ngi s
dng sa i hay thm mi vn bn
CommandButton Cho php ngi s dng thc hin mt hnh ng
OptionButton Cho php ngi s dng chn la t mt nhm c hai hay
nhiu kh nng tr ln.
ListBox Cho php ngi s dng chn t danh sch cc phn t
VscrollBar Cho php ngi s dng cun dc qua mt iu khin cha d
liu khc
DriveListBox Cho php ngi s dng chn a
FileListBox Cho php ngi s dng chn mt tp tin
Line Hin th mt on thng trn biu mu
Data Cho php lp trnh kt ni d liu
4.2.1 Nt lnh
a. Phng thc: Click
b. S kin: MouseDown, KeyDown
c. Thuc tnh: Height,Font,BackColor,Caption, ShortcutKey
t tn( thuc tnh Name) cho nt lch thng bt u bng cmd. V d nh
cmdQuit, tng t vi hp vn bn l txt, vi biu mu l frm, vi nt tu chn
4.2.2 Hp vn bn
L mt iu khin rt thng dng dng nhn d liu t ngi s dng cng
nh hin th d liu trn mn hnh. Visual basic v Windows t ng x l nhng
hot ng nh hin th k t khi Ngi s dng g vo, chn v xo k t, cun d
liu, nh du vn bn, ct dn,...
4.2.6 Checkbox:
4.2.9.1 Sp xp
VB mc nh cc phn t c sp xp theo th t m chng c nhp vo
danh sch.
Mun sp xp theo th t ABC ta i thuc tnh Sorted thnh TRUE, thuc tnh ny
ch c i trong khi thit k khng c i trong lc thi hnh.
4.3 Cc iu khin M i
iu khin ADO data
iu khin Coolbar
iu khin D ata grid
iu khin Datalist, DataCombo
iu khin DataRepeater
iu khin DataTimePicker
iu khin Flat Scollbar
iu khin Hierarchical FlexGrid
iu khin ImageComBo
iu khin Month View
5 Nhp mn lp trnh
Cc iu khin trn biu mu ch l mt phn nh ca qu trnh lp trnh pht
trin ng dng, nhm to ra giao din cho ng dng. Sau , bn cn vit chng
trnh ng dng hot ng. Do , chng ny s i su vo phn cng vic chnh
ca Visual Basic, vit chng trnh.
Visual Basic l ngn ng lp trnh da trn i tng. Nu bn l ngi mi hc,
chng ny s gii thiu cc khi thit k c bn xy dng chng trnh. Khi
hiu c cc khi nim c bn, bn c th to ra cc ng dng rt mnh bng Visual
Basic.
Menu control prefixes will be extended beyond the initial "mnu" label by adding an
additional prefix for each level of nesting, with the final menu caption at the end of
the name string. The following table lists some examples.
Constants
The constant names will be UPPER_CASE with underscores (_) between words. For
example:
Example Note
USER_LIST_MAX
NEW_LINE
Prefixes for ActiveX Data Objects (ADO)
Use the following prefixes to indicate ActiveX Data Objects.
Grouping Constants
Visual Basic generic constants will be grouped in a single module to separate them
from application-specific declarations.
& and + Operators
Always use the & operator when linking strings and the + operator when working
with numerical values. Using the + operator to concatenate may cause problems when
operating on two variants. For example:
vntVar1 = "10.01"
vntVar2 = 11
vntResult = vntVar1 + vntVar2 'vntResult = 21.01
vntResult = vntVar1 & vntVar2 'vntResult = 10.0111
Creating Strings for MsgBox, InputBox, and SQL Queries
When creating a long string, use the underscore line-continuation character to create
multiple lines of code so that you can read or debug the string easily. This technique
is particularly useful when displaying a message box (MsgBox) or input box
(InputBox) or when creating an SQL string. For example:
Sample:
Form controls appearance conventions
Control Property Value Note
Check box
Command button
Height 375 Points
Back color Button face VB Default
Form
Border style Fixed length
Back color Button face VB Default
Startup position CenterScreen
Label
Back color Button face VB Default
Vervical scroll bar
Width 260 Points
Horizontal scroll bar
Height 260 Points
Option button
Height 255 Points
Text box
Height 285 Points
All color Default
Formatted: Bullets and Numbering
Report body
(data)
Font name .VnArialNarrow
Font style Bold
Font size 9
Justify Depend on column data type
(Number: right, string: right,
date: center)
Row spacing 0
Total row
Font name .VnArialNarrow
Font style Bold
Font size 9
Justify Right
Position Under data block that
summarized
FPT Software Solution Trang:49/261
Gio trnh o to Visual Basic 6.0
Grouping line
Width 1 Point
Report boder
Width 1 Point
Boder column
title only
Page number
Font name .VnArial
Font size 9
Font style Normal
Position Right, bottom of page (Report
footer)
Style Page/Total page
Left sub title
Font name .VnArial
Font size 10
Font style Normal
Justify Margin left
Right sub title
Font name .VnArial
Font size 10
Font style Normal
Sample:
Column heading 2
Column heading 1 Column heading 3 Column heading 4
Report body 1 Report body 2 Report body 3 Report body 4
Report body 1 Report body 2 Report body 3 Report body 4
Total row 4
Report body 1 Report body 2 Report body 3 Report body 4
Report body 1 Report body 2 Report body 3 Report body 4
Total row 4
5.4.5 Hng
Dng cha nhng d liu tm thi nhng khng thay i trong sut thi gian
chng trnh hot ng. S dng hng s lm chng trnh sng sa v d c nh
nhng tn gi nh thay v cc con s. VB cung cp mt s hng nh ngha sn,
nhng ta c th t to hng.
Ta c th dng ca s Object Browser xem danh sch cc ng dng hng c sn
ca VB v VBA( Visual basic for Application). Cc ng dng khc cung cp nhng
th vin i tng, nh Microsoft Exel, Microsoft Project, hoc cc th vin ca iu
khin ActiveX cng c hng nh ngha sn.
Trong trng hp trng tn hng trong nhng th vin khc nhau, ta c th dung
cch ch r tham chiu hng:
[<Libname>][<tn m-un>]<tn hng>
Libname l tn lp, tn iu khin hoc tn th vin.
Tm hot ng
Hng cng c tm hot ng tng t bin:
Hng khai bo trong th tc ch hot ng trong th tc
Hng khai bo trong m-un ch hot ng trong m-un
Hng khai bo Public trong phn Declarations ca m-un chun c tm
hot ng trn ton ng dng.Khai bo Public khng th dng trong m-un
ca biu mu hoc m-un lp.
5.4.5.3 Kiu s
Integer, Long, Double v Currency. Kiu s tn t vng cha hn kiu Variant. Tt
c bin kiu s c th c gn cho nhau v cho bin Variant. VB lm trn thay v
cht b phn thp phn trc khi gn n cho s Integer.
Kiu Integer tn t vng nh hn cc kiu khc, n thng dng lm bin m trong
cc vng lp For....Next.
Kiu Single, Double, Currency dng cho cc s c phn thp phn. Currency h tr
n 4 ch s phn thp phn v 15 ch s cho phn nguyn, n cho cc tnh ton
tin t.
Cc gi tr du chm ng c th hin l :A*10B.V d:
1.2341E12=1.2341 *1012
3.402823E+38 cho s Single hoc 1.7976931486232D+308 cho s Double
Ta dng cc php cng (+), tr(-) nhn(*), chia(/ hoc\). Du / l s chia thp phn.
V d: 5/3 cho kt qu l 1.66666666667. Trong khi 5/3 cho kt qu l 1, phn thp
phn b cht b. Php tnh ny c bit nhanh khi s dng trong vng lp.
Variant cng thun tin khi ta khng bit trc kiu d liu
Private Sub cmdExplore_click()
Dim VarVariant As Variant
VarVariant = 12
Form1.Print VarType(VarVariant)
VarVariant = "Peter"
Form1.Print VarType(VarVariant)
VarVariant = True
Form1.Print VarType(VarVariant)
VarVariant = #1/1/2001#
Form1.Print VarType(VarVariant)
End Sub
Hm VarType kim tra kiu d liu
Gi tr VarType Gii thch
0 vbEmpty Khng cha g c
1 vbNull Khng c d liu hp l
Gi tr Empty
i khi ta cn kim tra mt gi tr c c gn cho bin hay cha. Bin Variant c gi
tr Empty trc khi n c gn gi tr. Gi tr Empty l mt gi tr c bit khng
phi zero, khng phi chui rng(), khng phi gi tr Null. Ta dng ham IsEmpty
kim tra gi tr Empty:
If IsEmpty(z) then z =0
Khi mt bin Variant cha gi tr Empty, ta c th dng n trong biu thc. N c th
c xem l 0 hoc chui rng tu theo biu thc.
Gi tr Empty bin mt khi c mt gi tr bt k c gn cho Variant. Mun tr v
gi tr Empty, ta gn t kho Empty cho Variant.
Gi tr Null
Bin Variant cha gi tr Null dng trong nhng ng dng c s d liu th hin
khng c d liu hoc d liu khng xc nh.
Dng hm IsNull kim tra bin Variant c cha Null hay khng. Bin khng bao
gi mang gi tr Null nu ta khng gn trc tip cho n. V vy, khng cn phi dng
hm IsNull.
Nu gn Null cho mt bin khc kiu Variant, VB s bo li.
Gi tr Error
Trong mt bin Variant, Error l mt gi tr c bit th hin mt iu kin li va
xy ra trong th tc. Tuy nhin, khng nh cc li khc, cc x l li thng thng
ca ng dng khng xy ra. Do , ta c th x l da trn cc gi tr li. Gi tr Error
c sinh ra bng cch chuyn i gi tr li dng cho hm CVErr.
Cbyte Byte
Ccur Currency
CDate Date
CDbl Double
Cint Integer
CLng Long
CSng Single
Cstr String
Cvar Variant
CVErr Error
Next intX
Dim arrX(2) As Variant 'Declare a new two-member
arrX(1) = countersA()
arrX(2) = countersB()
MsgBox arrX(1)(2) ' display a member of each array
MsgBox arrX(2)(3)
End Sub
Mng nhiu chiu
Ta khai bo mt mng 2 chiu c 10 phn t
Static MatrixA(9, 9) As Double
Static MatrixA(1 To 10, 1 To 10) As Double
Dim MultiD(3, 1 To 10, 1 To 15)
Khai bo ny to ra mt mng 3 chiu c kch c 41015, l s phn t ca ma
trn,600
Nn thn trng trong khi s dung cc mng nhiu chiu, nht l cc mng cc Variant
v n ln hn cc kiu d liu khc.
Tuy nhin ch c bin trn ca chiu cui cng trong mng c thay i khi ta dng
Preserve. Nu thay i chiu khc, hoc bin di ca chiu cui cng VB s bo li.
5.5 Hm v th tc
- Chia nh chng trnh thnh nhiu phn logic, gip g ri d dng.
- Th tc c th c s dng li trong mt ng dng khc.
Cc loi th tc
a. Th tc khng tr v gi tr
[Private | Public | Static] Sub <Tn th tc> (Tham s)
Cc dng lnh
End sub
b. Hm lun tr v gi tr:
[Private | Public | Static] Function <Tn hm> (Tham s) [As <Kiu d liu>]
Cc dng lnh
End Function
Trong trng hp khng khai bo As <type>, mc nh, VB hiu l kiu variant
c. Th tc thuc tnh
C th tr v v gn gi tr, hay t tham chiu n i tng.
Xem th tc trong modul hin hnh
Trong ca s code, chn Genaral trong hp Object, v chn tn th tc trong hp
Procedure.
xem th tc x l s kin chn tn i tng t hp Object trong ca s code,
sau chn tn s kin trong hp procedure
Thot khi th tc / hm
Exit sub dng thot khi th tc, Exit Function dng thot khi hm.
FPT Software Solution Trang:60/261
Gio trnh o to Visual Basic 6.0
5.6.2 Cu trc lp
5.6.2.1 Do..loop
Thi hnh mt khi lnh vi s ln lp khng nh trc, tng , mt biu thc
iu kin dng so snh quyt nh vng lp c tip tc hay khng. iu kin phi
quy v False hoc True.
Kiu 1:
Do While <iu kin>
<khi lnh>
Loop
Kiu 2:Vng lp lun c t nht mt ln thi hnh khi lnh
Do
<Khi lnh>
Loop While <iu kin>
Kiu 3: Lp trong khi iu kin l False
Do until <iu kin>
<khi lnh>
Loop
Kiu 4: Lp trong khi iu kin l False v c t nht mt ln thi hnh khi lnh
Do
<khi lnh>
Loop Until
5.6.2.2 For...Next
Bit trc s ln lp. Ta dng bin m tng dn hoc gim dn trong vng lp.
For <bin m> = <im u> To <im cui> [Step <bc nhy>]
<Khi lnh>
Next [<Bin m>]
Bin m, im u, im cui v bc nhy l nhng gi tr s.
Bc nhy c th l m hoc dng. Nu bc nhy l dng, im u phi nh
hn hoc bng im cui, nu bc nhy l m th ngc li.
5.7.2 G ri
C th tm dng chng trnh bng cch chn Break t menu Run hoc nhn trn
thanh cng c, hoc nhn trn t hp phm Ctrl-Break. Ta cng c th t dng
lnh Stop trong chng trnh nhng s c cch khc tt hn.
Ca s Immediate
5.8 By li
5.8.2 Kt thc by li
6.1 Menu
C 2 loi menu:
- Menu th xung(Drop-down menu): l dng menu thng dng nht.
- Menu bt ra (Popup menu): Thng hin th khi ta nhn nt phi chut
Menu cng l mt loi iu khin, nhng windows s kim sot vic v menu.
Lp trnh vin ch qun l phn x l cc s kin m thi.
Tch nhm menu: Nu menu c kh nhiu mc, tt nht ta nn chia chng thnh
nhiu nhm nh.
6.1.2.2 Menu ng
Mng iu khin
L mt mng vi cc phn t l nhng iu khin. Ln u bn gp mng iu
khin l khi bn copy iu khin trn biu mu. Visual basic s hi:
Nu ta dn mt iu khin trng tn vi mt iu khin khc, lable1 chng hn,
c sn, Visual basic cho rng ta mun to mng iu khin. Nu nhn Yes, VB s t
tn cho mng lable1, v thuc tnh index ln lt l 0 v 1. Nu thm mt iu khin
na, Visual basic t ng tng index. N khng nhc li v ta c mng iu khin.
Mc d trng tn nhng ta c th xc nh cc phn t mt cch d dng nh thuc
tnh index m Visual basic to cho n.
6.2 Hp thoi
Hp thoi( dialog) l mt trong nhng cch thc windows giao tip vi ngi
s dng, c 4 kiu hp thoi:
- Thng ip
- Hp nhp
- Cc hp thoi thng dng
- Hp thoi hiu chnh.
Hng s Th hin
vbOKOnly OK
vbOKCancel OK, Cancel
vbAbortRetryIgnore Abort, Retry, Ignore
vbYesNoCancel Yes, No, Cancel
vbYesNo Yes, No
vbRetryCancel Retry, Cancel
7 X l tp tin
Print # X
Put X X
Type.. End type X
Write # X
intNumber = 23456
Write #Filenum, strString, intNumber
on code ny ghi mt chui v mt s vo mt tp tin c ch ra bi FileNum.
7.3.2.1 Xc nh tng th mc
Mi th mc trong hp c mt s hiu km theo. Kh nng ny khng c h
tr trong hp thoi thng dng. Th mc ch ra bi thuc tnh Path (Dir1.Path) lun
c listIndex l -1. Th mc ngay st bn trn n c listIndex l -2, k tip l -3....n
gc. Th mc con u tin ca Dir1.Path c listIndex l 0. Nu c nhiu th mc con
mc ny th k tip n c ListIndex l 1, tip theo l 2...
7.3.2.4 Tm v tr tng i ca th mc
Thuc tnh ListCount tr v s th mc bn di th mc hin hnh, khng phi
tng s thnh phn trong hp danh sch th mc.
Lin kt tnh
Cung cp mt kt nI nn vng gia chng trnh v module vit sn ngay lc
thit k; tng t ta to module trong Visual Basic v gI th tc trong , ch khc l
lin kt tnh th cha bn ngoi Visual Basic. Tuy nhin, s dng lin kt tnh, ta
c n copy phn chng trnh vit sn ca th vin vo tp tin chng trnh khi bin
dch. T tr i, chng tr thnh mt phn ca chng trnh v b kho cht vI
chng trnh.
Lin kt ng
L giI php linh hot hn lin kt tnh. Tp tin th vin bn ngoi khng b rng
buc vI bn ngoi. N cha mt ni sao cho tp tin EXE c th tm ra v gI
thng ip cho n. Khi thi hnh, cc thng ip ny l nhng cuc gI n cc
hm/th tc, yu cu phn chng trnh no ca DLL c thi hnh.
Th mnh ca DLL
Nht qun : NgI s dng a chung Windows v n khng t th nhiu c
mt giao din ngI s dng ph bin cho mI ng dng. V d cc hp thoI
thng dng, cc menu, thanh cng c ca Office97 Ngha l c nhng on
chng trnh chung to ra chng.
D bo tr : Nhng thay I hoc b sung nu c s th hin trn mI ng
dng.
Tp tin EXE nh hn : Do mt phn cng vic cha ni khc, v khng
gn kt cng nhc nh lin kt tnh, kch c tp tin EXE c gim nh. Ch
c iu l DLL cn cha nhiu phn khc, khng ch l nhng g chng trnh
ca ta cn.
Cu trc Windows
DLL l nn tng ca thit k Windows. Windows thc cht l tp hp cc DLL
cc ng dng khc nhau c th dng chung. Bn trong cc DLL ny l hng trm
hm/th tc. Ta gI chng l Windows API.
Ngoi ra, chng trnh ny cn cho php copy nI dung API n clipboard dn
vo chng trnh.
a. KERNEL32:
L DLL chnh, m nhim qun l b nh, thc hin chc nng a nhim v
nhng hm nh hng trc tip n hot ng ca Windows.
b. USER32:
Th vin qun l Windows. Th vin ny cha cc hm x l menu, nh gi,
truyn tin, tp tin v nhiu phn khng c hin th khc ca Windows.
c. GDI32:
Giao din thit b ho (Graphics Device Interface). Th vin ny cung cp
cc hm v trn mn hnh, cng nh kim tra phn biu mu no cn v li.
d. WINNM:
Cung cp cc hm multimedia x l m thanh, nhc, video thI gian thc,
ly mu, v.v N l DLL 32 bit. (Th vin 16 bit tn l MMSYSTEM)
8.3.3 Gi API
Gi API khng khc g vi gi hm/ th tc trong module ca n. V d ta c
th tc:
Public sub FindText(obiDataControl as Control, _
SFilename as String)
Code to implement function here
End sub
gI th tc ta dng :
FindText datTitles, Titles
Ch c iu API l mt th tc khng ch nm ngoi module m cn nm
ngoi Visual Basic.
1. To n chun mI
2. V iu khin nh gi (timer) trn biu mu v nh thuc tnh
Interval l 10. N s gy ra mt s kin timer mI 10 mi-li-giy.
3. Nhn p ln ca s ny m Ca s Code
Private Sub Timer1_Timer()
Dim nReturnValue As Integer
nReturnValue = Flash(Form1.hWnd, True)
End Sub
5. Thi hnh chng trnh. Khi biu mu xut hin, tiu ca n nhp
nhy.
Mc d ta thy chng trnh ny rt n gin, nhng nu vit bng cc hm
Visual Basic thng thng, n rt phc tp v tn rt nhiu chng trnh.
y tham s c truyn l :
(ByVal hWnd As Long, ByVal bInvert As Long) As Long
8.3.3.2 Handle
Ly biu mu lm v d. Windows dng mt cu trc lu gi thng tin ca
biu mu. Thng tin ny ng nht vi thng tin cha trong ca s Properties.
Windows cha cu trc ca tng ca s trong mt danh sch di gm cc cu trc d
liu lin quan n mi ca s ca mi chng trnh ang chy. xc nh cu trc
no thuc ca s no, n dng handle. N khng dng tn biu mu v tn cng l
mt thuc tnh ca biu mu. Handle chnh l s ID ca mt i tng trong
Windows.
Khi ta bt u dng API, nht l nhng API c x l vi biu mu, ta s thng
xuyn lm vic vi handle. Visual Basic cha handle nh mt thuc tnh ch c
c, c th dng lm tham s truyn cho nhng hm ca Windows khi cn.
Thuc tnh ny gi l hWnd (handle n mt ca s), ch c th truy cp lc thi
hnh. Mc d n khng mang ngha trong chng trnh, nhng n c th c c,
v truyn nh mt tham s n API. Cc API c lin quan hin th ca s s cn tham
s hWnd bit chnh xc ca s m n cn x l.
Mt cch khc truyn tham s l truyn tham chiu. tham s truyn l bin ch
khng phi l bn sao ca n. Do nu hm thay i tham s, cc thay i ny s
nh hng ln bin truyn vo. Nu khng ch r Byval, VB s t ng xem l
truyn tham chiu.
Nu l hm hoc th tc do ta vit, nu c sai st dothiu Byval, hu qu khng
nghim trng, Windows khng b treo.
Tuy nhin, vi cc DLL, tnh hnh nguy him hn nhiu. Nu ta qun Byval, VB
t ng truyn mt con tr n bin. N cho bit a ch ca bin trn vng nh. Sau
hm ny n a ch v ly gi tr v.
Nu mt hm ca DLL ch mt kt qu trong khong t 0 n 3, v ta truyn mt
bin tham chiu, gi tr thc s truyn vo c th l 1002342, l a ch vng nh ca
bin. Hm ny s x l s 1002342 thay v s thuc khong (0-3), kt qu l h thng
treo.
Khng h c thng bo li y; ta ch bit c API b li khi h thng ri lon
v treo cng. Mt trong nhng kinh nghim khi lm vic vi API l lu li. V chng
ta ang mo him ra ngoi vng an ton ca Visual Basic, khi b li, h thng treo v
ta mt ht d liu. Lun lun lu n trc khi chy on chng trnh goin API.
8.4.1 Lp multimedia
Lp ny cha mt b cc lnh multimedia thng dng. Khi mt i tng c
to t lp, n mang nhng chc nng tng t mt iu khin c th xem hay quy
nh thuc tnh, cc phng thc. N che i cc lnh gi API.
Phng thc M t
MmOpen M tp tin (video, m thanh, nhc, v.v...) chun b Play
MmClose ng tp tin ang m, ngn cm hot ng Play
MmPause Dng Play trn tp tin hin hnh
MmStop Dng hn Play
MmSeek Tm mt v tr trong tp tin
MmPlay Play tp tin ang m, pht ra m thanh trong loa
Thuc tnh M t
Filename Tn ca tp tin ang m
Length Chiu di ca tp tin ang m
Position V tr hin hnh trong tp tin ta c th kt hp vi thuc tnh
Length hin th trng thi Play
Satus Mt t cho bit trng thi tp tin (Play, dng tm, dng hn,
v.v... )
Wait Nu l True, chng trnh s ch n khi Play xong mi lm
tip. Nu l False, n thi hnh theo kiu a nhim
V d mu - S dng lp Multimedia
1) M tp tin TestMM.vbp
2) iu chnh kch c biu mu chnh v v mt nt lnh v mt iu khin hp
thoi thng dng:
Thi hnh chng trnh. Tm mt tp tin multimedia trn a cng (thng cha
trong th mc \Windows\Media) v play.
Lu rng play cc tp tin m thanh nh WAV v MID, ta cn c card m
thanh trn my.
Trong dng u ca s kin click, ta to mt i tng multimedia dn xut t lp
MMedia. y l bc chuyn t mt lp sang mt i tng.
<ResultCode> = mciSendString(<Command>, _
<ReturnString>, <ReturnLength>, <CallbackHadle>)
Play Peter
Pause Peter
Stop Peter
1. M n TestMM.vbp
2. Chng ta s thm mt s iu khin xem thuc tnh Status v Position
ca lp MMedia. Thm mt iu khin thanh din tin (ProgressBar),
mt nhn, mt iu khin nh gi (timer):
End Sub
5. Tr v biu mu, nhn p chut ln iu khin Timer1 m s kin
Timer.
Private Sub Timer1_Timer()
ProgressBar1.Value = Multimedia.Position
Label1 = "Status: " & Multimedia.Status
If ProgressBar1.Value = ProgressBar1.Max Then
Multimedia.mmClose
Timer1.Enabled = False
End If
End Sub
Khi ta mi nhn nt lnh, chng trnh thit lp cc khi to cho thuc tnh trc
khi chi tp tin:
If CommonDialog1.Filename <> "" Then
Multimedia.Wait = False
Multimedia.mmOpen CommonDialog1.Filename
ProgressBar1.Value = 0
ProgressBar1.Max = Multimedia.Length
Timer1.Enabled = True
Multimedia.mmPlay
End If
8.4.1.4.1 M tp tin
Trc ht, ta khai bo mt cp bin cc b gi gi tr tm thi.
Case "WAV"
sType = "Waveaudio"
Case "AVI"
sType = "AviVideo"
Case "MID"
sType = "Sequencer"
Case Else
Exit Sub
End Select
sAlias = Right$(sTheFile, 3) & Minute(Now)
If InStr(sTheFile, " ") Then
sTheFile = Chr(34) & sTheFile & Chr(34)
End if
nReturn =mciSendString("Open " & sTheFile _
& " ALIAS " & sAlias & " TYPE " & sType _
& " wait", "", 0, 0)
End Sub
ProgressBar1.Value = 0
ProgressBar1.Max = Multimedia.Length
Timer1.Enabled = True
Multimedia.mmPlay
End If
If bWait Then
nReturn = mciSendString("Play " & _
sAlias & " wait", "", 0, 0)
Else
nReturn = mciSendString("Play " & _
sAlias, "", 0, 0)
End If
End Sub
Ta cng c th cho php Whats This Help m khng dng nt Whats This bng cch
ch ra thuc tnh WhatsThisHelp ca biu mu l True v gi phng thc
WhatThisMode ca biu mu hay phng thc ShowWhatThis ca iu khin.
10.1.2 Modul Lp
Khun mu to i tng l modul lp. Sau ny, modul lp cn c dng to
iu khin ActiveX, mt k thut cao hn ca lp trnh hng i tng.
Trong bc lp trnh cn bn vi VB, ta dung modul cha cc hm hay th tc. Tu
theo tm hot ng ca hm / th tc ny, ta c th gi chng trc tip t modul.
Lu rng tham s tu chn phi l tham s cui cng trong danh sch c truyn.
V d, dng lnh sau y khng c chp nhn:
Public Sub MyRoutine (Optional sName As String, nAge As Integer)
Ta phi sa thnh:
Public Sub MyRoutine (nAge As Integer, Optional sName As String)
Thn trng:
Mc d tham s tu chn c tnh linh hot, gip ta gim s dng chng trnh, nhng
n cng cho ta nhng rc ri km theo.
Mt trong nhng l do chuyn t lp trnh theo cu trc sang lp tnh hng i
tng l lm cho chng tnh d c, d hiu, d xy dng v d bo tr. Tham s tu
chn lm gim tnh an ton v tng phc tp ca chng trnh khi ta cn g ri.
Tham s tu chn cung cp tnh nng ti s dng chng trnh, gip to ra cc i
tng hay thnh phn a mc ch nhng ta phi cn thn v t hi: thm vo th c
li ch g cho th tc ca ta, hay l chng trnh s tt hn nu ta khng dng n?
10.1.4 S kin ca lp
nh ngha s kin cho lp c trong VB5. N vn hu dng vi VB6. Chng hn ta
mun mi ln hp c v trn mn hnh, s kin Draw gy ra hot ng cp nht
trn mn hnh.
V d - nh ngha v kch hot s kin
1. nh ngha s kin Draw. Mt trong nhng thng tin cn cp nht l to
(x,y) ca hp. M ca s Code v thm dng lnh sau vo phn General
Declarations:
Public Event Draw(X As Integer, Y As Integer)
Tuy nhin, dng lnh ny cha th hin lc no th s kin c kch hot.
2. Ta mun s kin Draw c sinh ra mi khi hp c v trn biu mu. Tm
phng thc DrawBox v thm dng lnh in m vo cui ca phng thc ny:
Public Sub DrawBox(Canvas As Object, Optional lColor As Long)
If IsMissing(lColor) Then
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight),, B
Else
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight), lColor, B
End If
RaiseEvent Draw(mvarX, mvarY)
End Sub
3. Tm th tc x l s kin Click ca biu mu. Tm v xo dng lnh to i
tng A_Box v thm mt dng vo phn General Declarations:
Private WithEvents A_Box As clsBox
Private Sub Form_Click()
Dim nIndex As Integer
With A_Box
.Y = 0
.Width = 1000
.Height = 1000
For nIndex = 0 To 1000
.DrawBox Me, Me.BackColor
.X = nIndex
FPT Software Solution Trang:106/261
Gio trnh o to Visual Basic 6.0
.DrawBox Me
Next
End With
End Sub
4. Thm mt dng vo s kin Form_Load:
Private Sub Form_Load()
Set A_Box = New clsBox
End Sub
5. Chn A_Box t danh sch trong ca s Code. Chn s kin Draw t danh
sch cc s kin.
6. Trong s kin ny, ta dng lnh Print in ra to ca hp trong ca s g
ri (hay cn gi l ca s Immediate)
Private Sub A_Box_Draw(X As Integer, Y As Integer)
Debug.Print "The box just got drawn at " & X & ", " & Y
End Sub
7. Thi hnh chng trnh. Nhn chut trn biu mu, ta thy hp trt qua mn
hnh. ng thi trong ca s Immediate, ta thy cc dng vn bn hin th to
hin hnh ca hp.
y, ta dng phng thc RaiseEvent yu cu VB pht ra s kin Draw, v
truyn 2 gi tr ca 2 bin thuc tnh mvarX v mvarY cha to (x, y) ca hp cho
s kin Draw mi.
c th x l cc s kin ca mt i tng t to, ta cn khai bo i tng hi
khc mt cht. Trc ht, n phi c khai bo l Private trong biu mu (hoc
modul), thay v l Private trong mt th tc. Sau , ta phi dng t WithEvents thay
v Dim:
Private WithEvents A_Box As clsBox
T kha WithEvents bo cho VB bit ta ang khai bo mt i tng c s kin, v ta
d nh vit chng trnh x l nhng s kin ny.
Ch t kho New b loi b trong dng lnh WithEvents. Khi ta vit:
Dim A_Box As New clsBox
Ngha l khng ch thng bo cho VB rng ta sp s dng mt i tng da theo lp
clsBox, ta cn yu cu VB cp pht vng nh cho i tng v to n. Tuy nhin, do
hn ch ca VB, iu ny khng c thc hin vi t kho WithEvents. Thay vo
, ta phi to i tng ring, bng cch thm dng lnh vo s kin Form_Load.
Tm li, i vi s kin, ta cn nh:
o Khai bo s kin dng Public Event.
o Pht s kin dng RaiseEvent
o To i tng vi Dim WithEvents, khng dng New.
o To i tng nh sau:
Set <i tng> = New <lp>
o Vit chng trnh bt s kin tng t x l s kin ca iu khin.
10.1.5 Hu i tng
Sau khi s dng mt i tng v khng cn dng na, ta cn hu n i. iu ny c
bit quan trng khi ta s dng nhiu i tng trong ng dng. Nu khng hu i
tng, s hao ht vng nh s lm gim kh nng hot ng ca ng dng. Ta dng
dng lnh sau:
Set <i tng> = Nothing
Ni l tng hu mt i tng l trong s kin Unload ca biu mu.
FPT Software Solution Trang:107/261
Gio trnh o to Visual Basic 6.0
V d:
Private Sub Form_Unload (Cancel As Integer)
Set A_Box = Nothing
End Sub
With Command1(nIndex)
.Top = Command1(nIndex - 1).Top + Command1(nIndex - 1).Height
.Caption = nIndex
.Visible = True
End With
End If
Next
If sNextOperation = "UNLOAD" Then
sNextOperation = "LOAD"
Else
sNextOperation = "UNLOAD"
End If
End Sub
4. Thi hnh on chng trnh v nhn trn nt lnh vi ln. Mi ln nhn, 5 nt
lnh c to hoc xo.
5. Lu vo a vi tn NewCtrl.vbp
Vng lp For...Next to hoc xo nt lnh ny tu theo ni dung bin sNextOperation.
Trc ht, ni dung ca sNextOperation c kim tra xem cn Load hay Unload
cc phn t. Ln u, sNextOperation cha c gn, n ri vo phn False, ngha l
Load.
Bi mc nh, iu khin mi to lc thi hnh xut hin ti cng v tr vi iu khin
gc, v khng hin th. Do , ta c th i v tr v iu chnh kch c m khng
ngi s dng thy. N cng cm Windows v li mi ln np cc iu khin, khng
nhng lm chm chng trnh m cn hin th khng c trt t trong khi ta ang di
chuyn chng. Ta ch cho chng hin th sau khi c v tr mi.
End With
End If
Next
If sNextOperation = "UNLOAD" Then
sNextOperation = "LOAD"
Else
sNextOperation = "UNLOAD"
End If
Case 1, 2, 3, 4, 5
MsgBox "You pressed Button " & Index
End Select
End Sub
3. Thi hnh chng trnh. Nhn chut trn tng nt lnh, mt thng ip xut
hin cho bit th t nt nhn.
V d mu - Kim tra hp vn bn
1. To n mi v v mt biu mu gm cc iu khin nh sau:
Tag N5
Hp Anything (nhn mi Name txtValidate
th) Index 0
Tag *4
cmdCommand.Caption = nNumber
End Sub
10.3 Tp hp
Mi biu mu trong ng dng c mt tp hp cc iu khin ni ti. Trong lc thi
hnh, ta c th dng tp hp truy cp n iu khin trn biu mu. Ta khng cn
bit tn ca mi iu khin, thm ch kiu iu khin. Khc vi mng iu khin, ta
khng cn khai bo, v tt c iu khin trn biu mu c t ng xem nh mt
phn ca biu mu. Khi thm hay xo mt iu khin trn biu mu, VB t ng qun
l vic thm hay xo iu khin trong tp hp.
Truy cp phn t trong tp hp tng t truy cp phn t trong mng thng thng.
Tp hp rt tin li cho cc biu mu nhp liu. V d, ta c th vit mt th tc chung
duyt qua tp hp ny v tm kim ch nhng iu khin d liu v sau gn cho
thuc tnh CSDL ca chng mt ng dn n tp tin CSDL ca khch hng.
Khc vi mng iu khin, tp hp iu khin khng h tr cc s kin. Tuy nhin,
tng iu khin trong tp hp u c nhng thuc tnh, phng thc v s kin.
:
End if
Next
Ta duyt qua tng phn t ca tp hp trn Form1 t 0 n phn t cui cng, Count
1. Vi tng iu khin, ta dng TypeOf kim tra xem n c phi l hp vn bn
hay khng.
Tuy nhin, lm vic trn ch mc hi th thin, ta dng cch khc trc quan hn:
For Each objControl In Form1.Controls
If TypeOf objControl Is TextBox Then
:
:
End if
Next
V d mu -i mu
Dng mng iu khin i mu cc iu khin trn biu mu.
1. To n mi v v cc iu khin ln biu mu nh sau:
dlgColors.Flags = &H1&
dlgColors.ShowColor
nColor = dlgColors.Color
For Each FormControl In frmColors.Controls
If TypeOf FormControl Is TextBox And chkTextBoxes.Value = 1 Then
FormControl.BackColor = nColor
If TypeOf FormControl Is Frame And chkFrames.Value = 1 Then
FormControl.BackColor = nColor
If TypeOf FormControl Is Label And chkLabels.Value = 1 Then
FormControl.BackColor = nColor
If TypeOf FormControl Is CheckBox And chkCheckBoxes.Value = 1 Then
FormControl.BackColor = nColor
Next
Exit Sub
BackcolorError:
MsgBox ("You pressed the cancel button.")
End Sub
5. Chng trnh cho nt Foreground:
Private Sub cmdForeground_Click()
Dim nColor As Long
Dim FormControl As Control
On Error GoTo ForecolorError
dlgColors.CancelError = True
dlgColors.Flags = &H1&
dlgColors.ShowColor
nColor = dlgColors.Color
For Each FormControl In frmColors.Controls
If TypeOf FormControl Is TextBox And chkTextBoxes.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is Frame And chkFrames.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is Label And chkLabels.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is CheckBox And chkCheckBoxes.Value = 1 Then
FormControl.ForeColor = nColor
Next
Exit Sub
ForecolorError:
MsgBox ("You pressed the cancel button.")
End Sub
6. Vit chng trnh cho nt Quit:
Private Sub cmdQuit_Click()
' Quit the application by unloading the form
Unload frmColors
End Sub
7. Thi hnh chng trnh. Chn vo hp nh du chn kiu iu khin ta
mun i mu, nhn nt Background hay Foreground thi hnh vic i. Mt
hp thoi mu xut hin cho php ta chn mu.
Thuc tnh CancelError ca iu khin hp thoi thng dng c quy nh l True,
ngha l li s 32755 c pht s gi chng trnh trc tip by li.
FPT Software Solution Trang:116/261
Gio trnh o to Visual Basic 6.0
Vng lp For Each...Next duyt qua tng iu khin trong tp hp, t tng phn t
vo bin i tng FormControl Dng TypeOf kim tra kiu iu khin. Lu
dng t kho Is vi TypeOf thay v dng du kim tra bng.
V d mu - Ca s con
1. To n mi v t tn biu mu mc nh l frmChild. i thuc tnh
MDIChild thnh True.
2. T menu Project, chn Add MDI Form to mt ca s MDI v t tn cho
n l frmParent.
3. Thm menu cho biu mu MDI gm 2 mc: New v Exit. t tn cho chng
l mnuFNew v mnuFExit.
4. Thm menu cho ca s con bao gm: File, Edit, View, Options.
5. Vit chng trnh cho menu New
Private Sub mnuFNew_Click()
Load frmChild
End Sub
6. T menu Project, chn Project1 Properties v chn biu mu khi ng l biu
mu MDI.
7. Thi hnh ng dng. Khi mi xut hin, ca s MDI cha c ca s con v
hin th menu ca chnh n. Nu ta chn New t menu File, ca s con hin th.
menu ca biu mu MDI c thay th bng menu ca ca s con. Trng thi u
ca ca s MDI s c phc hi ton b c s con b tt.
8. Lu n vi tn MDIChild.vbp.
V d mu - To Instance ca biu mu
1. M li n MDIChild.vbp. Chon biu mu frmParant.
2. Chn New t menu File ca biu mu MDI. M ca s Code v a on
chng trnh sau vo:
Private Sub mnuFNew_Click()
Dim OurNewForm As New frmChild
OurNewForm.Show
End Sub
3. on chng trnh trn dng bin i tng to mt instance cho ca s
frmChild.
4. Xo ton b menu ca ca s con.
5. Thi hnh chng trnh. Mi ln nhn New, mt ca s mi c to.
6. Lu n vi tn mi bng cch chn Save File Form As... v Save Project
As... t menu File. t tn l MDIChild1.vbp
10.4.3 Xc nh biu mu
V ta c th to ra 10 biu mu ng nht c cng tn, nn vic xc nh ca s l cn
thit. T kho Me cho php ta tham chiu n ca s hin hnh, l ca s ang c
focus, hay ni cch khc, l ca s nhn c mi phm nhn hay click chut bt k.
Ta c th dng:
activeform.txtEmployee.text = Peter
nhng dng me l cch thng dng nht.
Sp xp ca s
Dng phng thc Arrange vi biu mu MDI sp xp cc ca s con. Cc hng
ni ti sau y l cc kiu sp xp c s do VB cung cp:
Gi tr Hng M t
0 vbCascade Xp cc ca s con theo kiu thc nc tri t gc
tri trn qua gc bn phi di.
1 vbTileHorizontal Dn u cc ca s con sao cho chng chia mn
hnh thnh nhng di ngang.
2 vbTileVertical Dn u cc ca s con sao cho chng chia mn
hnh thnh nhng di dc.
3 vbArrangeIcons Cc ca s con c thu nh thnh nhng biu
tng v c xp thng hng.
11.1 ADD-INS
T menu Add-ins, chn Add-ins manager.. hp thoi Add-in
xut hin
Dng Wizard :
Tin ch xy dng lp
Tin ch xy dng lp ( Class Buider Utility ) h tr paramArray, Optional, ByVal
v cc gi tr Default trong danh sch tham s v h tr cc Enums. Tin ch t chc
cc lp theo phn nhnh trong mt n ca Visual basic. N theo di cc lp v
pht sinh cc on chng trnh n gin thao tc trn cc lp, bao gm thuc tnh,
phng thc, s kin v enum.
ng tao ra.
11.4 Bi tp
Dng trnh to ng dng t ng to ng dng kiu Explorer.
Dng trnh xy dng d liu t ng to biu mu Master/Detail.
12.1 C s d liu l g?
C s d liu l mt kho cha thng tin. C nhiu loi c s d liu, nhng ta ch
cp n c s d liu quan h, l kiu c s d liu ph bin nht hin nay.
Mt c s d liu quan h:
Cha d liu trong cc bng, c cu to bi cc dng cn gi l cc mu
tin, v ct gi l cc trng.
Cho php ly v ( hay truy vn ) cc tp hp d liu con t cc bng
Cho php lin kt cc bng vi nhau cho mc ch truy cp cc mu tin lin
quan vi nhau cha trong cc bng khc nhau.
12.1.2 Bn v trng
Cc c s d liu c cu to t cc bng dng th hin cc phn nhm d liu.
V d, nu ta to mt c s d liu qun l ti khon trong cng vic kinh doanh ta
phi to mt bng cho khch hng, mt bng cho Ho n v mt bng cho nhn
vin. Bng c cu trc nh ngha sn v cha d liu ph hp vi cu trc ny.
Bng: Cha cc mu tin l cc mu ring r bn trong phn nhm d liu.
Mu tin: Cha cc mi trng. Mi trng th hin mt b phn d liu trong mt
mu tin. V d nh mi mu tin th hin mt mc trong danh b a ch cha trong
trng Tn v h, a ch, thnh ph, tiu bang, m ZIP v s in thoi.
Ta c th dng chng trnh Visual Basic tham chiu v thao tc vi c s d liu,
bng, mu tin v trng.
V d ta to mt bng sau :
Bng khch hng Bng tblRegion
tblCustomer TblRegion
ID State
FirstName RegionName
LastName
Company
Address
City
State
Zip
Phone
Fax
Email
C quan h gia 2 bng thng qua trng State (Trng thi ). y l mi quan h
mt - nhiu, i vi mt mu tin trong tblRegion, c th khng c, hoc c nhiu mu
tin tng ng trong bng tblCustomer.
Bng ho n :
TblOrder
ID
CustomerID
OrderDate
ItemID
Amount
12.1.3 Recordset l g ?
Mt khi ta c kh nng to bng, ta cn phi bit cch thao tc chng.
Thao tc trn cc bng lin quan n vic nhp v ly v d liu t cc bng khc
cng nh vic kim tra v sa i cu trc bng. thao tc vi cu trc bng, ta
dng cc cu lnh inh ngha d liu hoc mt i tng TableDef (c gii thiu
trong chng Cc i tng truy cp d liu ). thao tc d liu, trong mt bng,
ta dng Recordset.
Mt Recordset l mt cu trc d liu th hin mt tp hp con cc mu tin ly v
t c s d liu. V khi nim, n tng t mt bng, nhng c thm mt vi thuc
tnh ring bit quan trng.
Cc RecordSet c th hin nh l cc i tng, v khi nim tng t nh l
cc i tng giao din ngi s dng ( nh l cc nt lnh v hp vn bn ) m ta
lm quen vi Visual Basic trong cc chng trc. Cng nh cc kiu i tng khc
trong Visual Basic, cc i tng Recordset c cc thuc tnh v phng thc ring.
Lu : Ta c th lp trnh to v s dng cc recordset theo mt trong ba th
vin truy cp d liu Cc i tng truy cp dliu ( DAO ), cc i tng truy cp
d liu t xa ( RDO ) v cc i tng d liu ActiveX ( ADO ).
Kiu d liu M ta
Binary Dng cha cc khi d liu ln nh l ho v cc tp tin
m thanh s ho.
Boolean Gi tr logic ng hoc sai
Byte Gi tr s nguyn mt byte t 0 n 255
Currency Trng s c thuc tnh c bit cha cc tr tr tin t
Date/Time Gi tr 8 byte th hin ngy hoc gi t ngy 1/1/100 n ngy
31/12/9999
Double Ki d liu s 8 byte du phy ng
GUID L mt s 128 bye, cng c gi l nh danh ton th duy
nht. Ta dng s ny nhn dng duy nht cc mu tin. S ny
c dng trong cc bn sao
Integer S 2 byte u t -32768 n 32767
Long S 4 byte y t -2,147,483,648 n 2,147,483,647
FPT Software Solution Trang:130/261
Gio trnh o to Visual Basic 6.0
Khng c s tng ng mt-mt gia kiu d liu Visual Basic v kiu d liu
trng c s d liu. V d, ta khng th quy nh mt trng c s d liu l kiu
nh ngha bi ngi dng hay bin Object ca Visual Basic. Hn na nu ta dng
Microsoft Access to c s d liu s dng trong cc ng dng Visual Basic, lu
rng mt s kiu d liu hu dng trong ng dng Visual Basic khng xut hin trong
thit k bng ca Microsoft Access. Bi v Visual Basic h tr lp trnh c s d liu
khc vi nhng g to bng Microsoft Access.
12.1.5 To lc c s d liu
Mc d vic to danh sch cc bng v trng l cch tt nht xc nh cu
trc c s d liu, ta cn c mt cch xem cc bng v tng di dng ho.
Sau , khng ch xem c cc bng v trng hin c m cn thy c mi quan
h gia chng. lm c iu ny, ta to lc .
Lc l s cc con ng trong c s d liu. Lc th hin cc bng,
trng v mi quan h trong c s d liu. C lc c s d liu l phn quan
trng trong tht k phn mm bi v n cho ta mt cch nhn nhanh v nhng g trong
c s d liu.
Cc lc vn c v tr quan trng lu di sau khi qu trnh thit k c s d liu
hon tt. Ta s cn n lc thi hnh cc cu truy vn trn nhiu bng. Mt lc
tt s tr li c cc cu hi nh l, Nhng bng no cn ni vi nhau a ra
danh sch cc ho n trn $50.00 t cc khch hng Minnesota trong 24 gi qua ?
Khng c phng php chnh thc to lc , mc d cng c nhiu cng c
thc hin. Cng c v Visio rt uyn chuyn, nhanh v d dng. Hn na n tch
hp vi cc ng dng Windows khc, nht l Microsoft Office.
Phn ny xem visio nh mt cng c v ghi chp v c s d liu. Nhung ta
cn c th dng Visio nh mt cng c pht trin. Vi Visio Professional, ta c th
thit k c s d liu bng ho. Sn phm c kh nng ly thit k ho v to ra
c s d liu thc s. Tham kho thng tin v Visio ti a ch
http://WWW.Visio.Com
12.1.6.2 To bng
Mt c tnh ca Visual Data Manager l n khng th cho ta cch r rng to
bng mi trong c s d liu m ta va to. Bi v cc phn t xut hin trong ca s
Database ca Visual Data Manager rt nhy vi vic nhn chut phi. Nhng mt khi
ta dng nt chut phi vic to mt bng mi tht l n gin.
V d : to mt bng mi ta theo cc bc sau:
1. Trong ca s Database ca Visual Data Manager, nhn chut phi vo
Properties. Menu ng cnh ca ca s s xut hin.
2. Chn New Table. Hp thoi Table Structure s xut hin nh hnh di y.
12.1.6.4.2 Xo ch mc
xo trng LastName, ta phi xo ch mc ca n trc. lm c iu
ny, theo cc bc sau :
1. Chn LastNameIndex trong danh sch cc ch mc
FPT Software Solution Trang:137/261
Gio trnh o to Visual Basic 6.0
2. Nhn nt RemoveIndex
3. Khi mt thng ip hi ta mun xo ch mc ny khng, nhn Yes. Ch mc
c xo
Sp xp cc trng
6. Nhn nt Build the Form. Biu mu c to trong Visual Basic.
7. Nhn Close.
K tip ta mun thot khi Visual Data Manager xem biu mu ca ta nh th
no. Nhng ta mun quay tr li thm cc phn t mi vo c s d liu hoc
mun s i nhng ci ta va lm. thng bo cho Visual Data Manager la ta mun
m c s d liu li trong ln k tip, theo cc nc sau :
1. chn Utility, Preferences. T Menu con, chn Open Last Database t Startup.
2. Thot Visual Data Manager bng cch chn File, Exit, Khi ta tr v Visual
Basic m ta s thy biu mu mi gi l frmCustomer
12.1.7 Cc mi quan h
Mi quan h l mt cch inh ngha chnh thc hai bng lin h vi nhau nh th
no . Khi ta nh nghia mt mi quan h, ta thng bo vi b my c s d liu
rng hai trng trong hai bng lin quan c ni vi nhau.
Hai trng lin quan vi nhau trong mt mi quan h l kho chnh c gii
thiu phn trc v kho ngoi. Kho ngoi l kho trong bng kin quan cha bn
sao ca kho chnh ca bng chnh.
V d, gi nh rng ra c cc bng cho phng ban v Nhn vin. C mt mi
quan h mt - nhiu gia mt phng ban v mt nhm nhn vin. Mi phng ban c
mt ID ring, tng t vi nhn vin. Tuy nhin, ch ra mt nhn vin lm vic
phng ban no, ta cn phi to mt bn sao ca ID ca phng ban cho mi mu tin
ca nhn vin. V vy, phn bit mi nhn vin l mt thnh vin ca mt phng
ban, bng Employees phi c mt trung gi l DepartmentID cha ID ca phng
ban m nhn vin lm vic. Trng DepartmentID trong bng Employees c
tham chiu nh 1 kho ngoi ca bng Employees bi v n s cha bn sao ca kho
chnh ca bng Departments.
12.1.7.1 S dng tnh ton vn tham chiu duy tr tnh nht qun
Khi cc bng ni kt vi nhau thng qua mi quan h, d liu trong mi bng phi
duy tr s nht qun trong cc bng lin kt. Tnh ton vn tham chiu qun l cng
vic ny bng cch theo di mi lin h gia cc bng v ngn cm cc kiu thao tc
no trn cc mu tin.
V d, gi nh rng ta c mt bng gi l tblCustomer v mt bng khc l
tblOrder. Hai bng ny quan h vi nhau qua trng chung l ID.
Gi thit y l ta to cc khch hng cha trong tblCustomer ri to cc ho
n trong tblOrder. Nhng iu g s xy ra nu ta tin hnh xo mt khch hng c
ho n cha x l cha trong bng ho n ? Hoc l nu ta to mt ho n m
khng c mt CustomerID hp l gn lin vi n ? Mc ho n khng c
CustomerID th khng th gi i, bi v a ch gi l mt trng ca mu tin trong
tblCustomer. Khi d liu tron cc bng quan h gp phi rc ri ny, ta ni n trng
thi khng nht qun.
Mt iu rt quan trng l c s d liu khng c tr nn khng nht qun, b
my c s d liu Jet cung cp mt cch ta nh ngha mi quan h trong cc bng.
Khi ta nh ngha mt mi quan h chnh thc gia hai bng b my c s d liu s
gim st mi quan h my v ngn cm bt k thao tc no vi phm tnh ton vn
tham chiu. Hot ng ca c ch ton vn tham chiu l pht sinh ra li mi khi ta
thi hnh mt hnh ng no lm cho d liu ri vo trng thi khng nht qun. V
d, trong c s d liu c tnh ton vn tham chiu ang hot ng, nu ta c to mt
ho n cha mt ID ca khch hng i vi mt khch hng khng tng ti, ta s
nhn mt thng bo li v ho n s khng th to ra.
12.1.8 Chun ho
Chun ho l mt khi nim lin quan n mi quan h. V c bn, nguyn tc
ca chun ho pht biu rng cc bng c s d liu s loi tr tnh khng nht qun
v gim thiu s km hiu qu.
Cc c s d liu c m t l khng nht qun khi d liu trong mt bng
khng tng ng vi d liu nhp vo trong bng khc. V d, Nu phn na s
ngi ngh rng A min Trung Ty v mt na ngh rng n nm pha Nam v
FPT Software Solution Trang:142/261
Gio trnh o to Visual Basic 6.0
nu c hai nhm nhn vin nhp liu theo kin ring ca h, khi y bo co c s d
liu trnh by nhng vic xy ra min Trung Ty l v ngha.
Mt c s d liu km hiu qu khng cho php ta trch ra csc d liu chnh xc
m ta mun. Mt c s d liu cha ton b d liu trong mt bng c th buc ta
phi vt v duyt qua mt lng ln tn cc khch hng, a ch v lch s lin h ch
ly v 1 s in thoi ca mt khch hng no . Mt khc, mt c s d liu
c chun ho y cha tng mu thng tin ca c s d liu trong bng ring v
xa hn, cc nh tng mu thng tin duy nht thng qua kho chnh ca n.
Cc c s d liu chun ho cho php ta tham chiu n mt mu thng tin trong
mt bng bt k ch bng kho chnh ca thng tin .
Ta quyt nh cch thc chun ho ca mt c s d liu khi t tht k v khi to
mt c s d liu. Thng thng, mi thu v ng dng c s d liu - t thit k
bng cho n thit k truy vn, t giao din ngi s dng n cch hot ng ca
bo co - u xut pht t cch chun ho c s d liu.
Lu : L mt lp trnh vin c s d liu, thnh thong bn s cht ny ra
ngh v c s d liu vn cha c chun ho v l do ny hay l do khc. S
thiu chun ho c th do ch , hoc c th l do kt qu ca s thiu kinh
nghim hoc s khng thn trng trong vic thit k c s d liu ban u. D
mc no, nu chn chun ho mt c s d liu tn ti, ta nn thc
hin sm ( bi v mi th khc thc hin trong c s d liu u ph thuc
vo cu trc bng ca c s d liu ). Hn na, ta s thy nhng cu truy vn
hnh ng l cng c rt hu ch trong vic sp xp li mt c s d liu thit
k thiu st. Truy vn l hnh ng cho php ta i chuyn cc trng t bng
ny sang bng khc ch l thm, cp nhtv xo mu tin t cc bng da trn
cc tiu ch nu ra.
12.1.8.1 Quan h Mt - Mt
L loi quan h d hiu v d thc hin nht, bi v trong nhng mi quan h nh
vy, mt bng s ly v tr ca mt trng trong mt bng khc, trng lin quan cng
d nhn dng. Tuy nhin, quan h mt - mt khng phi l mi quan h thng dng
nht trong ng dng c s d liu. Do 2 nguyn nhn:
1. Hu nh ta khng cn biu din mi quan h mt mt vi hai bng. Ta c th
dng n ci tin kh nng hot ng, v d ta mt tnh linh hot khi cha
cc d liu lin h trong mt bng tch bit. Trong v d trc, thay v c cc
bng nhn vin v cng vic cha trong bng nhn vin.
2. Th hin quan h mt - nhiu th cng kh d ( nhng linh hot hn nhiu )
quan h mt mt.
Trong mt thit k giao din ngi s dng, ta thc hin qu trnh copy kho
chnh ca mt bng n kho ngoi ca mt bng lin h nh mt iu khin hp
danh sch hay hp kt hp. tm hiu thm thng tin v t chc giao din.
Thit k DataEnvironment.
Ko bng vo ca s thit k.
Thi hnh ng dng xem mu tin th nht trong c s d liu. Tuy nhin, khng
c chc nng duyt t mu tin ny sang mu tin khc. thc hin iu , ta phi
lp trnh hoc dng mt iu khin d liu, m t trong phn sau.
kt ni vi
C s d
liu
Cch thc ca mt iu khin ADO Data kt ni vi c s d liu trong ng
dng.
Lu : Mc d iu khin ADO Data l gii php d dng kt ni ng dng vi
mt c s d liu, nhung khng phi l gii php duy nht. Sau khi quen vi
cch truy cp c s d liu trong Visual Basic, ta s xem xt vic dng chng trnh
qun l kt ni vi v s d liu.
DatCustomer.Recordset.MoveFirst
Option Explicit
Private Sub datCusstomer_MoveComplete ( ByVal AddReason
as ADODB.EventReasonEnum, ByVal pError Ass ADODB.Error,
asStatus As ADODB.EventStatusEnum, ByVal Rs as
ADODB.Recordset )
Dim strST as String
Dim StrRegion as String
If rs.BOF = false and Rs.EOF =False Then
datCustomer.Recordset.Delete
C mt cnh bo quan trng lin quan n vic s dng phng thc Delete ca
i tng Recordset vi iu khin Data. Khi xo mt mu tin, khng c mu tin hin
hnh xut hin thay th, recordset khng c ch ng. V vy, gii quyt rc ri
ny, ta phi di chuyn sang mu tin khc trong Recordset ( ch yu dng phng thc
MoveNext hay MoveLast ca Recordset )
Lu : Nh ni trong phn to mu tin v dng cc s kin ca iu
khin d liu, ta phi bo m rng c mt mu tin hin hnh trong
recordset ca iu khin d liu khi ta thi hnh phng thc Delete, hoc l
ng dng s bo li. trnh li ny ta phi thit k giao din ngi dng
sao cho ngi s dng khng th xo mu tin khng hin hu . Gii php
hu hiu l kim tra thuc tnh EOF v BOF ca recordset trc khi tin
hnh phng thc Delete, nu BOF hay EOF l True, th phng thc
Delete s tht bi.
12.5 Tng kt
Chng ny trnh by nhng khi nim c bn ca c s d liu ni chung, cng
nh cch thc kt ni d dng nht ca ng dng Visual Basic vi c s d liu
Microsoft Access.
Cn nh rng, mc d Visual Basic v Microsoft Access chia s cng mt b my
c s d liu, c s d liu kiu Access khng phi l kh nng duy nht ca Visual
Basic.
12.6 Hi v p
Hi : Ta thy rng Visual Data Manager khng mnh v d s dng nh Microsoft
Access, vy ti sao ta li dng n ?
p : Nu ta khng c hoc khng th dng Microsoft Access th ta c th dng n.
DBEngine
DBEngine
Workspace
Database
Field
object only
object only
User
Object and Collection
Group
Group
User
Error
Tham s M t
Options Nu tham s ny l true,c s d liu m trong ch loi tr;
khng ai c th m c s d liu trong ch loi tr. Nu gi tr
ny l false, nhng ngi khc c th m c s d liu.
Readonly Nu tham s ny l True, ta khng th sa i c s d liu.
Connect mt chui ch ra cch thc kt ni vi c s d liu; chui thng
ch c dng cho nhng ngun d liu Client / Server v ODBC.
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("tblCustomer")
Tham s bt buc duy nht ca phng thc OpenRecordset l ngun d liu. y l
chui k t, theo nguyn tc l tn ca mt bng hoc mt nh ngha truy vn cha
sn. Nhng n cng c th l mt cu lnh SELECT SQL:
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblCustomer" & _
" Order By [LastName]")
BOF
Mu tin 1
Mu tin 2
...
EOF
Option Explicit
' References: Microsoft DAO 3.51 Object Library
Private Enum TextBoxes
txtProduct = 0
txtCatalogNumber = 1
txtWholesalePrice = 2
txtRetailPrice = 3
End Enum
Private db As Database
Private rs As Recordset
Private x As Integer
Private Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Set rs = db.OpenRecordset("tblInventory")
For x = txtProduct To txtRetailPrice
TextBox(x).Enabled = False
Next x
cmdSave.Enabled = False
cmdNew.Enabled = True
End Sub
Private Sub cmdNew_Click()
' Create a new record
rs.AddNew
' Enable data entry controls
For x = txtProduct To txtRetailPrice
TextBox(x).Enabled = True
Next x
TextBox(txtProduct).SetFocus
cmdSave.Enabled = True
cmdNew.Enabled = False
End Sub
Private Sub cmdSave_Click()
' Map UI controls to fields
rs.Fields("Product") = TextBox(txtProduct)
rs.Fields("CatalogNumber") = TextBox(txtCatalogNumber)
rs.Fields("WholesalePrice") = TextBox(txtWholesalePrice)
rs.Fields("RetailPrice") = TextBox(txtRetailPrice)
' Commit data to database
rs.Update
' Clear out UI
For x = txtProduct To txtRetailPrice
TextBox(x).Text = ""
TextBox(x).Enabled = False
Next x
cmdSave.Enabled = False
cmdNew.Enabled = True
End Sub
FindNext
FindPrevious
C php ca bn phng thc nh nhau - s dng mt trong bn phng thc tm
kim ny, ta truyn mt mnh WHERE ca SQL vo phng thc ch ra thng tin
ta cn tm kim. Sau khi thi hnh phng thc, mu tin hin hnh trong i tng
Recordset tr thnh mu tin tho mn tiu ch WHERE. Nu tm kim khng nh v
c mu tin yu cu, thuc tnh NoMatch ca i tng Recordset c gi tr l True.
Loi phng thc ta dng cng xc nh cch thc tm thy mu tin. V d, nu dng
FindFirst , b my c s d liu s di chuyn n mu tin th nht trong recordset
tho tiu ch. FindNext v FindPrevious, ngc li, tm cc mu tin hin hnh.
im quan trng cn lu l, khc vi mt cu truy vn SELECT ca SQL, tm kim
khng sinh ra mt recordset. Khi b my c s d liu tm ra mu tin tho tiu ch tm
kim, n di chuyn n mu tin ; mu tin tr thnh mu tin hin hnh. Nu khng
c mu tin tm thy, mu tin hin hnh s c gi nguyn v thuc tnh NoMatch
ca i tng Recordset c gi tr l True.
Exit Sub
ErrHandler:
Dim DBError As Error
Debug.Print "Contents of DBEngine Errors Collection"
Debug.Print "--------------------------------------"
For Each DBError In DBEngine.Errors
Debug.Print DBError.Description
Next
End Sub
13.6.1 To mt CSDL
Ta c th s dng phng thc CreateDatabase ca i tng DBEngine trong DAO
to c s d liu Jet ca Microsoft.
Khi to mt c s d liu, ta phi cung cp tn mt tp tin (thng c phn m rng
l MDB) v mt locale. Locale l mt chc nng ca ngn ng c dng bi ngi
s dng ng dng; n ch ra th t i chiu cho c s d liu. Th t i chiu xc
nh cch thc lu tr cc d liu dng vn bn trong c s d liu theo mc nh.
Lu : Phng thc CreateDatabase ca i tng DBEngine thay th dng lnh
CreateDatabase thng dng trong cc phin bn c ca DAO. Nhng bi v
DBEngine l mt trong nhng i tng DAO m ta khng cn tham chiu tng
minh trong chng trnh, ta c th tip tc s dng CreateDatabase nh cch c,
khng c tham chiu n i tng DBEngine trc n. Tuy nhin, nu mun chnh
xc 100%, ta dng DBEngine.CreateDatabase thay v CreateDatabase.
V d sau to mt c s d liu. Ngoi ra, n cn ni thm mt bng duy nht vi 2
trng vo c s d liu .
Option Explicit
' References MS DAO 3.51
Private db As Database
Private td As TableDef
Private f As Field
Private Sub cmdCreate_Click()
On Error GoTo ErrHandler
Set db = DBEngine.CreateDatabase("..\..\DB\newdb.mdb", dbLangGeneral)
Set td = New TableDef
FPT Software Solution Trang:173/261
Gio trnh o to Visual Basic 6.0
Set db = OpenDatabase("..\..\db\novelty.mdb")
End Sub
Private Sub cmdCreate_Click()
On Error GoTo ErrHandler
Dim td As TableDef
Dim f As Field
Set td = New TableDef
Set f = New Field
f.Name = "FirstName"
f.Type = dbText
td.Name = "tblEmployeeNew"
td.Fields.Append f
db.TableDefs.Append td
MsgBox "Lo, the table has been created."
Exit Sub
ErrHandler:
If Err.Number = 3010 Then
MsgBox "You can't create the table twice, chief."
Else
MsgBox Err.Description
End If
End Sub
rs!Phone, _
vbInformation, _
"Info for " & rs!FirstName & _
" " & rs!LastName
End If
End Sub
tm ra mt khch hng vi ng dng ny, ngi s dng nhp s ID ca khch
hng trong hp vn bn. Nu ng dng tm thy mt khch hng vi ID trong c
s d liu, n s hin th a ch v s in thoi cu khch hng . Nu ng dng
xc nh rng khng c mu tin p ng tiu ch tm kim, n s thng bo cho ngi
s dng.
Lu : Bi v tham s ca mt QueryDef l mt hm ca cu lnh SQL nh ngha
truy vn, ta khng th tham s mi vo tp hp Parameters ca mt QueryDef nh
cch ta thng lm thm mt i tng vo tp hp trong DAO.
Next
End Sub
Cn phi hiu im khc bit gia ti liu c s d liu v tp hp DAO. V d, mt
tp hp ca TableDef tham chiu n tt c cc TableDef ta m ra trong chng trnh.
Tri li, ti liu Tables cha cc tham chiu n tt c cc ti liu bng trong c s d
liu m ta m. Trong Jet, ni cha Tables bao gm cc ti liu nh l truy vn cha
sn v cc bng h thng (bt u bng MSys).
Ta s dng cc i tng Container v Document trong nhng trng hp sau:
Ta mun gn vic cho php bo mt cho mt i tng trong mt c s d
liu bo mt .
Ta mun to hoc ly v cc thuc tnh hiu chnh cho tt c cc thnh phn
ca mt c s d liu bng cch lp xuyn qua cc tp hp
Ngoi vic kim tra ni dung ca cc ti liu c s d liu hin hnh, DAO cn cho
php ta nh ngha v t to cc ti liu, chng c th cha trong c s d liu cng
vi ti liu mc nh.
Cc ti liu hiu chnh bao hm trong m hnh i tng Jet h tr cc m rng.
tng chung l ngn nga m hnh i tng hin hnh cm cc tnh nng mi.
13.9 Tng kt
Chng ny gii thch v l thuyt thng nht v quan trng ca lp trnh DAO. Nu
l ngi x l gii, ta c th tin hnh phn ln cc hot ng ta tng lm trong th
gii truy cp c s d liu ca Visual Basic.
FPT Software Solution Trang:181/261
Gio trnh o to Visual Basic 6.0
13.10 Hi v p
Hi: Dng DAO c ph hp vi lp trnh CLient / Server khng ?
p: C th s dng DAO cho lp trnh Client / Server, nhng tt hn nn dng
ADO. ADO cung cp mt giao din chng trnh tng t nh DAO, nhng mt
s tnh nng mi b sung (nh l kh nng truy cp n trnh cung cp d liu
khng quan h, cc kt ni v truy vn khng ng b, v mt m hnh i tng
n gin hn. )
Hi: Ti ang to mt ng dng da trn Jet. Vy ti nn tip tc dng DAO hay
l chuyn sang dng ADO ?
p: Nu ng dng ca bn hot ng tt vi DAO, bng mi cch, gi li k
thut DAO. l m hnh i tng dnh cho c s d liu Jet. ADO c mt s
ch khng th lm c nh DAO lm, v d, bn c th to ra mt c s d
liu Jet trong DAO, nhng bn khng th lm c iu vi ADO.
Option Explicit
Option Explicit
End Sub
5. Thi hnh nt lnh v n nt Run. bo co thi hnh hin th cho ngi s dng
trong ca s preview. n y ngi s dng c th xut bo co ra my in
bng cch nhn nt Print. dng thuc tnh Distination ca iu khin Crystal
Reports, ta c th gi d liu trc tip n my in b qua ca s Preview.
ODBC gm 3 phn:
Trnh qun l iu khin (driver manager)
Mt hay nhiu trnh iu khin (driver)
Mt hay nhiu ngun d liu
Nhn Finish. Hp thoi xut hin, m t chi tit ca ngun d liu m ta va to.
Sau , nhn nt Test Data Source. Trnh iu khin s p ng bng cch thng
bo mt kt ni va c thit lp thnh cng.
Sau khi nhn OK, tn ngun d liu mi xut hin trong ca s ODBC Data
Source Administrator.
8. Trong thuc tnh DataSourceName ca iu khin Remote Data chn DSN cho
c s d liu SQL Server. DSN ta to trc y s xut hin trong danh sch th
xung.
9. Ch nh thuc tnh DataSource ca iu khin DBGrid l MSRDC1, tn ca
iu khin Remote Data.
10. Thi hnh ng dng. ng dng tr v ni dung ca bng tblCustomer v hin
th n trong li d liu.
Ngin cu k chng ny, bn s thy rng s dng iu khin Data vi tu chn
ODBCDIRECT v iu khin Remote Data truy cp d liu v c bn l nh
nhau. C hai u cho php truy cp n c s d liu ODBC khng cn lp trnh.
Hnh 23.6 Tp hp Environment v i tng Environment trong cy phn cp RDO (i tng d liu t xa)
Hnh 23.7 Tp hp rdoEnvironments v i tng rdoEnvironment trong cy phn cp RDO (i tng d liu t
xa)
Tham bin M t
UID Tn login ca ngi s dng
PID Mt khu ca ngi s dng
DSN Tn ngun d liu ta to trong Trnh qun l iu khin
ODBC
DRIVER iu khin ODBC m ta mun kt ni
DATABASE Tn c s d liu m ta mun kt ni
APP Tn ng dng kt ni vi c s d liu
LANGUAGE Ngn ng quc t c dng bi server
SERVER Tn ca SQL Server m ng dng kt ni n
Tuy nhin, y khng phi ton b cc tham bin. V khng nht thit phi dng
tt c cc tham bin ny trong mi trng hp. C s d liu c th s dng nhiu
hoc t hn.
V d, ni n c s d liu SQL Server Novelty, ta dng chui kt ni:
mt k t l (nh khong trng trc v sau du bng) trong chui kt ni. ODBC rt
kn chn vi nh dng ca chui kt ni, v th nn thn trng.
Dng chui khng c DSN trong trng hp ta khng cn iu khin ton b qua
cu hnh pha Client. N cng nhanh hn mt t khi log vo c s d liu. Bi v DSN
c cha trong Registry ca Windows, v rt tn km truy cp vo y.
15.3.3.2 M c s d liu
Sau khi c thng tin cn thit lp kt ni n c s d liu, ta c 2 tu chn
thit lp kt ni:
Dng phng thc OpenConnection ca i tng rdoEnvironment.
Dng phng thc EstablishConnection ca i tng
C hai phng thc u nh nhau, chng ch hot ng hi khc nhau mt cht.
Option Explicit
' References RDO 2.0
Private MyConn As rdoConnection
Private Sub Form_Load()
Dim strConnect As String
strConnect = "DSN=Novelty;" & _
"PWD=prince;" & _
"UID=randy;"
MyConn.EstablishConnection
End Sub
"PWD=rince;" & _
"UID=randy;"
Myconn.EstablishConnection
End Sub
Private Sub myconn_connect(ByVal ErrorOcurred As Boolean)
If ErrorOcurred Then
MsgBox "There was a problem" & _
"connecing to the database.", vbExclamation
Else
MsgBox "connection established.", vbInformation
End If
End Sub
3. Trong tab Connection, chn ngun d liu ODBC hay xy dng chui kt
ni khng c DSN.
4. Chon tab Authentication, nhp tn v mt khu ngi s dng. Chn vo
hp nh du Save Connection Information for Design=time. Nh th,
ta c th truy cp kt ni bt k lc no ta mun.
Lu trong trnh tht k UserConnection, cng tng t nh vi
ODBC DSN, ta c tu chn l b qua cc thng tin gn lin vi vic
thm nh. B qua cng vic ny ngha l tn ngi login v mt khu
s khng c bin dch vo ng dng v n khng c lu cng vi
trnh thit k UserConnection. Mc d vy, nh rng thit k
UserConnection khng cha d liu cho thm nh, trong khi bn
khng cung cp cc thng tin trong chng trnh khi thc thi, do
, trnh iu khin ODBC s hin th hp thoi mi ln ng dngkt
ni n c s d liu.(Tt hp thoi login ny trong thit k
UserConnection bng cch dng hp kt hp Prompt Behavior trong
tab Authentication ca hp thoi Properties ca thit k).
/****************************
anh
***********************************/
15.5.1.2 Gi th tc
To mt instence ca UserConnection trong chng trnh, sau , thi hnh th
tc cha sn nh l mt phng thc ca i tng rdoConnection.
1. Thm mt hp danh sch chun, mt nt lnh chun, va mt hp vn bn
chun vo biu mu trong n cha UserConnection. Dng hp vn bn
nhp tham ss cho truy vn. Chng trinh thi hnh cu truy n c kch hot
bng cch nhn vo nut lnh.
2. trong phn Declatians khai bo mt bin cha rdoConnection v rdoresultset
Private Conn As concompany
Orivate rs As rdoresultSet
3. Trong suwj kieenj click ca nut lnh, lp trh to instance ca
UserConnection, ni vi c s d liu v thi hnh th tc cha sn.
Private Sub command1_click()
Set conn = New conCompany
conn.EstablishConnection
conn.lastnameloopup Text.tex
Set rs = con.LastQueryResults
list1.Clear
Do util rs.eof
list1.additem rs!lastName&" "&rs!fistName
rs.MoveNext
Loop
conn.Close
End Sub
Lu rngkhi nhn k t dn chm sau i tng Conn, th tc cha sn
c tham chiu bi UserConnection xut hin trong danh sch cc thnh
phn ca i tng.
4. thi hnh ng dng. Nhp tn Smith vo hp vn bn, ri nhn nt lnh. Danh
sch lit k nhng tn cha t Smith nh phn u.
****************************/
****************/
Ta phi ch ra ngun d liu tr li khi ta thc hin trong phn trc. ta co
mt DSN ca ngi dng cho c s d liu company. V mt l do no , n
mun dng DSN da trn tp tin thay v Uer-DSN hay System-DSN. May
mn l,MS query cho ta kh nng to DSN tong chng trnh, v th, y
khng l vn ln. Tuy nhin, ta vn mun thit lp mi thcha trong mt
ni.
Mt vn khc vi MS query la nos cai t tm kim cc tp tin DSN
trong th mc trong \Program Files \Common Files\Microsoft Shared\Vba,
trong khi ODBC to DSN da trn tp tin \Program Files \Common Files
\ODBC\Data Sources. Trong hp thoi choose Data Source ca Ms Query, ta
gii quyt vn nt bng cch nhn nt Option chi ra th mc tm kim
DSN. lam iu ny, nhn Browse trong hp thoi Data Source Options,
chn ng th mc, nhn OK ri nhn Add. Khi y, th mc mi s c
nhn ra bi MS Query v sau.
16 Truy cp c s d liu vi lp
Lm vic vi lp v i tng.
S dng lp v i tng vi truy cp c s d liu.
To lp cn s dng d liu.
To lp xut d liu.
Trin khai lp nh l cc Activex Server.
Hnh 16.1 : Dng nt New Collection (nt th hai t tri sang) ca tin ch xy
dng lp to mt lp tp hp.
8. By gi, ta dng Tin ch xy dng lp to lp tp hp. Nhn nt Add New
Collection trn thanh cng c:
Hnh 16.2 : Nt Add New Collection
9. Hp thoi Collection Builder xut hin. Trong Name, nhp tn ca lp tp
hp colOrder.
ThisOrder.OrderDate = txtOrderDate.Text
ThisOrder.CustomerID = txtCustomerID.Text
ThisOrder.ItemOrdered = txtItemOrdered.Text
ThisOrder.Price = txtPrice.Text
Reset the user Interface
txtOrderDate.Text =
txtCustomerID.Text =
txtItemOrdered.Text =
txtPrice.Text =
txtOrderDate.SetFocus
End Sub
6. Sau cng, trong s kin Click ca nt Total, vit chng trnh tr v tng
s ho n nhp dng vng lp
For Each.. Next.
Private Sub cmdTotal_Click()
End Sub
Hnh 16.5 :Hp thoi Add Form ca Visual Basic cho php chn kiu biu mu
nh ngha sn.
4. Trong hp thoi Form, nhn Open. Mt biu mu mi c to.
5. Trong ca s Code, a vo cc th tc thuc tnh :
6. Biu mu Login chun ca Visual Basic cha chng trnh trong s kin nhn
nt OK v Cancel ngi s dng Login vo h thng. Xo on chng
trnh i v thay bng on chng trnh sau:
End Sub
Private Sub cmdOK_Click()
UserName = txtUserName.Text
Password = txtPassword.Text
Login
Me.Visible = False
End Sub
lin quan n vic chia Logic ca tng trung gian ca ng dng thnh 2 phn :
thnh phn pha server thi hnh truy cp v tr v d liu n Clien v thnh
phn pha Client nhn kt qu ny v gn chng vo cc thuc tnh ca i
tng.
Cc v d cn li trong chng s a ra tng k thut no s ph hp trong
tng tnh hung c th.
Phng thc M t
CreateQueryDef To mt i tng QueryDef.
CreateRelation To mt i tng Relation
CreateTableDef To mt i tng TableDef
OpenRecordset To mt i tng Recordset
FPT Software Solution Trang:220/261
Gio trnh o to Visual Basic 6.0
Ngoi vic s dng cc phng thc xng sn xut do Visual Basic cung cp, ta
c th to ra cc phng thc ny trong cc lp t to.
Mt l do ph bin dng cc phng thc xng sn xut l yu cu thc hin
theo cch to i tng trong Visual Basic. Cc ngn ng lp trnh khc s dng i
tng (nh Visual C++) c contructor m nhim vic to Instance ca i tng t
lp; nhng constructor cn c th thi hnh cc tc v khc, nh cung cp cc d liu
khi to cho lp. Lp c nhiu constructor ngi lp trnh c th chn la v
constructor c th ly v tr v tham s.
Tuy nhin, khng c tng quan trc tip vi constructor trong Visual Basic.
Thay vo , cc lp Visual Basic c s kin Initialize. Ta c th lp trnh trong s
kin Initialize nh trong constructor ca Visual C++, nhng khng may l ta khng
th truyn tham s cho s kin Initialize ca Visual Basic, v ta ch c mt s kin
Initialize cho mi lp. N lm tnh tin dng ca s kin Initialize b hn ch i vi
mi phn t, ngoi tr cc gi tr c bn nht l cc gi tr mc nh. Cc phng thc
xng sn xut cung cp gii php khc phc iu ny.
Option Explicit
If IsMissing(lngID) Then
' Create new customer
Set CreateCustomer = New CCustomer
Else
' Retrieve customer from DB
Set Cust = New CCustomer
Cust.GetData (lngID)
Set CreateCustomer = Cust
End If
End Function
End Sub
mCustData.MoveNext
End Sub
txt.Write HTMLText
txt.Close
End Sub
a cc th tc ny thnh mt phn ca lp CCustomer, to mt ng dng cho
php ngi s dng cung cp ID ca khch hng v tn tp tin xut. Khi ngi s
dng nhn mt nt lnh, khch hng c chn s c xut vo tp tin HTML ch ra
bi ngi s dng.
Option Explicit
Private Cust As CCustomer
Private Sub Form_Load()
Set Cust = New CCustomer
End Sub
Private Sub cmdExport_Click()
Cust.GetData txtID.Text
Cust.SaveHTML App.Path & "\" & txtFilename.Text
MsgBox "File saved.", vbInformation
End Sub
Tp tin HTML c to bi phng thc xut :
Hnh 16.6 D liu c xut di dng HTML v trnh by trong trnh duyt IE
To thnh phn ActiveX t lp cng cho ta kh nng phn pht i tng t xa, nh
trong chng 15.
to n ca thnh phn ActiveX trong Visual Basic, ta bt u to mt n
mi. Khi Visual Basic yu cu ta cung cp kiu sn, chn ActiveX DLL hay
ActiveX EXE. Mt n mi c to vi mt m-dun lp duy nht. Sau , ta c
th thm cc lp khc lp trnh. Bc cui cng l bin dch ton b thnh
ActiveX DLL hay ActiveX EXE.
Bin dch n ActiveX tng t bin dch vi n thng thng. im khc
bit l vic s dng ActiveX DLL v ActiveX EXE c thit k dng vi cc ng
dng khc.
Cust.GetData txtID.Text
16.4 Tng kt
Lp v i tng th hin lnh vc mi ca lp trnh Visual Basic.
Chng ny cung cp nhng thng tin bin cc k thut hng i tng m
rng thnh nhng hnh ng, khng ch l tn dng nhng k thut cao cp nh a
lung v thnh phn, m cn to s n gin v n nh theo thi gian.
7.HI V P
Hi: Lp v i tng c v phi x l phc tp. Mt iu ti thc mc l
Bn c th to nhng ng dng n gin hn bng cch vit thm chng trnh v
thm m-dun nhiu hn. Ti c ngh sai khng ?
p: Bn c phn ng l khi xy dng mt ng dng vi lp v i tng
th s tn nhiu thi gian cho thit k v xy dng ln u. Lu rng mt trong
nhng mc tiu ca lp trnh hng i tng l tnh nng s dng li. N s tit
kim cho bn rt nhiu thi gian v sc lc sau ny.
Hn na, n cn gip bn d bo tr, d g ri.
17 Truy cp d liu t xa
Client / Server v cc thnh phn
Cu trc Client / Server Three-Tier
Dng ActiveX truy cp c s d liu
Chuyn i d liu vi bn sao c s d liu
Cu trc Client / Server gii quyt vn ny. Trong mt cu trc 3 tng (three-
tier), cc quy lut kinh doanh c ng gi trong mt thnh phn tng trung gian
gia ng dng Client v Server c s d liu.
M y Server
Ta c th chia thnh phn tng trung gian qua nhiu my. V vy, cu trc Client /
Server 3 tng khi tr thnh cu trc n tng.
Ta trin khai cc thnh phn tng trung gian trn mt my theo nhng tnh hung
sau:
Server c s d liu chy trn h iu hnh khng h tr ActiveX.
Ta mun gi gn nng lc ca Server c s d liu.
Ta mun m rng kh nng ng dng bng cch trin khai nhiu bn sao ca
cng mt ActiveX Server n nhiu hn mt my.
Bt li ca vic cung cp cho thnh phn ActiveX mt my tnh ring l cu hnh
ny i hi thm mt bc chuyn qua mng t Client n Client v ngc li. iu
ny c th khin gim kh nng hot ng v tng lu lng trn mng. Trng hp
ny c c chp nhn hay khng tu thuc chc nng nh cu hnh mng v cc
prototype ta lm trong giai on thit k ca n.
Thm ch khi ta khng c iu khin trn h iu hnh trn c s d liu thi
hnh, ta vn c th s dng tng trung gian - nu ta trin khai n n mt my ring.
Tng c s d liu l mt khi UNIX hay b mainframe ca cng ty. ng dng
Client dng k thut DCOM v 2 l do :
1. ng dng Client khng bao gi truy cp n Server c s d liu, thay vo ,
chng truy cp d liu thng qua thnh phn ActiveX.
2. y l l do quan trng nht, DCOM che chn cho ng dng khi cc phn rc
ri ca giao thc qua mng, cc phn mm nn ( platform), v bin ca my
tnh.
Trin khai mt h thng Client / Server trong , Server c s d liu khng phi
Windows th d hn trong th gii 3 tng, bi v, ta khng cn phi nh cu hnh cho
middleware (phn mm tng gia- tp hp cc chng trnh iu khin chuyn x l
vic giao tip qua nhiu platform v cc giao thc mng) trn tng my Client. Vi
kiu 3 tng, ta ch phi nh cu hnh chng trnh ny mt ln trong phn cu trc
gia tng gia v Server c s d liu. Nh , c th tit kim thi gian v s st khi
ta nh cu hnh v trin khai ng dng n nhiu Client.
COM v DCOM bt u xut hin trn UNIX. ActiveX SDK ( Cng c pht trin
phn mm Software Development Kit ) trn Macintosh c vo cui nm 1996; c
th n lc ny, s dng ActiveX trn Macintosh l hin thc.
To gi MTS
Gi MTS l mt ni cha logic cho mt hay nhiu m-dun lp cha trong ActiveX
DLL. Vic to gi cung cp kh nng qun l mi lp cha trong gi, thm ch cc
lp ca cc thnh phn khc.
MMC cung cp kh nng m rng thng qua snap-in. Snap-in l mt thnh phn
phn mm hot ng nh mt phn ni gia MMC v cng c ca Server. Snap-in
c ng gi nh mt ActiveX DLL, nhng ta cha th xy dng snap-in trong
Visual Basic. V vy, nu bn c mt cng c phn mm m bn mun qun l trong
MMC, bn phi ch n khi n h tr Visual Basic hoc l bn vit snap-in trong
Visual C++.
3. Trong phn ca s bn tri, m mc Microsoft Transaction Server, sau m
Computers, ri My Computer. Ta s thy mc Packages Installed.
4. Nhn vo mc ny, Ta s thy mt s gi c sn (mc d cc gi ny c th
thay i tu vo h thng ).
5. Nhn nt phi chut trn th mc Packages Installed. T menu bt ra, chn
New, Package.
6. Trnh t ng Package Wizard xut hin. Chn Create an empty package. t
tn n l Novelty.
7. Mn hnh Set Package Identify xut hin. Bi v ta khng dng bo mt vi
thnh phn ny, hy n quy nh l Interactive user, ri nhn Finish.
8. Ta s thy gi mi trong th mc Package Installed.
Mc d ta to xong gi, nhng n cha lm g c, bi v ta cha thm thnh
phn cho n.
a thnh phn vo gi
End Sub
ng dng ny khng lm g vi thnh phn c, n ch gi mt instance ca
i tng c m ta c th xem xt cch MTS phc v cc yu cu.
4. Thi hnh ng dng. Nu ta sp xp 2 ca s ca ng dng v ca s ca MTS
st cnh nhau, ta s thy qu bng ang quay, th hin n ang phc v cc
yu cu ca ng dng.
5. ng ng dng, qu bng ngng quay n khng phc v na.
Trong khi qu bng ang quay, ta c th nhn nt phi chut ln biu tng gi,
khm ph ca s Properties ca n. Trong ca s ny, chn tab Advanced, MTS cho
php ta quy nh MTS s gi thnh phn np vo b nh trong bao nhiu pht sau ln
truy cp u tin. Gi tr ny c th l 0, ngha l thnh phn b xo khi b nh ngay
khi ng dng nh n ra. Nu gi tr ny l 1440 pht, thnh phn c cache vo b
nh trong 24 gi sau khi Client truy cp ln cui cng. Nu mun np thnh phn vo
b nh bt chp Client c dng n hay khng, chn tu chn Leave running when
idle. N s tng kh nng hot ng v tiu tn vng b nh trn pha Server.
cho php ng dng Client truy cp thnh phn chy di MTS, ta phi ng
k vo Registry ca my Client bo vi n rng thnh phn ang chy t xa.
Client nhn ra thnh MTS phn pht t xa, ta lm nh sau :
Export gi : To mt tp tin cho php ci t. Tp tin ny thi hnh mi hot
ng cn thit Client nhn ra thnh phn trin khai t xa.
Ci t gi ln my Client.
xem v d ta lm nh sau:
1. Trong ca s MTS, nhn nt phi chut ln gi Novelty. T menu bt ra, chn
Export.
2. Hp thoi Export Package xut hin. Dng nt Browse chn mt th mc
rng export gi. Cho vo tp tin Novelty, nhn Save.
3. Tr v hp thoi Export Package. Nhn Export. Sau mt lc, thng bo The
package was successfully exported xut hin.
Th mc dng export gi gi y cha cc tp tin bao gm:
Mt tp tin gi l Novelty.PAK
Bn sao ca ActiveX DLL, CustSvr2.dll
Mt th mc gi l Clients. Th mc ny cha mt tp tin EXE gi l
Novelty. exe
Tp tin Novelty.PAK v CustSvr2.DLL c dng to bn sao cho b ci t
ca gi Novelty vo my MTS. Tp tin Novelty.exe chy trn my Client chuyn
yu cu ca i tng cha trong CustSvr2.dll vo my MTS. Mi ln chy
Novelty.exe trn my Client, ng dng tham chiu n thnh phn CustSvr2 s truy
cp n qua mng thay v truy cp ni b.
End Function
Option Explicit
Const FIRSTNAME = 1
Const LASTNAME = 2
With cboState
.AddItem "CA"
.AddItem "WA"
.AddItem "NV"
End With
End Sub
vData = mCustData.GetList(cboState.Text)
lstCustomer.Clear
For x = 0 To UBound(vData, 2)
lstCustomer.AddItem vData(FIRSTNAME, x) & _
" " & vData(LASTNAME, x)
Next x
End Sub
trong ng dng hoc thay i trong thc t kinh doanh, replication c th chuyn mt
cch t ng cc sa i cho cc Client c yu cu.
Trong Visual Basic, ta c th iu khin cch thc sao chp c s d liu dng
DAO (i tng truy cp d liu Data Access Objects). DAO l mt k thut
hng i tng cho php truy cp c s d liu. Khi ta dng DAO iu khin
Replication, ta s tng cng kh nng kim sot cch thc thit lp c s d
liu h tr sao chp, nh cu hnh v ng b ho bng chng trnh. Sau y l
cc i tng DAO cha nhng thuc tnh h tr Replication:
Chc nng i tng M t
Replication
Thuc tnh TableDef v QueryDef Xc nh i tng c c to
KeepLocal (cng nh cc i tng h tr sao chup hay khng
Microsoft Access khc nh
l biu mu v bo co)
Thuc tnh i tng Database, Xc nh i tng ( v cho
Replicable TableDef v QueryDef ( TableDefs, d liu m n cha) c
cng nh cc i tng c c sao chp vo lc ng b
s d liu Access nh bo ho hay khng.
co v m-dun chng
trnh ).
Phng thc Database To mt bn sao t Bn thit k
MakeReplica gc.
Phng thc Database ng b ho mt bn sao c s d
Synchronize liu vi Bn thit k gc.
Thuc tnh TableDef Cho php cung cp mt mnh
ReplicaFilter WHERE trong cu SQL kim
sot cc mu tin trong bng c
sao chp ( thuc tnh ny h tr
Sao chp mt phn ).
FPT Software Solution Trang:243/261
Gio trnh o to Visual Basic 6.0
Dim db As Database
Dim pr As Property
Dim td As TableDef
Option Explicit
Dim db As Database
FPT Software Solution Trang:244/261
Gio trnh o to Visual Basic 6.0
Dim pr As Property
Dim td As TableDef
With db
Set pr =.CreateProperty("Replicable", dbText, "T")
.Properties.Append pr
.Properties("Replicable") = "T"
End With
db.Close
Set db = Nothing ' Release exclusive lock on db.
Exit Sub
ErrHandler:
Select Case Err.Number
Case 3367 ' Replicable property already exists
Exit Sub ' So ignore the error and exit
End Select
End Sub
On Error GoTo 0
Exit Sub
ErrHandler:
End Sub
Khi to v dng thuc tnh ReplicableBool, thuc tnh Replicable cng tr thnh
c sn, v 2 thuc tnh tr v cng gi tr, ngha l nu ta quy nh ReplicableBool l
True, th c thuc tnh Replicable, ta thy n l T.
iv. Lp trnh vi DAO to mt c s d liu bn sao
Hi: Bi v sao chp mt phn cho php tu chn khng sao chp, hoc sao chp
mt phn hoc sao chp ton b mu tin; trong thc t, ta khng th chuyn i
qua li gia sao chp mt phn v ton phn, ti sao khng tt c ch l sao
chp mt phn ?
p: Bn ch c th ng b ho gia Bn thit k gc v bn sao ton phn,
khng cho php ng b ho gia bn sao mt phn v bn sao khc. iu ny
cung cp s linh hot trong nhng trng hp m bn mun ng b ho nhiu
bn sao vi nhau gim bt p lc phi x l trn my tnh cha Bn thit k
gc.
17.2
Client Application
ActiveX Data
Remote Data Object Object
OLE DB Datta
ODBC Driver
Provider
ODBC Driver
OLE DB
Manager
Document
Server
Email
Server
Relational Database
Hnh: S dng ADO v OLE DB tng cng truy cp thng tin trong mt c
s d liu
FPT Software Solution Trang:253/261
Gio trnh o to Visual Basic 6.0
Trnh cung cp OLE DB khng nhiu nh trnh cung cp ODBC nhng s lng
ny tng ln ng k t khi ADO 2.0 c pht hnh vo nm 1998. Phin bn ny
c a vo Visual basic 6.0 bao gm cc trnh cung cp cc b cho SQL Server,
Oracle v Microsoft Jet/ access.
C nhiu kh nng bn c th dng ADO v OLE DB t c ngun d liu
quan h ngay khi khng c trnh cung cp OLE DB c b. Bi v c mt tnh cung
cp OLE DB tng qut cho c s d liu quan h ODBC.
Ta ch cn lp trnh vi phn giao din Ngi s dng pha Client. Bi v vic
truy cp d liu trn c trnh duyt Web v ng dng Visual basic c chuyn ht v
pha ActivateX Server, ta c th bo m rng logic chng trnh lun nht qun, bt
k loi ng dng no ang c dng.
Sau y l cu trc truy cp c s d liu ODBC dng trnh cung cp ODBC OLE
DB.
Client Application
ActiveX Data
Object
OLE DB ODBC
Provider
ODBC Driver
ODBC Driver
Manager
OLE DB
Relational Database
Cu trc ny cho php ta dng thnh phn lp trnh ActivateX thng dng trn c
trnh duyt Web v ng dng Client Visual basic.
Connection Object
Errors collection
Error Object
Properties collection
Property object
Recordset object
Command object
Cn.Provider = MSDASQL
Cn.ConnectionString = DSN = Novelty;
S dng DSN trong chui kt ni d nhin yu cu mt DSN tn l Novelty phi
thc s tn ti trn my Client.
Trng hp kt ni khng c DSN:
Cn.Provider = MSDASQL
Cn.ConnectionString = DRIVER = {SQL Server}; DATABASE = Novelty; UID
= sa ; PD = ;
Kt ni ny s ni kt Server nhanh hn bi v n khng cn c thng tin DSN
t bng ng k ca Windows. Tuy nhin, n km linh hot v n gn cht thng tin
vi chng trnh c bin dch
Recordset Object
Fields collection
Field Object
Properties collection
Property object
Screen.MousePointer = vbHourglass
Screen.MousePointer = vbNormal
End Sub
FPT Software Solution Trang:260/261
Gio trnh o to Visual Basic 6.0