You are on page 1of 84

Phn 2: VISUAL BASIC FOR APPLICATION (VBA)

Chng 1: TNG QUAN V VB

Chng 2: CC KHAI BO TRONG VB


Chng 3: CC CU TRC IU KHIN V KIU D LIU C CU TRC Chng 4: TH TC CA NGI DNG Chng 5: I TNG V BIN I TNG

Phm Th Kim Ngoan

Chng 1: TNG QUAN V VBA


I. Gii thiu chung II. Module III. Cu trc ca Module VI. To v thc hin cc th tc V. Mt s hiu ng khi vit v sa cha m lnh

Phm Th Kim Ngoan

I. Gii thiu chung


Visual Basic l ngn ng lp trnh dng rng buc cc i tng trong ng dng vi nhau thnh mt h thng hp nht. Cc chng trnh ca VBA (Visual Basic for Application) c t chc v hot ng trong Access nhm mc ch xy dng cc ng dng phc tp.

C th dng VB thc hin cc cng vic sau:


- Lm cho ng dng d bo tr hn To ra cc hm/th tc ca ngi s dng x l cc thao tc phc tp m cha c MS Access cung cp sn. X l li theo ngi s dng.
Phm Th Kim Ngoan 3

I. Gii thiu chung


- To hay thao tc vi cc i tng Thc hin cc thao tc cp h thng : thc hin mt ng dng khc, lin kt gia cc ng dng.

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.

2. Phn loi Module:


- Module chun: C th thi hnh bt c ni no trong ng dng. - Module lp: Cc th tc nh ngha trong Module lp s tr thnh cc phng thc ca i tng ny.

* 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

III. Cu trc ca Module


1. Module chun: - Cc tu chn

- Cc khai bo ton cc (Public)


- Cc khai bo cp module (Dim) - Cc th tc s dng ton cc - Cc th tc s dng cp module 2. Module loi: - Cc tu chn - Cc khai bo cp module - Cc th tc x l s kin - Cc th tc s dng cp module
Phm Th Kim Ngoan 6

Module chun

Phm Th Kim Ngoan

Module loi

Phm Th Kim Ngoan

III. Cu trc ca Module


3. Cu trc mt th tc: a. Cu trc Sub procedure : Sub Tn_th _tc ([Cc tham s]) Cc lnh End Sub b. Cu trc Function procedure : Function Tn_hm ([Cc tham s]) [AS kiu d liu] Cc lnh Tn_hm = biu thc gi tr End Sub

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

VI. To v thc hin cc th tc


1. Th tc x l s kin: Thng l cc th tc gn vi cc iu khin ca Form (nt lnh, ) t trong Module loi - To mi: M Form c iu khin cn gc th tc dng thit k. Chn Properties ca iu khin cn gn th tc, chn ngn s kin (Event) Chn s kin cn gn (On Click, ), chn nt , chn Code Builder, MS Access a ra khun dng ca th tc vi tn tng ng, ti v tr con tr: g cc lnh cn thc hin trong th tc. - Thc thi: M Form, tc ng s kin va gn ln nt lnh. Phm Th Kim Ngoan

10

VI. To v thc hin cc th tc


2. Th tc Sub procedure v Function procedure: t trong Module loi hoc chun. - To mi: M mn hnh vit m lnh, vit th tc theo cu trc tng ng. - Thc thi:

Bin dch cho n khi khng cn li c php


Menu Debug Complie Loaded Modules Chy xem kt qu trong khung trc tip:

M m hnh trc tip: Menu View DebugWindow /


Immediate Window
Phm Th Kim Ngoan 11

VI. To v thc hin cc th tc


Chy th tc: Th tc khng c tham s:

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()

Phm Th Kim Ngoan

12

VI. To v thc hin cc th tc


Th tc c tham s: Call Tn_Module.Tn_th_tc (Cc tham s thc s)

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)

Phm Th Kim Ngoan

13

VI. To v thc hin cc th tc


Gi th tc t cc th tc khc: Th tc: Call Tn_Module.Tn_th_tc (Cc tham s thc s) Hm: t trong cc biu thc Tn_Module.Tn_hm (Cc tham s thc s)

Phm Th Kim Ngoan

14

V. Mt s hiu ng khi vit v sa cha m lnh


- T ng xy dng cc pht biu: Tools -> Options -> Module -> Auto list Members - Thng tin nhanh: Tools -> Options -> Module -> Auto QuickInfo - T ng kim tra c php: Tools -> Options -> Module -> Auto Syntax Check - Di chuyn gia cc th tc trong module: Ctrl + Page Down / Ctrl + Page Up

Phm Th Kim Ngoan

15

Chng 2: CC KHAI BO TRONG VB


I. Cc tu chn II. Cc kiu d liu c bn II. Khai bo IV. Cc hm/th tc nhp xut d liu V. Mt s hm / th tc ca VB

Phm Th Kim Ngoan

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

Phm Th Kim Ngoan

17

II. Cc kiu d liu c bn


Kiu dl
Byte Boolean Integer Long

Kch thc
1 byte 1 byte 2 bytes 4 bytes 0 255 True/False

Phm vi

-32.768 32.767 -2.147.483.648 2.147.483.647

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

II. Cc kiu d liu c bn


Kiu dl Date Kch thc 8 bytes Phm vi 1/1/10031/12/9999 Cc i tng 0 231 k t 165.400 k t Nh kiu double Nh kiu string c di thay i
19

Object String(variable length) String(fixed length)

4 bytes 10 bytes + string length

Length of string

Variant (with numbers)

16 bytes

Variant (with characters)

10 bytes + string length

Phm Th Kim Ngoan

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.

Mc module : Cc khai bo Private Const trong phn khai bo ca module.


Mc project : Khai bo Public

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.

Phm Th Kim Ngoan

21

IV. Cc hm/th tc nhp xut d liu


1. Nhp d liu: hm InputBox, InputBox$ C php: INPUTBOX[$](Dng nhc [[,tiu ]

[, 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)

Phm Th Kim Ngoan

22

IV. Cc hm/th tc nhp xut d liu


2. Xut d liu: a. Th tc Msgbox C php: MsgBox Dng thng bo, kiu hp thoi, tiu b. Hm Msgbox C php: MsgBox (Dng thng bo, kiu hp thoi, tiu ) Kiu hp thoi: Gi tr cho bit cc nt lnh no s hin th v cc biu tng s hin th trong hp thoi. Chc nng : Hin th mt thng ip trong hp hi thoi v i ngi s dng chn mt nt lnh. Khc nhau gia hm v th tc MsgBox : Hm MsgBox tr v gi tr cho bit chn nt lnh no, cn th tc th khng.
Phm Th Kim Ngoan 23

IV. Cc hm/th tc nhp xut d liu


* Tham s kiu hp thoi gm 3 thnh phn: Nt lnh no s hin th, kiu biu tng hin th, nt ngm nh.

- Nt lnh hin th:


0 / vbOnlyOK 1 / vbOKCancel 2 / vbAbortRetryIgnore 3 / vbYesNoCancel 4 / vbYesNo 5 / vbRetryCancel OK OK, Cancel Abort, Retry, Ignore Yes, No, Cancel Yes, No Retry, Cancel

Phm Th Kim Ngoan

24

IV. Cc hm/th tc nhp xut d liu


- Xc nh biu tng: 0 khng

16 / vbCritical
32 / vbQuestion

Critical (Stop)
Warning query

48 / vbExclamation
64 / vbInformation

Warning Message
Information

Phm Th Kim Ngoan

25

IV. Cc hm/th tc nhp xut d liu


- Xc nh nt ngm nh: 0 / vbDefaultButton1 nt th 1

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

c. In ra mn hnh trc tip: Debug.print


Phm Th Kim Ngoan

IV. Cc hm/th tc nhp xut d liu


V d: In ra di dng hp thoi tng ca a+ b (dng th tc) Msgbox Tng ca a+b= & a+b, vbOkCancel + vbInformation, Kt qu In ra di dng hp thoi tng ca a+ b c kim tra nt lnh bm (dng hm Msgbox) IF Msgbox (Tng ca a+b= & a+b, vbOkCancel+vbInformation, Kt qu)= vbOk THEN

Phm Th Kim Ngoan

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)

ct cc k t trng bn phi chui


ct cc k t trng bn phi v bn tri chui

LEN(St)
LEFT(St,n)

di chui
ly n k t bn tri chui

RIGHT(St,n) ly n k t bn phi chui MID(St,i,n) STR(n) ly n k t bt u t v tr i trong chui i s thnh chui


Phm Th Kim Ngoan 28

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

Chng 3: CC CU TRC IU KHIN V KIU D LIU C CU TRC


I. Cc cu trc iu khin:

1. Cu trc la chn: 2. Cu trc lp: 3. Lnh Exit: II. Kiu d liu c cu trc: 1. Mng:

2. Bn ghi:

Phm Th Kim Ngoan

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

Phm Th Kim Ngoan

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

Phm Th Kim Ngoan

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

Phm Th Kim Ngoan

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:

WHILE (iu kin)


khi lnh WEND
Phm Th Kim Ngoan 39

I. Cc cu trc iu khin
V d: Tnh tng 10 s nguyn dng u tin Tong = 0: i =1

DO WHILE (i < =10)


Tong = Tong + i : LOOP Tong = 0: i =0 DO i =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:

C php 1: DO UNTIL (iu kin)


khi lnh LOOP C php 2: DO khi lnh LOOP UNTIL (iu kin) 3. Lnh Exit: Exit Do Exit Function Exit For Exit Sub
Phm Th Kim Ngoan 41

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

II. Kiu d liu c cu trc


1. Mng: Khai bo: DIM Tn_mng (ch s1, ch s2, ) AS kiu d liu Truy xut: Tn_mng(ch s) V d: Option Base 1 Dim A (10) As Integer, B(3, 4) As Integer Truy xut n phn t th 4 ca mng A: A(4) Truy xut n phn t hng 2, ct 3 ca mng B: B(2, 3)
Phm Th Kim Ngoan 43

II. Kiu d liu c cu trc


Mng ng: Khai bo: DIM Tn_mng() AS kiu d liu Thay i kch thc: REDIM Tn_mng(ch s1, ch s2, ) V d: Option Base 1 Dim REDIM A(5) Xa mng: Erase Tn_mng
Phm Th Kim Ngoan 44

A () As

Integer

II. Kiu d liu c cu trc


2. Bn ghi: nh ngha kiu:

TYPE Tn_kiu_bn_ghi
Thnh phn1 AS kiu dliu1 Thnh phn2 AS kiu dliu2

END TYPE Khai bo:

Public/Private/Dim Tn_bin AS Tn_kiu_bn_ghi


Truy xut thnh phn: Tn_bin.Tn_thnh phn
Phm Th Kim Ngoan 45

II. Kiu d liu c cu trc


V d: TYPE Hocsinh

Hoten
Toan ENDTYPE

as
as

String
Date Single

Ngaysinh as

Khai bo mt bin HS kiu hocsinh Dim HS HS.Hoten


Phm Th Kim Ngoan 46

as

Hosinh

Truy xut thnh phn Hoten ca bin HS

Chng 4: TH TC CA NGI DNG I. Tham bin v tham tr

II. qui
III. Thi hnh Macro trong VB IV. Kch hot cc ng dng khc V. G ri m VB

Phm Th Kim Ngoan

47

I. Tham bin v tham tr


- Truyn theo tham tr(ByVal): cc tham s khng thay i gi tr - Truyn theo tham bin: gi tr cc tham s thay i nu th tc gi c cu lnh l thay i gi tr ca chng V d truyn theo tham tr v tham bin

Phm Th Kim Ngoan

48

I. Tham bin v tham tr


Sub Thamso(ByVal a As Integer, b As Integer) a=a+1 b=a End Sub ---------------------Sub goi() Dim a As Integer : Dim b As Integer a = 5: b = 7 Call Thamso(a, b) Debug.Print "a=", a Debug.Print "b=", b End Sub
Phm Th Kim Ngoan 49

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

Phm Th Kim Ngoan

50

III. Thi hnh Macro trong VB


C php: Docmd.Tn_phng_thc [cc tham s] Cc phng thc ca Docmd c tn v chc nng ging nh cc thao tc (Action) trong Macro Sub Vedau_Click()

Docmd.GotoRecord
EndSub

, , ac First

Phm Th Kim Ngoan

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

Private Sub Form_Load() dem = 1 End Sub

Phm Th Kim Ngoan

53

IV. Kch hot cc ng dng khc


1. Hm Shell: thc hin mt tp tin chng trnh C php:

SHELL (ng dn n tp tin chng trnh [,kiu ca s])


2. Lnh AppActivate: kch hot ng dng thnh ng dng hin hnh C php: APPACTIVATE tn ng dng 3. Hm Sendkey: gi cc phm bm n mt ng dng C php: SENDKEY chui cc phm [,True/False]

Phm Th Kim Ngoan

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

Docmd.GotoRecord err_VD: Exit Sub

EndSub

Phm Th Kim Ngoan

56

Chng 5: I TNG V BIN I TNG I. i tng v tp hp:

II. Bin i tng:


III. S dng cc bin i tng:

Phm Th Kim Ngoan

57

I. i tng v tp hp
Cc ngun cung cp i tng trong MS Access:

MS Access: i tng hin th d liu


MS DAO: i tng truy nhp d liu Visual Basic: i tng em li s linh ng trong lp trnh Tp hp: l cc i tng c cng kiu Tham chiu ti cc i tng: Cc i tng ring bit: tn_i_tng Cc i tng thuc v tp hp: C1: Tn_tp_hp!tn_i_tng C2: Tn_tp_hp(tn_i_tng)
Phm Th Kim Ngoan 58

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

Phm Th Kim Ngoan

59

II. Bin i tng


Bin i tng: bin biu th mt i tng c th thuc vo mt kiu i tng Kiu i tng: phn d liu, cc phng thc Khai bo: C php: Dim tn_bin AS tn_kiu_i_tng Gn cc bin i tng: C php: SET tn_bin = dng biu th Biu th cc thnh phn i tng: Gia cc i tng: ! Thuc tnh, phng thc: .
Phm Th Kim Ngoan 60

In tn cc iu khin c trong Form Mt khu


Sub Dkhien_Matkhau() Dim Frm As Form Dim n As Integer, i As Integer DoCmd.OpenForm Matkhau" Set Frm = Forms(Matkhau") n = Frm.Count For i = 0 To n - 1 MsgBox Frm(i).Name Next i End Sub

Phm Th Kim Ngoan

61

Lit k cc bng c trong CSDL hin ti


SUB Inbang() Dim db As Database Dim t As TableDef Set db = CurrentDb() For Each t In db.TableDefs MsgBox t.Name Next t ENDSUB

Phm Th Kim Ngoan

62

III. S dng cc bin i tng


1. Bin i tng Database: Khai bo: DIM Tn_bin_DB AS Database Gn bin i tng: SET Tn_bin_DB=DBEngine.Workspace(0).OpenDatabase(tp

tin CSDL)

Phm Th Kim Ngoan

63

III. S dng cc bin i tng


V d: Khai bo mt bin Db lm vic vi CSDL hin hnh C1: DIM Db AS Database SET Db= DBEngine.Workspace(0).Database(0) C2: DIM Db AS Database SET Db= CurrentDB()

Phm Th Kim Ngoan

64

III. S dng cc bin i tng


2. Bin i tng Recordset: Lu tr tp cc bn ghi. To i tng Recordset: Dng phng thc

OpenDatabase ca i tng Database


Khai bo: DIM tn_bin_RS AS V d: Dim Rs As Recordset Tham chiu vo mt i tng c th: SET tn_bin_RS=tn_bin_DB.OpenRecordSet (ngun dl, loi) Ngun d liu: Tn ca mt bng, truy vn, cu lnh SQL. Recordset

Phm Th Kim Ngoan

65

III. S dng cc bin i tng


Loi dng 1 trong 3 hng sau: DB_OPEN_TABLE: Tham chiu n 1 bng, d liu c th

thay i c
DB_OPEN_DYNASET: Tham chiu n bng, query, dliu c th thay i c

DB_OPEN_SNAPSHOT: Tham chiu n 1 bn sao ca dliu,


khng thay i d liu c V d:

Dim Db As Database
Dim Rs As Recordset Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE)
Phm Th Kim Ngoan 66

III. S dng cc bin i tng


Tham chiu n cc trng d liu ca bin RecordSet: Tn_bin_RS!tn_trng

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

Phm Th Kim Ngoan

67

III. S dng cc bin i tng


Cc phng thc di chuyn: MOVEFIRST: n bn ghi u tin trong bin Recordset MOVEPREVIOUS MOVENEXT MOVELAST MOVE(n): n bn ghi n trong bin Recordset V d: Rs.MoveNext Phng thc ng : CLOSE Tn_bin_RS.CLOSE V d: Rs.Close
Phm Th Kim Ngoan 68

III. S dng cc bin i tng


Phng thc m s bn ghi: RECORDCOUNT V d: m s bn ghi trong bng mn hc

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

Phm Th Kim Ngoan

69

III. S dng cc bin i tng


V d: In ra mn hnh trc tip danh mc cc mn hc SUB InMH()

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

III. S dng cc bin i tng


Vit th tc x l s kin gn vi nt Xem khi nhp mt m MH Xem: thng tin ng vi mn hc hin th ln cc Textbox ca Form

Phm Th Kim Ngoan

71

III. S dng cc bin i tng


Hiu chnh 1 bn ghi: - Chuyn n bn ghi mun hiu chnh - Dng phng thc EDIT - Tin hnh hiu chnh - Dng phng thc UPDATE V d: Sa Tn mn hc c M s AV1 thnh Anh Vn 1 - Tm bn ghi c MaMH = AV1 - Gi phng thc EDIT - Thay TenMH = Anh Vn 1 - Gi phng thc UPDATE
Phm Th Kim Ngoan 72

III. S dng cc bin i tng


SUB SuaTenMH() Dim Db As Database

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

III. S dng cc bin i tng


Vit th tc x l s kin gn vi nt Sa khi Xem thng tin mn hc hin th ln cc Textbox ca Form, thay i thng tin nt Sa lu li thng tin va sa.

Phm Th Kim Ngoan

74

III. S dng cc bin i tng


Thm 1 bn ghi mi: - Dng phng thc ADDNEW - Nhp d liu cho bn ghi ny - Dng phng thc UPDATE V d: Thm mn hc mi vo bng MONHOC MaMH : TenMH : Heso : AV2 Anh Vn 2 1

Phm Th Kim Ngoan

75

III. S dng cc bin i tng


SUB ThemMH() Dim Db As Database

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

III. S dng cc bin i tng


Vit th tc x l s kin gn vi nt Thm thm vo bng mn hc vi cc thng tin ca mn hc c nhp vo cc Textbox trn Form

Phm Th Kim Ngoan

77

III. S dng cc bin i tng


Xo 1 bn ghi: - Chuyn n bn ghi cn xo - Dng phng thc DELETE V d: Xa t bng MONHOC mn hc c m AV1

Phm Th Kim Ngoan

78

III. S dng cc bin i tng


SUB XoaMH() Dim Db As Database , Rs As Recordset Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE) DO WHILE (Rs.EOF = False) IF Rs!MaMH = AV1 THEN Rs.DELETE EXIT DO ELSE Rs.MoveNext LOOP Rs.Close ENDSUB
Phm Th Kim Ngoan 79

III. S dng cc bin i tng


Vit th tc x l s kin gn vi nt Xa xa t bng mn hc mt mn hc c m c nhp vo Textbox trn Form.

Phm Th Kim Ngoan

80

III. S dng cc bin i tng


Tm kim 1 bn ghi: Phng thc SEEK (p dng vi loi m ngun d liu l DB_OPEN_TABLE) - Ch ra tn ch mc - Tn_bin_RS.SEEK ton t so snh,gi tr so snh Thuc tnh kim tra: NOMATCH NOMATCH=True: khng tm thy bn ghi

Phm Th Kim Ngoan

81

III. S dng cc bin i tng


V d: In ra mn hnh trc tip mn hc c m AV2 SUB InMH_2() Dim Db As Database Dim Rs As Recordset

Set Rs = Db.OpenRecordset (MONHOC, DB_OPEN_TABLE)


Rs.Index = ma Rs.Seek =, AV2 IF Rs.NOMATCH =False THEN Debug.Print Rs!MaMH, Rs!TenMH, Rs!Heso ELSE Debug.Print Khng c mn hc ny! ENDIF Rs.Close Phm Th Kim Ngoan ENDSUB

82

III. S dng cc bin i tng


3. Bin i tng QueryDef: Khai bo: DIM Tn_bin_QD AS QueryDef To 1 query: dng phng thc CREATEQUERYDEF ca i tng Database SET

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

III. S dng cc bin i tng


Thi hnh: EXECUTE

Tn_bin_QD.EXECUTE
ng: CLOSE Tn_bin_QD.CLOSE

Xo: DELETE

Phm Th Kim Ngoan

84

You might also like