Professional Documents
Culture Documents
1Mclc : FPT Software Solution Trang:1/265
1Mclc : FPT Software Solution Trang:1/265
1 Mc lc
1 Mc lc...............................................................................................................................1
2 Lm quen vi visual basic 6.0.............................................................................................9
Trang:1/265
Trang:2/265
6.1 Menu..................................................................................................................68
6.1.1 Dng trnh son tho menu to menu ...................................................68
6.1.2 Vit chng trnh iu khin menu............................................................69
6.2 Hp thoi..........................................................................................................69
6.2.1 Thng ip(Message box)...........................................................................69
6.2.2 Hp nhp(Input box)....................................................................................70
6.2.3 Cc hp thoi thng dng(Common dialog)...............................................70
6.2.4 Hp thoi hiu chnh...................................................................................71
6.3 Thanh cng c(ToolBar)...................................................................................71
6.3.1 Trong ng dng n gin............................................................................71
6.3.2 Nhng i tng..........................................................................................71
6.4 Thanh trng thi................................................................................................71
6.5 X l chut v bn phm...................................................................................72
6.5.1 s kin chut................................................................................................72
6.5.2 Hiu chnh con tr chut.............................................................................72
6.5.3 S kin bn phm.........................................................................................72
7 X l tp tin.......................................................................................................................74
Trang:3/265
Trang:4/265
11.1 ADD-INS......................................................................................................123
11.2 Cc cng c trong ADD-INS.......................................................................123
11.2.1 Trnh ci t ng dng.............................................................................123
11.2.2 Trnh i tng d liu t ng.............................................................123
11.2.3 Trnh xy dng d liu t ng..............................................................124
11.2.4 Trnh thit k Add-ins t ng................................................................126
11.2.5 Trnh thit k t ng..............................................................................126
11.2.6 Tin ch xy dng lp..............................................................................126
11.2.7 Trnh to thanh cng c t ng.............................................................127
11.3 Trnh ng gi v trin khai ng dng........................................................127
11.3.1 Pht hnh ng dng..................................................................................127
11.3.2 Trnh ng gi v trin khai ng dng....................................................128
11.3.3 M trnh ng gi v trin khai trong VB...............................................128
11.3.4 M trnh ng gi v trin khai nh mt ng dng c lp.................128
11.3.5 Thi hnh Wizard di ch silent........................................................128
11.3.6 Setup toolkit..............................................................................................129
11.4 Bi tp...........................................................................................................130
12 Nhng khi nim c bn v CSDL............................................................................131
Trang:5/265
Trang:6/265
Trang:7/265
Trang:8/265
Trang:9/265
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/265
Trang:11/265
Trang:12/265
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/265
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/265
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/265
Trang:16/265
Trang:17/265
3.1.4 S kin
Nu nh thuc tnh m t i tng, phng thc ch ra cch thc i tng
hnh ng th s kin l nhng phn ng ca i tng.
Tng t thuc tnh v phng thc, mi iu khin c nhng b s kin rt
thng dng vi hu ht cc iu khin. Cc s kin ny xy ra thng l kt qu
ca mt hnh ng no , nh l di chuyn chut, nhn nt bn phm, hic g vo
hp vn bn. kiu s kin ny c gi l s kin khi to bi ngi s dng, v
ta s phi lp trnh cho chng.
cc s kin thng dng
S kin
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/265
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/265
6.
Trang:20/265
Trang:21/265
Trang:22/265
Trang:23/265
Trang:24/265
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/265
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/265
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/265
Trang:28/265
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/265
Trang:30/265
Trang:31/265
Trang:32/265
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
ID
dng click vo nt ?
Project Description
Tn gi nh ca n. N c hin th trong
References v Object Browser
Trang:33/265
Trang:34/265
4 Lm vic vi cc iu khin
4.1 Cc loi iu khin
Trong Visual Basic c ba nhm iu khin
iu khin ni ti, v d nh l cc iu khin nt lch v khung.
Cc iu khin ny c cha trong cc tp tin. EXE ca Visual
Basic. Cc iu khin ni ti lun cha sn trong hp cng c, ta
khng th g b hay thm chng vo hp cng c
iu khin ActiveX, tn ti trong cc tp tin c lp c phn m
rng l. OCX. Chng c th a ra cc iu khin hin din trong
mi n bn ca Visual Basic(v d DataCombo, Datalist,....) hoc l
cc iu khin ch hin din trong n bn Professional v
Enterprise(nh ListView,Toolbar,Animation ). Ngoi ra, cn rt nhiu
iu khin ActiveX do cc nh cung cp th ba a ra
i tng chn c, v d nh i tng bng tnh (Worksheet) ca
Microsoft Excel cha mt danh sch cc nhn vin ca mt cng ty
hay i tng lch biu (Calendar) ca Microsoft Project cha vic
lp biu thng tin cho mt n. Bi v chng c th thm vo hp
cng c, chng c th l cc iu khin c chun b chu o. Mt
vi i tng kiu ny cng cung cp phn Automation lp trnh vi
cc i tng sinh ra t nhng ng dng khc ngay trong ng dng
ca Visual Basic. Xem phn Lp trnh vi cc i tng bit
thm thng tin v Automation
Trang:35/265
Trang:36/265
Trang:37/265
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
Trang:38/265
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/265
4.2.6 Checkbox:
4.2.7 Mt s thuc tinh thng dng:
Enable
Viable
Focus
i khi dung tab iu khin thay v dng chut. Thuctnh tabIndex thc
hin iu ny.
Trang:40/265
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/265
Trang:42/265
5 Nhp mn lp trnh
Cc iu khin trn biu mu ch l mt phn nh ca qu trnh lp trnh pht
trin ng dng, nhm to ra giao din cho ng dng. Sau , bn cn vit chng
trnh ng dng hot ng. Do , chng ny s i su vo phn cng vic
chnh ca Visual Basic, vit chng trnh.
Visual Basic l ngn ng lp trnh da trn i tng. Nu bn l ngi mi
hc, chng ny s gii thiu cc khi thit k c bn xy dng chng trnh.
Khi hiu c cc khi nim c bn, bn c th to ra cc ng dng rt mnh
bng Visual Basic.
Prefix
Pnl
Example
Ado
Ani
Chk
pnlGroup
adoBiblio
aniMailBox
chkReadOnly
Cbo
cboEnglish
Cmd
dlg
com
cmdExit
dlgFileOpen
comFax
ctr
ctrCurrent
dat
datBiblio
Trang:43/265
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:44/265
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:45/265
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:46/265
'*****************************************************
' 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
Trang:47/265
"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:48/265
In Vietnamese
MS Sans serif Default
Default
Black
Default
Normal
Default
100 Points
Right
Left
Chp nhn
Thot
Hng dn
Thm mi
Xo
S a
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:49/265
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:50/265
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:51/265
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
Reportbody1
Reportbody1
Reportbody2
Reportbody2
Reportbody3
Reportbody3
Total row 4
Reportbody4
Reportbody4
Total row 4
(Pagenumber)1/5
Trang:52/265
Trang:53/265
Trang:54/265
Private
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.
Trang:55/265
Trang:56/265
Trang:57/265
Trang:58/265
Gii thch
Khng cha g c
Khng c d liu hp l
D liu Integer dng chun
D liu kiu Long Integer
D liu kiu chm ng single
D liu kiu chm ng Double
Kiu Currency
Kiu ngy gi
Kiu chui n gin
Kiu i tng
C mt i tng Error
Kiu gi tr Boolean chun
Kiu Variant
Kiu DAO chun
Gi tr thuc h thp phn Decimal
Kiu Byte
Kiu do ngi dng nh ngha
Kiu mng
Trang:59/265
Hm chuyn i
Cbool
Cbyte
Ccur
CDate
CDbl
Cint
CLng
CSng
Cstr
Cvar
CVErr
i sang kiu
Boolean
Byte
Currency
Date
Double
Integer
Long
Single
String
Variant
Error
Kiu mng(Array)
5.4.5.11.1
Mng c chiu di c nh
Trang:60/265
5.4.5.11.2
Trang:61/265
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
Trang:62/265
Trang:63/265
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
Trang:64/265
Trang:65/265
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:66/265
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:67/265
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:68/265
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:69/265
Th hin
OK
OK, Cancel
Abort, Retry, Ignore
Yes, No, Cancel
Yes, No
Retry, Cancel
Trang:70/265
Trang:71/265
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:72/265
Trang:73/265
7 X l tp tin
7.1 M hnh FSO(File System Object model)
Cung cp cho ng dng kh nng to, thay i, di chuyn, xo cc th mc, d
tm xem chng c tn ti hay khng, nu c th u. N cng cho php ly cc
thng tin v th mc nh tn, ngy to, ngy sa i gn nht...
M hnh FSO cha trong th vin kch bn (Scripting type library- csrrun.dll),
h tr to v thao tc vi tp tin vn bn thng qua i tng TextStream. N cha
h tr tp tin nh phn, ta phi dng lnh Open vi c Binary.
M hnh ny cha cc i tng sau:
i tng
Gii thch
Drive
Cho php thu thp thng tin v a nh dung lng, tn
chia s... Lu rng khng nht thit l cng. N c th l
CD-ROM, l a RAM, hoc l mng.
Folder
Cho php to, xa, di chuyn th mc hay thu thp cc thng
tin h thng nh tn th mc, ng dn...
Files
Cho php to, xo, di chuyn tp tin hay thu thp cc thng
tin h thng....
FileSystemObject Cc thuc tnh v phng thc cho php to xa, thu thp
thng tin v a, th mc, tp tin.
TextStream
Cho php c v ghi vn bn
Nu cha c sn tham chiu n FSO bn c th reference n n t menu
Project\reference...
Trang:74/265
X
X
X
Trang:75/265
Trang:76/265
Trang:77/265
Trang:78/265
Trang:79/265
Hnh 9.1
Windows
8.1.1
Th vin lin kt ng
Trang:80/265
Trang:81/265
Trang:82/265
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 :
Trang:83/265
Trang:84/265
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
Trang:85/265
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:86/265
Trang:87/265
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:88/265
Trang:89/265
N u
khng thy iu khin
ProgressBar trn hp cng c, t
menu
Trang:90/265
Trang:91/265
...
...
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
&
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
Close
Ta khng nht thit phi nhp mt HelpContextID cho mi iu khin trn biu
mu. Nu ngi s dng nhn F1 trn iu khin vi HelpContextID 0 (gi tr
mc nh), VB s tm kim mt HelpContextID hp l cho ni cha ca iu
khin.
9.1.2.1 Gn HelpContextID cho mt iu khin hay biu mu.
1. Chn mt iu khin hay biu mu m ta mun nhp vo HelpContextID.
2. Nhn p HelpContextID trong ca s Properties v g vo gi tr Long hp
l.
Theo di gi tr m ta nhp vo sao cho ta c th dng cng gi tr cho Context ID
ca ch Help tng ng.
WhatsThisButton
True
3. Chn mt iu khin m ta mun cung cp Whats This Helpv gn mt
gi tr duy nht cho thuc tnh WhatsThisHelpID ca iu khin.
Theo di gi t m ta nhp vo sao cho ta c th dng cng gi tr cho Context ID
ca ch Help tng ng.
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.
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.2Modul Lp
Khun mu to i tng l modul lp. Sau ny, modul lp cn c dng
to iu khin ActiveX, mt k thut cao hn ca lp trnh hng i tng.
Trong bc lp trnh cn bn vi VB, ta dung modul cha cc hm hay th tc.
Tu theo tm hot ng ca hm / th tc ny, ta c th gi chng trc tip t
modul.
Nhng modul lp th khng bao gi c gi trc tip. s dng mt lp, ta
phi to i tng t lp thng qua lnh New.
y i tng c to t lp MyClass, cn bin i tng MyObject cung cp
mt tham chiu n i tng.
Dim MyObject As New myClass
Dng lnh trn to mt i tng gi l MyObject theo m t ca lp MyClass.
Hnh ng ny gi l to mt Instance t lp.Trong ca s Properties, ta c th
phn bit tn lp v tn i tng. Combo1 l tn i tng, trong khi ComboBox
l tn lp.
Ta c th to ra v s Instance t mt lp. Mi Instance c th khc nhau mt cht
tu theo cch ta quy nh thuc tnh v s dng phng thc.
10.1.2.1 Thuc tnh v phng thc ca lp
Bn trong mt lp, ta c th tc phng thc (Method Procedures) v th tc
thuc tnh (Property Procedures). Quy nh mt thuc tnh, ngha l ta ang gi
hm x l s kin Property Let.
Trong VB4, modul lp cn rt th s. n VB5, n bt u h tr gn gi hn cho
lp trnh hng i tng. V d: ta c th to ra nhng iu khin c th kt hp
trong mi trng pht trin VB (v nhng ngn ng khc). Thuc tnh ca chng
hin th trong ca s Properties, nhng s kin ca chng xut hin trong danh
sch th xung cha trong c s Code.
Trong VB6, phin bn Professional v Enterprise h tr Trnh xy dng Lp (Class
Builder) gip lp trnh vin lm vic rt d dng vi lp. N cung cp mt lot cc
hp thoi, hng dn ta tng bc to lp. Tuy nhin, trong v d ny, hiu
t chc mt lp, ta s to bng tay.
End Property
Public Property Get Height() As Integer
Height = mvarHeight
End Property
5. Lu modul thnh tp tin clsBox.cls
6. n y, ta cn 2 phng thc na l v hp (DrawBox) v xo hp
(ClearBox). C 2 phng thc c mt tham s truyn l i tng v hp
ln. N c th l biu mu, hp hnh...
.ClearBox Me
.X = nIndex
.DrawBox Me
Next
End With
End Sub
4. Thi hnh chng trnh. Nhn chut vo biu mu, ta s thy hp trt dc
theo biu mu.
10.1.3Tham s tu chn
Ta c th s dng tham s tu chn trong cc phng thc, thm ch cc th tc
ca thuc tnh. V d, ta c th thm tham s mu cho phng thc DrawBox. Khi
, ch vi phng thc DrawBox, ta c th v hoc xo hp m khng cn gi
ClearBox.
V d mu Dng tham s tu chn
1. Dng chng trnh. Trong ca s Project Explorer, nhn p chut ln
clsBox m ca s Code.
2. Tm phng thc ClearBox, nh du khi th tc v nhn phm Delete
xo n i.
3. Sa phng thc DrawBox thm vo tham s tu chn mu:
Public Sub DrawBox(Canvas As Object, Optional lColor As Long)
If IsMissing(lColor) Then
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight),, B
Else
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight), lColor, B
End If
End Sub
10.1.4S kin ca lp
nh ngha s kin cho lp c trong VB5. N vn hu dng vi VB6. Chng hn
ta mun mi ln hp c v trn mn hnh, s kin Draw gy ra hot ng cp
nht trn mn hnh.
V d - nh ngha v kch hot s kin
1. nh ngha s kin Draw. Mt trong nhng thng tin cn cp nht l to
(x,y) ca hp. M ca s Code v thm dng lnh sau vo phn General
Declarations:
Public Event Draw(X As Integer, Y As Integer)
Tuy nhin, dng lnh ny cha th hin lc no th s kin c kch hot.
2. Ta mun s kin Draw c sinh ra mi khi hp c v trn biu mu.
Tm phng thc DrawBox v thm dng lnh in m vo cui ca phng
thc ny:
Public Sub DrawBox(Canvas As Object, Optional lColor As Long)
If IsMissing(lColor) Then
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight),, B
Else
Canvas.Line (mvarX, mvarY)-(mvarX + mvarWidth, mvarY + _
mvarHeight), lColor, B
End If
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.5Hu i tng
Sau khi s dng mt i tng v khng cn dng na, ta cn hu n i. iu ny
c bit quan trng khi ta s dng nhiu i tng trong ng dng. Nu khng
hu i tng, s hao ht vng nh s lm gim kh nng hot ng ca ng
dng. Ta dng dng lnh sau:
Set <i tng> = Nothing
Ni l tng hu mt i tng l trong s kin Unload ca biu mu.
V d:
Private Sub Form_Unload (Cancel As Integer)
Set A_Box = Nothing
End Sub
Select Case so snh phm k t vi kiu d liu quy nh trong thuc tnh Tag. Hm
Chr$ chuyn m k t nKeyAscii thnh chui k t tng ng. Hm Asc lm
ngc li v tr v m k t ASCII ca mt k t.
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.
End Sub
5. Chng trnh cho nt Foreground:
Private Sub cmdForeground_Click()
Dim nColor As Long
Dim FormControl As Control
On Error GoTo ForecolorError
dlgColors.CancelError = True
dlgColors.Flags = &H1&
dlgColors.ShowColor
nColor = dlgColors.Color
For Each FormControl In frmColors.Controls
If TypeOf FormControl Is TextBox And chkTextBoxes.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is Frame And chkFrames.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is Label And chkLabels.Value = 1 Then
FormControl.ForeColor = nColor
If TypeOf FormControl Is CheckBox And chkCheckBoxes.Value = 1 Then
FormControl.ForeColor = nColor
Next
Exit Sub
ForecolorError:
MsgBox ("You pressed the cancel button.")
End Sub
6. Vit chng trnh cho nt Quit:
Private Sub cmdQuit_Click()
' Quit the application by unloading the form
Unload frmColors
End Sub
7. Thi hnh chng trnh. Chn vo hp nh du chn kiu iu khin ta
mun i mu, nhn nt Background hay Foreground thi hnh vic i.
Mt hp thoi mu xut hin cho php ta chn mu.
Thuc tnh CancelError ca iu khin hp thoi thng dng c quy nh l
True, ngha l li s 32755 c pht s gi chng trnh trc tip by li.
Vng lp For Each...Next duyt qua tng iu khin trong tp hp, t tng phn
t vo bin i tng FormControl Dng TypeOf kim tra kiu iu khin.
Lu dng t kho Is vi TypeOf thay v dng du kim tra bng.
10.4.3Xc nh biu mu
V ta c th to ra 10 biu mu ng nht c cng tn, nn vic xc nh ca s l
cn thit. T kho Me cho php ta tham chiu n ca s hin hnh, l ca s
ang c focus, hay ni cch khc, l ca s nhn c mi phm nhn hay click
chut bt k.
Ta c th dng:
activeform.txtEmployee.text = Peter
nhng dng me l cch thng dng nht.
Sp xp ca s
Dng phng thc Arrange vi biu mu MDI sp xp cc ca s con. Cc
hng ni ti sau y l cc kiu sp xp c s do VB cung cp:
Gi tr
0
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.1 ADD-INS
TmenuAddins,chnAddinsmanager..hpthoiAddin
xuthin
ToccRecordsetchophpcpnhttccthtc
lutr
To cc User Control hin th v thao tc vi
CSDL
T ng pht sinh chng trnh ca VISUAL BASIC
thhinmilinhgiaccdliu.
Tocciukhinchophphinthvthaotc
viccmilinhtmkim.
Dngmtbngvnbndhiuthayvmtgitr
khhiu.
CmtvnbndhiuchogitrNull.
Thitknhanhchngccbiumuvicciukhin
rngbucvingundliu.
To cc biu mu Master/Detail kiu mt mu tin,
kiuli.
11.2.3.1
XcnhcsdliulODBChayAccess
Chnbiumu(tngtphntobiumutrc)
XcnhngundliuchophnMaster
XcnhngundliuchophnDetail
Xcnhdliuchoktnimtnhiugia Master
vDetail.
Chniukhintamunxuthintrnbiumuv
chophpWizardtochngtrnhchochng.lcc
nt Add, Update, Edit, Refresh, Close, Show data
control.
Ktthc
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.1
Khi 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.1
11.3.6.2
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.
8. Sao chp tp tin vo mi trng phn pht, hoc a ln Web side
dng trnh pht hnh Web (Web publishing Wizard )
11.4 Bi tp
Dng trnh to ng dng t ng to ng dng kiu Explorer.
Dng trnh xy dng d liu t ng to biu mu Master/Detail.
12.1 C s d liu l g?
C s d liu l mt kho cha thng tin. C nhiu loi c s d liu, nhng ta
ch cp n c s d liu quan h, l kiu c s d liu ph bin nht hin
nay.
Mt c s d liu quan h:
Cha d liu trong cc bng, c cu to bi cc dng cn gi l cc mu
tin, v ct gi l cc trng.
Cho php ly v ( hay truy vn ) cc tp hp d liu con t cc bng
Cho php lin kt cc bng vi nhau cho mc ch truy cp cc mu tin lin
quan vi nhau cha trong cc bng khc nhau.
12.1.2Bn v trng
Cc c s d liu c cu to t cc bng dng th hin cc phn nhm d
liu. V d, nu ta to mt c s d liu qun l ti khon trong cng vic kinh
doanh ta phi to mt bng cho khch hng, mt bng cho Ho n v mt bng
cho nhn vin. Bng c cu trc nh ngha sn v cha d liu ph hp vi cu
trc ny.
Bng: Cha cc mu tin l cc mu ring r bn trong phn nhm d liu.
Mu tin: Cha cc mi trng. Mi trng th hin mt b phn d liu trong
mt mu tin. V d nh mi mu tin th hin mt mc trong danh b a ch cha
trong trng Tn v h, a ch, thnh ph, tiu bang, m ZIP v s in thoi.
Ta c th dng chng trnh Visual Basic tham chiu v thao tc vi c s d
liu, bng, mu tin v trng.
12.1.2.1
Thit k c s d liu
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.
Cm t tbl th hin tn bng, tn trng hin th y , khng cha
khong trng hay nhng k t c bit khc nh du gch di.
Bng ho n :
TblOrder
ID
CustomerID
OrderDate
ItemID
Amount
12.1.3Recordset l g ?
Mt khi ta c kh nng to bng, ta cn phi bit cch thao tc chng.
Thao tc trn cc bng lin quan n vic nhp v ly v d liu t cc bng
khc cng nh vic kim tra v sa i cu trc bng. thao tc vi cu trc
bng, ta dng cc cu lnh inh ngha d liu hoc mt i tng TableDef (c
gii thiu trong chng Cc i tng truy cp d liu ). thao tc d liu,
trong mt bng, ta dng Recordset.
Mt Recordset l mt cu trc d liu th hin mt tp hp con cc mu tin
ly v t c s d liu. V khi nim, n tng t mt bng, nhng c thm mt
vi thuc tnh ring bit quan trng.
Cc RecordSet c th hin nh l cc i tng, v khi nim tng t nh
l cc i tng giao din ngi s dng ( nh l cc nt lnh v hp vn bn )
m ta lm quen vi Visual Basic trong cc chng trc. Cng nh cc kiu i
tng khc trong Visual Basic, cc i tng Recordset c cc thuc tnh v
phng thc ring.
Lu : Ta c th lp trnh to v s dng cc recordset theo mt trong ba
th vin truy cp d liu Cc i tng truy cp dliu ( DAO ), cc i tng
truy cp d liu t xa ( RDO ) v cc i tng d liu ActiveX ( ADO ).
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
Integer
Long
Long binary
( OLE Object )
Meno
Single type
Text
VarBinary
12.1.5To lc c s d liu
Mc d vic to danh sch cc bng v trng l cch tt nht xc nh cu
trc c s d liu, ta cn c mt cch xem cc bng v tng di dng
ho. Sau , khng ch xem c cc bng v trng hin c m cn thy c
mi quan h gia chng. lm c iu ny, ta to lc .
Lc l s cc con ng trong c s d liu. Lc th hin cc
bng, trng v mi quan h trong c s d liu. C lc c s d liu l
phn quan trng trong tht k phn mm bi v n cho ta mt cch nhn nhanh v
nhng g trong c s d liu.
Cc lc vn c v tr quan trng lu di sau khi qu trnh thit k c s d
liu hon tt. Ta s cn n lc thi hnh cc cu truy vn trn nhiu bng.
Mt lc tt s tr li c cc cu hi nh l, Nhng bng no cn ni vi
nhau a ra danh sch cc ho n trn $50.00 t cc khch hng Minnesota
trong 24 gi qua ?
Khng c phng php chnh thc to lc , mc d cng c nhiu cng
c thc hin. Cng c v Visio rt uyn chuyn, nhanh v d dng. Hn na
n tch hp vi cc ng dng Windows khc, nht l Microsoft Office.
Phn ny xem visio nh mt cng c v ghi chp v c s d liu. Nhung
ta cn c th dng Visio nh mt cng c pht trin. Vi Visio Professional, ta c
th thit k c s d liu bng ho. Sn phm c kh nng ly thit k
ho v to ra c s d liu thc s. Tham kho thng tin v Visio ti a ch http://
WWW.Visio.Com
12.1.6.1
S dng ca s c s d liu
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.4.1
12.1.6.4.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.4.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.7Cc 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.
qun
Khi cc bng ni kt vi nhau thng qua mi quan h, d liu trong mi bng
phi duy tr s nht qun trong cc bng lin kt. Tnh ton vn tham chiu qun l
cng vic ny bng cch theo di mi lin h gia cc bng v ngn cm cc kiu
thao tc no trn cc mu tin.
V d, gi nh rng ta c mt bng gi l tblCustomer v mt bng khc l
tblOrder. Hai bng ny quan h vi nhau qua trng chung l ID.
Gi thit y l ta to cc khch hng cha trong tblCustomer ri to cc ho
n trong tblOrder. Nhng iu g s xy ra nu ta tin hnh xo mt khch hng
c ho n cha x l cha trong bng ho n ? Hoc l nu ta to mt ho n
m khng c mt CustomerID hp l gn lin vi n ? Mc ho n khng c
CustomerID th khng th gi i, bi v a ch gi l mt trng ca mu tin trong
tblCustomer. Khi d liu tron cc bng quan h gp phi rc ri ny, ta ni n
trng thi khng nht qun.
Mt iu rt quan trng l c s d liu khng c tr nn khng nht qun,
b my c s d liu Jet cung cp mt cch ta nh ngha mi quan h trong cc
bng. Khi ta nh ngha mt mi quan h chnh thc gia hai bng b my c s
d liu s gim st mi quan h my v ngn cm bt k thao tc no vi phm tnh
ton vn tham chiu. Hot ng ca c ch ton vn tham chiu l pht sinh ra li
mi khi ta thi hnh mt hnh ng no lm cho d liu ri vo trng thi khng
nht qun. V d, trong c s d liu c tnh ton vn tham chiu ang hot ng,
nu ta c to mt ho n cha mt ID ca khch hng i vi mt khch hng
khng tng ti, ta s nhn mt thng bo li v ho n s khng th to ra.
12.1.8Chun ho
Chun ho l mt khi nim lin quan n mi quan h. V c bn, nguyn tc
ca chun ho pht biu rng cc bng c s d liu s loi tr tnh khng nht
qun v gim thiu s km hiu qu.
Quan h Mt - Mt
Quan h mt - nhiu
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.1To
mt
giao
din
ngi
dng
vi
thit
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
Cc thuc tnh
ConnectionString,
RecordSource ca
iu khin ADO
Data
kt ni vi
C s d
liu
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
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 :
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:
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
l
Trong lp trnh c s d liu, vic kim tra d liu hp l (Validation)
m bo rng d liu nhp vo h thng tun th cc iu kin xc nh bi thit
k ng dng.
Mt cch thi hnh vic kim tra ny khi lp trnh vi iu khin ADO Data
l vit chng trnh trong s kin WillChangeRecord ca iu khin. S kin ny
c kch hot ngay sau khi mu tin c hin th bi iu khin d liu b thay
i. Mt tnh hung hay gp l ngi dng kch hot s kin bng cch di chuyn
sang mu tin khc sau khi sa i hay to mt mu tin.
Khc vi phin bn trc ca Visual Basic vn s dng iu khin DAO Data,
iu khin ADO Data bo li theo tng kiu hot ng ca iu khin Data. iu
khin DAO Data ch pht s kin Validate v Reposition vn c kch hot vi
mt s l do. Chng trnh phi x l thm xc nh ti sao s kin c kch
hot.
12.4.3.5
Validation mc b my c s d liu
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
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.
Hi : Th cn iu khin DAO Data th sao ?
p : Trong quyn sch ny, ta tp trung vo phin bn ADO ca iu khin bi
v n mnh hn iu khin DAO Data. Mc d vy, ta vn c th dng DAO khi
khng th dng DAO khi khng th dng ADO. tm hiu chi tit v iu ny,
tham kho mt s mo lin quan n iu khin DAO Data.
Hi : iu khin d liu c v d s dng nhng chng c v b hn ch v ri
rm trong vi trng hp. C cch no thc hin cc chc nng c s d liu
trong Visual Basic.
p : Chc chn bn c Microsoft cung cp iu khin DAO Data ( k t
Visual Basic 3.0 ) nh l mt gii php khng cn lp trnh. i vi cc hn ch
ca iu khin d liu, ta c th c gii php l kt hp 1 hay nhiu iu khin
d liu vi lp trnh hoc ch s dng chng trnh.
Hi : C cch no dng cc iu khin cn dng d liu m khng dng iu
khin d liu khng ?
p : C, mc d, nu ta khng dng iu khin d liu, ta s phi vit chng
trnh qun l kt ni vi c s d liu mt cch th cng hay dng thit k
DataEnvironment ( nh trnh by trong phn Dng thit k DataEnvironment
to giao din ngi s dng trong chng ny ). iu ny khng phi l khng
lm c nhng hi phc tp. Ta s dng chng trnh i tng ( DAO, RDO
hay ADO ) x l vic tr v v cp nht mu tin. ( Ta cn c th dng kiu lp
trnh ny cho php cc iu khin khng cn dng d liu, nh l iu khin
TreeView ca Visual Basic, trnh by d liu t c s d liu ).
Hi : Ta c th dng i tng Recordset ca iu khin d liu vo mc ch
khc khng ?
p : c, i tng Recordset ca iu khin ADO Data tng t cc i
tng Recordset khc trong ADO. Ta c th gn mt recordset to ra trong chng
trnh ADO vi mt i tng Recordset ca i tng ADO Data.
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
tng 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
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.
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
ngha
dbOpentable
dbOpenDynamic
dbOpenDynaset
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.
BO F
M utin1
M utin2
...
EO F
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
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.
If rs.NoMatch Then
' not found
MsgBox "No customer by that name was found.", vbExclamation
Else
' return info
MsgBox rs!Address & vbCrLf & _
rs!City & ", " & rs!State & " " & _
rs!Zip & vbCrLf & _
rs!Phone, _
vbInformation, _
rs!FirstName & " " & rs!LastName
End If
End Sub
im hn ch ca phng thc Seek l kh nng tm kim trn mt trng duy
nht v n phi c nh ch mc. Ngoi ra n ch s dng cc ton t sau :
>;<;>=;<=;=
Khc vi phng thc Seek , vn hn ch th phng thc Find cho php ta s
dng cc ton t c sn ca SQL nh Like , in .
Option Explicit
' References: MS DAO 3.51
Dim db As Database
Dim rs As Recordset
Private Sub cmdBadFileName_Click()
On Error GoTo ErrHandler
Set db = OpenDatabase("..\..\DB\slez.mdb")
Exit Sub
ErrHandler:
Dim DBError As Error
Debug.Print "Contents of DBEngine Errors Collection"
Debug.Print "--------------------------------------"
For Each DBError In DBEngine.Errors
Debug.Print DBError.Description
Next
End Sub
13.6.1To mt CSDL
Ta c th s dng phng thc CreateDatabase ca i tng DBEngine trong
DAO to c s d liu Jet ca Microsoft.
Khi to mt c s d liu, ta phi cung cp tn mt tp tin (thng c phn m
rng l MDB) v mt locale. Locale l mt chc nng ca ngn ng c dng bi
ngi s dng ng dng; n ch ra th t i chiu cho c s d liu. Th t i
chiu xc nh cch thc lu tr cc d liu dng vn bn trong c s d liu theo
mc nh.
Lu : Phng thc CreateDatabase ca i tng DBEngine thay th dng lnh
CreateDatabase thng dng trong cc phin bn c ca DAO. Nhng bi v
DBEngine l mt trong nhng i tng DAO m ta khng cn tham chiu tng
minh trong chng trnh, ta c th tip tc s dng CreateDatabase nh cch c,
khng c tham chiu n i tng DBEngine trc n. Tuy nhin, nu mun
chnh xc 100%, ta dng DBEngine.CreateDatabase thay v CreateDatabase.
V d sau to mt c s d liu. Ngoi ra, n cn ni thm mt bng duy nht vi
2 trng vo c s d liu .
Option Explicit
lm ny tng t cho nhiu kiu i tng DAO khc dng to cc thnh phn
c nh ca mt c s d liu ).
V d sau y dng TableDef to mt bng mi. on chng trnh ny s
dng i tng Field v tp hp Fields; s c trnh by trong phn sau. Lu
rng nu ta dng on chng trnh ny to mt bng c sn, ta s b bo li
thi hnh. Do , nu ta c sn mt bng l tblEmployee, ta ch ra gi tr cho thuc
tnh Name ca i tng TableDef l tblEmployeeNew.
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 cmdCreate_Click()
On Error GoTo ErrHandler
Dim td As TableDef
Dim f As Field
Set td = New TableDef
Set f = New Field
f.Name = "FirstName"
f.Type = dbText
td.Name = "tblEmployeeNew"
td.Fields.Append f
db.TableDefs.Append td
MsgBox "Lo, the table has been created."
Exit Sub
ErrHandler:
If Err.Number = 3010 Then
MsgBox "You can't create the table twice, chief."
Else
MsgBox Err.Description
End If
End Sub
Ta c th to bng v trng theo cch chnh quy. Ta c Microsoft Access v Visual
Data Manager ca Visual Basic lm vic ny.
cha 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
13.6.2.4
End Sub
Private Sub cmdView_Click()
lstOutput.Clear
For Each con In db.Containers
lstOutput.AddItem con.Name
For Each doc In con.Documents
lstOutput.AddItem "
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:
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.1.1Thit k vi DataReport
Mi ln to ra thit k DataReport, ta phi rng buc n vi mt c s d liu
hin th d liu. ta thc hin iu ny thng qua mt b gm cc iu khin
rng buc ch hot ng trong ng cnh thit k DataReport.
Cc iu khin trc quan ca thit k DataReport bao gm:
iu khin nhn
iu khin hp vn bn
iu khin nh
iu khin on thng v iu khin hnh dng
iu khin hm cho php chn cc tnh ton tm tt v bo co
bi v cc iu khin ca DataReport c thit k c bit hot ng
trong ng cnhca thit k DataReport, chng c nhng tn gi khc nhau. V d
tn lp chnh thc ca iu khin hp vn bn l Rpttextbox; tn lp iu khin
nh l RptImage
S n gin hn nhiu nu ta dng k thut ko th to bo co
1. T menu Project, chn Add DataReport
2. To thit k Data Enviroiment
3. Trong thit k Data Enviroiment, to mt cu lnh truy vn da trn bng
tblCcustomer
4. Thit k Data Enviroiment hin th danh sch cc trng d liu trong
bng tblCustomer. Chn v ko r trng Customer_ID t thit k Data
Enviroiment vo phn on Detail ca thit k DataReport
5. Mt iu khin nhn v mt hp vn bn rng buc vi trng d liu
Customer_ID xut hin trn thit k DataReport
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
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.
ODBC Data
Source
ODBC Drive
Manager
ODBC Drive
DB
To System DSN
Nhn nt Add.
Hp thoi Create New Data Source xut hin. Chn tn ca iu khin c s
d liu ta mun dng (trong v d ny l SQL Server).
Nhn Finish. Trnh to ngun d liu mi n SQL Server xut hin.
Trong Name, nhp tn ca ngun d liu. Tn ny s c dng trong ng
dng Client tham chiu n c s d liu, v vy, nn t tn sao cho gi nh,
c th ly tn ca c s d liu. (V d l Novelty).
in vo Description l tu chn. N cung cp thm thng tin gn lin vi
tn ngun d liu ODBC. Thng tin ny ch hin th trong ca s ODBC ca
Control Panel, v c xem nh mt thng tin v tn ngun d liu.
Trong hp kt hp Server, chn SQL Server cha c s d liu m ta ang
lm vic.
Nu my tnh m ta ang dng cng ang ni vi SQL Server, tn ca server s
xut hin trong danh sch th xung. Nu SQL Server cha trn cng my, ta c
th dng local thay th tn ca server
Nhn Next. Mn hnh k tip ca Trnh t ng xut hin, hi ta cch login
vo server. Ta c th chn c ch login ca WinNT, trong , login mng c
dng nh l ID ca ngi s dng v mt khu. Nhn Next.
C th khng cn nhp mt khu. Ta ch dng n n khi m mt kt ni n
c s d liu. iu ny ngn cn nhng rc ri bo mt tim n, v mi thng tin
ca ODBC DSN u c cha trong registry ca my tnh.
Mn hnh k tip ca Trnh t ng xut hin. Chn vo hp dnh du
Change the default database to, ri chn c s d liu Novelty t hp kt hp.
Mc d bc ny l tu chn, ta nn lun lin kt tn c s d liu vi tn ngun
d liu ODBC.
Nhn Next. Mn hnh k xut hin, nhc ta chn thng dch b k t. Thng
thng, ta khng cn i bt k mc no trong mn hnh ny, tr phi ta ang s
dng b k t khc trn server, v vy, nhn Next.
Mn hnh k cho ta chn kh nng kch hot tc v ghi nht k. N cho php ta
xem nhng hnh ng bn trong m ODBC lm khi gi quyt mt truy vn. Thng
thng, ta ch chuyn n thnh on nu ta ang gp li hay tm kim nhng nguyn
nhn ch tc trong ng dng.
Hnh 23.3 S dng ca s iu khin ODBC chn mt c s d liu SQL
Server mc nh
Nhn Finish. Hp thoi xut hin, m t chi tit ca ngun d liu m ta va
to. Sau , nhn nt Test Data Source. Trnh iu khin s p ng bng cch
thng bo mt kt ni va c thit lp thnh cng.
Sau khi nhn OK, tn ngun d liu mi xut hin trong ca s ODBC Data
Source Administrator.
15.1.2.2
Trang:204/265
Trang:205/265
xa)
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:206/265
15.3.3.2
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
Trang:207/265
Trang:208/265
Trang:209/265
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:210/265
15.5.1Gi
th
tc
cha
sn
trong
mt
trnh
thit
UserConnection
15.5.1.1
Trang:211/265
anh
***********************************/
15.5.1.2
Gi th tc
Trang:212/265
****************************/
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 SystemDSN. 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:213/265
Trang:214/265
Trang:215/265
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:216/265
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
Trang:217/265
Trang:218/265
Trang:219/265
Trang:220/265
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.
Trang:221/265
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
Trang:222/265
Trang:223/265
dng
phng
thc
xng
sn
sut(FACTORY
METHOD)
Xng sn xut i tng l mt phng php to cc i tng khc. Ta dng
Xng sn xut i tng trong trng hp mt i tng gi vai tr to ra cc
FPT Software Solution
Trang:224/265
M t
To mt i tng QueryDef.
To mt i tng Relation
To mt i tng TableDef
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
Trang:225/265
Trang:226/265
Trang:227/265
Trang:228/265
Trang:229/265
Hnh 16.6 D liu c xut di dng HTML v trnh by trong trnh duyt
IE
16.3.2.1.1
Trang:230/265
16.3.2.1.2
Trang:231/265
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:232/265
Trang:233/265
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:234/265
17 Truy cp d liu t xa
Trang:235/265
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).
M y
Client
ThnhphnA ctiveX
Truycncsdliu
Cungcpccit ngchoClient
CSD L
M yServer
Trang:236/265
M y
Client
ThnhphnA ctiveX
Truycncsdliu
Cungcpccit ngchoClient
M ytnhtrunggian
CSD L
M yServer
Trang:237/265
17.1.1.3
17.1.1.3.1
ActiveX EXE
17.1.1.3.2
TRANSACTION SERVER )
Trin khai mt thnh phn dng MTS l cch d nht to mt ng dng
phn tn.
MTS chy trn WinNT, Win95 v Win98; nhng hiu qu nht l WinNT.
MTS c trong b WinNT 5.0. Vi NT 4.0 (l mi trng chng ta ang ni
chuyn), ta phi ci t phin bn mi nht ca MTS dng Windows Option Pack,
km theo a CD ca Visual Basic. N nm trong a 2 ca bn Enterprise, th mc
\NToptpak. Hoc l ta c th ti xung Windows Option Pack t web site ti http://
www.microsoft.com/windows/dowloads/contents/Updates/NT40ptPK. Lu rng
Option Pack c p dng cho Win95, Win98 khi ci NT Option Pack trn my
khng phi NT, ta c Personal Web Server i vi Win95 v mt phin bn hn
ch ca MTS.
Phn ny lm vic vi MTS 2.0. Chng ny ch ni v s dng MTS vi vai
tr l mt trung gian yu cu i tng v theo di cc thnh phn phn tn t xa.
Ta khng tm hiu cc tnh nng khc ca MTS nh l cho php transaction gia cc
thnh phn, hay l m hnh bo mt ca MTS.
Mun
nghin
cu
thm
MTS
vo
http://
www.microsoft.com/ntServer/basics/appservices/transsvcs/
Trin khai mt thnh phn t xa di MTS c 3 bc:
1. To gi MTS cha thnh phn.
2. t thnh phn vo gi.
3. Export gi ra t MTS v ci t vo my Client.
To gi MTS
Trang:238/265
Trang:239/265
Trang:240/265
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:241/265
Trang:242/265
Trang:243/265
17.1.1.3.4
Trang:244/265
Trang:245/265
Trang:246/265
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)
( cng nh cc i tng c c sao chp vo lc ng
c s d liu Access nh b ho hay khng.
bo co v m-dun chng
trnh ).
Phng thc
Database
To mt bn sao t Bn thit k
Trang:247/265
Database
TableDef
Thuc tnh
PartialReplica
Relation
Thuc tnh
ReplicableBool
Database
i.
gc.
ng b ho mt bn sao c s
d liu vi Bn thit k gc.
Cho php cung cp mt mnh
WHERE trong cu SQL kim
sot cc mu tin trong bng c
sao chp ( thuc tnh ny h tr
Sao chp mt phn ).
i vi Sao chp mt phn, n
cho php ta xc nh nhng quan
h no kim sot vic sao chp
mu tin.
Tng ng vi thuc tnh
Replicable, nhng d ci hn.
Trang:248/265
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
Trang:249/265
ii.
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
Trang:250/265
Exit Sub
ErrHandler:
If Err.Number = 3270 Then
Set pr = td.CreateProperty("ReplicableBool", dbBoolean, True)
td.Properties.Append pr
Else
MsgBox "Error " & Err & " - " & Error
FPT Software Solution
Trang:251/265
v.
Trang:252/265
Trang:253/265
Trang:254/265
Trang:255/265
17.2
Trang:256/265
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:257/265
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.
Trang:258/265
Trang:259/265
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
Trang:260/265
Trang:261/265
Trang:262/265
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
Trang:263/265
Trang:264/265
Trang:265/265