Professional Documents
Culture Documents
Giao Trinh Visual Basic - FPT
Giao Trinh Visual Basic - FPT
Mc lc
Mc lc.............................................................................................................................1
Trang:1/262
Lm vic vi cc iu khin.............................................................................................2
..............................................................................................2
Nhp mn lp trnh..........................................................................................................2
Trang:2/262
6.1 Menu.....................................................................................................................2
6.1.1 Dng trnh son tho menu to menu.........................................................2
6.1.2 Vit chng trnh iu khin menu.................................................................2
6.2 Hp thoi..............................................................................................................2
6.2.1 Thng ip(Message box)...............................................................................2
6.2.2 Hp nhp(Input box).......................................................................................2
6.2.3 Cc hp thoi thng dng(Common dialog)...................................................2
6.2.4 Hp thoi hiu chnh.......................................................................................2
6.3 Thanh cng c(ToolBar)......................................................................................2
6.3.1 Trong ng dng n gin................................................................................2
6.3.2 Nhng i tng.............................................................................................2
6.4 Thanh trng thi...................................................................................................2
6.5 X l chut v bn phm......................................................................................2
6.5.1 s kin chut...................................................................................................2
6.5.2 Hiu chnh con tr chut.................................................................................2
6.5.3 S kin bn phm.............................................................................................2
7
X l tp tin......................................................................................................................2
Trang:3/262
Trang:4/262
11.1 ADD-INS...........................................................................................................2
11.2 Cc cng c trong ADD-INS.............................................................................2
11.2.1 Trnh ci t ng dng.................................................................................2
11.2.2 Trnh i tng d liu t ng...................................................................2
11.2.3 Trnh xy dng d liu t ng....................................................................2
11.2.4 Trnh thit k Add-ins t ng.....................................................................2
11.2.5 Trnh thit k t ng...................................................................................2
11.2.6 Tin ch xy dng lp...................................................................................2
11.2.7 Trnh to thanh cng c t ng..................................................................2
11.3 Trnh ng gi v trin khai ng dng..............................................................2
11.3.1 Pht hnh ng dng......................................................................................2
11.3.2 Trnh ng gi v trin khai ng dng.........................................................2
11.3.3 M trnh ng gi v trin khai trong VB....................................................2
11.3.4 M trnh ng gi v trin khai nh mt ng dng c lp........................2
11.3.5 Thi hnh Wizard di ch silent.............................................................2
11.3.6 Setup toolkit.................................................................................................2
11.4 Bi tp................................................................................................................2
12 Nhng khi nim c bn v CSDL..................................................................................2
Trang:5/262
Trang:6/262
Trang:7/262
Trang:8/262
Trang:9/262
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.
Trang:10/262
Trang:11/262
Trang:12/262
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.
Trang:13/262
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.
Trang:14/262
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.
Trang:15/262
Trang:16/262
Trang:17/262
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, hoc 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.
S kin l kt qu ca mt hnh ng no : di chuyn chut, nhn nt bn
phm, hoc g vo hp vn bn
S kin
Change
Xy ra khi
Ngi s dng sa i chui k t trong hp kt hp hoc hp vn
bn
Click
Ngi s dng dng chut click ln i tng
Dblclick
Ngi s dng dng chut click p ln i tng
DragDrop
Ngi s dng ko r mt i tng sang ni khc
DragOver
Ngi s dng ko r mt i tng ngang qua mt iu khin khc
GotFocus
a mt i tng vo tm ngm ca ngi s dng
KeyDown
Ngi s dng nhn mt nt trn bn phm trong khi mt i tng
ang trong tm ngm
KeyPress
Ngi s dng nhn v th mt nt trn bn phm trong khi mt i
tng ang trong tm ngm
KeyUp
Ngi s dng th mt nt trn bn phm trong khi mt i tng
ang trong tm ngm
LostFocus
a mt i tng ra khi tm ngm
MouseDown Ngi s dng nhn mt nt chut bt k trong khi con tr chut
ang nm trn mt i tng
MouseMove Ngi s dng di chuyn con tr chut ngang qua mt i tng
MouseUp
Ngi s dng th nt chut trong khi con tr chut ang nm trn
mt i tng
Trang:18/262
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.
Trang:19/262
hoc l nhn nt phi chut ln biu mu, ta s thy mt menu hin th.
chn Properties.
6.
Trang:20/262
Trang:21/262
Trang:22/262
Trang:23/262
Trang:24/262
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
Trang:25/262
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.
Trang:26/262
3.2.5 Lu v t tn n
3.2.5.1 Lu n
Khi lu n tng tp tin trong n s c lu trc k tip l tp tin n.
Trong ln lu n u tin, Visual Basic ngh tn cho tng tp tin, thng n ly
tn biu mu v c phn m rrngt u thuc vo loi tp tin
1. t menu file chn Save Project
2. nu y l ln u lu n hoc ta va thm mt biu mu hoc
module, hp thoi save File as xut hin ln lt cho tng tp tin
3.2.5.2 i tn
Ta khng nht thit dng tn m Visual Basic ngh, m c th t tu . tuy
nhin nn dt tn sao cho gi nh
1. a vo mt tn v n nt save
2. Tp tin cui cng c lu l tp tin n Nu ta t tn cho n
thng qua hp thoi project properties, Visual Basic s t ng ngh
Project_Name.vbp. Lc ny, ta c th i li tn khc tu thch, v d
nh SaveTest.vbp
3.2.6 M n c sn
Ta c mt s n ang lm vic. Khi ng Visual Basic, chn menu File. Phn
di menu lit k danh sch cc n mi nht m ta lm vic, chn n cn
m. nu n khng xut hin trong danh sch, ta phi ch ra ng dn.
3.2.6.1 m tp tin vo lc khi ng Visual Basic
Ln u khi ng Visual Basic, hp thoi New project xut hin. ta c th chn
m n mi nht hoc c sn trn a ngay t hp thoi ny. nu khng mun hp
thoi ny xut hin mi ln khi ng Visual Basic, xo nh du trn hp nh du
(checkbox) nm bn di hp thoi.
3.2.6.2
M n c sn
Trang:27/262
Trang:28/262
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:
-
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
Trang:29/262
Trang:30/262
Trang:31/262
3.2.10
Sa i thuc tnh n
T menu Project, chn <tn n > Properties. Hp thoi Project Properties xut
hin. nhng sa i trn hp thoi ny s c lu trn tp tin.vbp
Trang:32/262
Chn la
Startup Object
Gii thch
Tn biu mu c hin th hoc tn th tc c thi
hnh u tin khi chng trnh c khi ng
Project Name
Tn n, n khng c cha du chm, khong trn
v phi bt u bng ch ci. Tn n khng c qua
s 37 k t
Help File
Tn tp tin h tr km theo n
Project Help Context s ID ca ch Help c hin th khi ngi s dng
ID
click vo nt ?
Project Description
Tn gi nh ca n. N c hin th trong
References v Object Browser
Trang:33/262
Trang:34/262
Lm vic vi cc iu khin
Trang:35/262
Trang:36/262
Trang:37/262
4.2 Cc iu khin ni ti
Cc iu khin ni ti gm c:
iu khin
M t
Label
Hin th chui k t khng i trn biu mu
Frame
Cho php ngi s dng chn hoc khng chn mt kh nng
no .
CheckBox
Cho php ngi s dng chn hoc khng chn mt kh nng
no
ComboBox
Cho php ngi s dng chn t danh sch cc chn la hay
nhp liu mi
HscrollBar
Cho php ngi dng s dng cun ngang qua mt iu khin
cha d liu khc
Timer
Cho php chng trnh t ng thi hnh mt cng vic no
vo mt thi im, khng cn tng tc ca ngi s dng.
DirListBox
Cho php ngi s dng chn mt th mc
Shape
Hin th mt dng hnh hc trn biu mu
Image
Hin th hnh nh ho trn biu mu nhng khng th lm
ni cha
OLE Container
Cho php thm chc nng lp trnh ca mt iu khin vo ng
dng
PictureBox
Hin th hnh anh trn biu mu v c th dng lm ni cha.
TextBox
Dng trnh by vn bn, nhng cng cng cho php ngi s
dng sa i hay thm mi vn bn
CommandButton Cho php ngi s dng thc hin mt hnh ng
OptionButton
Cho php ngi s dng chn la t mt nhm c hai hay nhiu
kh nng tr ln.
ListBox
Cho php ngi s dng chn t danh sch cc phn t
VscrollBar
Cho php ngi s dng cun dc qua mt iu khin cha d
liu khc
DriveListBox
Cho php ngi s dng chn a
FileListBox
Cho php ngi s dng chn mt tp tin
Line
Hin th mt on thng trn biu mu
Data
Cho php lp trnh kt ni d liu
Sau y, ta s tm hiu v cc iu khin ni ti ph bin nht. Cc iu khin
khng c cp n trong chng ny, do nhng kh nng c bit ring ca n,
s c dnh trnh by trong cc chng ring pha sau.
Trang:38/262
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
l opt, v.v..Trong trng hp dng mng iu khin, tt c cc nt lch c cng
tn.
Khi t tn cho iu khin, ta cn tun theo mt s quy tc. iu ny s gip chng trnh ca ta
tr nn sng sa, d c, nht l khi cn g ri chng trnh hoc ta cn c li chng trnh sau vi
thng
4.2.2 Hp vn bn
L mt iu khin rt thng dng dng nhn d liu t ngi s dng cng
nh hin th d liu trn mn hnh. Visual basic v Windows t ng x l nhng
hot ng nh hin th k t khi Ngi s dng g vo, chn v xo k t, cun d
liu, nh du vn bn, ct dn,...
4.2.2.1 Kim tra gi tr nhp
Hp d liu khng t kim tra d liu nhp vo, lp trnh vin phi lm vic .
Mc nh, hp vn bn nhn v hin th mi k t m Ngi s dng nhp vo, k c
khi ta mun g mt khu hoc hc mun nhn con s. Nu ta i thuc tnh
MaxLength thnh mt con s, v d 5, ta ch nhp c 5 l t. Nu i MaxLength
v 0 th ta c th nhp tu thch.
4.2.2.2 S kin KeyPress
S kin ny c pht ra khi Ngi s dng g vo hp vn bn.
Mi k t trn bn phm c mt con s duy nht, gi l m ASCII. Ta c th xem
ton b bng m ny trong ca s help.
Trang:39/262
4.2.6 Checkbox:
4.2.7 Mt s thuc tinh thng dng:
Enable
Viable
Focus
Trang:40/262
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.
Nhng thuc tnh ny lm chm i qu trnh thm phn t vo danh sch. Ta
c th thm phn t v ng thi ch ra v tr mt mun thm:
List.AddItem Zebra,3
(Thm phn t c tn l Zebra vo v tr th 4
ca danh sch v ListIndex l 3).
chc chn gi tr dung l hp l ta dung listcount:
NNewPosition=6
If Listcount > 6 Then
List.AddItem Zebra,nNewPosition
End If
4.3 Cc iu khin M i
Trang:41/262
Nhp mn lp trnh
Prefix
Pnl
Example
Ado
Ani
Chk
pnlGroup
adoBiblio
aniMailBox
chkReadOnly
Cbo
cboEnglish
Cmd
dlg
com
cmdExit
dlgFileOpen
comFax
ctr
ctrCurrent
dat
datBiblio
Trang:42/262
dbcbo
dbgrd
dblst
dbc
dgd
dbl
drp
dtp
dir
drv
fil
fsb
frm
fra
gau
gra
grd
flex
hsb
img
imgcbo
ils
lbl
lwchk
lwcbo
lwcmd
lwfra
dbcboLanguage
dbgrdQueryResult
dblstJobType
dbcAuthor
dgdTitles
dblPublisher
drpLocation
dtpPublished
dirSource
drvTarget
filSource
fsbMove
frmEntry
fraLanguage
gauStatus
graRevenue
grdPrices
flexOrders
hsbVolume
imgIcon
imgcboProduct
ilsAllIcons
lblHelpMessage
lwchkArchive
lwcboGerman
lwcmdRemove
lwfraSaveOptions
lwhsb
lwhsbVolume
lwlst
lwopt
lwtxt
lwvsb
lin
lst
lvw
mpm
mps
mci
mnu
mvw
ch
mfg
mst
ole
opt
pic
clp
lwlstCostCenters
lwoptIncomeLevel
lwoptStreet
lwvsbYear
linVertical
lstPolicyCodes
lvwHeadings
mpmSentMessage
mpsSession
mciVideo
mnuFileOpen
mvwPeriod
chSalesbyRegion
mfgClients
mstFirst
oleWorksheet
optGender
picVGA
clpToolbar
Trang:43/262
prg
rd
rtf
shp
sld
spn
sta
sys
tab
txt
tmr
tlb
tre
upd
vsb
prgLoadFile
rdTitles
rtfReport
shpCircle
sldScale
spnPages
staDateTime
sysMonitor
tabOptions
txtLastName
tmrAlarm
tlbActions
treOrganization
updDirection
vsbRate
File Open
mnuFileOpen
File Send Email
mnuFileSendEmail
File Send Fax
mnuFileSendFax
Format Character
mnuFormatCharacter
Help Contents
mnuHelpContents
Variable naming conventions
Variable name must describe data type, scope and identifier of a variable.
Variable data types
Data type
Prefix
Boolean
Byte
Currency
Date (Time)
Double
Error
Integer
Long
Object
Single
String
User-defined type
Variant
bln
byt
cur
dtm
dbl
err
int
lng
obj
sng
str
udt
vnt
Example
Trang:44/262
Prefix Example
Note
Global
Module-level M
Local
to
None
procedure
gstrUserName
mblnCalcInProgre
ss
dblVelocity
Constants
The constant names will be UPPER_CASE with underscores (_) between words. For
example:
Example
Note
USER_LIST_MAX
NEW_LINE
Prefixes for ActiveX Data Objects (ADO)
Use the following prefixes to indicate ActiveX Data Objects.
ADO object
Prefix
Example
Command
Connection
Field
Field Collection
Parameter
Parameter Collection
Recordset
Cm
Cn
Fld
flds
prm
prms
Rs
cmTitles
cnTitles
fldName
fldsTitles
prmTitleName
prmsNames
rsTitles
Trang:45/262
'*****************************************************
' Purpose:
Locates the first occurrence of a
'
specified user in the UserList array.
' Inputs:
'
strUserList():
the list of users to be searched.
'
strTargetUser:
the name of the user to search for.
' Returns:
The index of the first occurrence of the
'
rsTargetUser in the rasUserList array.
'
If target user is not found, return -1.
'*****************************************************
Function FindUser (strUserList() As String, strTargetUser As _
String)As Integer
Dim inti As Integer
' Loop counter.
Dim blnFound As Integer
' Target found flag.
intFindUser = -1
inti = 0
While inti <= Ubound(strUserList) and Not blnFound
If strUserList(inti) = strTargetUser Then
blnFound = True
intFindUser = inti
End If
Wend
End Function
Grouping Constants
FPT Software Solution
Trang:46/262
"10.01"
11
= vntVar1 + vntVar2
= vntVar1 & vntVar2
'vntResult = 21.01
'vntResult = 10.0111
Other conventions
Error trapping in development progress must follow these rules:
- Cascading error trapping. That mean all called functions will return system error
codes, and showing message box will be implemented at the most exterior
function/procedure.
- All system message will be located in resource file.
- Showing message boxes are implemented by pass parameters to a showing message
global function.
- Error code contains 3 number.
- Versioning all modules: form module, code module...
- Display solution: 800x600 pixels
- Font size setting: Large font
- All of file name (*.vbp, *.frm, *.bas...) must less than 3 characters.
- Error code = 0 is OK.
- Error code < 0 is error.
- Error code >0 is warning.
- Function names should begin with a verb, such as InitNameArray or CloseDialog.
Conventions
Note
Trang:47/262
In Vietnamese
MS Sans serif
Default
Black
Normal
100 Points
Right
Left
Default
Default
Default
Chp nhn
Thot
Hng dn
Thm mi
Xo
Sa
ng
Ghi
Chp nhn
ng
Sample:
Property
Value
All colors
Default
Height
All colors
315
Default
Height
375 Points
Note
Check box
Combo box,
down list box
drop-
Command button
Trang:48/262
Button face
VB Default
Border style
Back color
Startup position
Fixed length
Button face
CenterScreen
VB Default
Back color
Button face
VB Default
Width
260 Points
Height
260 Points
Height
255 Points
Height
All color
285 Points
Default
Form
Label
Vervical scroll bar
Horizontal scroll bar
Option button
Text box
Trang:49/262
Conventions
Note
Property
Setting
Note
Font name
Font style
Justify
Space
between
report title and
collumn heading
.VnArialH
Bold
Paper center
50 Points
Font name
Font style
Font size
Justify
Before
row
spacing
After row spacing
.VnArialNarrow
Bold
10
Column left
6 Points
Font name
Font style
Font size
Justify
.VnArialNarrow
Bold
9
Depend on column data type
(Number: right, string: right,
date: center)
0
Report title
Should be
reviewed
Colunm
heading
Report
(data)
6 Points
body
Row spacing
Total row
Font name
Font style
Font size
Justify
Position
.VnArialNarrow
Bold
9
Right
Under
data
block
summarized
that
Trang:50/262
1 Point
Report boder
Width
1 Point
Boder
column
title only
Page number
Font name
Font size
Font style
Position
.VnArial
Style
9
Normal
Right, bottom of page (Report
footer)
Page/Total page
Font name
Font size
Font style
Justify
.VnArial
10
Normal
Margin left
Font name
Font size
Font style
.VnArial
10
Normal
Sample:
Left subtitle
Column heading 1
Report title
Column heading 2
Right subtitle
Column heading 3
Column heading 4
Report body 4
Report body 4
Report body 1
Report body 1
Report body 2
Report body 2
Report body 3
Report body 3
Report body 1
Report body 1
Report body 2
Report body 2
Report body 3
Report body 3
Total row 4
Report body 4
Report body 4
Total row 4
(Page number) 1/5
Trang:51/262
Trang:52/262
Trang:53/262
Private
Bin ch tn ti v hot ng trong
th tc
Bin ch tn ti v hot ng trong
m-un
Public
Khng c
Bin tn ti v hot ng
trn mi m-un
5.4.5 Hng
Dng cha nhng d liu tm thi nhng khng thay i trong sut thi gian
chng trnh hot ng. S dng hng s lm chng trnh sng sa v d c nh
nhng tn gi nh thay v cc con s. VB cung cp mt s hng nh ngha sn,
nhng ta c th t to hng.
Ta c th dng ca s Object Browser xem danh sch cc ng dng hng c sn
ca VB v VBA( Visual basic for Application). Cc ng dng khc cung cp nhng
th vin i tng, nh Microsoft Exel, Microsoft Project, hoc cc th vin ca iu
khin ActiveX cng c hng nh ngha sn.
Trong trng hp trng tn hng trong nhng th vin khc nhau, ta c th dung
cch ch r tham chiu hng:
[<Libname>][<tn m-un>]<tn hng>
Libname l tn lp, tn iu khin hoc tn th vin.
5.4.5.1 Khai bo hng
|Public|private|Const<tn hng>[As<kiu d liu>]= <biu thc>
Trang:54/262
Trang:55/262
Trang:56/262
Trang:57/262
Hm chuyn i
Cbool
Cbyte
i sang kiu
Boolean
Byte
Trang:58/262
Currency
Date
Double
Integer
Long
Single
String
Variant
Error
5.4.5.11.1
Mng c chiu di c nh
Trang:59/262
5.4.5.11.2
Trang:60/262
5.4.5.11.3
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.
Trang:61/262
Trang:62/262
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.
Trang:63/262
Trang:64/262
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
Trang:65/262
5.8 By li
5.8.1 Lnh On Error
Lnh On Error dng trong hm hay th tc bo cho Visual basic bit cch x k
khi li xy ra.
On Error GoTo <Nhn>
Dng On error Goto 0 tt x l li.
5.8.2 Kt thc by li
Trang:66/262
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.
Trang:67/262
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.
Trang:68/262
Th hin
OK
OK, Cancel
Abort, Retry, Ignore
Yes, No, Cancel
Yes, No
Retry, Cancel
Trang:69/262
Gii thch
Xy ra khi ngi s dng nhn mt nt chut bt k.
Xy ra khi ngi s dng th mt nt chut bt k.
Xy ra khi con tr chut di chuyn n mt im mi trn m hnh
Trang:70/262
Trang:71/262
Trang:72/262
X l tp tin
Trang:73/262
X
X
X
Trang:74/262
Trang:75/262
Trang:76/262
Trang:77/262
Trang:78/262
Hnh 9.1
Windows
8.1.1
Th vin lin kt ng
Trang:79/262
Trang:80/262
Trang:81/262
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
Trang:82/262
Trang:83/262
im quan trng trong khai bo tham s truyn cho API l t kho Byval.
Vi chng trnh thng thng, nu truyn gi tr cho hm, Visual Basic bit rng
n ch x l vi bn sao ca tham s.
Function Square(Byval Number as Double) as Double
Mt cch khc truyn tham s l truyn tham chiu. tham s truyn l bin ch
khng phi l bn sao ca n. Do nu hm thay i tham s, cc thay i ny s
nh hng ln bin truyn vo. Nu khng ch r Byval, VB s t ng xem l
truyn tham chiu.
Nu l hm hoc th tc do ta vit, nu c sai st dothiu Byval, hu qu khng
nghim trng, Windows khng b treo.
Tuy nhin, vi cc DLL, tnh hnh nguy him hn nhiu. Nu ta qun Byval, VB
t ng truyn mt con tr n bin. N cho bit a ch ca bin trn vng nh. Sau
hm ny n a ch v ly gi tr v.
Nu mt hm ca DLL ch mt kt qu trong khong t 0 n 3, v ta truyn mt
bin tham chiu, gi tr thc s truyn vo c th l 1002342, l a ch vng nh ca
bin. Hm ny s x l s 1002342 thay v s thuc khong (0-3), kt qu l h thng
treo.
Khng h c thng bo li y; ta ch bit c API b li khi h thng ri lon
v treo cng. Mt trong nhng kinh nghim khi lm vic vi API l lu li. V chng
ta ang mo him ra ngoi vng an ton ca Visual Basic, khi b li, h thng treo v
ta mt ht d liu. Lun lun lu n trc khi chy on chng trnh goin API.
T menu Tools, chn Options m hp thoi Options. Chn tab Environment, nh
du vo tu chn Save Changes.
Trang:84/262
M t
M tp tin (video, m thanh, nhc, v.v...) chun b Play
ng tp tin ang m, ngn cm hot ng Play
Dng Play trn tp tin hin hnh
Dng hn Play
Tm mt v tr trong tp tin
Play tp tin ang m, pht ra m thanh trong loa
M t
Tn ca tp tin ang m
Chiu di ca tp tin ang m
V tr hin hnh trong tp tin ta c th kt hp vi thuc tnh
Length hin th trng thi Play
Mt t cho bit trng thi tp tin (Play, dng tm, dng hn,
v.v... )
Nu l True, chng trnh s ch n khi Play xong mi lm
tip. Nu l False, n thi hnh theo kiu a nhim
V d mu - S dng lp Multimedia
1) M tp tin TestMM.vbp
2) iu chnh kch c biu mu chnh v v mt nt lnh v mt iu khin hp
thoi thng dng:
Trang:85/262
Trang:86/262
Thi hnh chng trnh. Tm mt tp tin multimedia trn a cng (thng cha
trong th mc \Windows\Media) v play.
Lu rng play cc tp tin m thanh nh WAV v MID, ta cn c card m
thanh trn my
.
Trong dng u ca s kin click, ta to mt i tng multimedia dn xut t lp
MMedia. y l bc chuyn t mt lp sang mt i tng.
Private Sub Command1_Click()
Dim Multimedia As New MMedia
Trang:87/262
Trang:88/262
Nu
khng thy iu khin
ProgressBar trn hp cng c, t
menu
Project,
FPT Software Solution
chn
Components,
Trang:89/262
Trang:90/262
...
...
End Sub
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.
Public Sub mmOpen(ByVal sTheFile As String)
Dim nReturn As Long
Dim sType As String
If sAlias <> "" Then
mmClose
End If
Select Case UCase$(Right$(sTheFile, 3))
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
End Property
Trc ht sAlias c kim tra xem tp tin c ang m hay khng ? Nu cha
m, gi tr tr v t th tc thuc tnh l 0. Nu tp tin m ri, lnh Status Length
ca MCI c dng.
Ta khng lo v cch tnh chiu di tp tin, v n v o ph hp vi thanh din
tin.
Lnh Status l lnh MCI c bit, c th kt ni vi cc t kho nh Length,
Position, Mode xc nh cc thng tin v tp tin hin hnh. N tr v cc thng tin
ny trong mt chui k t c chiu di nht nh c truyn vo mciSendString.
Trong v d ny chui tr v l sLength v di 255 k t.
D nhin, n khng lun cha 255 k t tr v t lnh Status. Dng hm InStr
ct b cc k t 0 lp y khong trng.
Chiu di cha trong chui c trch chui v chuyn i sang kiu s trc khi
gn cho Length.
...
Tr li s kin Command1_Click. Cho ti gi, ta nh ngha thuc tnh Wait.,
m tp tin, thit lp thanh din tin. Trc khi chi tp tin, ta quy nh Timer. Sau ,
ta chi tp tin bng cch gi phng thc mmPlay ca i tng Multimedia.
If CommonDialog1.Filename <> "" Then
Multimedia.Wait = False
Multimedia.mmOpen CommonDialog1.Filename
ProgressBar1.Value = 0
ProgressBar1.Max = Multimedia.Length
Timer1.Enabled = True
Multimedia.mmPlay
End If
M t
Chi mt tp tin
Tm dng chi, sn sng bt u mi lc
Dng hn - cn chuyn n mt v tr no tip tc chi
Theo sau l mt con s, chuyn n v tr trong tp tin
Tr v mt chui k t th hin trng thi tp tin(ang choi, ang
m, tm dng, dng hn....)
Tr v v tr tp tin m playback t n
Tr v chiu di tp tin v h tr da con s tr v t Status
Position vo mt ng cnh c ngha no .
ng tp tin v gii phng vng nh n chim trc
9.1.2.1
9.1.2.2
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.1
i tng trong VB
i tng giao tip bn ngoi thng qua thuc tnh, phng thc, v s kin
c nh ngha trc cho n. T hp ca 3 khi nim ny gi l giao din
(Interface). l nhng yu t cn bit v mt i tng s dng chng.
10.1.2
Modul Lp
MyBox.X = 1000
Tham chiu n X tng t nh khi ta x l vi mt thuc tnh thng thng trn cc
i tng hoc iu khin bt k khc. Nhng nhng g chng ta lm l cho php
ngi s dng i tng ca chng ta i X thnh gi tr m h mong mun.
By gi ta s khai bo X l thuc tnh Public, n cng tng t. Nhng n cng khng
ging hn. i vi thuc tnh Public, mi khi n b i gi tr, mt on chng trnh
bn trong lp s thi hnh. Trong on chng trnh ny, ta c th quyt nh ta mun
gi tr no m ngi s dng ch ra, v nu khng th lm mt tc v g . Do ,
s khc nhau gia bin v thuc tnh l: thuc tnh lun c mt on chng tnh
chy bn trong mi khi n c truy cp.
Dng thuc tnh thay cho bin cng hn ch kh nng sai st v gi tr truyn vo lp
c kim nghim nh on chng trnh kim tra bn trong lp.
Trong thc t, thuc tnh hu dng hn bin v i khi ta cn mt x l hn l ch gn
gi tr. V d, i thuc tnh Color ca mt hp vn bn hiu chnh lm n i mu
trn mn hnh. y l mt tc v khng th thc hin c vi bin. on chng
trnh bn trong s gi mt phng thc thi hnh tc v ny.
V d mu Thm thuc tnh vo lp.
1. Ta khai bo bin cha gi tr thuc tnh
Option Explicit
Private mvarX As Integer
Bin ny c tm hot ng bn trong modul lp.
2. Thm chng trnh vo thuc tnh X:
Public Property Let X(ByVal vData As Integer)
mvarX = vData
End Property
Public Property Get X() As Integer
X = mvarX
End Property
on chng trnh ny khng thi hnh trc tip tr phi n c gi thng qua thuc
tnh i tng.
Dim MyBox As New clsBox
MyBox.X = 100
Khi ta gn gi tr 100 cho thuc tnh X, thc cht, ta ang gi th tc Property Let X:
Public Property Let X(ByVal vData As Integer)
mvarX = vData
End Property
Gi tr 100 truyn cho tham s vData. Sau , n c gn cho bin cc b mvarX,
ngha l thuc tnh c thay i v cha vo i tng. xem gi tr thuc tnh,
ta gi:
New_Position = MyBox.X
Ngha l th tc Property Get X thi hnh:
Public Property Get X() As Integer
X = mvarX
End Property
o Th tc Property Let c gi khi i gi tr thuc tnh. Gi tr i s c
cha vo mt bin cc b bn trong lp.
o Th tc Property Get c gi khi cn c gi tr thuc tnh. Gi tr cha
trong bin cc b c tr v Property Get.
7.
To Instance cho lp
10.1.3
Tham s tu chn
10.1.4
S kin ca lp
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
10.2.1
.Caption = nIndex
.Visible = True
End With
End If
Next
If sNextOperation = "UNLOAD" Then
sNextOperation = "LOAD"
Else
sNextOperation = "UNLOAD"
End If
End Sub
4. Thi hnh on chng trnh v nhn trn nt lnh vi ln. Mi ln nhn, 5 nt
lnh c to hoc xo.
5. Lu vo a vi tn NewCtrl.vbp
Vng lp For...Next to hoc xo nt lnh ny tu theo ni dung bin sNextOperation.
Trc ht, ni dung ca sNextOperation c kim tra xem cn Load hay Unload
cc phn t. Ln u, sNextOperation cha c gn, n ri vo phn False, ngha l
Load.
Bi mc nh, iu khin mi to lc thi hnh xut hin ti cng v tr vi iu khin
gc, v khng hin th. Do , ta c th i v tr v iu chnh kch c m khng
ngi s dng thy. N cng cm Windows v li mi ln np cc iu khin, khng
nhng lm chm chng trnh m cn hin th khng c trt t trong khi ta ang di
chuyn chng. Ta ch cho chng hin th sau khi c v tr mi.
10.2.2
Next
If sNextOperation = "UNLOAD" Then
sNextOperation = "LOAD"
Else
sNextOperation = "UNLOAD"
End If
Case 1, 2, 3, 4, 5
MsgBox "You pressed Button " & Index
End Select
End Sub
3. Thi hnh chng trnh. Nhn chut trn tng nt lnh, mt thng ip xut
hin cho bit th t nt nhn.
10.2.3
Hm kim tra hp vn bn
th)
Index
Tag
0
*4
10.2.4
ComboBox
DirListBox
Frame
Line
OLE
Timer
CommandButton
DriveListBox
HscrollBar
ListBox
PictureBox
VscrollBar
MDIForm
FileListBox
Image
menu
Shape
Form
10.3 Tp hp
Mi biu mu trong ng dng c mt tp hp cc iu khin ni ti. Trong lc thi
hnh, ta c th dng tp hp truy cp n iu khin trn biu mu. Ta khng cn
bit tn ca mi iu khin, thm ch kiu iu khin. Khc vi mng iu khin, ta
khng cn khai bo, v tt c iu khin trn biu mu c t ng xem nh mt
phn ca biu mu. Khi thm hay xo mt iu khin trn biu mu, VB t ng qun
l vic thm hay xo iu khin trong tp hp.
Truy cp phn t trong tp hp tng t truy cp phn t trong mng thng thng.
Tp hp rt tin li cho cc biu mu nhp liu. V d, ta c th vit mt th tc chung
duyt qua tp hp ny v tm kim ch nhng iu khin d liu v sau gn cho
thuc tnh CSDL ca chng mt ng dn n tp tin CSDL ca khch hng.
Khc vi mng iu khin, tp hp iu khin khng h tr cc s kin. Tuy nhin,
tng iu khin trong tp hp u c nhng thuc tnh, phng thc v s kin.
10.3.1
Thuc tnh Controls ca biu mu ch c truy cp thng qua chng tnh. N thc
cht l mt mng cc bin i tng, trong , mi phn t ca mng l mt iu
khin n: phn t s 0 l iu khin u tin trn biu mu, phn t s 1 l iu
khin th 2...
S th t trong mng c gn t ng khi ta v iu khin ln biu mu trong lc
thit k. Nu c 2 hp vn bn trn biu mu, ta c th i thuc tnh Text ca tng
iu khin nh sau:
Form1.Controls(0).Text=Control 0
Form1.Controls(1).Text=Control 1
C php:
<tn biu mu>.Controls(<s th t>).<thuc tnh>=<gi tr>
10.3.2
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:
10.4.1
10.4.2
To Instance ca biu mu
10.4.3
Xc nh biu mu
10.4.4
To danh sch ca s
V d mu - To danh sch ca s
1. M n MDIChild1.vbp. Chn hin th biu mu frmParent
2. To tu chn Window trn menu
Hng
vbCascade
vbTileHorizontal
vbTileVertical
vbArrangeIcons
M t
Xp cc ca s con theo kiu thc nc tri t gc
tri trn qua gc bn phi di.
Dn u cc ca s con sao cho chng chia mn
hnh thnh nhng di ngang.
Dn u cc ca s con sao cho chng chia mn
hnh thnh nhng di dc.
Cc ca s con c thu nh thnh nhng biu
tng v c xp thng hng.
11
11.1 ADD-INS
T menu Add-ins, chn Add-ins manager.. hp thoi Add-in xut hin
Cc lnh ny bao gm :
Dng lnh SELECT
Cc lnh tu chn nh INSERT, UPDATE, DELETE
Add-In c dng khi ta cn :
11.2.5Trnh thit k t ng
Ch c trn phin bn Professional v Enterprise ca VB 6.
Dng trnh thit k Add-in t ng ( Add-in Designer ) bt u quy trnh lp trnh
cho mt Add-in bng cch ch ra cch np mc nh tn, m t, ng dng sau cng,
v cc phin bn. Trnh thit k h tr mt s on chng trnh cho cc tp tin DLL
hay EXE ng k Add-in cho ng dng sau cng.
11.2.5.1Khi to mt add-in mi
To mt Add-is bng cch chn New Project t menu File. Sau , chn Add-in
trong hp hi thoi New Project.
Trn Tab General, a vo cc thng tin c bn v m t add-in, cc thc np v cho
bit ng dng no qun l n.
Chn Tab Advanced a vo nhng thng tin b sung v cc ti nguyn v cc gi
tr trong Registry.
thm chng trnh cho add-in, nhn p chut ln Add-in Designer.
bin dch add-in, chn Meke exe hay Make add t menu File
11.2.6Tin ch xy dng lp
Ch c trn phin bn Professional v Enterprise ca VB.
Tin ch xy dng lp
Tin ch xy dng lp ( Class Buider Utility ) h tr paramArray, Optional, ByVal
v cc gi tr Default trong danh sch tham s v h tr cc Enums. Tin ch t chc
cc lp theo phn nhnh trong mt n ca Visual basic. N theo di cc lp v
pht sinh cc on chng trnh n gin thao tc trn cc lp, bao gm thuc tnh,
phng thc, s kin v enum.
Nhn ln mt lp v tp hp cho php sa i n. Tng ng vi lp c chn bn
tri v danh sch cc thuc tnh, phng thc v s kin xut hin bn phi. Enum
hin th trong Tab All.
11.3.6Setup toolkit
Setup toolkit l mt n ci t vi VB v c s dng bi Trnh ng gi v
trin khai khi n to chng trnh setup. n Setup toolkit cha cc biu mu v
chng trnh m chng trnh setup dng ci t tp tin cho ngi s dng. Khi ta
dng Trch ng gi v trin khai. Wizard bao gm setup1. exe m n setup
toolkit to ra. Tp tin ny c dng lm mt tp tin ci t chnh.
Setup toolkit cn dng iu chnh cc mn hnh hin th trong qu trnh ci t nu
ta cn thm nhng tnh nng khng cp sn bi Wizard.
Setup Toolkit cha trong th mc con \Wizards\PDWizard\Setup1 ca th mc ci
t VB.
Thn trng: Cc tp tin trong n ny s c s dng bi kt qu ca trnh ng
gi v trin khai. Trc khi sa i cn phi sao mt bn d phng trong mt th mc
khc. Nu bn sa i Setup1. exe, chng trnh setup c to bi Trnh ng gi v
trin khai s dng bn chnh sa ny thay v bn gc.
S dng Setup Toolkit bng cc np n Setup1. vbp vo Visual Basic v tin hnh
sa i trn cch hin th cng nh tnh nng ca n. Khi lm vic ny, ta cn ln
lt i qua tng bc.
11.3.6.1Cc bc sa i trnh ng gi v trin khai
Khi mun sa i Setup Toolkit nhm thay i kt qu to ra bi Trnh ng gi v
trin khai, ta lm nh sau :
Sa n Setup Toolkit cha cc li nhc, mn hnh, chc nng chng trnh hay
nhng thng tin khc. Khi hon tt, bin dch n to setup1. exe.
Thi hnh trnh ng gi, l theo cc li nhc trn mn hnh to ra mi trng pht
hnh.
11.3.6.2Cc bc to mt chng trnh Setup hiu chnh
Khi mun to chng trnh setup mt cch th cng dng setup Toolkit thay v Trnh
ng gi v trin khai, ta lm nh sau:
1. Nu cn sa n Setup Toolkit cha cc li nhc, mn hnh, chc
nng, chng trnh v cc thng tin khc.
2. Xc nh tp tin no cn phn pht, bao gm cc tp tin thi hnh, ci
t v cc tp tin lin quan.
3. Xc nh th mc ci t trn my ngi dng
4. To th cng tp tin setup.lst a ra tn v th mc ci t ca tt
c cc tp tin cha trong n.
5. Xc nh cch thc ci t tp tin.
6. To tp tin.CAB cho n, dng tin ch Makecab.
Mo: Bn c th dng Trnh ng gi v trin khai to tp tin.CAB sau
sa chng bng tay. Khi Wizard to mt tp tin.CAB, n to mt tp tin. DDF
v mt tp tin.BAT trong th mc con \Support ca th mc n. sa i
tp tin.CAB, sa trn tp tin. DDF, sau chy tp tin.BAT. Tp tin.BAT s
chy Makecab.exe to li tp tin.CAB.
7. To setup1.exe cho n bng cch bin dch dng Setup Toolkit.
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
C s d liu l g ?
S dng ca s xem d liu
To trnh thit k mi trng d liu
S dng cc iu khin d liu to giao din ngi s dng
C s d liu l phn ct li ca nhiu ng dng phn mm kinh doanh. C s d
liu rt ph bin trong th gii kinh doanh v chng cho php truy cp tp trung n
cc thng tin theo mt cc nht qun, hiu qu v tng i d dng cho vic pht
trin v bo tr. Chng ny tm hiu v cc khi nim c bn thit lp v bo tr
mt c s d liu cho mt doanh nghip, bao gm c s d liu l g, ti sao c s d
liu hu dng v dng c s d liu nh th no to ra cc gii php cho doanh
nghip.
Nu bn tng dng Visual Basic v tng lp trnh vi c s d liu. Bn s
thy chng trnh ny kh c bn, tuy nhin n s gip bn c c mt nn tng tt
ca mt h qun tr c s d liu ni chung.
Mc d cc khi nim c s d liu gn nh tng t gia cc h qun tr c s
d liu, cc nh cung cp cc h qun tr c s d liu thng c cc tn gi khc
nhau cho cc sn phm ring ca h. V d, nhiu nh lp trnh Client / Server cp
n truy cn cha trong c s d liu nh l View ; trong khi cc nh lp trnh Access
v Visual Basic li gi truy vn l QueryDef. C hai khi nim ny u l nh nhau.
Nu bn tng dng phin bn c ca VB - nht l Visual Basic 3, ta cn bit
mt vi im mi trong lp trnh c s d liu. Visual Basic cha phin bn mi nht
ca B my c s d liu Jet ( Visual Basic chia s vi Microsoft Access ). Phin bn
ny ca Jet a ra cc b sung cho b my c s d liu s c trnh by trong
chng ny. Ngoi ra, vic b sung ADO (i tng d liu ActiveX ActiveX Data
Object ), cng nh cc cng c lin quan trong mi trng pht trin, th hin nhng
thay i cho cc nh lp trnh Visual Basic. Nu quen vi pht trin d liu 32 bit
trong Visual Basic, Bn c th nhy thng n chng i tng d liu ActiveX
ADO.
12.1 C s d liu l g?
C s d liu l mt kho cha thng tin. C nhiu loi c s d liu, nhng ta ch
cp n c s d liu quan h, l kiu c s d liu ph bin nht hin nay.
Mt c s d liu quan h:
Cha d liu trong cc bng, c cu to bi cc dng cn gi l cc mu
tin, v ct gi l cc trng.
Cho php ly v ( hay truy vn ) cc tp hp d liu con t cc bng
Cho php lin kt cc bng vi nhau cho mc ch truy cp cc mu tin lin
quan vi nhau cha trong cc bng khc nhau.
12.1.1
B my (Engine) c s d liu l g?
12.1.2
Bn v trng
Bng tblRegion
TblRegion
State
RegionName
C quan h gia 2 bng thng qua trng State (Trng thi ). y l mi quan h
mt - nhiu, i vi mt mu tin trong tblRegion, c th khng c, hoc c nhiu mu
tin tng ng trong bng tblCustomer.
12.1.3
Recordset l g ?
12.1.4
Cc kiu c s d liu
M ta
Dng cha cc khi d liu ln nh l ho v cc tp tin
m thanh s ho.
Gi tr logic ng hoc sai
Gi tr s nguyn mt byte t 0 n 255
Trng s c thuc tnh c bit cha cc tr tr tin t
Gi tr 8 byte th hin ngy hoc gi t ngy 1/1/100 n ngy
31/12/9999
Ki d liu s 8 byte du phy ng
L mt s 128 bye, cng c gi l nh danh ton th duy
nht. Ta dng s ny nhn dng duy nht cc mu tin. S ny
c dng trong cc bn sao
S 2 byte u t -32768 n 32767
S 4 byte y t -2,147,483,648 n 2,147,483,647
Long binary
( OLE Object )
Meno
Single type
Text
VarBinary
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
12.1.6
To bng
Kiu d liu
Text
Long, AutoInerField=true
Text
Text
Text
Text
Text
Text
Text
Text
Text
Kch c d liu
25
N/A
45
100
100
100
2
9
25
25
255
Fixed
Yes
N/A
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Ch nh ch mc v kho chnh
12.1.6.3.1
12.1.6.3.2
Xo ch mc
2. Nhn nt RemoveIndex
3. Khi mt thng ip hi ta mun xo ch mc ny khng, nhn Yes. Ch mc
c xo
12.1.6.3.3
Xo trng LastName
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.
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
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
Quan h mt - nhiu
Trong mt thit k giao din ngi s dng, ta thc hin qu trnh copy kho
chnh ca mt bng n kho ngoi ca mt bng lin h nh mt iu khin hp
danh sch hay hp kt hp. tm hiu thm thng tin v t chc giao din.
12.1.8.3
Thit k DataEnvironment.
C th iu chnh mt cch th cng kt ni mc nh trong mt thit k
dataenvironment n tr n c s d liu. Nhung nu c s d liu c sn trong
ca s Data View, ta ch cn ko v th bng vo thit k . thc hin iu ny, ta
lm nh sau:
1. Khi ng ca s Data view, chn mt bng trong th mc Tables ( nh l
tblCustomer )
2. Ko bng ln trn thit k DataEnvironment.
3. Mt kt ni mi gi l Connection2 xut hin trong thit k, vi bng xut
hin di y.
n y, ta c th ko cc bng khc vo thit k nu thch. Khi hon tt, ta c :
Ko bng vo ca s thit k.
12.3.1
DATAENVIRONMENT
Ta c th to mt giao din ngi s dng nhanh chng bng cch dng thit k
DataEnvironment. Thit k kt hp vi c ch biu mu ca VB, cho php ta dng k
thut ko v th to mt giao din ngi s dng iu khin bng c s d liu.
thc hin iu ny, ta theo cc bc sau :
1. M biu mu ta mun dng lm giao din ngi s dng.
2. Chn bng trong thit k Data Environment ( Khng phi trong ca s Data
View ).
3. Th bng vo biu mu.
Mt giao din ngi s dng rng buc d liu s c to trn biu mu.
Cc thuc tnh
Cha DataSource
DataField ca
iu khin rng
buc d liu
Kt ni vi
Cc thuc tnh
ConnectionString,
RecordSource ca
iu khin ADO
Data
kt ni vi
C s d
liu
12.4.1
Kt ni vi mt c s d liu v lm vic vi cc mu
tin
To mt ng dng dng iu khin ADO Data rt n gin . Thc ra, nu nhng
g ta quan tm ch l duyt c s d liu th ta khng cn phi lp trnh g c . y l
mt quy trnh gm 2 bc quy nh thuc tnh ConnectionString v RecordSourse
ca iu khin Data, sau rng buc iu khin vi iu khin giao din ngi s
dng. thc hin iu ny ta theo cc bc sau :
1. Bt u mt n mi ca Visual Basic.
2. Dng menu Project Components, lp mt tham chiu n Microsoft ADO
Data Control 6.0 ( OLEDB ) bng cch chn vo hp nh du trong danh
sch.
3. Nhn nt OK, iu khin ADO Data xut hin trn thanh cng c ca Visual
Basic. Nhn p chut ln iu khin to mt instance ca iu khin trn
biu mu.
4. Di chuyn v iu chnh iu khin cho n nm gc phi di ca biu
mu, chim cng t khong trng cng tt.
5. Nhn nt phi chut ln iu khin. T menu bt ra, chn ADODC
Properties.
6. Hp thoi Properties ca iu khin xut hin. Chn nt tu chn User
Connection String ri nhn Build.
7. Hp thoi Data Link Properties xut hin. y l hp thoi ta dng kt ni
vi c s d liu trong v d S dng Data View phn trc. S dng
cng cc bc k ni n c s d liu Novelty v nhn OK khi hon tt.
Sau khi t iu khin ADO Data trn biu mu, ngi s dng c th duyt qua
cc mu tin bng cch nhn cc nt ca iu khin. iu khin gm 4 nt.
Lu rng trng thi mc inh, iu khin d liu khng cho php ngi s dng
thm,xo mu tin. Nu mun thc hin iu ny hay lm mt hnh ng no khc, ta
phi lp trnh.
Ch : Mt s iu khin ActiveX ca cc nh cung cp th 3 c thit k
thay th v m rng kh nng ca iu khin d liu cung cp bi Visual
Basic.
12.4.1.2
12.4.2
Trong phn trc, ta tm hiu v cch dng trang thuc tnh ca iu khin
ADO Data to mt giao din ngi s dng n gin. Trong phn ny, ta t to
mt giao din ngi s dng, cng dng iu khin ADO Data, nhng bng cch t
12.4.3
Data
Ngoi kh nng cho php duyt qua Recordset, iu khin ADO Data cho php ta
thi hnh cc hot ng khng i hi lp trnh. Ta c th dng chng trnh vi iu
khin d liu duyt qua tng mu tin, xo mu tin, v to mu tin mi.
Phn ln, chng trnh phi vit khi lm vic vi iu khin d liu u tp trung
trn i tng Recordset. Mt i tng Recordset tr nn sn sng khi ta quy nh
thuc tnh ConnectionString v RecordSource cho n. truy cp mt thuc tnh hay
phng thc ca mt i tng Recordset ca iu khin d liu trong chng trnh,
ta tham chiu n iu khin d liu, ri tham chiu n i tng Recordset.
V d: di chuyn n mu tin th nht ca Recordset cha trong iu khin d
liu tn l datCustomer, ta dng on chng trnh sau:
DatCustomer.Recordset.MoveFirst
Ti sao khng dng datCustomer.MoveFirst ? Cu tr li l iu khin d liu khng
ging nh d liu, thao vo , iu khin d liu di dng i tng Recordset.
to mt mu tin mi ta c 2 tu chn:
Quy nh thuc tnh EOFAction ca iu khin d liu l 2 AddNew. Gii
php ny khng i hi lp trnh.
Dng phng thc AddNew v Update ca i tng Recordset ca iu
khin d liu. Gii php ny phc tp hn, nhung cho ta kh nng iu khin
trn nhng g xy ra khi ngi s dng mun to mu tin mi. N cng thch
hp cho trng hp ta mun che du iu khin d liu i vi ngi s
dng.
cho php iu khin d liu to mu tin mi m khng cn lp trnh, ta lm
nh sau:
1. Trong n iu khin Data, quy nh thuc tnh EOFAction ca iu khin
Data l 2 AddNew.
2. Thi hnh n.
3. Nhn nt MoveLast ca iu khin data, ri nhn Next, Thay v di chuyn n
mu tin cui cng trong Recordset, iu khin d liu to mt mu tin mi. Ta
c th ni rng mu tin ny mi v tt c cc iu khin rng buc trn biu
mu u rng.
4. Nhp d liu trong cc iu khin rng buc.
5. Dng nt Previous ca iu khin Data, di chuyn n mu tin trc . Mu
tin mi c lu vo c s d liu.
Mun s dng phng thc AddNew v Update to mt mu tin mi, ta lm
nh sau :
12.4.3.2
s dng
Ta c th dng s kin MoveComplete ca iu khin ADO Data khi ng
sa i trong ng dng khi ngi s dng di chuyn t mu tin ny sang mu tin
khc.
S kin MoveComplete c kch hot sau khi mt mu tin mi tr thnh hin
hnh. y l mt trong vi s kin c kch hot khi iu khin di chuyn t mt
mu tin ny sang mu tin khc. Cc s kin khc bao gm WillChange, c kch
hot khi iu khin di chuyn t mu tin ny san mu tin khc, hay thay i mt mu
tin v s kin RecordChangeComplete, xy ra khi mt mu tin c sa i thnh
cng trong c s d liu nh mt kt qu ca hot ng trong iu khin d liu.
Ta ch yu dng s kin RecordChangeComplete thc hin cc tc v sau:
strRegion = Northeast
Case NC, KY, AR
strRegion = South
Case OK, MN, MI, OH
strRegion = Midwest
Case MT
strRegion = West
Case Else
strRegion = Unassigned
End Select
lblRegion.Caption = strRegion
End Sub.
C mt cnh bo quan trng lin quan n vic s dng phng thc Delete ca
i tng Recordset vi iu khin Data. Khi xo mt mu tin, khng c mu tin hin
hnh xut hin thay th, recordset khng c ch ng. V vy, gii quyt rc ri
ny, ta phi di chuyn sang mu tin khc trong Recordset ( ch yu dng phng thc
MoveNext hay MoveLast ca Recordset )
Lu : Nh ni trong phn to mu tin v dng cc s kin ca iu
khin d liu, ta phi bo m rng c mt mu tin hin hnh trong
recordset ca iu khin d liu khi ta thi hnh phng thc Delete, hoc l
ng dng s bo li. trnh li ny ta phi thit k giao din ngi dng
sao cho ngi s dng khng th xo mu tin khng hin hu . Gii php
hu hiu l kim tra thuc tnh EOF v BOF ca recordset trc khi tin
hnh phng thc Delete, nu BOF hay EOF l True, th phng thc
Delete s tht bi.
12.4.3.4
12.4.3.5
Validation mc b my c s d liu
12.4.4
DATA
iu khin ADO Data c mt s thuc tnh b sung qun l cch hot ng ca
n, ta c th quy inh hu ht cc thuc tnh vo lc thit k. V vy, ta khng cn lp
trnh.
12.4.4.1
cu truy vn SQL. Tuy nhin ADO cho php ta dng ngn ng bt k m ngun d
liu c th hiu c nh l lnh danh vn bn.
Mt th tc lu tr l mt cu truy vn hay cc lnh khc c nhng trong
bn thn c s d liu. Ta ch yu to mt th tc lu tr ( store procedure ) tn
dng kh nng qun l tp trung ca th tc truy cp c s d liu, cng nh ci tin
kh nng hot ng ca cu trc truy vn. C s d liu Jet ca Microsoft cung cp
mt dng c bn ca th tc lu tr gi l QueryDef. Microsoft SQL Server cung
cp mt b my y cc m rng n SQL cho php ta lp trnh cc th tc
lu tr.
12.4.4.2
Thuc tnh EOFAction xc nh nhng g iu khin d liu thc hin khi ngi
s dng di chuyn n cui ca Recordset. Nu ta quy nh thuc tnh l 2 AddNew,
iu khin to mt bn ghi mi khi ngi s dng i qua phn cui cng ca mu tin
hin hnh. ( Ni cch khc, gi tr ny lm cho giao din hot ng tng t biu mu
ca Microsoft Access ). Tuy nhin, nh rng gi tr ny khng phi l hot ng mc
nh ca iu khin d liu ca Visual Basic ; ta phi thay i thuc tnh lc thit k
m bo rng iu khin c phn ng nh vy.
to mt mu tin mi khi thuc tnh EOFAction ca iu khin d liu c
quy inh AddNew, ta nhn nt MoveLast, ri nhn nt MoveNext.
12.4.4.3
Bng cch quy nh thuc tnh Mode ca iu khin ADO Data, ta c th kim
sot xem nhng ngi s dng khc c truy cp c s d liu hay khng khi ng
dng ang thi hnh. V d, bng cch quy nh thuc tnh Mode l 12
adModeShareExclusive, ng dng s c tng cng kh nng truy cp loi tr n
d liu - khng ngi s dng no khc c th truy cp n n khi ng dng ang thi
hnh.
Ta cn c th m mt ngun d liu ch c ( Read only ) bng cch quy nh
thuc tnh Mode l 1 adModeRead ; ng dng ca bn s nhn c kh nng truy
cp ch c c d liu. u im ca gi tr ny l, ci tin kh nng hot ng, bi
v b my c s dliu khng cn quan tm n nhng vn rc ri nh l kho
mu tin hay kt ni nhiu ngi s dng xy ra khi c nhiu hn mt ng dng truy
cp n cng mt mu tin.
12.5 Tng kt
Chng ny trnh by nhng khi nim c bn ca c s d liu ni chung, cng
nh cch thc kt ni d dng nht ca ng dng Visual Basic vi c s d liu
Microsoft Access.
Cn nh rng, mc d Visual Basic v Microsoft Access chia s cng mt b my
c s d liu, c s d liu kiu Access khng phi l kh nng duy nht ca Visual
Basic.
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.
13
DBEngine
DBEngine
Workspace
Database
TableDef
QueryDef
Field
Field
Index
Parameter
Recordset
Container
Field
Relation
Field
Document
Field
object only
object only
User
Object and Collection
Group
Group
User
Error
13.1.1
Lp trnh vi i tng
13.1.2
13.1.3
13.2.1
Database
y l phng thc ca i tng Workspace
Ta dng phng thc OpenDatabase to mt i tng Database. Phng thc
ny tr v mt i tng Database ( do , trc khi dng OpenDatabase, ta phi
khai bo mt bin i tng c kiu l Database cha gi tr tr v ca phng
thc ).
Dim db As Database
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Msgbox The database & db.Name & is now open.
Phng thc OpenDatabase c tham s bt buc tn ca c s d liu ta mun m.
C php : (i tng Workspace c mc nh )
OpenDatabase(dbName, [options], [readonly],[connect])
Tham s
Options
M t
Nu tham s ny l true,c s d liu m trong ch loi tr;
khng ai c th m c s d liu trong ch loi tr. Nu gi tr
ny l false, nhng ngi khc c th m c s d liu.
Readonly
Connect
13.2.1.2
hnh ng
S dng Execute ca i tng Database thi hnh mt cu lnh SQL trn SQL.
Phng thc ny nn dng :
Cp nht, xo hay sao chp mu tin (trong Access / Jet, ta gi l cc truy vn
hnh ng )
Sa cu trc d liu
Cc cu truy vn SELECT c thi hnh qua phng thc OpenRecordset ca
Database.
13.2.2
tng Recordset
Trong DAO, cc i tng Database, Connection, QueryDef, TableDef, v Recordset
u c phng thc OpenRecordset. Tt c u c dng vi cng mc ch; truy
cp d liu cha trong c s d liu.
Phng thc OpenRecordset thc s l mt hm tr v mt i tng Recordset, ta
cn khai bo mt i tng Recordset trc khi s dng OpenRecordset.
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("tblCustomer")
Tham s bt buc duy nht ca phng thc OpenRecordset l ngun d liu. y l
chui k t, theo nguyn tc l tn ca mt bng hoc mt nh ngha truy vn cha
sn. Nhng n cng c th l mt cu lnh SELECT SQL:
Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("SELECT * FROM tblCustomer" & _
" Order By [LastName]")
13.2.2.2
13.2.3
ngha
dbOpentable
dbOpenDynamic
dbOpenDynaset
tng Field, ta ch cn tham chiu n i tng Field; ta khng nht thit phi tham
chiu tng minh n thuc tnh Value).
13.4.1
Ngoi cc phng thc trn, i tng Recordset cung cp 2 thuc tnh cho ta bit
khi ta di chuyn v u hoc v cui recordset.
Thuc tnh EOF(end of file) l True khi ta di chuyn qu mu tin cui cng
ca recordset.
Thuc tnh BOF(begin of file) l True khi ta di chuyn n mt v tr trc
mu tin th nht trong recordset.
BOF
Mu tin 1
Mu tin 2
...
EOF
13.4.2
hay khng
Thuc tnh BOF v EOF lun c sn, thm ch trong mt recordset khng c mu tin.
Trn thc t, cch tt nht xem recordset c cha mu tin hay khng l kim tra
gi tr ca c hai thuc tnh EOF v BOF. Nu c BOF v EOF u l True,
recordset khng cha mu tin.
13.4.3
trong mt recordset
Ta dng thuc tnh RecordCount xc nh s mu tin trong mt recordset. Nhng
lu rng gi tr ca RecordCount s khng hp l nu ta cha chuyn n mu tin
cui cng trong Recordset.
Bi v Jet x l truy vn trn 2 giai on. Giai on u ch tr v d liu cho ng
dng hot ng m khng b chm tr trong x l. Giai on th hai thi hnh bn
di, tr v ton b d liu yu cu truy vn hon chnh. Jet thc hin iu ny ch
nhm mc tiu tng kh nng hot ng, v vy, vic thi hnh ng dng khng b cn
tr trong khi ch tr v mt khi lng d liu ln. Ta khng iu khin trc tip qu
trnh ny, nhng ta cn bit rng n tn ti v cch thc lm vic vi n khi ta mun
bit chnh xc c bao nhiu mu tin ang c trong mt recordset chng hn.
Option Explicit
' References: Microsoft DAO 3.51 Object Library
Dim db As Database
Private Sub Form_Load()
Set db = OpenDatabase("..\..\db\novelty.mdb")
End Sub
Private Sub cmdCount_click()
Dim rs As Recordset
Set rs = db.OpenRecordset("tblInventory")
rs.MoveLast
MsgBox "There are " & rs.RecordCount & _
" items in inventory.", vbInformation
End Sub
Lu : Nu mun xc nh s mu tin l 0 dng thuc tnh BOF v EOF thay v
dng RecordCount
13.4.4
mu tin
Ta c th sa i mu tin hin hnh trong mt i tng Recordset cp nht c
bng cch dng phng thc Edit v Update ca recordset. mung sa i gi tr ca
mt trng trong mt Recordset, theo cc bc sau :
1. Dng cc phng thc duyt ca i tng Recordset di chuyn n mu
tin cn sa i.
2. Thi hnh phng thc Edit ca recordset.
3. Dng tp hp Fields ca i tng Recordset gn gi tr cho trng trong
mu tin :
rs.Fields(LastName)= Smith
hoc
rs!LastName = Smith
4. Lu mu tin vo c s d liu bng cch dng phng thc Update ca
Recordset.
13.4.5
tin mi
Ta c th to mt mu tin mi trong i tng Recordset cp nht c bt k bng
cch dng phng thc AddNew v Update. To mt mu tin mi trong mt
recordset l qu trnh 3 bc:
1. Thi hnh phng thc AddNew ca RecordSet. N thm mt mu tin mi,
trng vo cui ca recordset.
2. Gn gi tr cho mu tin mi bng cch s dng cu lnh gn m ta thng
dng vi cc trng c s d liu.
3. Dng phng thc Update ghi mu tin vo c s d liu.
Option Explicit
' References: Microsoft DAO 3.51 Object Library
Private Enum TextBoxes
txtProduct = 0
txtCatalogNumber = 1
txtWholesalePrice = 2
txtRetailPrice = 3
End Enum
Private db As Database
Private rs As Recordset
Private x As Integer
Private Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Set rs = db.OpenRecordset("tblInventory")
For x = txtProduct To txtRetailPrice
TextBox(x).Enabled = False
Next x
cmdSave.Enabled = False
cmdNew.Enabled = True
End Sub
Private Sub cmdNew_Click()
' Create a new record
rs.AddNew
' Enable data entry controls
For x = txtProduct To txtRetailPrice
TextBox(x).Enabled = True
Next x
TextBox(txtProduct).SetFocus
cmdSave.Enabled = True
cmdNew.Enabled = False
End Sub
Private Sub cmdSave_Click()
' Map UI controls to fields
rs.Fields("Product") = TextBox(txtProduct)
rs.Fields("CatalogNumber") = TextBox(txtCatalogNumber)
rs.Fields("WholesalePrice") = TextBox(txtWholesalePrice)
rs.Fields("RetailPrice") = TextBox(txtRetailPrice)
' Commit data to database
rs.Update
' Clear out UI
For x = txtProduct To txtRetailPrice
TextBox(x).Text = ""
TextBox(x).Enabled = False
Next x
cmdSave.Enabled = False
cmdNew.Enabled = True
End Sub
13.4.6
nh phn
Ta c th cha d liu nh phn vo trong c s d liu. D liu nh phn bao gm
hnh nh hay tp tin m thanh ngha l bt k nhng g ta mun cha khng ch l
gi tr s hay chui k t.
Lu : Microsoft Access tham chiu n trng nh phn nh l trng OLE Object
(i tng OLE). Ngoi ra, ta c th dng k thut AppendChunk ny ni thm
d liu vo mt trng memo cng nh trng nh phn. Cc phng thc thao tc
trn trng nh phn tn ti gn nh ng dng trong c 3 m hnh i tng truy
cp d liu DAO, RDO v ADO.
Khi ta gn mt gi tr cho trng nh phn trong chng trnh, ta cn thi hnh mt s
bc b sung ly d liu trong trng. Bi v d liu nh phn khng c chiu di
c nh nh cc kiu d liu khc; mt mu d liu nh phn c th ln n hng
mega- byte hoc hn.
V vy, t mt mu d liu nh phn trong c s d liu, trc ht ta phi chia n
thnh nhiu on d liu nh phn, ta ni n vo trng bng cch dng phng thc
AppendChunk ca i tng Field ca recordset.
13.4.7
Nu ta ang lm vic vi mt recordset, ta dng cc phng thc FindFindFirst, FindNext, FindLast v FindPrevious.
Nu ta truy cp trc tip n mt recordset kiu bng, ta c th dng phng
thc Seek nh v mu tin. Phng thc ny kh lp trnh hn, nhng n
nhanh hn v ta c th dng mt ch mc ca bng vi phng thc Seek.
13.5.1
mt recordset
tm mt mu tin trong mt Recordset, ta dng mt trong bn phng thc tm
kim ca i tng Recordset :
FindFirst
FindLast
FindNext
FindPrevious
C php ca bn phng thc nh nhau - s dng mt trong bn phng thc tm
kim ny, ta truyn mt mnh WHERE ca SQL vo phng thc ch ra thng tin
ta cn tm kim. Sau khi thi hnh phng thc, mu tin hin hnh trong i tng
Recordset tr thnh mu tin tho mn tiu ch WHERE. Nu tm kim khng nh v
c mu tin yu cu, thuc tnh NoMatch ca i tng Recordset c gi tr l True.
Loi phng thc ta dng cng xc nh cch thc tm thy mu tin. V d, nu dng
FindFirst , b my c s d liu s di chuyn n mu tin th nht trong recordset
tho tiu ch. FindNext v FindPrevious, ngc li, tm cc mu tin hin hnh.
im quan trng cn lu l, khc vi mt cu truy vn SELECT ca SQL, tm kim
khng sinh ra mt recordset. Khi b my c s d liu tm ra mu tin tho tiu ch tm
kim, n di chuyn n mu tin ; mu tin tr thnh mu tin hin hnh. Nu khng
c mu tin tm thy, mu tin hin hnh s c gi nguyn v thuc tnh NoMatch
ca i tng Recordset c gi tr l True.
13.5.2
ch mc
tin hnh mt tm kim trn mt ch mc, trc ht bng phi c mt ch mc.
V d sau y, gi nh rng ta c mt bng tblCustomer vi mt ch mc trn trng
LastName. Tn ca ch mc l LastNameIndex.
Option Explicit
' References MS DAO 3.51 Object Library
Private db As Database
Private rs As Recordset
Private Sub Form_Load()
Set db = OpenDatabase("..\..\db\novelty.mdb")
Set rs = db.OpenRecordset("tblCustomer", dbOpenTable)
End Sub
Private Sub cmdSeek_Click()
rs.Index = "LastNameIndex"
rs.Seek "=", txtLastName.Text
If rs.NoMatch Then
13.5.3
Next
Next
End Sub
Lu :C th dng on chng trnh tng t nh trn lp qua sut cc tp hp
khc ca DAO. V d, c th dng chng trnh ny xem tt c c s d liu trong
mt workspace, cc nh ngha truy vn QueryDef trong mt c s d liu, hoc l
cc trng trong mt TableDef.
13.5.4
mt Recordset
Khi ta tin hnh cc tc v trn mt i tng Recordset, ta thng di chuyn y
trong recordset. Dng thuc tnh Bookmark ca i tng Recordset gi li mt v
tr sao cho ta c th quay li v tr sau ny.
Thuc tnh Bookmark cho ta mt cch hiu qu di chuyn gia hai hay nhiu mu tin.
S dng bookmark th nhanh hn l lp i lp li phng thc Find di chuyn qua
tng mu tin.
Mi mu tin trong mt recordset c th nh du bookmark c c mt s hiu
bookmark duy nht ta c th c ra hay ghi vo ti mt thi im bt k. Tuy
nhin, bookmark khng c cha trong c s d liu; n c pht sinh t ng khi
mt i tng recordset c to v b hu b khi i tng recordset b hu.
s dng bookmark, ta theo cc bc sau:
1. Di chuyn n v tr trong recordset ta mun nh du bookmark.
2. gn gi tr thuc tnh bookmark ca i tng Recordset cho mt bin
chui. N s lu bookmark duy nht cho mu tin hin hnh.
3. Khi ta mun quay li mu tin, i thuc tnh Bookmark ca recordset l gi tr
ca bin chui. Mu tin hin hnh s c i sang mu tin bookmark.
Lu : Khng phi mi kiu i tng Recordset u h tr thuc tnh Bookmark.
xc nh xem ta c th nh du bookmark trn mt kiu recordset hay khng ,
kim tra gi tr ca thuc tnh bookmarkable. Nu thuc tnh ny l True, ta c th
nh du bookmark trn Recordset.
13.5.5
13.6.1
To mt CSDL
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
Set f = td.CreateField("LastName", dbText, 50)
td.Fields.Append f
Set f = td.CreateField("FirstName", dbText, 50)
td.Fields.Append f
td.Name = "tblSupplier"
db.TableDefs.Append td
Set db = Nothing
MsgBox "The database newdb.mdb has been created."
Exit Sub
ErrHandler:
If Err = 3204 Then
MsgBox "Try deleting the database 'newdb.mdb' first, pal."
Else
MsgBox Err.Description
End If
End Sub
Bi v phng thc CreateDatabase pht ra mt li nu c s d liu c sn,
chng trnh ny cha phn x l li thng bo cho ngi s dng nhng g cm lm
khi c s d liu c sn. Cng lu rng ta khng cn to mt i tng
DBEngine. N lun c sn s dng bi ng dng.
13.6.2
13.6.2.2
sn
Ta c th s dng i tng QueryDef ca DAO to v sa i cc truy vn cha
sn. Ngoi vic to cc truy vn cha sn, i tng QueryDef cn cho php thi hnh
cc truy vn tham s ho; y l mt ly do ph bin truy cp cc i tng
QueryDef thng qua lp trnh DAO.
Ta cn c cch khc to cc truy vn cha sn thng qua DAO. l s dng
Microsoft Access hay Visuald Data Manager ca Visual Basic to cc truy vn
cha sn.
Ta to nh ngha truy vn trong c s d liu bng cch s dng i tng QueryDef
ca DAO. Cc nh ngha ny c th l tm thi, ngha l chng s bin mt khi hon
tt hoc l vnh vin cha trong c s d liu.
Ta to mt i tng QueryDef bng on chng trnh sau:
Option Explicit
' References MS DAO 3.51
Dim db As Database
Dim qd As QueryDef
Sub Form_Load()
Set db = OpenDatabase("..\..\DB\novelty.mdb")
End Sub
Private Sub cmdCreate_Click()
On Error GoTo ErrHandler
Set qd = New QueryDef
qd.SQL = "SELECT * FROM tblCustomer " & _
"WHERE LastName Like 'L*' " & _
"ORDER BY [LastName], [FirstName]"
qd.Name = "qryCustomerSortName"
db.QueryDefs.Append qd
MsgBox "Whaddya know, the query was created."
Exit Sub
ErrHandler:
MsgBox "There was an error creating the querydef. (" & _
Err.Description & ")"
End Sub
Ta ch ra tn ca QueryDef cn to bng cch s dng thuc tnh Name ca i tng
QueryDef. Nu ta c to mt QueryDef c sn, n s kch hot mt li by c.
mt chui SQL. Thi hnh phng thc ny cng lu QueryDef vnh vin trong c s
d liu.
Dim db As Database
Dim qd As QueryDef
Set db = OpenDatabase("..\..\DB\novelty.mdb")
Set qd = db.CreateQueryDef(qryCustomer , Select * from tblCustomer)
Mi ln to QueryDef, ta c th thao tc vi n trong chng trnh nh ta vn thng
lm. Cho QueryDef mt tn l xc nh xem truy vn c c cha vnh vin trong
c s d liu hay khng. Nu ta mun to mt QueryDef m khng cha vnh vin
trong c s d liu, ch cn truyn mt chui rng thay cho tham s th nht ca
phng thc CreateQueryDef.
13.6.2.5
Next
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:
Set db = OpenDatabase("..\..\DB\novelty.mdb")
End Sub
Private Sub cmdShow_Click()
On Error Resume Next
lstOutput.Clear
For Each pr In db.Properties
With pr
lstOutput.AddItem .Name & _
": " & .Value
End With
Next
End Sub
C 13 thuc tnh mc nh ca mt i tng Database hin c thng qua tp hp
Properties, bao gm nhng phn c nh nh l Name, Version, v Connect, cng
nh cc thuc tnh khng th truy cp trc tip, nh l AccessVersion v Build.
V vy, ta c th vit chng trnh nh sau:
MsgBox db.Name
Vy, ti sao ta khng vit chng trnh truy cp mt thuc tnh ca c s d liu :
MsgBox db.Properties (Name)
Cu tr li l ta c th tto cc thuc tnh hiu chnh v gn chng n bt kfy DAO
no ( khng ch n i tng Database), V d sau to mt thuc tnh mi trong c
s d liu.
Private Sub cmdCreate_Click()
On Error Resume Next
Dim prp As Property
Set prp = db.CreateProperty("DateLastBackedUp", dbDate, Now)
db.Properties.Append prp
cmdShow_Click ' update list of properties
End Sub
Sau y l c php y ca phng thc CreateProperty:
obj.CreateProperty ([propertyName], [datatype] , [value], [ddl] )
ly v thuc tnh hiu chnh sau khi to ra, ta ch cn truy cp n thng qua tp
hp Properties ca i tng Database.
13.9 Tng kt
Chng ny gii thch v l thuyt thng nht v quan trng ca lp trnh DAO. Nu
l ngi x l gii, ta c th tin hnh phn ln cc hot ng ta tng lm trong th
gii truy cp c s d liu ca Visual Basic.
13.10Hi 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.
14
14.1.1
Thit k vi DataReport
14.1.2
Ta c th xem bo co trong ch Print Preview bng cch thi hnh phng thc
Show. V d nu DataReport c gi l drCustomer th ta c th chy n bng dng
lnh:
drCustomer.Show
bo co c hin th nhe hnh di y:
14.2.1
14.2.1.1
14.2.1.1.1
14.2.1.1.2
Sau khi thit lp tham chiu n Microsoft Access t trong ng dng, ta vit
chng trnh to instance cho i tng. khi c mt i tng tham chiu n
server, Visual Basic tch hp m hnh i tng ca server vo tnh nng lit k thnh
phn t ng
14.2.1.2
14.2.1.2.1
14.2.1.2.2
14.2.1.2.3
Access
a bo co vo ng dng, ta dng iu khin ActiveX VSREPORT. iu
khin ny khng xut hin lc thi hnh; n ch c v xut ra tp tin.VRS
ci t bn DAO 3.5 ca iu khin VSREPORT, ta lm nh sau:
1.
Ci t tp tin cp nht ly t CD hoc ti xung t Internet, Web side
http://www.videosoft.com
2.
Bo m tp tin VSREP351.OCX c sn trong th mc system ca
windows
3.
Dng tin ch regsvr32 dng k tp tin OCX mi
4.
T menu Project, chn Components thm iu khin VSREPORT
a iu khin vo ng dng
1.
T menu Project, chn Components thm iu khin VSREPORT vo
n
2.
iu khin VSREPORT xut hin trong hp cng c. Nhn p chut vo
iu khin VSREPORT trong hp cng c a np vo biu mu. iu
khin s khng hin th lc thi hnh, ta khng cn bn tm v v tr iu
khin
3.
Quy nh thuc tnh Report File Name ca iu khin l tp tin.VSR ta
to trc . Sau , quy nh thuc tnh DataBase Name ca iu khin l
tn tp tin.MDB. Ta cng c th dng ca s Properties hoc dng chng
trnh
4.
Thi hnh phng thc PrintReport thi hnh bo co. Ta cn tu chn cho
php gi kt qa ra mn hnh hoc my in, tu theo gi tr thuc tnh ca
my in PrintDevice.
on chng trnh sau in trong ch PrintPreview v thi hnh bo co c s
d liu dng iu khin ActiveX VSREPORT
Option Explicit
' Requires Jet 3.5 version of VSREPORTS (vsrep351.ocx)
Private Sub Form_Load()
vsReport1.ReportFileName
=
App.Path
"\rptCustomer.vsr"
vsReport1.DatabaseName = "..\..\DB\novelty.mdb"
End Sub
&
14.2.1.2.4
14.3.1
Ci t Crystal Reports
14.3.2
14.3.3
App.Path
&
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.
14.3.4
15
15.1.1
Client
Application
ODBC Drive
Manager
ODBC Drive
DB
15.1.2
To ngun d liu
To System DSN
15.1.3
ODBCDIRECT
To mt ng dng Visual Basic vi iu khin ADO Data ni vi ngun d liu
ODBC rt d. Trong thc t, n khng i hi phi lp trnh. Ta c th dng iu
khin Data nhanh chng kim tra kt ni n c s d liu Client / Server, hoc ta
c th dng n to th mt giao din ngi s dng vi kt ni trc tip n c s
d liu.
V nhng l do v kh nng hot ng, ta c th dng iu khin d liu t xa,
hoc l iu khin ADO Data thay v iu khin DAO Data, bi v nhng iu khin
ny chuyn dng cho truy cp d liu trn Client / Server. Trong nhng phin bn
DAO trc phin bn 3.5, DAO t ng np b my c s d liu Jet mi khi n truy
cp d liu Client / Server -thm ch khi ta khng thc s dng c s d liu
Jet/Access. Trong VB5, ta c thm tu chn s dng ODBCDIRECT truy cp d
liu Client / Server. ODBCDIRECT ch l mt chuyn i truy cp server thc tip
thng qua DAO m khng cn np b my c s d liu Jet. iu ny tit kim b
nh v gim thi gian np ng dng trn my Client. N thch khi ta phi dng DAO
truy cp d liu Client / Server nhng khng bn tm v tnh linh hot, kh nng
s dng li v tnh d bo tr ca chng trnh.
V D MU Tham kho v d mu ca phn ny trong n ODBCDAO.vbp,
cha trong th mc \samples\PhanIV\23-rdo\ODBCDAO
15.1.3.1
15.2.1
S dng RDC
Trang:201/262
15.3.1
tng RDOENGINE.
i tng rdoEngine l i tng mc cao nht trong m hnh i tng RDO.
Ni chung, ta dng i tng rdoEngine ch nh thuc tnh mc nh cho cc i
tng RDO khc m ng dng to ra.
i tng rdoEngine cn hu dng trong trng hp ta mun quy nh hay kim
tra kiu con tr c dng bi b my c s d liu. Con tr l cch truy cp tng
dng ca b kt qu. Con tr khc nhau c nhng kh nng khc nhau; v d, con tr
cun ti cho php truy cp cc dng tun t, nhng khng c php quay ngc li
v tham chiu n nhng dng trong b kt qu ta va dch chuyn qua.
i tng rdoEngine tng ng i tng DBEngine ca DAO. Khng c
im tng t trc tip vi rdoEngine trong ADO; chc nng ca n b phn chia
gia cc i tng Connection v Recordset ca ADO.
Ngoi kh nng th hin ngun d liu, i tng rdoEngine cn cha tp hp
rdoErrors cho php ta lp xuyn qua ton b thng bo li pht sinh bi mt
transaction ca mt c s d liu nht nh.
i tng rdoEngine cha tp hp cc i tng Enviroment, cng nh tp hp
cc i tng rdoError.
V d, nu ng dng cn to mt s i tng da trn login thng thng v mt
khu ca ngi s dng, ta c th ch ra cc yu t ny khi ta bt u s dng RDO
trong ng dng. Cc gi tr mc nh ta quy nh (dng thuc tnh
rdoDefaultPassword v rdoDefaultUser) l dnh cho cc i tng rdoEnvironment
m ta to ra trong ng dng.
Ta cng c th dng i tng rdoEngine diu khin cch thc to v duy tr
cc con tr trong ng dng.
Ngoi vic cung cp cc gi tr mc nh cho nhng i tng to bi RDO, i
tng rdoEngine t ng to i tng rdoEnvironment. Ta c th tham chiu n
i tng ny trong chng trnh nh l rdoEnvironments(0).
Hnh 23.6 Tp hp Environment v i tng Environment trong cy phn cp RDO (i tng d liu t xa)
15.3.2
Trang:202/262
15.3.3
M t
Tn login ca ngi s dng
Mt khu ca ngi s dng
Tn ngun d liu ta to trong Trnh qun l iu khin
ODBC
DRIVER
iu khin ODBC m ta mun kt ni
DATABASE
Tn c s d liu m ta mun kt ni
APP
Tn ng dng kt ni vi c s d liu
LANGUAGE
Ngn ng quc t c dng bi server
SERVER
Tn ca SQL Server m ng dng kt ni n
Tuy nhin, y khng phi ton b cc tham bin. V khng nht thit phi dng
tt c cc tham bin ny trong mi trng hp. C s d liu c th s dng nhiu
hoc t hn.
V d, ni n c s d liu SQL Server Novelty, ta dng chui kt ni:
DSN = Novelty; UID = randy; PWD = prince
Nu khng cung cp tn login v mt khu ca ngi s dng trong chui kt ni,
khi ng dng ni n server, trnh iu khin ca ODBC s hin th hp thoi yu cu
ngi s dng cung cp thng tin login.
15.3.3.1
Trang:203/262
M c s d liu
15.3.3.2.1
Option Explicit
' References RDO 2.0
Private MyConn As rdoConnection
Private Sub Form_Load()
Dim strConnect As String
strConnect = "DSN=Novelty;" & _
"PWD=prince;" & _
"UID=randy;"
Set MyConn = rdoEnvironments(0).OpenConnection("Novelty", _
,, strConnect)
End Sub
Phng thc OpenConnection c 5 tham bin : Tham bin th nht, tn ngun d
liu, khng phi l tu chn. Bn tham bin cn li (Prompt, Readonly, Connect, v
Options) l tu chn. iu ny gii thch c php l ca phng thc - tham bin
thiu t gia cc du phy. (Lu rng on chng trnh ny to ngm i tng
rdoEnvironment, tham chiu n rdoEnvironment(0), to mt kt ni n c s d
liu).
Mt khc, phng thc EstablishConnection, thc hin yng t nh
OpenConnection. Nhng n hot ng theo cch trc tip hn:
Option Explicit
' References RDO 2.0
Private MyConn As rdoConnection
Private Sub Form_Load()
Dim strConnect As String
strConnect = "DSN=Novelty;" & _
"PWD=prince;" & _
"UID=randy;"
MyConn.EstablishConnection
End Sub
Trang:204/262
15.3.4
i tng RDO c kh nng sinh ra s kin. S kin cn cho php ng dng thi
hnh nhng hnh ng mt nhiu thi gian (nh l kt ni n c s d liu hay thi
hnh cu truy vn) m khng cn gi iu khin ca ng dng. Thay v ch cho hnh
ng ca RDO xy ra, ng dng c th lm vic khc cho n khi kt ni c thit
lp hay truy vn hon tt. Ta gi y l thi hnh khng ng b. S kin l cch thc
i tng RDO thng bo cho ng dng rng mt hot ng bt ng b va hon
tt.
khin mt i tng d liu c bit sinh ra s kin, ta phi khai bo n theo
cch c bit: dng t kho WithEvents. V d, khai bo i tng rdoConnection c
tn l MyConn pht sinh s kin, ta dng dng lnh:
Private WithEvents MyConn As rdoConnection
Sau khi khai bo, cc s kin ca n s xut hin trong ca s Code ca Visual
Basic.
Trang:205/262
Trang:206/262
3. Trong tab Connection, chn ngun d liu ODBC hay xy dng chui kt
ni khng c DSN.
4. Chon tab Authentication, nhp tn v mt khu ngi s dng. Chn vo
hp nh du Save Connection Information for Design=time. Nh th,
ta c th truy cp kt ni bt k lc no ta mun.
Lu trong trnh tht k UserConnection, cng tng t nh vi
ODBC DSN, ta c tu chn l b qua cc thng tin gn lin vi vic
thm nh. B qua cng vic ny ngha l tn ngi login v mt khu
s khng c bin dch vo ng dng v n khng c lu cng vi
trnh thit k UserConnection. Mc d vy, nh rng thit k
UserConnection khng cha d liu cho thm nh, trong khi bn
khng cung cp cc thng tin trong chng trnh khi thc thi, do
, trnh iu khin ODBC s hin th hp thoi mi ln ng dngkt
ni n c s d liu.(Tt hp thoi login ny trong thit k
UserConnection bng cch dng hp kt hp Prompt Behavior trong
tab Authentication ca hp thoi Properties ca thit k).
Trong ng dng, ta mun gii quyt vn thm nh ngi s dng
theo mt cch khc - tr v tn ngi s dng v mt khu ti thi
im ngi s dng khi ng ng dng, hay(i vi cc ng dng h
tr quyt nh) to mt ngi s dng ch c c bit duyt d
liu.
5. Nhn OK.
6. hp thoi properties ng. Trn mn hnh xut hin tn trh thit k
UserConnection.
Trang:207/262
15.5.1
UserConnection
15.5.1.1
Trang:208/262
anh
***********************************/
15.5.1.2
Gi th tc
Trang:209/262
15.5.2
****************************/
15.5.2.1
Microsoft Query
1. Nhn nt Insert Query trn thanh cng c ca trnh thit k
UserConnection.
2. hp thoi Properties ca truy vn xut hin.
3. Nhp tn ca truy vn trong hp vn bn Query Name.
4. chon kh nng tu chn Based on User-Defined SQL,ri nhn Build.
5. Microsoft Query phng ln ngun d liu ta mun kt ni, ri nhn OK.
/****************
****************/
Ta phi ch ra ngun d liu tr li khi ta thc hin trong phn trc. ta co
mt DSN ca ngi dng cho c s d liu company. V mt l do no , n
mun dng DSN da trn tp tin thay v Uer-DSN hay System-DSN. May
mn l,MS query cho ta kh nng to DSN tong chng trnh, v th, y
khng l vn ln. Tuy nhin, ta vn mun thit lp mi thcha trong mt
ni.
Mt vn khc vi MS query la nos cai t tm kim cc tp tin DSN
trong th mc trong \Program Files \Common Files\Microsoft Shared\Vba,
trong khi ODBC to DSN da trn tp tin \Program Files \Common Files
\ODBC\Data Sources. Trong hp thoi choose Data Source ca Ms Query, ta
gii quyt vn nt bng cch nhn nt Option chi ra th mc tm kim
DSN. lam iu ny, nhn Browse trong hp thoi Data Source Options,
chn ng th mc, nhn OK ri nhn Add. Khi y, th mc mi s c
nhn ra bi MS Query v sau.
Trang:210/262
Trang:211/262
Trang:212/262
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.
Trang:213/262
16.1.1
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.
Trang:214/262
Trang:215/262
Trang:216/262
Trang:217/262
Dng vng lp For Each.. Next duyt qua tp hp khng phi l cch duy nht
lm vic vi tp hp. Sau khi thit lp v a vo cc i tng, ta c th ly ra
phn t t tp hp. Nu thm i tng vo tp hp vi mt kho hay gi tr chui
duy nht, ta c th ly v i tng m khng khng cn xc nh v tr ca n trong
tp hp - mt u im so vi mng.
V d, ly v ho n th 4 trong tp hp :
Set MyOrder = AllOrders(4)
tham chiu n thuc tnh ca i tng Order th 4 trong tp hp, ta truyn
vo ch mc ca tp hp :
AllOrders(4).OrderDate = #6/5/98#
Dng lnh ny hot ng nh th tc mc nh ca tp hp tr v mt tham chiu
n phn t c nh s. Th tc mc nh ny l phng thc Item. V l mc nh,
nn ta khng cn gi n mt cch tng minh. Nu khng, c th dng:
AllOrders.Item(4).OrderDate= #6/5/98#
THN TRNG Phn t u tin trong tp hp c nh s 1, khng
c phn t th 0. N cng khch vi tp hp ca cc i tng Form
hay Control trong Visual Basic; cc tp hp ny nh s t 0. Nh
vy, tp hp do ta t to c nh s t 1; trong khi tp hp do
Visual Basic to nh s t 0. y cng l trng hp ca tp hp cc
i tng truy cp d liu, nh l tp hp TableDefs ca i tng
Database.
tr v mt phn t t tp hp s dng mt kho trc , ta phi thm n vo
tp vi mt kho. thc hin iu ny, truyn mt chui duy nht cho phng thc
Add :
AllOrders.Add ORD193).prive
Ta s gp thng bo li nu nh chui ny khng duy nht. tham chiu n
mt thuc tnh ca i tng ny, ta dng dng lnh :
MsgBox AllOrders (ORD193).prive
Lu rng ta khng dng gi tr s cho kho ca mt i tng, ngay c khi ta
truyn n cho phng thc Add di dng chui. Bi v phng thc Item c th tr
v mt i tng t tp hp bng kho hoc bng v tr xp th t. Nu phng thc
Item nhn s n, n tr v phn t th n trong tp hp. Nu n nhn mt chui, n tr
v i tng vi kho l chui . Mc d vy, Nu chui c th chuyn thnh s, ta
s c nguy c gp li.
16.1.2
S dng biu mu nh lp
Trang:218/262
Hnh 16.5 :Hp thoi Add Form ca Visual Basic cho php chn kiu biu mu
nh ngha sn.
4. Trong hp thoi Form, nhn Open. Mt biu mu mi c to.
5. Trong ca s Code, a vo cc th tc thuc tnh :
Public Property Get UserName() As String
UserName = txtUserName.Text
End Property
Public Property Let UserName(ByVal strNew As String)
txtUserName.Text = strNew
End Property
Public Property Get Password() As String
Password = txtPassword.Text
End Property
Public Property Let Password(ByVal strNew As String)
txtPassword.Text = strNew
End Property
Public Sub Login()
MsgBox "Logging in user " & UserName & "."
End Sub
6. Biu mu Login chun ca Visual Basic cha chng trnh trong s kin nhn
nt OK v Cancel ngi s dng Login vo h thng. Xo on chng
trnh i v thay bng on chng trnh sau:
Private Sub cmdCancel_Click()
Me.Hide
Trang:219/262
16.2.1
C mt s phng tin gip cho vic p dng k thut hng i tng trong truy
cp d liu trong Visual Basic :
Gn mt bn ghi duy nht vi mt i tng : y l k thut n gin nht,
khng cn lp trnh nhiu. Mi trng trong bn ghi tr thnh mt thuc tnh
ca i tng; ly d liu v t c s d liu hay lu d liu vo c s d liu
u c x l qua i tng.
U nhim x l d liu cho mt i tng Recordset cha trong mt i tng
: y l k thut tt nht khi ta cn x l mt s khng gii hn cc bn ghi.
K thut ny cng d lp trnh, bi v c nhiu chc nng qun l c cung
cp sn trong cc m hnh i tng c s dng (DAO hay RDO). K thut
c bit hu dng khi ta dng ADO bi v ADO cung cp kh nng ngt kt
ni vi ngun d liu, cho php ng dng Client thao tc vi d liu khng
cn kt ni vi Server. Bi v nhiu ngi s dng kt ni ng thi l mt
im yu ca cc my tnh Client/Server, ngt kt ni c ngha l gii php s
linh hot hn.
Gn nhm cc bn ghi vo mt tp hp : Lp trnh phc tp hn trng hp
gn mt bn ghi vi mt i tng, nhng n hu dng hn trong trng hp
ta phi x l vi nhm cc bn ghi c lin quan ti mt thi im. Ta c th
gp phi kh khn lin quan n kh nng hot ng ca ng dng nu ta
khng cn thn gii hn s bn ghi x l ti mt thi im.
Chia truy cp d liu gia Client v Server : K thut ny thch hp nht khi
ta cn t c kh nng linh hot v hiu qu cao nht trong ng dng. N
Trang:220/262
M t
To mt i tng QueryDef.
To mt i tng Relation
To mt i tng TableDef
Trang:221/262
To mt i tng Recordset
To mt i tng Property
Ngoi vic s dng cc phng thc xng sn xut do Visual Basic cung cp, ta
c th to ra cc phng thc ny trong cc lp t to.
Mt l do ph bin dng cc phng thc xng sn xut l yu cu thc hin
theo cch to i tng trong Visual Basic. Cc ngn ng lp trnh khc s dng i
tng (nh Visual C++) c contructor m nhim vic to Instance ca i tng t
lp; nhng constructor cn c th thi hnh cc tc v khc, nh cung cp cc d liu
khi to cho lp. Lp c nhiu constructor ngi lp trnh c th chn la v
constructor c th ly v tr v tham s.
Tuy nhin, khng c tng quan trc tip vi constructor trong Visual Basic.
Thay vo , cc lp Visual Basic c s kin Initialize. Ta c th lp trnh trong s
kin Initialize nh trong constructor ca Visual C++, nhng khng may l ta khng
th truyn tham s cho s kin Initialize ca Visual Basic, v ta ch c mt s kin
Initialize cho mi lp. N lm tnh tin dng ca s kin Initialize b hn ch i vi
mi phn t, ngoi tr cc gi tr c bn nht l cc gi tr mc nh. Cc phng thc
xng sn xut cung cp gii php khc phc iu ny.
Option Explicit
' Requires CCustomer class
Public Function CreateCustomer(Optional lngID As Variant) As CCustomer
Dim Cust As CCustomer
If IsMissing(lngID) Then
' Create new customer
Set CreateCustomer = New CCustomer
Else
' Retrieve customer from DB
Set Cust = New CCustomer
Cust.GetData (lngID)
Set CreateCustomer = Cust
End If
End Function
Xng sn xut i tng to mt i tng khch hng rt d dng vi y
tnh nng. on chng trnh sau to i tng CCustomer:
Dim MyCust As CCustomer
Dim cf As CCustFactory
Set cf = New CCustFactory
' Retrieve data
Set MyCust = cf.CreateCustomer(txtID.Text)
Mt l do khch dng cc phng thc xng sn xut trong lp trnh c s d
liu Visual Basic l tit kim cc ti nguyn kt ni, bi kt ni n c s d liu
i hi tiu tn nhiu thi gian v b nh trn Client v Server.
Trang:222/262
Trang:223/262
Trang:224/262
16.3.1
To lp xut d liu
Trang:225/262
Hnh 16.6 D liu c xut di dng HTML v trnh by trong trnh duyt IE
16.3.2
Trang:226/262
STANDARD EXE
Sau khi bin dch thnh phn ActiveX, ta c th lp mt tham chiu n n t
trong cc n khc ca Visual Basic. Khi ta thc hin iu ny, ngha l ta c th
dng lp cha trong thnh phn ActiveX to i tng trong n. iu ny cho
php ta tn dng tnh nng ca thnh phn ActiveX mt cch n gin, nht qun,
khng bn tm n chng trnh bn trong ca thnh phn.
thc hin tham chiu ActiveX Server dng menu Project References.
16.3.2.1.1
Trang:227/262
16.3.2.1.2
Trang:228/262
dng
Thnh phn ActiveX cn c ng k trn my tnh s dng li trn my .
Vic ng k bo m rng h iu hnh s nhn ra s tn ti ca thnh phn mi khi
ng dng to i tng t .
Khi ta lm vic vi ActiveX server trn mt my tnh dng vo vic pht trin
phn mm, vic ng k khng l vn . Bi v thnh phn c t ng ng k
vi Visual Basic ngay lc chng c bin dch. Tuy nhin khi ta phn pht thnh
phn n ngi s dng, ta phi bo m rng thnh phn ActiveX c ng k trn
my ngi s dng. C mt s phng php thc hin iu ny.
S dng Trnh ng gi v trin khai ng dng (Package and Deployment
Wizard) phn pht ngi s dng.
S dng bng phng php th cng dng tin ch Regsrv32. EXE.
16.3.2.3
Trang:229/262
16.3.2.4
Trang:230/262
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.
Trang:231/262
17
Truy cp d liu t xa
17.1.1
Trang:232/262
C nhiu phng php thc hin cu trc phn cng Client / Server. Chng ny
ch a ra cch n gin nht cung cp cho bn gii php trong trng hp thng
gp nht.
Gi s rng c 2 my, trong mt my l WinNT Server chy Microsoft SQL
Server. y l Server. My Client l Win95, hoc Win98, hoc WinNT.
C th bn khng c sn cc phn mm v phn cng m t nh trn. Nu khng
c 2 my ni mng, bn vn c th thc hin trn cng mt my. Nu bn khng c
my WinNT, bn nn gi lp n bng cch dng c s d liu ca Microsoft Jet. Ton
b v d trong chng ny c vit bng ADO ph hp vi iu ny.
Nu khng c WinNT Server, ta c th thit lp DCOM cho Win95. Tp tin
thc hin DCOM trn Win95 cha trn a mt ca bn Visual Basic Enterprise,
trong th mc \Tools\DCOM98. Mun xem chi tit, cng nh ti xung cc tp tin
DCOM, ta tm trong trang web http:// www.microsoft.com /com /dcom/dcom1_2
/
dcom1_2. asp
V d ngi s dng trn mng mun truy cp d liu khch hng. gi c
tnh nht qun, kh nng dng li, d lp trnh v bo tr, bn nn truy cp n c s
d liu thng qua thnh phn ActiveX. Thnh phn ny c bin dch v thit lp
trn mng sao cho ng dng Client c th truy cp n t xa.
Hnh sau y l s ca cu trc 3 tng tng qut. N kt hp cu trc vt l (2
my tnh ) v cu trc logic ( tng tng cung cp cc chc nng khc nhau).
My
Client
CSDL
My Server
Trang:233/262
My
Client
CSDL
My Server
Trang:234/262
17.1.1.3.1
ActiveX EXE
17.1.1.3.2
TRIN
KHAI
ActiveX
DLL
XA
DNG
MTS
Trang:235/262
Trang:236/262
Trang:237/262
17.1.1.3.3
CP C S D LIU
Trong chng trc, bn bit cch truy cp c s d liu dng i tng v
cc lp. K thut ny cho php ng gi logic chng trnh trong m-dun lp c
th dng li d dng. Kh nng bin dch m-dun lp mt cch c lp thnh mt
ActiveX DLL hay ActiveX EXE lm cho lp d dng hn, cho php to ra cc ng
dng truy cp c s d liu cc k linh hot v mnh m.
K thut ny cng c dng khi cn ti u ho tc ca ng dng Client. Tc
hot ng bt ngun t vic ng dng Client khng phi np mt b my c s d
liu (database engine), hoc nhng tng trung gian khc khi chng khi ng. Nu ta
dng ADO hay ODBC, ta s c cng thun li, v ta khng phi phn pht cc th
vin ny hoc nh li cu hnh trn my Client. N tit kim ng k b nh v ng
dng chy nhanh hn nhiu.
Mt thun li khc ca k thut ny l cc phn lin quan c phn pht cng vi
ng dng cng gim nh, v ta khng phi np cc th vin ca b my c s d liu
Jet vo tng my Client.
Thm vo , bng cch truyn mng thay v i tng qua mng, ng dng khng
phi duy tr mt kt ni thng xuyn n Server. Bi khi truyn i tng qua mng,
n tn ti trn Server. Tuy nhin, khi truyn mt khi d liu chng hn nh mt
mng qua mng, d liu khng tn ti trn Server. N hon ton c truyn n
Client, ngha l Client khng cn ni n Server lm vic vi d liu. Nh vy,
ng dng c th phc v nhiu ngi cng mt lc, v chng hn nh thay v c 50
ngi s dng ni n Server m khng lm g, ta c 500 ngi s dng ch ni n
Server khong 10% thi gian.
17.1.1.3.3.1 S DNG GETROWS TR V D LIU MNG
Trang:238/262
Trang:239/262
Trang:240/262
17.1.1.3.4
Trang:241/262
Trang:242/262
Trang:243/262
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 sao chp vo lc ng b
c s d liu Access nh ho hay khng.
bo 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 ).
Thuc tnh
Relation
i vi Sao chp mt phn, n
PartialReplica
cho php ta xc nh nhng quan
Trang:244/262
Thuc tnh
ReplicableBool
i.
Database
Trang:245/262
Exit Sub
ErrHandler:
Select Case Err.Number
Case 3367
' Replicable property already exists
Exit Sub
' So ignore the error and exit
Case Else
' Something unforseen happened
MsgBox "Error: " & Err & " - " & Error
End Select
End Sub
Lu rng on chng trnh ny s chy c d cho c s d liu hin hnh c
thuc tnh ng Replicable hay khng. Nu c s d liu hin hnh c thuc tnh
Replicable, chng trnh s khng to ra thuc tnh ny na.
Tuy nhin, c mt rc ri khi to mt thuc tnh Replicable cho mt c s d liu
Sau khi to ra, ta khng th loi b n. Th dng on chng trnh sau loi b :
db.Properties.Delete Replicable
Nhng khng thc hin c. on chng trnh pht ra bo li s 3607, thng
bo rng y l thuc tnh ch c v khng th loi b. V vy, nh cnh bo
Trang:246/262
Exit Sub
ErrHandler:
If Err.Number = 3270 Then
Set pr = td.CreateProperty("Replicable", dbText, "T")
td.Properties.Append pr
Else
MsgBox "Error " & Err & " - " & Error
End If
End Sub
on chng trnh ny tng t on chng trnh thit lp thuc tnh Replicable
ca c s d liu. y, by li mnhim tnh hung thuc tnh Replicable cha
c to cho i tng. on chng trnh by li xc nh thuc tnh Replicable
ca i tng c s d liu c tn ti khng; nu cha c, n to ra thuc tnh v
quy nh thuc tnh hiu chnh l chui T. Gi tr T lm cho i tng ( v cc
d liu cha bn trong n ) c copy vo bn sao c s d liu vo lc ng b ho.
Gi tr T ca thuc tnh Replicable ca i tng c s d liu t ng i
thuc tnh KeepLocal thnh F.
Trang:247/262
Exit Sub
ErrHandler:
If Err.Number = 3270 Then
Set pr = td.CreateProperty("ReplicableBool", dbBoolean, True)
td.Properties.Append pr
Else
MsgBox "Error " & Err & " - " & Error
End If
End Sub
Khi to v dng thuc tnh ReplicableBool, thuc tnh Replicable cng tr thnh
c sn, v 2 thuc tnh tr v cng gi tr, ngha l nu ta quy nh ReplicableBool l
True, th c thuc tnh Replicable, ta thy n l T.
iv.
Lp trnh vi DAO to mt c s d liu bn sao
To mt c s d liu bn sao t Bn thit k gc bng cch thi hnh phng thc
MakeReplica ca i tng Database.
C php :
Trang:248/262
Trang:249/262
Trang:250/262
Trang:251/262
Trang:252/262
17.2
Trang:253/262
18
18.1.1
Phn ln cc nh lp trnh vin Visual basic khng thao tc trc tip vi OLE DB.
Thay vo , h lp tnh vi ADO, m hnh i tng cung cp giao din vi OLE
DB.
Client Workstation
Client Application
ActiveX Data
Object
ODBC Driver
OLE DB Datta
Provider
ODBC Driver
Manager
OLE DB
Document
Server
Email
Server
Relational Database
Hnh: S dng ADO v OLE DB tng cng truy cp thng tin trong mt c s
d liu
FPT Software Solution
Trang:254/262
ActiveX Data
Object
OLE DB ODBC
Provider
ODBC Driver
ODBC Driver
Manager
OLE DB
Relational Database
Cu trc ny cho php ta dng thnh phn lp trnh ActivateX thng dng trn c
trnh duyt Web v ng dng Client Visual basic.
18.1.2
Trang:255/262
Trong project Visual basic chn references, hp thoi references xut hin
Chn vo hp nh du Microsoft ActivateX Data Objects 2.0 Library
ri nhn OK
Ch rng khi tham chiu ADO th phi m bo l khng c tham chiu n th
vin Microsoft ActivateX Data Objects 2.0 Recordset. y l phin bn loi nh
ca th vin ADO c thit k s dng pha Client. N ch h tr Recordset v
Field.
18.1.3
liu khc
Nu bn to ng dng c thit k s dng ADO kt hp vi th vin i
tng truy cp d liu khc, nh l DAO, cn phi phn bit gia, v d nh i
tng RecordSet ca DAO v Recordset ca ADO. Chng khng th i ch cho
nhau c.
Nu ta tham chiu n va ADO va DAO v khai bo mt bin Recordset, lm
th no phn bit Recordset ca DAO hay ADO? Cu tr lai l th t tham chiu
vo n. Nu thm tham chiu i tng DAO trc th Recordset l ca DAO v
ngc li. trnh nhm ln ta nn khai bo tng minh nh sau: ADODB.Recorset
Nu khng mun tham chiu trc tip n th vin i tng trong chng trnh,
ta c cch khc. Ta c th kim sot th vin i tng nao c truy cp mc nh
bng cch dng gi tr mc u tin trong hp References.
18.1.4
ngun d liu
V tr ca i tng Connection trong m hnh ca ADO:(Xem hnh di):
Dng phng thc Open ca i tng Connection thit lp kt ni vi ngun
d liu. thng bo cho ADO cch ni vi ngun d liu ta phi cung cp thng tin
di dng chui kt ni ca ODBC. Ta dng thuc tnh ConnectionString thc
hin iu ny. Ta cn c kh nng tu chn chn trnh cung cpno s c dng
bng cch quy nh gi tr thuc tnh Provider ca i tng Connection.
18.1.4.1 Ch ra trnh cung cp OLE DB v chui kt ni
Nu khng ch ra trnh cung cp, hoc ta khng dng i tng Connection, ta s
c mt trnh cung cp mc nh, l trnh cung cp ODBC, MSDASQL.
Thuc tnh Provider ca i tng Connection l chui k t ch ra kt ni m
trnh cung cp OLE DB s dng.
Dng chui kt ni trong ADO cung cp thng tin v cch thc kt ni vi
Server c s d liu. Khi ta dng trnh cung cp ODBC cho OLE DB, chui kt ni
tng t chui kt ni ODBC. iu ny c ngha l thng tin chnh xc c mong
ch bi trnh iu khin ODBC c th thay i tu theo cch thc hin. i vi cc
trnh cung cp khc, chui kt ni c th c mt c php hon ton khc.
Khi ta dng trnh cung cp ODBC, thuc tnh ConnectionString c th l mt
DSN (tn ngun d liu) hay n l kt ni khng c DSN. y l mt v d ca mt
kt ni n c s d liu dng trnh cung cp ODBC vi DSN:
Trang:256/262
Property
Arttributes
CommandTimeOut
ConnectionString
ConnectionTimeOut
CursorLocation
DefaultDataBase
Errors collection
Isolation Level
Mode
Properties collection
Provider
State
Version
Methods
BeginTrans
Cancel
Close
CommitTrans
Execute
Open
OpenSchema
RollbackTrans
Events
BeginTransComplete
CommittranCopmlete
ConnectionComplete
Disconnect
ExexuteComplete
InfoMessage
RollBackTransComplete
WillConnect
WillExecute
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
18.1.5
Lm vic vi con tr
Tng t RDO v DAO, ADO h tr mt s kiu con tr. Ngoi vic cung cp h
tr duyt qua tng bn ghi ti mt thi im, cc kiu con tr khc nhau cho php ta
iu khin cch qun l ca mt Recordset.
Quy nh v tr ca con tr bng cch gn gi tr cho thuc tnh Recordset. Sau y
l cc kiu con tr ca i tng Connection:
Kiu con tr
Hng
M t
Pha Client
adUseClient
To con tr pha Client
Pha Server
adUseServer
To con tr pha Server
Chn con tr kiu Client ngha l ADO v OLE DB x l cc hot ng ca con
tr. Con tr Client thng khng c sn trn server. V d, trong ADO, ta c th to
mt Recordset khng kt ni, cho php ta thao tc vi cc bn ghi m khng c kt
Trang:257/262
Trang:258/262
adBookmark
adDelete
adHoldRecords
adMovePrevious
adResync
adUpdate
adUpdateBatch
18.1.6
Tng t cc m hnh i tng truy cp c s d liu khc, ADO cho php quy
nh cc kiu kho bn ghi(Record - locking) khc nhau. Ta dng tnh nng ny khi
cn kim sot cch thc cp nht cc bn ghi vi nhiu ngi s dng trong c s d
liu.
Quy nh ch kho cho i tng Recordset ca ADO thng qua thuc tnh
LockType. Di y l danh sch 4 kiu kho bn ghi.
Hng
M t
adLockReadOnly
Cm cp nht bn ghi
adLockPressimistic
Bn ghi trong Recordset b kho khi bt u sa i, v
tip tc b kho n khi thi hnh phng thc Update hay
chuyn sang bn ghi khc.
adlockOptimistic
Bn ghi b kho ngay khi thi hnh phng thc Update
hay di chuyn sang bn ghi khc.
adlockBatchOptimistic H tr cp nht nhiu bn ghi cng lc.
im quan trng cn lu l phng thc kho mc nh trong ADO l
adLockReadOnly. y l mt trong cc im khc bit ng k gia lp trnh ADO v
DAO, v trong DAO bi m nh Recordset c php sa i. iu ny c ngha l
nu ta khng i thuc tnh LockType v CursorType, cc Recordset ca DAO lun l
ch c.
S hin din ca cc kiu kho bn ghi ph thuc vo nhng g trnh cung cp d
liu h tr. Ta c th dng phng thc support ca i tng Recordset xc nh
trnh cung cp c h tr kiu kho bn ghi hay khng.
18.1.7
d liu
i tng Recordset ca ADO, tng t Recordset ca DAO v rdoresultset ca
RDO, l phng php truy cp thng tin c tr v t trnh cung cp d liu.
Recordset ca ADO c nhiu thuc tnh v phng thc trng vi Recordset ca cc
m hnh khc, v th c th lm vic vi chng tng t cc Recordset khc.
V tr ca Recordset ca ADO trong m hnh i tng ADO:
Trang:259/262
Property
AbsolutePage
AbsolutePosition
ActiveCommand
ActiveConnection
BOF
Bookmark
CacheSize
CursorLocation
................
Methods
Addnew
Cancel
CancelBatch
CancelUpdate
Clone
CompareBookmark
Delete
Find
Events
EndOfRecorset
FetchCopmlete
FetchProgress
FieldChangeComplete
MoveComplete
RecordChangeComplete
RecordsetChangeComplete
WillChangeField
Fields collection
Field Object
Properties collection
Property object
mi
Thm mi v cp nht bn ghi trong ADO hu nh tng t nh trong DAO.
Thm mi bn ghi:
- M Recordset
- Thi hnh phng thc AddNew
- Gn gi tr cho cc trng i tng Recordset
- Lu bn ghi bng phng thc Update ca Recordset
Cp nht bn ghi:
- M Recordset
- Gn gi tr cho cc trng trong Recordset
- Lu bn ghi bng thi hnh phng thc Update
18.1.8
To Recordset ngt kt ni
Trang:260/262
Trang:261/262
Trang:262/262