Professional Documents
Culture Documents
c im: - Chng trnh ca VBA hot ng ch yu theo hng s kin : bm chut ti cc nt lnh, di chuyn vo hay ra i tng iu khin ca form, report - Cc th tc v hm ca VBA nm ri rc trong cc module ca form, report hoc module chung ca CSDL v chng c th gi ln nhau.
Phm Th Kim Ngoan 4
II. Module
1. Khi nim Module: L tp cc tu chn, cc khai bo, cc th tc cng c lu tr trong mt n v chng trnh.
* Mi Form/Report u c th kt hp vi mt Module lp
(Form Module/Report Module), Module lp ny c lu cng vi Form/Report.
Phm Th Kim Ngoan 5
Module chun
Module loi
c. Cu trc th tc x l s kin :
Private Sub Tnitng__tnskin ([Cc tham s]) Cc lnh End Sub
Phm Th Kim Ngoan 9
10
Tn_Module.Tn_th_tc
Call Tn_Module.Tn_th_tc Call Tn_Module.Tn_th_tc () V d: Tinhtoan.Tong Call Tinhtoan.Tong
Call Tinhtoan.Tong()
12
V d: Call Tinhtoan.Tongab(15, 56) Hm (Function procedure): ? Tn_Module.Tn_hm () ? Tn_Module.Tn_hm ? Tn_Module.Tn_hm (Cc tham s thc s)
V d: ?Tinhtoan.Tong1()
?Tinhtoan.Tong2(25, 35)
13
14
15
16
I. Cc tu chn
Option Explicit: ngi dng phi khai bo tng minh cc bin Option Compare Binary: phn bit ch thng v hoa khi vit chng trnh Option Compare Text: phn bit ch thng v hoa khi so snh Option Base n: qui nh ch s u tin trong kiu d liu mng
17
Kch thc
1 byte 1 byte 2 bytes 4 bytes 0 255 True/False
Phm vi
Single
4 bytes
-3,402823E+38 3,402823E+38
Double
8 bytes
-1,7976E+308 1,7976E+308
Currency
8 bytes
-9,223E+14 9,223E+14
Phm Th Kim Ngoan 18
Length of string
16 bytes
III. Khai bo
1. Khai bo hng: Public/Private CONST Tn_hng [AS Kiu d liu] = Biu thc gi tr V d: Const Pi=3.14 Public Const S = y l v d Private Const so As Integer = 5 2. Khai bo bin: Public/Private/Dim/Static Tn_bin [AS Kiu d liu] V d: Public Hoten As String, DTB As Double Private Diachi As String
Phm Th Kim Ngoan 20
III. Khai bo
Phm vi s dng: Mc th tc : Cc khai bo bn trong th tc.
Tn:
- Gm ch ci, ch s v du gch chn, bt u l ch ci. Khng trng vi t kho ca Access. di khng vt qu 40 k t.
21
[, gi tr mc nh][,x, y] ]) - Hm InputBox tr v gi tr Variant - Chc nng : Hin th dng nhc trong mt hp thoi, i nhp liu v tr v gi tr trong textbox V d: Nhp 1 s nguyn t bn phm v lu trong bin a Dim a as Integer
a = Inputbox(Nhp a=, Nhp s liu)
22
24
16 / vbCritical
32 / vbQuestion
Critical (Stop)
Warning query
48 / vbExclamation
64 / vbInformation
Warning Message
Information
25
256 / vbDefaultButton2 nt th 2
512 / vbDefaultButton3 nt th 3 * Gi tr ca hm khi nt lnh c chn: 1 2 OK Cancel 4 5 Retry Ignore
Abort
Yes
No
biu thc
26
27
V. Mt s hm / th tc ca VBA
Cc hm v chui: LTRIM(St) ct cc k t trng bn tri chui
RTRIM(St)
TRIM(St)
LEN(St)
LEFT(St,n)
di chui
ly n k t bn tri chui
V. Mt s hm / th tc ca VB
LCASE(St) i cc k t trong chui thnh ch thng UCASE(St) i cc k t trong chui thnh ch in Cc hm tnh ton: ABS(n) tr tuyt i FIX(r) ly phn nguyn ca s thc INT(r) ly phn nguyn gn nht v nh hn r SQR(n) cn bc 2 ca n EXP(n) hm e m n VAL(St) i chui thnh s Cc hm v ngy, gi: NOW() ly ngy gi ca h thng DATE() ngy h thng TIME() gi h thng
Phm Th Kim Ngoan 29
V. Mt s hm / th tc ca VB
DATEPART(dt) ly mt phn ca ngy/thng/nm DATEPART(d, dt) ly phn ngy DAY(dt) DATEPART(m, dt) ly phn thng MONTH(dt) DATEPART(yyyy, dt) ly phn nm YEAR(dt) Cc hm kim tra: ISNUMERIC(n) kim tra n c phi l mt s khng? ISDATE(d) kim tra d c phi l kiu ngy khng? Ch : dng ch thch Vit lnh trn nhiu dng dng du space v gch di ( _)
Phm Th Kim Ngoan 30
1. Cu trc la chn: 2. Cu trc lp: 3. Lnh Exit: II. Kiu d liu c cu trc: 1. Mng:
2. Bn ghi:
31
I. Cc cu trc iu khin
1. Cu trc la chn: a. IF .. THEN C php1: IF (iu kin) THEN khi lnh vit trn cng 1 dng Cp2: IF (iu kin) THEN khi lnh ENDIF
Phm Th Kim Ngoan
32
I. Cc cu trc iu khin
V d: Cp1: IF a >= b THEN Debug.Print a Cp2: IF a >= b THEN Debug.Print a ENDIF
33
I. Cc cu trc iu khin
b. IF .. THEN .. ELSE C php: IF (iu kin) THEN khi lnh 1
ELSE
khi lnh 2 ENDIF c. IF .. THEN .. ELSEIF C php: IF (iu kin1) THEN khi lnh 1 ELSEIF (iu kin2) THEN khi lnh 2 ELSE khi lnh ENDIF
Phm Th Kim Ngoan 34
I. Cc cu trc iu khin
V d: IF a >= b THEN Debug.Print a ELSE Debug.Print b ENDIF V d: IF (a >= b) and (a >=c) THEN Debug.Print a ELSEIF (b >= a) and (b >=c) THEN Debug.Print b ELSE Debug.Print c
ENDIF
35
I. Cc cu trc iu khin
d. SELECT CASE END SELECT: C php: SELECT CASE biu thc gi tr
CASE gtr1:
CASE gtr2:
khi lnh 1
khi lnh 2
CASE ELSE
khi lnh END SELECT
36
I. Cc cu trc iu khin
V d: SELECT CASE n
CASE 1:
CASE 2: CASE 3:
Debug.Print mt
Debug.Print hai Debug.Print ba
CASE 4:
CASE 5: CASE ELSE
Debug.Print bn
Debug.Print nm
Debug.Print ln hn nm
END SELECT
Phm Th Kim Ngoan 37
I. Cc cu trc iu khin
2. Cu trc lp: a. FOR .. NEXT
C php:
FOR bin_m=gi tr u TO gi tr cui [STEP bc lp] khi lnh
NEXT bin_m
V d: Tnh tng 10 s nguyn dng u tin Tong = 0 FOR i =1 TO 10 [Step 1] Tong = Tong + i NEXT i
Phm Th Kim Ngoan 38
I. Cc cu trc iu khin
b. DO WHILE .. LOOP: C php 1: DO WHILE (iu kin)
khi lnh
LOOP C php 2: DO khi lnh LOOP WHILE (iu kin)
C php 3:
I. Cc cu trc iu khin
V d: Tnh tng 10 s nguyn dng u tin Tong = 0: i =1
Tong = Tong + i : i =i + 1
LOOP WHILE (i < = 10)
Phm Th Kim Ngoan 40
I. Cc cu trc iu khin
c. DO UNTIL LOOP:
I. Cc cu trc iu khin
V d: Tnh tng 10 s nguyn dng u tin Cp1:
Tong = 0: i =1
DO UNTIL (i > 10) Tong = Tong + i : i =i + 1
LOOP
Cp2: Tong = 0: i = 0 DO
Tong = Tong + i :
LOOP UNTIL ( i > 10)
Phm Th Kim Ngoan
i =i + 1
42
A () As
Integer
TYPE Tn_kiu_bn_ghi
Thnh phn1 AS kiu dliu1 Thnh phn2 AS kiu dliu2
Hoten
Toan ENDTYPE
as
as
String
Date Single
Ngaysinh as
as
Hosinh
II. qui
III. Thi hnh Macro trong VB IV. Kch hot cc ng dng khc V. G ri m VB
47
48
II. qui
Trong th tc c li gi n chnh th tc V d th tc qui Function Dequi(a As Byte, n As Byte) If n = 0 Then Dequi = 1 Else Dequi = Dequi(a, n - 1) * a End If End Function
50
Docmd.GotoRecord
EndSub
, , ac First
51
Thit k Form ng nhp h thng, yu cu ngi s dng phi nhp vo mt khu khi mun s dng CSDL Dim dem As Byte ----------------Private Sub Dongy_Click() If matkhau = "TTTH" Then DoCmd.OpenForm "Giaodien" DoCmd.Maximize ElseIf dem < 3 Then MsgBox "Ban nhap sai roi!" dem = dem + 1 : matkhau = "" matkhau.SetFocus Else MsgBox "Ban da nhap 3 lan" DoCmd.Quit acQuitPrompt End If End Sub
Phm Th Kim Ngoan 52
Thit k Form ng nhp h thng, yu cu ngi s dng phi nhp vo mt khu khi mun s dng CSDL
53
54
V. G ri m VB
Cc loi li c th gp:
Li bin dch:
Nguyn nhn: lnh sai cu trc Hn ch: chn Auto Syntax Check Li trong lc thi hnh: Nguyn nhn: do c gng thc hin mt hnh ng khng th thc hin c. X l: dng pht biu ON ERROR t by li Li logic ca chng trnh: kt qu sai Nguyn nhn: sai gii thut Pht hin: Chy tng bc kim tra (Menu Debug -> Step Into)
Phm Th Kim Ngoan 55
V. G ri m VB
V d dng pht biu On Error t by li
Sub Vedau_Click()
On error goto err_VD , , ac First
EndSub
56
57
I. i tng v tp hp
Cc ngun cung cp i tng trong MS Access:
I. i tng v tp hp
C3: Tn_tp_hp(ch s) Tp thuc tnh: Xc lp gi tr cho thuc tnh: Tn_i_tng.tn_thuc_tnh = gi tr Ly gi tr ca thuc tnh: Tn_bin = tn_i_tng.tn_thuc_tnh
59
61
62
tin CSDL)
63
64
65
thay i c
DB_OPEN_DYNASET: Tham chiu n bng, query, dliu c th thay i c
Dim Db As Database
Dim Rs As Recordset Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE)
Phm Th Kim Ngoan 66
hoc:
Tn_bin_RS.fields(tn_trng)
V d: Truy xut n trng m mn hc trong bng Mn hc Rs!MaMH Hoc Rs.fields(MaMH) Tham chiu n cc phng thc, thuc tnh ca bin RecordSet: Tn_bin_RS.tn_phng_thc/ tn_thuc_tnh
67
Rs.MoveLast
Rs.RecordCount Thuc pht hin cc gii hn: BOF = True : trc bn ghi u tin, hoc khng c bn ghi EOF = True : sau bn ghi cui cng, hoc khng c bn ghi Tn_bin_RS.BOF V d: Rs.BOF
69
Dim Db As Database
Dim Rs As Recordset Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE) DO WHILE (Rs.EOF = False) Debug.Print Rs!MaMH, Rs!TenMH, Rs!Heso Rs.MoveNext LOOP Rs.Close ENDSUB
Phm Th Kim Ngoan 70
71
Dim Rs As Recordset
Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE) DO WHILE (Rs.EOF = False) IF Rs!MaMH = AV1 THEN Rs.EDIT Rs!TenMH = Anh Vn 1 Rs.UPDATE EXIT DO ELSE Rs.MoveNext LOOP Rs.Close Phm Th Kim Ngoan 73 ENDSUB
74
75
Dim Rs As Recordset
Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE) Rs.ADDNEW Rs!MaMH = AV2 Rs!TenMH = Anh Vn 2 Rs!Heso = 1 Rs.UPDATE Rs.Close ENDSUB
Phm Th Kim Ngoan 76
77
78
80
81
82
tn_bin_QD=tn_bin_DB.CREATEQUERYDEF(tn
query) Tn_bin_QD.SQL=cu lnh SQL
Tn_bin_DB.Tn_bin_QD.DELETE(tn query)
Phm Th Kim Ngoan 83
Tn_bin_QD.EXECUTE
ng: CLOSE Tn_bin_QD.CLOSE
Xo: DELETE
84