You are on page 1of 121

Bi ging Access

Chng 0: Gii thiu


C s d liu (CSDL, database) l mt b su tp cc d liu tc nghip c lu tr li v c cc h ng dng ca mt x nghip c th no s dng. H qun tr c s d liu (HQTCSDL, Database Management System-DBMS) l h thng phn mm cho php: nh ngha, to lp: xc nh kiu, cu trc, rng buc d liu, lu tr d liu trn cc thit b nh. Thao tc: truy vn, cp nht, kt xut,... cc CSDL cho cc ng dng khc nhau V d: HQTCSDL MS SQL Server, MS Access, DB2, PostGreSQL, MySQL, Oracle, FoxPro, Foxbase,... H c s d liu (HCSDL, Database System) l mt h thng gm 4 thnh phn: H qun tr c s d liu Phn cng CSDL v phn mm ng dng Nhng ngi s dng V d: h qun l o to, h qun l nhn s, h qun l kinh doanh,... Cc tnh nng ca h qun tr CSDL: Qun l d liu tn ti lu di. Truy xut d liu mt cch hiu qu. H tr t nht mt m hnh d liu. m bo tnh c lp d liu. H tr cc ngn ng cp cao nht nh cho php ngi s dng nh ngha cu trc ca d liu, truy nhp v thao tc d liu. iu khin truy nhp. Sao lu v phc hi d liu.

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Chng 1: To bng d liu n gin


1.1. Khi ng Access v to mi mt CSDL
Access nm trong b MS Office ca Microsoft. Ta khi ng bng cch chn Start / Programs / Microsoft Office / Microsoft Access 2003. thun tin cho cc ln s dng sau, ta cng c th to Shortcut cho Access v n trn mn hnh nn Windows. y l mn hnh Access 2003: Thanh tiu Thanh menu

Thanh cng c

Blank database

Thanh trng thi

Nhn chn Blank database, hp thoi sau xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Ta t tn CSDL l tck45.mdb v nh v cho n c t ti th mc mong mun D:\TailieuGiangday\CSDL\HeQTCSDLAccess (ci ny ty bn!). Cc bn lu , phn m rng ca Access l mdb (phin bn 2007 v sau c khc i cht). Ca s sau xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access Chng ta tm ng CSDL trn li.

1.2. M mt CSDL c
By gi chng ta m Access, chn File\Open hoc nhn Ctrl+O hoc nhn vo nt c biu tng Open trn thanh cng c. Hp thoi Open xut hin. Ta chn tp tin mdb cn m, sau nhn nt Open.

Quan st, chng ta thy CSDL Access c cc thnh phn nh: Tables, Queries, Forms, Reports, Pages, Macros v Modules. Chng ta s ln lt tm hiu v cc thnh phn ny.

1.3. To bng s dng thut (Table Wizard)


thut l mt trnh cng c hng dn bn i qua tt c cc bc cn thit trong quy trnh to mt thnh phn chun ca Access nh bng, b hi, biu mu, bo co, trang truy cp d liu. N l mt cch tip cn hu ch cho nhng ngi mi lm quen vi Access. Lm theo cc bc sau: Bc 1: Trong ca s tck45: Database, vi tab Tables bn tri ang c kch hot, nhn vo phm New. Access s m ra hp thoi New Table cho php xc nh cch to bng.

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

C hai mc khng c gii thiu y, l: Import Table (nhp khu mt bng c to ra trong trnh ng dng khc) v Link Table (to mt bng c kt ni vi mt bng khc trong tp tin khc). Bc 2: Nhn chn mc Table Wizard, sau nhn OK. Hp thoi Table Wizard xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Bc 3: Chn Sample Tables l Students, sau ln lt chn cc mc trong danh sch Sample Fields v chuyn n vo Fields in my new table:

Nu mun i tn ct, ta chn mc tng ng ri nhn vo nt Rename Field... Bc 4: Sau nhn Next. Hp thoi sau xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Bc 5: Nu mun bn c th i tn bng. y ti nguyn l Students. Bc 6: Nhn Next chuyn sang hp thoi tip theo.

Bc 7: Nhn Finish hon tt qu trnh to bng s dng thut.

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Ti y, chng ta c th nhp d liu trc tip vo bng nu mun. Tm thi chng ta cha nhp g c. Chng ta s xem bng Students trong ch Design:

Chn bng Students v nhn nt Design, ca s sau xut hin: Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 8

Bi ging Access

Bc 8: Nhp d liu vo bng.

1.4. Cc thao tc hiu chnh hng, ct v d liu trong bng


S dng thanh trt dch chuyn:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Di chuyn n cc khon tin (record, dng)

Thm khon tin mi

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

10

Bi ging Access

Nhn vo y to khon tin mi

Sao chp d liu k bn trn: nhn CTRL + ' hoc s dng k thut Copy-Paste Xa khon tin:

Nhn vo y xa khon tin Nhn Record Selector chn ton b khon tin

Nhn Yes xa thc s Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 11

Bi ging Access

Thay i ngoi hnh ca bng: ln ca s, ct, hng Gn cht mt (hoc nhiu) trng vo mt v tr nht nh: Chn ct, kch chut phi, nhn Freeze Columns hoc chn ct, chn Format, Freeze Columns. Nu mun b tnh cht ny, ta ch vic chn Unfreeze All Columns. Sau , nu cn, c th dng k thut ko th cc ct v v tr mong mun. Che du v hin li ct: Format/Hide Columns v Format/Unhide Columns Sp xp cc khon tin: Chn ct, nhn Sort Ascending hoc Sort Descending. Cc chc nng trong Tools/ Options. Thay i skin cho bng: Format/Datasheet Thay i font ch: Format/Font In bng: Print Preview v Print, File/Page Setup

1.5. S dng tr gip trong Access


Nhn F1 hoc chn trn menu Help

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

12

Bi ging Access

Chng 2: Bng v biu mu


2.1. Cc kiu d liu
Nhn nt chuyn i gia ch thit k v xem bng d liu

Trong ch thit k:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

13

Bi ging Access

Cc kiu d liu: Kiu d liu M t Text Dng d liu ph bin nht. C th cha ch ci, ch s v cc k t nh &, %, =, ?. C th di ti 255 k t. Memo Tng t nh Text nhng c th cha ti 65535 k t. Thng dng cung cp cc ch gii. Trng Memo khng th l mt trng kha, khng th lp ch mc. Number Gi tr s. C th c nhng kch c nh sau: Byte: s nguyn t 0 n 255 Integer: s nguyn t -32768 n 32767 Long Integer: s nguyn trong khong -2,147,483,648 n +2,147,483,647 Single: s c chnh xc n trong khong -3.40283*1038 n -1.401298*10-45 v 1.401298*10-45 n 3.40283*1038 Double: s c chnh xc kp trong khong -1.7976931348623*10308 n -4.94065645841247*10-324 v 4.94065645841247*10324 n 1.7976931348623*10308 Replication ID: S nhn dng duy nht ton cc Date/Time Ngy v gi c lu tr theo mt dng thc c nh c bit, gi tr trong khong t ngy 1.1.100 n 31.12.9999. C nhiu nh dng. Currency Mt dng s, c th c ti 15 ch s bn tri v 4 ch s nm bn phi du thp phn. AutoNumber Gi tr s m Access t ng in cho tng khon tin mi b sung vo bng. C th l s tun t hoc ngu nhin, c di l Long Integer hoc Replication ID. C th s dng lm kha chnh. Khng th cp nht. Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 14

Bi ging Access Yes/No OLE Object ng/sai, c/khng, bt/tt. C th cha i tng ha hoc cc i tng khc (bng tnh, tp tin m thanh, video) c to bi trnh ng dng windows c h tr OLE. i tng c th c nhng vo trng hay c kt ni (link) vi trng. C th l ng dn n mt tp tin trong cng hay trn my ch ca mng hay mt a ch URL dn n mt i tng trn mng. Access s chuyn n i tng khi nhn vo link. Khng phi mt dng d liu. thut c s dng to mt trng cho php tra cu cc gi tr trong mt bng hay chn gi tr t mt danh sch.

Hyperlink Lookup Wizard

2.2. S dng cc thuc tnh trng


ln ca trng (Field Size): dng cho vn bn v s. o i vi kiu vn bn: y chnh l s k t ti a c th nhp vo. Nu nhp qu, Access s xn phn cn li. o i vi kiu s: kch thc c xc nh qua nh dng Format. Nu nhp vo ba s 0 th s ra lnh cho Access t in ch s 0 vo bn tri khi khng 3 ch s. Xc nh mt n nhp liu (Input Mask): Kim sot qu trnh hin th d liu. y l mt mu k t xc nh cch th hin d liu trn mn hnh v loi d liu c nhp vo. Danh sch mt s k t gi ch thng c s dng trong hp vn bn Input Mask: K t Access s thc hin 0 ch s t 0 n 9, bt buc nhp, khng cho php du cng + v tr 9 ch s hay du cch, khng bt buc nhp, khng cho php du cng + v tr # ch s hay du cch, khng bt buc nhp, v tr trng c chuyn thnh du cch, cho php du cng + v tr L ch ci t A n Z, bt buc nhp ? ch ci t A n Z, khng bt buc nhp A ch ci hay ch s, bt buc nhp a ch ci hay ch s, khng bt buc nhp & k t hoc du cch, bt buc nhp C k t hoc du cch, khng bt buc nhp < chuyn tt c cc ch ci ng sau n thnh dng ch thng > chuyn tt c cc ch ci ng sau n thnh dng ch hoa \ b sung k t ng lin sau n vo mc d liu ! cn phi c mc d liu Chng ta s dng cc k t trn sa mt n nhp liu cho ph hp vi cch ghi s in thoi hin thi Vit Nam: Phn 3 ch s u l dnh cho cc tng i di ng, v d (090) 1234 567 hoc (091) 1234 567. Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 15

Bi ging Access Phn 7 ch s sau ca my di ng hoc ton b s ca my c nh c phn thnh 2 nhm, cch nhau bi du cch, v d: ( ) 821 4351 hoc ( ) 896 6027 Ta lm nh sau: Trong ch thit k, nhn chut chn dng PhoneNumber. Tm n dng Input Mask, nhp vo nh sau: !\(999")"000\ 0000

Quan st d liu trong bng, ta thy c thay i cch th hin:

B sung ta (Caption): khi s dng thuc tnh Caption, bn c th dng mt on vn bn khc thay th cho tn trng khi hin th bng. V d: sa ta cho StudentsID thnh "M sinh vin":

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

16

Bi ging Access

Chuyn sang ch View xem kt qu:

n nh gi tr ngm nh: Thuc tnh Default Value cho php bn xc nh mt gi tr trng m Access s t ng nhp vo bng. V d, a s sinh vin H Ni, nn ta c th ngm nh trng StateOrProvince l "H Ni" 17

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

Bi ging Access

Bt buc nhp liu: Thuc tnh Required chuyn thnh Yes. Thuc tnh to ch mc Indexed: gip tm kim v sp xp da trn trng ny nhanh hn. Thuc tnh Validation Rule: quy tc hp l. Thuc tnh Validation Text: vn bn hp l (gi nhc) Thuc tnh Unicode Compression: gim lng b nh cn thit lu tr c s d liu. 2.3. To bng khng s dng thut Xa bng Students i, khng dng thut, to li bng vi cc trng sau: StudentID: m sinh vin, kha chnh. StudentName: tn sinh vin. StudentBirth: ngy thng nm sinh ca sinh vin. StudentAddress: a ch ni ca sinh vin. StudentPhone: s in thoi lin h, theo quy cch !\(999")"000\ 0000 ClassID: m lp, l kha ngoi. Hy to bng Lecturers, Class, Subjects, Learn: Bng Lecturers gm cc trng sau: LecturerID: m ging vin, l kha chnh. LecturerName: tn ging vin. LecturerPhone: in thoi theo quy cch !\(999")"000\ 0000 Faculty: khoa, gm c: Cng ngh thng tin, in t vin thng, ha hc, c kh, kinh t qun l, ngoi ng, ti chc. Bng Class gm c cc trng sau: Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 18

Bi ging Access ClassID: m lp, l kha chnh. ClassName: tn lp. Monitor: trng lp. Bng Subjects gm c cc trng sau: SubjectID: m mn hc, l kha chnh. SubjectName: tn mn hc. Bng Learn gm: LecturerID: m ging vin. ClassID: m lp. SubjectID: m mn hc. Time: thi gian biu hc. Xem mi quan h gia cc bng:

2.4. S dng form (biu mu) nhp v xem d liu 2.4.1. To mt form t ng

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

19

Bi ging Access

Trong tab Tables, chn bng cn to form t ng, sau nhn chn Autoform. Kt qu, ta s c mt form nh sau:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

20

Bi ging Access Ln lt to cc form theo cch trn. 2.4.2. S dng thut biu mu

Chn tab Forms, chn Create form by using Wizard, nhn New. thut xut hin:

Nhn OK, hp thoi tip theo xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

21

Bi ging Access

Chn bng Class v a tt c cc trng trong mc "Available Fields" sang mc "Selected Fields"

Nhn Next, hp thoi sau xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

22

Bi ging Access

Ln lt check vo cc radio button xem giao din ca form khi hnh thnh s nh th no. Nhn Next, hp thoi sau s xut hin:

Ln lt chn cc mc xem skin ca form. Nhn Next, hp thoi cui cng hon tt: Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 23

Bi ging Access

Nhn Finish hon thnh cng vic to form s dng thut. Form ca chng ta c hnh th nh sau:

2.4.3. Hiu chnh giao din ca cc form t ng va to Chuyn sang ch thit k, thm nhn v cn chnh li cc iu khin trn form

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

24

Bi ging Access

Mt s chc nng trong Format:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

25

Bi ging Access

Trong ch thit k, ta c th cho hin cc vng Form Header/Footer, Page Header/Footer bng cch kch chut phi trn form ri chn cc mc tng ng:

Form c chia thnh 5 khu vc: Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 26

Bi ging Access Khu vc Form Header (u biu mu) c th cha cc thng tin v d nh mt tiu m bn mun n xut hin phn bn trn ca biu mu (hin thi n ang c trng). Khu vc th hai Detail cha cc hp trng c gi l Control (iu kim) cho cc trng m bn chn cho biu mu ny. Cc iu kim l ni bn c th nhp thng tin. Mi iu kim c th i km vi mt hp mu xm c gi l mt nhn (Label) cha tn hoc ta ca trng. Khu th ba Form Footer, hot ng tng t nh Form Header. Hai khu vc cn li l Page Header v Page Footer, chng c th cha cc phn t m bn mun xut hin trn mi trang, trong trng hp mt biu mu chim nhiu trang giy. Ngoi ra, ca s cn hin th cc ng thc nm ngang v nm dc cng nh cc li gip bn nh v cc iu kim v nhn trong biu mu.

chn nhiu iu kim, ta gi phn SHIFT v dng chut chn iu kim. Nu mun chn tt c cc iu kim trn form, ta nhn Ctrl + A hoc chn Edit/ Select All. xem cc thuc tnh ca iu kim, ta chn iu kim ri nhn chut phi, chn Properties:

Ta c th thay i font ch, mu sc, kch thc,... C th i t ComboBox sang List Box nu s gi tr l nh:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

27

Bi ging Access

2.5. To biu mu ca nhiu bng (Multi table Form)

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

28

Bi ging Access

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

29

Bi ging Access Chng 3: B hi, bo biu, trang truy cp d liu v bng cng tc

3.1. S dng lnh Find v cc b lc (Filter)


Bc 1: M CSDL v mt bng no , v d bng Students. Bc 2: Nhn vo phm Find trn thanh cng c.

Bc 3: Hp thoi Find And Replace xut hin, tm n hp vn bn Find What, nhp vo mt gi tr cn tm

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

30

Bi ging Access Lu : nu ch so khp mt phn gi tr trong mt trng th chn Math l "Any Part of Field" Hng dn sinh vin s dng Replace

Filter
Khi lm vic vi mt bng ln, thng ta s tp trung vo mt tp hp con cc khon tin (record, dng, b) trong bng. l tp hp cha cc khon tin c mt s thuc tnh chung no . lc ra nhm cc khon tin ny, bn c th s dng cc b lc (Filter).

Apply Filter hoc Remove Filter

Filter By Selection

Filter By Form

Lm theo cc bc sau: Bc 1: Chn mt gi tr trong mt ct bng cch kch p vo gi tr Bc 2: Nhn Filter By Selection, bn s c kt qu:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

31

Bi ging Access

3.2. S dng b hi (Queries)


Mt vi v d v cc b hi la chn ph bin: Gio v khoa mun tm ra danh sch nhng sinh vin c im thi ln 1 mn H qun tr c s d liu <5 lp danh sch thi li. Trng phng kinh doanh ca mt cng ty mun c danh sch ca tt c cc nh cung cp c bn tt c cc vt dng cn thit cho mt cng vic c th.

3.2.1. La chn mt s trng c th


Trong tab Tables, chn bng, sau chn Query nh sau:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

32

Bi ging Access

Hoc chn tab Queries ri nhn chn New Hp thoi sau s xut hin:

Trong hp thoi New Query, nhn chn Simple Query Wizard ri nhn OK, hp thoi Simple Query Wizard xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

33

Bi ging Access

1. Chn bng ngun d liu

2. Chn trng trong bng ri nhn phm > chuyn sang danh sch ca b hi

Hp thoi tip theo xut hin:

Nhn chn Detail c b hi chi tit, sau nhn phm Next, hp thoi th ba ca Simple Query Wizard xut hin, bao gm ba mc: Yu cu bn t tn cho b hi Bo rng thut thng tin to b hi Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 34

Bi ging Access Hi bn mun m b hi xem thng tin hay m b hi chnh thit k ca b hi.

Kt qu chng ta c nh sau:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

35

Bi ging Access

3.2.2. Chn mt s khon tin c th


Nu mun la chn cc trng ca mt s khon tin c th, ta lm nh sau: Bc 1: Trong ca s CSDL, nhn vo thanh Queries nhn danh sch cc b hi, nhn p vo phm Create Query In Design View (to b hi trong ch thit k).

Kt qu: Access s hin th hp thoi Show Table:

Bc 2: Chn bng Students, nhn vo nt Add b sung bng ny vo danh sch cc bng d liu nn cho b hi. Sau , nhn nt Close. Kt qu l, trn ca s mn hnh xut hin mt ca s thit k b hi vi thanh ta cho bit y thuc loi b hi chn lc (Select Query). Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 36

Bi ging Access

Na bn trn, ta thy c hp Students lit k tt c cc trng trong bng Students, du hoa th i din cho tt c cc trng. Pha bn di ca ca s l mt bng li, c gi l QBE (Query By Example) tr gip cho bn thit k b hi. Bc 3: a cc trng vo li.

Test th vic hin th cc trng bng cch check vo dng Show, nhn nt Run chy th. Trong ct ClassID, dng Criteria, nhp s 2 vo, chy th xem kt qu

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

37

Bi ging Access

Nhp chui "Phm Ngc Sng" vo dng Criteria, ct StudentName:

Tiu chun Criteria khng phn bit xu ch hoa v ch thng nn kt qu nh nhau khi ta vit "Phm Ngc Sng" hay "PHm NGc SNg". Khi bn nhp d liu xong, Access t bao gi tr bi mt cp ngoc kp.

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

38

Bi ging Access

3.2.3. K t i din "*"

3.2.4. K t "?" i din cho duy nht mt k t.

Like "CNTT-K4?"

3.2.5. S dng cc ton t ton hc


Chng trnh Access cho php bn s dng cc ton t ton hc nhp tiu chun la chn nh du =, du <, >, <=, >=. Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 39

Bi ging Access

>#10/10/1982#

3.2.6. S dng cc ton t logic


a. Ton t And

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

40

Bi ging Access

b. Ton t Or
Nu bn nhp nhiu ct, Access hiu rng bn mun lc ra cc khon tin tha mn tt c cc tiu chun . Trong trng hp bn mun a ra im HQTCSDL l 8 hoc 10 th sao?

8 Or 10

Mt trng hp khc: a ra StudentID m im HQTCSDL l 10 hoc im Ha hc l 8 (php hoc trn 2 thuc tnh):

10

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

41

Bi ging Access

c. Ton t Not v ton t Null


Bn s dng ton t Not xc nh cc khon tin khng tha mn mt tiu chun no , bn s dng ton t Null xc nh tt c cc khon tin cha c nhp gi tr (cn trng) cho mt trng xc nh.

Th nhp vo l Not 10 v Not<10

3.2.7. Sp xp vi b hi
Quan st li bng Mark, chng ta thy rng, cc bn ghi c sp xp theo StudentID, cn im mn H QTCSDL v Ha hc th khng theo mt trt t no c. By gi chng ta s sp xp theo cc ct ny.

Ascending

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

42

Bi ging Access

3.3. S dng bo biu (Reports)


To bo biu cng tng t nh to biu mu (form).

3.3.1. To AutoReports
Chng ta bt u to mt bo biu vi bng Lecturers. Trong tab Table, chn bng Lecturers, ri nhn chn AutoReports

Kt qu nh sau:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

43

Bi ging Access Chuyn sang ch Design xem:

3.3.2. To bo biu vi thut bo biu

Nhn Design, hp thoi sau xut hin: Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 44

Bi ging Access

Nhn Next.

Chn Faculty, nhn phm > gom nhm theo thuc tnh ny. Nhn Next.

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

45

Bi ging Access

La chn ri nhn Next.

Ln lt chn tng Layout xem. Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni 46

Bi ging Access

Nhn Finish, chuyn sang ch view xem kt qu (hoc chn Preview the Report ri nhn Finish).

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

47

Bi ging Access Khi nhn chn New to bo biu mi, ta thy c cc la chn sau:

Loi bo biu t ng Columnar to ra cc nhn v cc iu kim c xp hng dc t trn xung di. Loi bo biu t ng Tabular to ra mt bo biu t ng vi cc nhn v iu kim sp xp theo hng ngang.

3.4. Hiu chnh bo biu


Tng t nh hiu chnh form

3.5. To Mailing Labels


Cc bc nh sau: Chn tab Reports, nhn New:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

48

Bi ging Access Hp thoi sau xut hin:

Chn Label Wizard, chn ngun d liu l bng Students. Nhn OK. Label Wizard hin th hp thoi u tin ca n, hi xem bn mun to nhn chun hay ty bin, kch c, n v o lng cng cc thng tin tng t:

3. Chn kiu nhn

1. Chn n v o lng

2. Chn loi nhn

Nhn Next, hp thoi th hai xut hin:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

49

Bi ging Access

Sau khi la chn cc gi tr cho ph hp, nhn Next. Hp thoi th ba xut hin:

Nhn chn cc mc tng ng, a sang Prototype label. Ch , nu mun xung dng th trc khi a sang, ta nhn Enter. Nhn Next, hp thoi th t xut hin, cho bn bit c th sp xp cc nhn s dng:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

50

Bi ging Access

Sau khi la chn, nhn Next. Hp thoi tip theo xut hin:

Nhn Finish hon tt. Kt qu:

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

51

Bi ging Access

3.6. S dng trang truy cp d liu


Gii thiu cho sinh vin CSDL mu Northwind trong Access.

Nguyn Hng Phng Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin, H Bch Khoa H Ni

52

Bi ging Lp trnh trong Access

Chng 4 Lp trnh trn Access


4.1 Lp trnh n gin bng Macro
Macro: tp cc thao tc thng c dng trong cc x l d liu, c chuyn thnh cc hnh ng v ta c th s dng n thay v phi vit mt on chng trnh x l. Macro thng c gn vi cc s kin ca i tng c s d liu nh Form, Report. Macro cng c a vo to Menu cho chng trnh.

4.1.1. To Macro mi
Ti ca s Database, chn Macro, sau chn New. Hp thoi to mi Macro xut hin:

Thc hin Macro bng mt trong ba cch: Khi khi ng c s d liu. Khi kch hot nt lnh hay chn mt mc trong Menu Pull Down. Khi kch hot mt s kin no . Khi ra lnh thc hin Macro cc hnh ng c thc hin t trn xung di.

4.1.2. Cc hnh ng trong Macro


C khong 50 hnh ng Macro. Mt s nhng hnh ng thng dng: Addmenu: Thm mt ct mi cho Menu. Cc tham s ca hnh ng ny: Tn mc chn trn mn hnh (Menu Name) Tn macro ng vi ct (Menu Macro Name) Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 1

Bi ging Lp trnh trong Access Thng bo trn dng trng thi (Status Bar Text) Close: ng ca s Form, Report, Table Cc tham s ca hnh ng ny: Kiu i tng (Object Type) Tn i tng (Object Name) Cch ghi (Save) ApplyFilter: S dng b lc trn Form. Cc tham s: Tn truy vn lc (Filter Name) iu kin lc (Where Condition) GotoRecord: chuyn con tr bn ghi n bn ghi trc, sau, u, cui hoc bn ghi c s hiu no . Cc tham s: Kiu i tng (Object Type) Tn i tng (Object Name) Bn ghi (Record) Offset: s hay biu thc ch bn ghi mun chuyn ti. Maximize: phng to cc i ca s hin hnh. Minimize: thu nh cc tiu ca s hin hnh. MoveSize: thay i kch thc ca s hin hnh. MsgBox: hin thng bo ra mn hnh. Cc tham s: Message: ni dung thng bo a ra. Beep: s pht ra ting ku nu l yes, ngc li th khng. Type: kiu icon hin th, gm: None, Critical, Warning?. Warning! v Information. Title: tiu ca ca s thng bo. OpenForm: m form, gm c 6 tham s: Form Name: tn form cn m, chn trong danh sch. View: m form mt trong bn ch : Design, Form (ngm nh), Datasheet, Print. Filter Name: p dng b lc, c th l query hoc mt b lc c lu tr nh l mt query. S dng b lc ny gii hn hoc sp xp cc bn ghi cho form. Where Condition: iu kin lc. Nhp vo mt mnh WHERE hoc mt biu thc (expression) chn ra cc bn ghi cho form. Data Mode: phng thc hin d liu, c th thm (Add), sa (Edit) hay ch c (Read Only). Window Mode: kch thc ca ca s, gm: Normal (ngm nh), Hidden, Icon, Dialog. OpenReport: m bo co. Cc tham s ging nh OpenForm, gm: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 2

Bi ging Lp trnh trong Access Report Name View Filter Name Where Condition SetValue: t gi tr cho mt trng hoc mt control no . RepaintObject: cp nht li control khi control khc thay i. Requery: thc hin li truy vn ngun ca control cp nht li gi tr. Tham s: Control Name RunApp: thc hin mt ng dng trong Window. Tham s: Command Line: ng dn ti tp .exe RunCode: thc hin chng trnh vit bng VBA RunCommand: thc hin mt mc chn trn menu chnh ca Access. RunMacro: thc hin mt Macro. RunSQL: thc hin lnh SQL. SetWarnings: bt / tt ch hin th thng bo ca h thng ra mn hnh ShowToolbar: bt / tt cc thanh cng c chun ca Access. ShowAllRecords: hy b mi thao tc lc d liu trn form, bng hay kt qu truy vn. TransferDatabase: chuyn d liu gia tp CSDL hin hnh v tp CSDL khc c to bi Excel, Access hay h qun tr CSDL khc thng qua ODBC (tng t chc nng xut nhp khu trn Menu chnh). TransferText: chuyn d liu gia bng v tp vn bn.

4.1.3 ng dng ca Macro:


X l cc s kin To Menu: To mt macro tng ng vi Menu chnh. C th to cc macro khc. Macro tng ng vi Menu chnh s gi n cc macro khc ny. V d v to Menu: Xy dng chng trnh qun l cn b gm cc chc nng sau: Nhp s liu Khai thc Kt thc chng trnh DS cn b Tm kim V Access DS tnh In DSCB V Window DS chc v trong , "Tm kim" l menu con gm bn chc nng: Theo chuyn mn Theo ngoi ng Theo nm sinh Tm kim tng hp Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 3

Bi ging Lp trnh trong Access Chc nng "Tm kim tng hp" s tm kim theo c ba yu t l chuyn mn, ngoi ng v nm sinh. Trc ht, chng ta to mt s bng cha d liu dng cho vic to v d v Menu. Cc bng cn xy dng nh sau: Bng th nht DSCB (Danh sch cn b) gm cc trng v kiu nh hnh minh ha di y:

Bng th hai l DSTINH (danh sch tnh) gm hai trng:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access

Bng th ba DSCV (danh sch chc v) gm cc trng:

Cc truy vn tham s nh sau: Truy vn NM SINH dng tm kim theo nm sinh:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access

Truy vn NGOI NG: dng tm kim theo ngoi ng

Truy vn CHUYN MN: dng tm kim theo chuyn mn

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access

Bo biu: Bo biu In DSCB ly bng DSCB lm nn, dng thc hin chc nng in danh sch cn b. Bo biu c thit k nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access Cc mu biu: Form [MB DSCB] buc vo bng DSCB, c dng nh mt SubForm ca Form TKCB (s xy dng ngay sau y). Form [MB DSCB] dng th hin cc cn b tha mn cc iu kin v nm sinh, ngoi ng v chuyn mn. Form c thit k nh sau:

Form TKCB (Tm kim cn b) kiu Unbound (khng buc vi mt ngun d liu no) dng nh form chnh, gm bn iu khin: ba iu khin TextBox c t tn l NS, NN, CM v mt iu khin SubForm c dng nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access

t li hai thuc tnh ca SubForm [MB DSCB] nh sau: Link Child Fields: NAM SINH, NGOAI NGU, CHUYEN MON. Link Master Fields: NS, NN, CM. Form CTQLCB (chng trnh qun l cn b) dng bt u thc hin chng trnh. Chng ta s to Macro [MENU CHINH], sau a vo thuc tnh Menu Bar ca Form ny., khi thc hin mu biu, ta s nhn c h menu ca chng trnh. Form CTQLCB c thit k nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access

Cc Macro dng xy dng h Menu: Macro [MENU CHINH] gm cc hnh ng:

Action

Menu Name

Menu Macro Name

AddMenu Nhp s liu SO LIEU AddMenu Khai thc KHAI THAC AddMenu Kt thc chng trnh KET THUC Ta thit k Macro nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

10

Bi ging Lp trnh trong Access

Macro [SO LIEU] gm cc hnh ng sau:

Macro Name Action


Ds Cn b Ds Tnh Ds Chc v

Table Name

OpenTable DSCB OpenTable DS TINH OpenTable DSCV

Macro c thit k nh sau:

Macro [KHAI THAC] gm cc hnh ng sau:

Macro Name Action


Tm kim In DSCB AddMenu OpenReport

Cc tham s ca hnh ng AddMenu nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

11

Bi ging Lp trnh trong Access Cc tham s ca hnh ng OpenReport:

Macro [TIM KIEM] gm cc hnh ng sau:

Macro Name
Theo chuyn mn Theo ngoi ng Theo nm sinh Tm kim tng hp

Action
OpenQuery OpenQuery OpenQuery OpenForm

Query/Form Name
CHUYEN MON NGOAI NGU NAM SINH TKCB

Macro c thit k nh sau:

Macro [KET THUC] gm cc hnh ng sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

12

Bi ging Lp trnh trong Access

Chng trnh hot ng nh sau: Khi form CTQLCB hin ln th h menu cng hin theo.

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

13

Bi ging Lp trnh trong Access

4.2 S dng bng cng tc (Switchboard)


Bng cng tc cho php nhanh chng truy cp nhng thnh phn c s dng thng xuyn trong CSDL m khng cn phi hiu nhng thnh phn l g v chng lin quan vi nhau ra sao.

4.2.1 To mt bng cng tc n gin


Trong Database Window, t Menu chnh nhn vo Tools / Database Utilities / Switchboard Manager Chn Yes khi Access bo khng tm thy bng cng tc no v hi xem c mun to mi khng ?

Nhn chn Edit hiu chnh bng cng tc

Nhn vo phm New b sung mc cng tc mi

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

14

Bi ging Lp trnh trong Access

C ln lt lm nh vy vi cc chc nng khc. Kt qu ta c bng cng tc nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

15

Bi ging Lp trnh trong Access

4.2.2 Hiu chnh mt bng cng tc


Ta c th thay i nh dng ca bng cng tc bng nhiu cch khc nhau: Trong ch thit k, ta kch chut phi, chn Fill/Back Color thay i mu nn. chn hnh nh vo: T Menu chnh, chn Insert/ Picture...

4.3 Ngn ng lp trnh VBA(Visual Basic for Application)


4.3.1 c im v vai tr ca chng trnh
Cc chng trnh Access VBA c t chc v hot ng trong mi trng Access nhm xy dng cc ng dng Access phc tp hn, hon chnh hn sau khi s dng cc cng c ca Access. Qu trnh lp trnh c thc hin trn nn ca mt chng trnh c to bng cc cng c ca Access (Table, Form, Query, Report, Macro).

4.3.2. T chc chng trnh


Cc on m (code) c vit trong cc module. C hai loi module: module ca Form/Report v module chung. Module gm cc th tc v hm . Th tc trong module ca Form/Report gm c hai loi: th tc x l s kin v th tc thng thng. Cc th tc thng thng v cc hm ca cc module c s dng thng qua li gi. Th tc x l s kin ch thc thi khi s kin xy ra. Phng php lp trnh hng s kin: Lp cc th tc tng ng vi tng s kin. Trong Access, ta c th x l s kin trn cc i tng sau: Form, Report, Control ca form.

4.3.3 Phn loi s kin


C ba loi s kin: s kin trn Form, s kin trn Report v s kin trn control ca Form/Report. Mt s v d v s kin: Cc s kin trn Form Open: Xy ra khi form c m, cc iu khin cha c ti ln form. C th hy b khng m na bng cch t gi tr cho tham s Cancel. Tuy cha ti cc iu khin ln form nhng form c coi l ang m, do c th sa thit k. Load: Xy ra khi form m, iu khin ti ln form. Thng x l khi mun kim tra mt khu truy nhp, n hin mt s iu khin.

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

16

Bi ging Lp trnh trong Access Timer: S kin xy ra mt cch nh k sau mt khong thi gian xc nh bi thuc tnh Time Interval. Cc s kin trn Report Open: Xy ra m bo co, tng t s kin open ca form. Thch hp thay i mt s im trong thit k bo co, chng hn tiu , ngun d liu. Close: Xy ra khi ng bo co No Data: ngun d liu khng c bn ghi no. C th khng in hoc m bo co bng cch tc ng ln tham s cancel. Cc s kin trn iu khin (control) Change: C nhng iu khin m gi tr c th thay i nh hp vn bn... S kin ny xy ra khi gi tr ca iu khin b thay i. AfterUpdate: Xy ra sau s kin Change, khi ngi dng chp nhn s thay i bng cch nhn enter hoc lm mt con tr. GotFocus, LostFocus: Xy ra khi iu khin c hoc mt con tr. S kin ny cng xy ra trn form cha iu khin.

4.3.4. Cu trc ca module


Module chun (cn gi l module chung) Cc ty chn: Option Base 0/1: Xc nh cn di ngm nh ca mng l 0 hay 1. Option Explicit: Khng cho php khai bo ngm nh cc bin. Option Compare Text/Binary: Cch so snh xu k t. Khai bo cc hng, bin, mng cp chng trnh: dng t kha Public/Global. Khai bo cc hng, bin, mng cp module: dng t kha Dim/Private. Cc th tc/hm phm vi s dng cp chng trnh. Cc th tc/hm phm vi s dng cp module: dng t kha Private. to module: Chn tab Modules / New. Ca s son tho m chng trnh s hin ra nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

17

Bi ging Lp trnh trong Access

Module lp (module ca Form/Report) Cc ty chn: Option Base 0/1: Xc nh cn di ngm nh ca mng l 0 hay 1. Option Explicit: Khng cho php khai bo ngm nh cc bin. Option Compare Text/Binary: Cch so snh xu k t. Khai bo cc hng, bin, mng cp module: dng t kha Dim/Private. Cc th tc x l s kin Cc th tc/hm thng thng

4.3.5 Cu trc ca th tc v hm
Cu trc ca mt th tc thng [Static][Public][Private] Sub<Tn th tc>(<Danh sch cc tham s v kiu>) [Cc cu lnh] [Exit Sub] [Cc cu lnh] End Sub Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 18

Bi ging Lp trnh trong Access Cu trc ca mt hm [Static][Public][Private] Function<Tn hm>(<Danh sch cc tham s>) As Kiu [Cc cu lnh] [Exit Function] [Cc cu lnh] End Function Cu trc mt th tc x l s kin S kin trn Form Private Sub Form_<Tn s kin>(<Danh sch cc tham s v kiu>) [Cc cu lnh] End Sub S kin trn Report Private Sub Report_<Tn s kin>(<Danh sch cc tham s v kiu>) [Cc cu lnh] End Sub S kin trn control Private Sub <Tn iu khin>_<Tn s kin>(<Danh sch cc tham s v kiu>) [Cc cu lnh] End Sub

4.3.6 Cc quy nh khi vit chng trnh VBA


Mi lnh thng vit trn mt dng. Nu mun xung dng ta dng du gch di _ Mi dng c php vit nhiu lnh, khi cc lnh phn cch nhau bng du : Khng phn bit ch hoa hay ch thng. Cch vit ch thch: Ch thch trn ton b dng: m u dng bng du nhy n (c th dng t Rem thay cho du nhy n nh trong cc phin bn trc). Ch thch trn phn cn li ca dng: phn ch thch bt u bng du nhy n.

4.3.7 Dch v chy chng trnh


Dch chng trnh: Khi kt thc mi dng lnh, Access s t ng kim tra c php ca dng lnh . dch ton b chng trnh, ta chn Debug t Menu chnh ->chn Compile Chy chng trnh: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 19

Bi ging Lp trnh trong Access Th tc x l s kin kch hot s kin Th tc v hm khc c th chy th t ca s Immediate Window (m ca s ny t Menu View hoc nhn t hp phm Ctrl + G). G vo nh sau: <Tn th tc><danh sch cc tham s thc s> ?<Tn hm>(<danh sch cc tham s thc s>)

4.3.8 Cch gi chng trnh con trong VBA


Gi th tc <Tn th tc><Danh sch tham s thc s> Call <Tn th tc>(<Danh sch tham s thc s>) Cc tham s thc s c th khng t ng trnh t m tham s hnh thc tng ng xut hin trong chng trnh con. Khi , ta vit danh sch tham s thc s di dng: <Tn tham s hnh thc>:=<tham s thc s>[,<Tn tham s hnh thc>:=<tham s thc s>] Gi hm Li gi hm xut hin trong biu thc vi quy cch nh sau: <Tn hm>(<Danh sch cc tham s thc s>) Khi ta khng quan tm ti gi tr m hm tr li, c th gi hm nh th tc: <Tn hm><Danh sch cc tham s thc s>

4.4 Cc kiu d liu, hng, bin, mng dng trong chng trnh
4.4.1 Cc kiu d liu
S nguyn: Integer (%), Long (&), Byte S thc: Single (!), Double (#) Logic: Boolean Tin t: Currency (@) Xu k t: String ($), String*n Ngy/gi: Date Variant: Bin thuc kiu d liu ny c th nhn gi tr l s, xu k t, ngy/gi hoc gi tr Null.

4.4.2 Quy tc t tn bin


Bao gm cc ch ci, ch s v du gch di K t u phi l ch ci Khng c trng vi cc t dnh ring ca Access Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 20

Bi ging Lp trnh trong Access Khng dng k hiu .!@&%#$ Ti a 255 k t

4.4.3 Khai bo bin


Nu on m trn vng u ca module, ta s dng ty chn Option Explicit th cc bin phi c khai bo tng minh, ngha l bin c kiu xc nh. Ngc li, nu khng c ty chn trn, cc bin khng khai bo s ngm nh c kiu l Variant. Khai bo bin bng lnh Dim: Dng lnh nh sau: Dim <tn bin>[As<kiu>][,<tn bin>[As<kiu>]..] V d: Dim a As Integer, s As string Bin tnh: ta thay t kha Dim bng t kha Static. Bin ton cc: ta thay t kha Dim bng t kha Public. Bin a phng: ta thay t kha Dim bng t kha Private.

4.4.4 Mng
Cch khai bo Trong hm/th tc Dim/ReDim/Static <Tn_mng>(Ch s 1, ch s 2,..., ch s n) [As <Kiu>] Trong phn khai bo ca n th Form/Report Dim/Private <Tn_mng>(Ch s 1, ch s 2,..., ch s n) [As <Kiu>] Trong phn khai bo ca n th dng chung Dim/Private/Public <Tn_mng>(Ch s 1, ch s 2,..., ch s n) [As <Kiu>] Hai cch xc nh min gi tr ca ch s Cch 1: Dng cu lnh Option base 0/1 vit trong phn khai bo. Theo cch ny, ta quy nh ch s cn di l 0 hoc 1. V d: Option base 0 Dim a(5) Ch s t 0 n 5 Option base 1 Dim b(6) As Integer Ch s t 1 n 6 Cch 2: Dng cch vit Cn_di to Cn_trn V d: Option base 1 Dim a(4,-2 to 5,6) s khai bo mt mng 3 chiu kiu Variant, trong : Ch s th nht chy t 1 n 4 Ch s th hai chy t -2 n 5 Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 21

Bi ging Lp trnh trong Access Ch s th ba chy t 1 n 6 Ch : Cc cn u phi l hng s nguyn v c th nhn gi tr m. Min gi tr ca ch s mng nm trong khong 32768 n 32767. Phm vi s dng ca mng Cp th tc:Khai bo trong th tc Cp n th: Khai bo trong phn khai bo ca n th, dng t kha Private hoc Dim. Cp chng trnh: Khai bo trong phn khai bo ca n th s dng chung, dng t kha Public. Mng ng Ta khai bo nh sau: Dim/Private/Public <Tn_mng> [As <Kiu>] Khi no dng mng ng, ta dng ReDim xc nh chnh xc chiu v kch thc mi chiu. Kch thc mi chiu c th cho bi cc bin hoc biu thc. V d: Redim a(1 to n,m) i l mng: i mng c khai bo theo cch mng ng, v d: Sub Nhap(a()as Double, n as Integer) Function max(a()as Double, n as Integer) As Double Trong li gi: dng tn mng, v d: Dim a(10) as Double, n as Integer, gt as Double Nhap a,n Gi th tc gt = max(a,n) Gi hm

4.4.5 Kiu t nh ngha (t to)


nh ngha kiu Tng t kiu bn ghi ca Pascal hay Struct ca C, nh ngha mt kiu, ta s dng cu trc sau: [PUBLIC/PRIVATE] TYPE Tn_Kiu Tn_thnh_phn As Kiu Tn_thnh_phn As Kiu ....... Tn_thnh_phn As Kiu END TYPE Ch : Khng cho php khai bo cc thnh phn kiu i tng. Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 22

Bi ging Lp trnh trong Access Thnh phn ca kiu t nh ngha c th l mng. C th khai bo cc mng kiu t nh ngha. Mnh TYPE ch c vit trong phn Decleration Section ca n th, do ta c th dng n khai bo cc bin mng trong ton n th. Phm vi s dng Nu dng PUBLIC th phm vi s dng ca kiu t nh ngha l trong ton chng trnh. Nu dng PRIVATE th phm vi s dng ca kiu t nh ngha l trong ton n th cha nh ngha kiu t to. Mc nh l PUBLIC Trong n th ca Form/Report khng cho php nh ngha kiu t to. V d: TYPE Point x AS Double y AS Double END TYPE TYPE Polygon n AS Integer p(1 to 100) AS Point END TYPE

4.5 Cc php ton


4.5.1 S hc
Ly tha (^) Nhn (*), chia (/), chia ly phn nguyn (\), chia ly phn d (mod) Cng (+), tr (-)

4.5.2 So snh
Bng (=), khc (<>), nh hn (<), ln hn (>), nh hn hoc bng (<=), ln hn hoc bng (>=).

4.5.3 Ghp xu
Php + ch dng ghp xu k t. Php & dng ghp cc kiu d liu khc nhau. V d: Ha + + Noi cho kt qu l chui Ha Noi 1996 & 4 cho kt qu l chui 19964 Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 23

Bi ging Lp trnh trong Access A & 2 cho kt qu l chui A2 5 & 6 cho kt qu l chui 56 A + 4 s sinh ra li

4.5.4 Logic
Not, And, Or, Xor, Imp (Implication), Eqv (Equivalance). Cc php ton trn c th thc hin trn cc gi tr logic (True v False) hoc trn cc gi tr nguyn (s thc hin trn tng bit) theo quy tc trong bng sau:

Thc hin trn cc gi tr logic (-1 l true, 0 l false)


x y x And y x Or y x Xor y x Eqv y x Imp y 0 0 0 0 0 -1 -1 0 -1 0 -1 -1 0 -1 -1 0 0 -1 -1 0 0 -1 -1 -1 -1 0 -1 -1

Thc hin trn cc gi tr nguyn (theo tng bit)


x 0 0 1 1 y x And y x Or y x Xor y x Eqv y x Imp y 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 1

4.6 Cc hm thng dng


4.6.1 Hm ton hc
Fix(x) cho gi tr nguyn l phn nguyn ca x. V d: Fix(3.5) = 3; Fix(-6.7) = -6 Int(x) cho gi tr nguyn ln nht khng vt qu x. V d: Int(3.5) = 3; Int(-6.7) = -7 Abs(x) cho gi tr tuyt i ca x Rnd(n) cho s ngu nhin t 0 n 1 Exp(x) cho gi tr ex Log(x) cho gi tr logarit c s e ca x Sqr(x) tnh cn bc hai ca x Atn(x) tnh arctan ca x Tan(x) tnh tang ca x Sin(x) tnh sin ca x Cos(x) tnh cosin ca x

4.6.2 Hm xu k t
Space(n): xu gm n du cch. Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 24

Bi ging Lp trnh trong Access Left[$](s,n): xu gm n k t tri nht ca xu s. Right[$](s,n): xu gm n k t phi nht ca xu s. Mid(s,i,n): xu gm n k t ca s tnh t k t i. Len(s): di xu s. Instr(n,s,t,[c]): kim tra xem xu t c l xu con ca xu s tnh t k t th n, nu c tr v v tr u tin gp xu t, nu khng th tr v tr 0. Lcase(s): chuyn cc ch ci trong xu s thnh ch thng. Ucase(s): chuyn cc ch ci trong xu s thnh ch hoa. LTrim(s): b khong trng bn tri xu s. RTrim(s): b khong trng bn phi xu s. Trim(s): b khong trng bn tri v bn phi xu s. Str(numeric): i s thnh chui. Format(numeric, chui nh dng): i s thnh chui theo nh dng. Chui nh dng c dng quy nh s ch s thp phn nh sau: 0.00 -> 2 ch s thp phn; 0.000 -> 3 ch s thp phn.

4.6.3 Hm ngy gi
Date(): cho kt qu kiu Variant ch ngy h thng. Date$(): cho kt qu kiu chui ch ngy h thng. Time(): cho kt qu kiu Variant ch gi h thng. Time$(): cho kt qu kiu chui ch gi h thng. Now(): ngy gi hin hnh. Day(d): ngy ca d. Month(d): thng ca d. Year(d): nm ca d. Weekday(d): th ca ngy d.

4.6.4 Hm cho kiu d liu Variant


IsDate(x): tr v gi tr True nu x c quy cch ngy, ngc li tr v False. IsNumeric(x): tr v gi tr True nu x c quy cch s, ngc li l False. IsNull(x): tr v gi tr True nu x l null.

4.6.5 Cc hm lin quan nhiu kiu d liu


IIf(<iu kin>,<Biu thc 1 >,<Biu thc 2>) Nhn gi tr ca biu thc 1 nu iu kin ng, nhn gi tr ca biu thc 2 nu iu kin sai. Choose(<Ch s>,<Biu thc 1>,,<Biu thc n>) Ch s ch nhn gi tr t 1 n n. Hm tr v gi tr ca biu thc i nu ch s bng i. Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 25

Bi ging Lp trnh trong Access Format(<Biu thc>,<Khun dng>) Biu din biu thc bng khun dng ch ra. Khun dng c sn nh Long Date, Standard hoc khun dng t xc lp nh DD/MM/YYYY.

4.6.8 Hm InputBox v MsgBox


Hm InputBox InputBox[$](<Li nhc>[,<Tiu >][,<Gi tr ngm nh>][,<Ta x>,<Ta y>]) Hm ny dng nhp gi tr cho cc bin nh. Nu chn OK, bin nhn gi tr c nhp, chn Cancel bin nhn gi tr null. Nu InputBox$ th hm tr v chui c nhp vo. V d: nhp bn knh ca mt ng trn v gn cho bin R, ta c th dng hm InputBox theo mu: R = InputBox("Nhap vao ban kinh","Cua so nhap du lieu")

Ta s nhn c hp thoi nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

26

Bi ging Lp trnh trong Access Hm MsgBox C php: MsgBox(<Li nhc>[,<Kiu nt>][,<Tiu >]) Li nhc l mt biu thc chui, ni dung ca n s c a ra hp thoi. Ch : Xung dng dng chr(10). Tiu l mt biu thc chui c hin th trong thanh tiu ca hp thoi. Nu b qua i s ny th tiu s l Microsoft Access. Kiu nt: l mt tng cc s nguyn dng xc nh: cc nt lnh s hin th, cc biu tng, nt mc nh c chn. Nhm cc nt lnh gm c: Gi tr 0 1 2 3 4 5 ngha Hin th nt OK Hin th cc nt OK v Cancel Hin th cc nt Abort, Retry v Ignore Hin th cc nt Yes, No v Cancel Hin th cc nt Yes v No Hin th cc nt Retry v Cancel

Nhm cc biu tng gm c: Gi tr 0 16 32 48 64 ngha Khng hin biu tng Hin biu tng Critical Message Hin biu tng Warning Query Hin biu tng Warrning Message Hin biu tng Information Message

Nhm nt mc nh c chn gm c: Gi tr ngha 0 Nt u tin (tnh t tri sang phi) 256 Nt th hai 512 Nt th ba V d: nu kiu nt = 4 + 16 + 256 th trn hp thoi s hin: Hai nt Yes v No, biu tng Critical Message, nt No c chn sn:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

27

Bi ging Lp trnh trong Access

Kt qu ta nhn c:

Chng ta c th gi hm trn theo cch gi ca th tc, khi ta khng cn nhn gi tr tr v. Nu chng ta s dng hm trn theo cch gi hm th chng ta s nhn c gi tr tr v. Gi tr tr v ca hm tng ng vi cc nt nh sau: Gi tr hm Nt c chn 1 OK 2 Cancel 3 Abort 4 Retry 5 Ignore 6 Yes 7 No

4.7 Cc cu trc lp trnh


4.7.1 Lnh If
Vit trn mt dng: If <iu kin> then [<nhm lnh 1>] [else<nhm lnh 2>] Vit trn nhiu dng: If <iu kin> then <nhm lnh 1> Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 28

Bi ging Lp trnh trong Access [ else <nhm lnh 2>] End If

4.7.2 Lnh Select Case


Select Case <biu thc> [Case <danh sch cc gi tr 1>] [<nhm lnh 1>] [Case <danh sch cc gi tr n>] [<nhm lnh n>] [Case Else nhm lnh (n+1)] End Select Danh sch cc gi tr c th vit theo ba cch sau: Cch 1: Biu thc 1, biu thc 2,, biu thc k V d: 1.5, a+b, 8.6 th danh sch cc gi tr gm ba s: 1.5, a+b v 8.6 Cch 2: Biu thc 1 To biu thc 2 V d: 2.2 To 10.2 th min gi tr gm cc s trong on t 2.2 n 10.2 A To C th min gi tr gm cc chui c k t u l A, B v C. Cch 3: Is php_so_ snh biu_thc V d: Is < a th min gi tr gm cc s nh hn a. Ch : Ta c th kt hp s dng nhiu ln c ba cch trn xc nh mt min gi tr. V d: 3.2, 1.6, 10 To 15, Is < 1, Is > 200 th min gi tr gm: Cc s 3.2 v 1.6 Cc s nm trong on [10, 15] Cc s nh hn 1 v cc s ln hn 200.

Mt v d v Select Case
Public Function Thu(ts As Date)As String Select Case Weekday(ts) Case 1 Thu = Chu nhat Case 2 Thu = Thu hai Case 3 Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 29

Bi ging Lp trnh trong Access Thu = Thu ba Case 4 Thu = Thu tu Case 5 Thu = Thu nam Case 6 Thu = Thu sau Case 7 Thu = Thu bay End Select End Function

4.7.3 Vng lp xc nh For ... Next


For <bin> = <gi tr u> To <gi tr cui> [Step<bc nhy>] <cc lnh> [Exit For] <cc lnh> Next [bin m] Ch : Bc nhy c th m hoc dng. Nu khng dng la chn Step<bc nhy> th bc bng 1. Ton t Exit For dng thot khi vng lp.

4.7.4 Vng lp xc nh For Each Next


For Each <phn t> In <nhm> <cc lnh> [Exit For] <cc lnh> Next <phn t> Vng lp ny dng duyt ln lt cc phn t trong nhm. Nhm c th l mng hoc tuyn tp i tng (Collection). Nu nhm l mng th phn t phi l bin kiu Variant. Nu nhm l tuyn tp i tng th phn t c th l mt bin kiu Variant hoc mt bin kiu i tng chung (Object) hoc bin kiu i tng ca tuyn tp.

4.7.5 Vng lp khng xc nh Do Loop


C cc dng sau: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 30

Bi ging Lp trnh trong Access Dng 1: Do [{While/Until}<iu kin>] [<cc lnh>] [Exit Do] [<cc lnh>] Loop Dng 2: Do [<cc lnh>] [Exit Do] [<cc lnh>] Loop[{While/Until}<iu kin>]

4.7.6 Vng lp While Wend


While <iu kin> [<cc cu lnh>] Wend

4.7.7 Cc lnh nhy v kt thc chng trnh


Nhy khng iu kin C php: Goto <Label> S hot ng: Chuyn ti cu lnh c nhn Label v chng trnh tip tc thc hin t lnh ny. Nhy ti on chng trnh con C php: Gosub Label .... Label: .... Return Tr v cu lnh ngay sau Gosub S hot ng: Chuyn ti cu lnh c nhn Label v tip tc thc hin t lnh ny cho ti khi gp Return th quay tr li cu lnh ng ngay sau Gosub. Nhy c la chn C php: On BT Goto/Gosub nhn_1,..,nhn_n Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 31

Bi ging Lp trnh trong Access Trong BT l biu thc nguyn v tho mn iu kin 0 BT 255 S hot ng: Nu BT = 1 th nhy ti nhn_1 Nu BT = 2 th nhy ti nhn_2 ....... Nu BT = n th nhy ti nhn_n Nu BT = 0 hoc BT > n th b qua On BT Goto/Gosub thc hin lnh tip theo. Nu BT < 0 hoc BT > 255 th c li. Nhy khi c li C php: On Error Goto Label ..... Exit Sub Label: X l li next Resume nhan Hot ng: Khi c li, chng trnh khng dng m chuyn n cu lnh c nhn Label. Cc li c th xy ra: Xa mt bng / truy vn khng tn ti. To mi mt bng / truy vn tn ti. Nhn gi tr Null t mt iu khin ca form / report. Chia cho s 0. V cc li khc... Khi gp cc li ny, chng trnh b ri lon v c th b treo my. Cc hm: Error$: cho bit li g xy ra. Err: cho bit s hiu li. Cu lnh Resume: hng dn s hot ng tip tc ca chng trnh, thng c vit theo hai cch: Resume Next Theo cch ny, chng trnh tip tc t cu lnh ngay sau cu lnh gy li. Resume Tiep_tuc Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 32

Bi ging Lp trnh trong Access Chng trnh tip tc t cu lnh c nhn Tiep_tuc. V d: Th tc xa mt bng c tn nhp vo t bn phm. Li c th gp l bng khng tn ti. Khi c li, chng trnh a ra thng bo v kt thc th tc: Sub DeleteTable() Dim DB As Database Dim tableName As String Set DB = CurrentDB() On Error Goto Xu_li_loi tableName = InputBox("Input the name of the table that will be deleted:") DB.TableDefs.Delete tableName MsgBox Table + tableName + was deleted Exit_Program: Exit Sub Xu_li_loi: MsgBox Table + tableName + is not available MsgBox Error$ Resume Exit_Program End Sub

4.8 Cc thao tc trn tp


Cho php chuyn d liu ra lu tr ngoi tp mdb. M tp: Tp cn c m trc khi thc hin cc thao tc trn n. m tp, ta dng mnh OPEN: OPEN Tn_tp [FOR Kiu_tp] [ACCESS quyn_truy_nhp] AS[#]S_hiu_tp [LEN = Reclen] Gii thch cc tham s: Tn_tp: biu thc chui xc nh tn tp v ng dn, bt buc phi c tham s ny. V d: file01.ad, C:\ABC\hoso.xyz Kiu_tp: Xc nh cch thc truy nhp trn tp, gm cc gi tr sau: Gi tr ngha Random y l kiu tp mc inh. c ghi theo mu tin. Cho php thc hin c ba thao tc: ReadWrite (default), ReadOnly, WriteOnly. Binary Cho php c/ghi t mt v tr bt k tnh theo byte trn tp bgn cch dng mnh GET ( c) v PUT ( ghi). Cho php thc hin c ba thao tc: ReadWrite (default), ReadOnly, WriteOnly. c trn cc tp tun t bng cch s dng mnh Input. 33

Input

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access Output Append Gi tr Read Write Ghi trn cc tp tun t bng cch s dng mnh Write. Ghi b sung trn cc tp tun t bng cch s dng mnh Write. ngha Ch c quyn c Ch c quyn ghi S_hiu_tp: l mt biu thc nguyn c gi tr t 1 n 255. Sau khi m tp, s hiu tp s gn vi tp cho n khi tp c ng li. Mi thao tc s thc hin thng qua s hiu tp. Reclen: l mt biu thc nguyn c gi tr t 1 n 32767. i ny thc s c tc dng i vi kiu tp Random xc nh ln ca bn ghi (s k t trong mi bn ghi). Gi tr mc nh ca Reclen l 128 byte. V d: Hm kim tra s tn ti ca tp trong th mc hin hnh, i s l tn tp cn kim tra. Hm tr v True nu tp tn ti, ngc li l False. on m c dng hm xc nh mt s hiu t do cha dng FreeFile: Function Ton_tai(Ten_tep As String) As Integer So_hieu As Integer So_hieu = FreeFile Chn mt s hiu cha dng Ton_tai = True On Error Goto Loi OPEN Ten_tep FOR Input AS So_hieu Close So_hieu ng tp Exit Function Loi: Ton_tai = False Resume Next End Function ng tp Mnh Close dng ng 1 hoc tt c cc tp ang m. C php nh sau: Close [[#]S_hiu_tp], [[#]S_hiu_tp].... Nu vit Close khng km theo tham s g th c ngha l ta ng tt c cc tp ang m. Ngoi ra, ta cng c th ng tt c cc tp ang m bng mnh Reset. Ghi ln tp tun t (vn bn) Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 34

Quyn_truy_nhp: Xc nh quyn truy nhp trn tp gm:

Read Write C quyn c v ghi. Ch ng i vi cc kiu tp Random v Binary.

Bi ging Lp trnh trong Access Write #<s_hiu_tp>,[<danh sch biu thc>] Mnh ny dng ghi d liu kiu s, chui v kiu DATE/TIME ln mt tp tun t. Mi cu lnh Write s ghi mt dng vn bn ln tp. Dng vn bn gm cc gi tr ng vi cc biu thc c phn cch nhau bi du phy. Mi gi tr chui c bao bc trong 2 du nhy kp. Gi tr kiu DATE c ghi ln tp theo nh dng #2006-11-20# (tc l: nm-thng-ngy). Gi tr kiu TIME c ghi ln tp theo dng #10:27:39# (gi:pht:giy). Mt cu lnh WRITE khng km theo biu thc s ghi mt dng trng ln tp. Kt qu, ta nhn c mt tp vn bn, ni dung ca n c th xem c bng cc h son tho vn bn. V d: Chng ta s vit mt th tc ghi mt s th ln mt file vi tn l test.abc, sau chng ta s kim tra ni dng file ny. Ch : th mc C:\access tn ti.

Dch v chy th chng trnh trong ca s Immediate. M th mc access trong C ra, ta thy c file test.abc. Dng trnh son tho Notepad m file ny, ta c kt qu nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

35

Bi ging Lp trnh trong Access

c t tp tun t (vn bn) Input #<s_hiu_tp>,[<danh sch cc bin>] Mnh ny dng c d liu kiu s, kiu chui v kiu DATE/TIME t mt tp vn bn v cha vo cc bin tng ng vi ch : d liu trn tp v bin tng ng (bin cha d liu) phi cng kiu. Danh sch cc bin phn cch nhau bi du phy. V d: c tp cha cc s sau:

Ta vit chng trnh nh sau:

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

36

Bi ging Lp trnh trong Access

Khi thc thi th tc trn, ta thu c kt qu nh sau:

Ghi trn tp ngu nhin / nh phn Mnh Put dng ghi gi tr ca mt bin (kiu s, chui v DATE/TIME) ln mt tp ngu nhin / nh phn. Kt qu, ta nhn c mt tp nh phn. C php nh sau: PUT #<s_hiu_tp>, [s_hiu_bn_ghi ,] <tn_bin> trong : s_hiu_bn_ghi: l mt biu thc nguyn dng biu th s hiu bn ghi i vi tp ngu nhin (hoc s hiu byte i vi tp nh phn). Vic ghi s thc hin t bn ghi hoc byte ny.. Nu vng mt, vic ghi s bt u t bn ghi hoc byte hin ti trn tp. Bn ghi (hoc byte) u ng vi s_hiu_bn_ghi = 1. Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 37

Bi ging Lp trnh trong Access Ch v di ca bn ghi: di ca bn ghi c quy nh bi i Len trong mnh OPEN. N ch thc s cn thit i vi tp Random. Cch xc nh di bn ghi: Vi cc bin c di xc nh (mi kiu tr String) th di bn ghi cn ln hn hoc bng di ca bin. Ring i vi bin kiu chui c di bin i cn lng trc di cc i (s k t ti a cn nhp). di bn ghi ( di cc i + 2) (2 byte dng ghi nhn di ca chui). Kt qu thc hin: i vi tp ngu nhin, mi cu lnh PUT s: a ni dung ca bin vo mt phng i c di Len byte, sau ghi c Len byte ca phng i ln tp ti bn ghi th s_hiu_bn_ghi. Nu phng i qu nh khng cha c gi tr ca bin th s thng bo li: Bad Record Length. i vi tp nh phn: Ghi gi tr ca bin ln tp ti byte th s_hiu_bn_ghi. S byte c ghi s bng ln ca bin. c t tp ngu nhin/ nh phn Mnh GET dng c d liu t mt tp Random / Binary v cha vo mt bin. C php nh sau: GET #<s_hiu_tp>,[s_hiu_bn_ghi ,] <tn_bin> trong : s_hiu_bn_ghi: l mt biu thc nguyn dng biu th s hiu bn ghi i vi tp ngu nhin (hoc s hiu byte i vi tp nh phn). Vic c s thc hin t bn ghi hoc byte ny.. Nu vng mt, vic c s bt u t bn ghi hoc byte hin ti trn tp. Bn ghi (hoc byte) u ng vi s_hiu_bn_ghi = 1. Ch : i vi tp Random, i s Len trong mnh OPEN c cn bng di bn ghi trn tp cn c. D liu cha trn tp v bin nhn d liu tng ng phi c cng kiu. Kt qu thc hin: i vi tp ngu nhin, mi cu lnh GET s: c len byte t tp v cha vo phng i (c di Len byte). Ly mt s byte t phng i (bng di ca bin) v gn cho bin. Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 38

Bi ging Lp trnh trong Access i vi tp nh phn, mi cu lnh GET s c mt s byte bng di ca bin t tp v a vo bin. V d:

Kt qu:

Cc hm dng trong thao tc tp: Eof(<s_hiu_tp>): Hm ny tr v gi tr True nu con tr tp t ti cui tp, ngc li, hm tr v tr False. Lof(<s_hiu_tp>): cho bit di ca tp tnh theo byte. V d: xc nh s bn ghi trn mt tp Random, ta chia di tp cho di bn ghi: Open DSTS.xyz For Random As #1 Len = 20 So_ban_ghi = LOF(1)/20

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

39

Bi ging Lp trnh trong Access Seek(<s_hiu_tp>): cho bit v tr hin ti ca con tr tp. l mt gi tr nguyn trong khong t 1 n 2147483647. i vi tp Random, hm cho bit s hiu ca bn ghi tnh t 1 m con tr tp ang nh v. i vi cc tp cn li, hm cho bit s hiu byte tnh t 1 m con tr tp ang nh v. Mnh Seek: SEEK [#]<s_hiu_tp>, V_tr trong , V_tr l s nguyn dng trong khong t 1 n 2147483647 xc nh v tr m con tr tp s di chuyn ti. i vi tp Random, V_tr l s hiu bn ghi tnh t 1. i vi tp Binary, V_tr l s hiu byte tnh t 1. Ch : Nu V_tr = 0 hoc m th s bo li Nu V_tr ln hn s bn ghi hin c (V d: trn tp ch c 6 bn ghi m V_tr = 9) th con tr tp s nh v ti cui tp.

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

40

Bi ging Lp trnh trong Access

Chng 5 S dng i tng trong Access


5.1 Khi nim i tng v tp hp i tng
5.1.1 Cc kiu d liu i tng
Cc kiu d liu i tng thng dng ca Access nh sau: Form Report Control DBEngine, Workspace, DataBase, TableDef, QueryDef, Recordset, Index, Field, Parameter Connection, Command, Catalog, Table, Column, Key CommandBar, CommandBarControl, CommandBarButton,... Chng ta cng khai bo cc bin kiu i tng bng lnh Dim.

5.1.2 Tp hp i tng
Tp hp i tng l i tng nh sn ca Access. Cc i tng cng kiu l i tng con ca tp hp i tng. Tn: ta thm s vo ng sau. V d: Forms, TableDefs, QueryDefs... biu din mt i tng trong tp hp, c nhng cch sau: <Tp hp>(i), trong i = 0, 1, 2,... <Tp hp>(<Tn i tng>) <Tp hp>!<Tn i tng> (nu tn i tng khng c du cch) <Tp hp>![Tn i tng] (nu tn i tng c du cch)

5.1.3 i tng khi thu. Cch biu din cc thnh phn ca mt i tng
i tng khi thy khng l i tng con ca bt k i tng no. i tng khi thy ng u trong biu din ca cc thnh phn i tng Cc i tng khi thy thng dng l: Ca Access: Forms, Reports Ca DAO: DbEngine Ca ADO: Connections, Catalog Ca MsOffice: CommandBars Khi biu din thnh phn no ca i tng, phi tun theo quy nh sau: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

41

Bi ging Lp trnh trong Access Xut pht t i tng khi thy -> Cc i tng trc thuc i tng va c biu din -> Cc thnh phn ca i tng. Nu tn i tng khng theo quy nh v tn trong lp trnh th phi bao bng cp ngoc vung.

5.1.4 Mt vi im c bit khc


T kha Me c dng ch i tng m trn on m chng trnh ang chy. N c th l form hoc report. Tham chiu n i tng mt bin i tng tham chiu n mt i tng cng kiu, ta dng lnh Set: Set <tn bin i tng> = <biu thc i tng> Lnh With Tng t nh trong Pascal, chng ta khng cn vit tn i tng khi thc hin thao tc. With <i tng> [<Cc lnh>] End With

5.2 i tng ca Access


5.2.1 Phn cp cc i tng ca Access
Access Forms Controls Reports Controls DoCmd

5.2.2 i tng DoCmd


DoCmd.<Phng thc><Danh sch cc tham s> C th phn bit hai loi tham s: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 42

Bi ging Lp trnh trong Access Tn ca mt i tng do ngi dng t t nh tn bng, tn Form.... Cc hng chun ca Access. Chng ta s c dp bit n cc tham s ny ngay di y: Phng thc Close DoCmd.Close <Kiu i tng>, <Tn i tng>, <Cch ghi> trong : <Kiu i tng>: xc nh kiu i tng cn ng, chn trong cc hng chun sau: acTable, acQuery, acForm, acReport, acMacro, acModule. <Tn i tng>: xc nh tn ca i tng cn ng. <Cch ghi>: c ghi li cc thay i ca i tng trc khi ng hay khng, chn mt trong cc hng: acSaveNo (khng ghi), acSaveYes (c ghi), acSavePrompt. V d: DoCmd.Close acForm, MainForm, acSaveYes s ng mu biu MainForm v ghi li mi thay i ca mu biu ny trc khi ng. Phng thc OpenForm DoCmd.OpenForm <Tn form>, <View>, <Tn b lc>, <iu kin lc>, <DataMode>, <WindowMode> <Tn form>: chui biu th tn biu thc cn m. <View>: chn trong cc hng sau: acDesign, acForm, acNormal (mc nh), acPreview. <Tn b lc>: chui biu th tn ca mt truy vn dng sp xp v/hoc lc ra cc thng tin cn thit. <iu kin lc>: chui cha iu kin chn lc thng tin. <DataMode>: chn trong cc hng sau: acFormAdd, acFormEdit, acFormPropertySettings (mc nh), acFormReadOnly. <WindowMode>: chn trong cc hng sau: acDialog, acHidden, acIcon, acWindowNormal (mc nh). V d: m form danh sach thi sinh theo dng form View cp nht d liu cho nhng th sinh c tng im ln hn hoc bng 18, ta vit nh sau: DoCmd.OpenForm danh sach thi sinh, acNormal, , [tong diem]>=18, acFormEdit Phng thc OpenTable dng m mt bng, c 3 tham s theo th t sau: Tham s ngha / Gii thch 43

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access Table Name View DataMode biu thc chui biu th tn bng cn m. chn trong cc gi tr sau: acViewDesign, acViewNormal (mc nh dng Datasheet View), acViewPreview. chn trong cc gi tr sau: acAdd, acEdit (mc nh), acReadOnly.

V d: m bng danh sach can bo cp nht d liu, ta vit nh sau: DoCmd.OpenTable danh sach can bo, acViewNormal, acEdit Phng thc OpenQuery dng m mt truy vn, c 3 tham s theo trnh t: Tham s Query Name View DataMode ngha / Gii thch chui biu th tn truy vn cn m. chn trong danh sch sau: acViewDesign, acViewNormal (mc nh), acViewPreview. chn trong cc gi tr sau: acAdd, acEdit (mc nh), acReadOnly.

Phng thc OpenReport dng m mt bo biu, c 4 tham s theo th t: Tham s Report Name View Filter Name ngha / Gi tr chui biu th tn bo biu cn m. chn trong danh sch sau: acViewDesign, acViewNormal (mc nh in bo biu), acViewPreview. chui biu th tn ca mt truy vn dng sp xp v/hoc lc ra cc thng tin cn thit.

WhereCondition chui cha iu kin chn lc thng tin. Phng thc Open Module dng m mt n th, c 2 tham s theo th t sau: Tham s ModuleName ngha / Gi tr chui biu th tn n th cn m.

ProcedureName chui xc nh tn th tc ca n th. V d: m n th chuong trinh xem, sa, b sung cc hm, th tc ca n bt u t th tc c tn tinh_toan: DoCmd.OpenModule chuong trinh, tinh_toan Cc phng thc trn cc control Sn li cc i tng

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

44

Bi ging Lp trnh trong Access i tng hin ni dung mi nht m n va thay i, ta dng phng thc RepaintObject c 2 tham s nh sau: Tham s ObjectType ngha / Gii thch chn trong danh sch sau: acDefault, acForm, acMacro, acModule, acQuery, acReport, acTable.

ObjectName chui biu th tn i tng cn sn li. V d: sau khi gn gi tr cho cc iu khin ca mu biu [hoc sinh], ta dng cu lnh sau thy s thay i ca mu biu trn mn hnh: DoCmd.RepaintObject acForm, hoc sinh t con tr chut ti mt iu khin dnh v con tr ti mt iu khin, ta dng cu lnh: DoCmd.GotoControl Tn iu khin V d: DoCmd.GotoControl Noi sinh s nh v con tr ti iu khin [Noi sinh]. Hin ni dung va thay i ca mt iu khin C khi ni dung ca mt iu khin thay i nhng trn mu biu, ta vn ch quan st c ni dung c ca n. iu ny thng xy ra i vi cc hp ComboBox. hin th ni dung mi nht ca mt iu khin, ta dng cu lnh sau: DoCmd.Requery Tn iu khin Di chuyn n mt bn ghi mi di chuyn n mt bn ghi mi, bin n thnh bn ghi hin hnh, ta dng phng thc GotoRecord c 4 tham s: Tham s ObjectType ngha / Gi tr chn trong danh sch sau: acActiveDataObject (mc nh), acDataForm, acDataQuery, acDataTable. chn trong danh sch: acFirst, acGoto, acLast, acNewRec, acNext (mc nh), acPrevious. biu thc nguyn (gi s c gi tr l n). Nu tham s Record l acNext hoc acPrevious th s di chuyn xung pha di hoc ln pha trn n bn ghi. Nu tham s Record l acGoto th s di chuyn n bn ghi c s th t l n (tnh t 1). 45

ObjectName chui biu th tn i tng cha bn ghi cn di chuyn n. Record Offset

V d: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access DoCmd.GotoRecord acDataForm, Tim kiem, acGoto, m s di chuyn n bn ghi th m ca mu biu [Tim kiem]. Phng thc SetMenuItem Phng thc ny dng iu khin trng thi ca Menu. C php nh sau: DoCmd.SetMenuItem menuIndex [, CommandIndex / SubMenu] [, Command Index ] [, Flag] Tham s menuIndex CommandIndex SubMenu CommandIndex ngha / Gii thch l mt gi tr nguyn tnh t 0, xc nh ch s ca menu trong h menu. / l mt s nguyn tnh t 0, xc nh ch s ca nt lnh hoc ch s ca menu con ca menu c ch s menuIndex. l mt s nguyn tnh t 0, xc nh ch s ca nt lnh trong menu con c ch s CommandIndex/SubMenu. Tham s ny ch dng khi tham s th hai l ch s ca menu con. Quy nh trng thi mi ca i tng c xc nh bi ba tham s trn, l mt trong cc hng sau: acMenuCheck (nh du). acMenuGray (b xm, khng cho php thc hin nt lnh). acMenuUncheck (khng nh du). acMenuUngray (khng b xm, y l trng thi mc nh). Chng ta s to mt h menu minh ha chc nng ca phng thc SetMenuItem nh sau: File Open V Access V Window trong : Chc nng Open b xm i, cha s dng c do ta cha ci t. Khi form hin ln ln u, "Tam gic" c chn. V "Tam gic" c chn nn chc nng "Tnh di" b xm i (khng s dng c). Ta vit on m trong th tc x l s kin Open ca Form: Chn hnh hc Chc nng Tam gic on thng Tnh din tch Tnh di

Flag

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

46

Bi ging Lp trnh trong Access

Hnh minh ha kt qu nh sau:

5.2.3 Tp hp i tng Forms v Reports


Forms Tp hp i tng Forms l i tng sn c ca Access dng tham chiu n cc Form ang m. C th dng cch biu din i tng qua tp hp i tng v i Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 47

Bi ging Lp trnh trong Access chiu trn cy phn cp cc i tng ca Access biu din cc i tng trong tp hp. V d: Forms(i), i = 0, 1, ... ch form c m th i. Forms!Form1.Control!Label1 hoc Forms!Form1!Label1 ch nhn Label1 trn Form1 Trong Access c form chnh v form ph. Mun tham chiu n cc iu khin trn form ph, ta s dng c ch phn cp sau: i tng khi thy Forms. Cc form ang m. Cc iu khin trn cc form ang m (trong c subform: m bo s nht qun gia tn ca iu khin subform v tn subform). i tng form l i tng con ca iu khin subform. Mt s thuc tnh hay dng trong Form: Thuc tnh Name Visible Count Tn i tng hin th hay khng hin th ca form hay control xc nh s i tng thnh phn ca tuyn tp. ngha

ControlType xc nh kiu ca cc control trong form/report. Nhn cc gi tr sau: acLabel, acRectangle, acLine, acImage, acCommandButton, acOptionButton, acCheckBox, acTextBox, acListBox, acComboBox, Value biu th gi tr ca cc iu khin TextBox, ListBox, ComboBox. V d 1: In danh sch cc mu biu ang m Cch 1: Sub LietKe() Dim n As Integer, I As Integer n = Forms.Count For i = 0 To n-1 MsgBox "Tn form th" & str(i) & "l:" & Forms(i).Name Next End Sub Cch 2: Sub LietKe() Dim fm As Form, i% i=0 For Each fm In Forms Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 48

Bi ging Lp trnh trong Access MsgBox "Tn form th" & str(i) & "l:" & fm.Name i=i+1 Next End Sub V d 2: dng php gn thay i gi tr ca cc thuc tnh hoc control. Gi s "ho ten" l mt textBox trn form "ho so". Dim f As Form DoCmd.OpenForm "ho so" ' M mu biu [ho so] Set f = Forms![ho so] ' gn bin f vo mu biu f![ho ten] = "Nguyen Van A" ' xut hin dng ch Nguyn Vn A trn [ho ten] f.Visible = True ' hin mu biu f![ho ten].Visible = False ' n iu khin [h ten] Reports Tp hp i tng Reports l i tng sn c ca Access dng tham chiu n cc bo co ang m. Cch biu din cc thnh phn trong tp hp i tng Reports tng t nh tp hp i tng Forms. Mun tham chiu n cc iu khin trn report ph, c th s dng c ch phn cp sau: i tng khi thy Reports. Cc bo co ang m. Cc iu khin trn cc bo co ang m (trong c iu khin subreport: m bo s nht qun gia tn iu khin subreport v tn subreport). i tng report l i tng con ca iu khin subreport. iu khin xut hin trn report ph ca report ang xt. Ch : bo biu cng tng t nh mu biu.

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

49

Bi ging Lp trnh trong Access

5.3 i tng ca DAO (Data Access Object)


5.3.1 Mi quan h gia cc i tng ch yu ca DAO
DbEngine Workspaces Databases

TableDefs Fields Indexes Fields Fields

QueryDefs Parameters

Recordsets Fields

a. Tp hp i tng Databases. i tng kiu Database


Tp hp i tng Databases: Thuc tnh: Count: s CSDL ang m Phng thc: .Refresh: Cp nht li cc i tng ng vi nhng thay i trn lc ca CSDL. i tng kiu Database: Thuc tnh Name: Tn y ca CSDL Updatable (True/False): C cp nht c CSDL khng. Phng thc: .CreateTableDef: To bng mi Set <tn bin TableDef> = <Tn bin Database>.CreateTableDef([<tn bng>]) Tn bng l xu k t. Nu khng ch r tn bng, phi gn gi tr cho thuc tnh Name ca bin kiu TableDef. .CreateQueryDef: To truy vn mi

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

50

Bi ging Lp trnh trong Access Set <tn bin QueryDef> = <Tn bin Database>.CreateQueryDef([<tn query>][,<Vn bn SQL>]) Tn truy vn v vn bn SQL u l xu k t. Nu khng ch r trong phng thc, phi gn gi tr cho cc thuc tnh Name v SQL ca bin kiu QueryDef. .Execute: Thc hin truy vn hnh ng (b sung, loi b, thay i), to bng... <Tn bin CSDL>.Execute <Ngun>,<Cch thc> Ngun: Xu k t ch tn hoc vn bn SQL ca truy vn. Cch thc: cho php chn mt s hng ca DAO, c chp nhn mt nht qun d liu khng... .OpenRecordset Set <tn bin kiu Recordset> = <Tn bin CSDL>.OpenRecordset (<Ngun>[,<Kiu>]) Ngun: xu k t ch tn bng, tn truy vn hoc vn bn SQL ca truy vn. Kiu: Kiu ca Recordset. Chn cc hng ca DAO nh: dbOpenTable, dbOpenDynaset, dbOpenSnapshot.

b. Tp hp i tng kiu TableDefs. i tng kiu TableDef


Tp hp i tng TableDefs: Tham chiu cc bng trong CSDL Thuc tnh: Count: s bng trong CSDL Phng thc: .Append: thm mt bng mi vo CSDL <Tp hp>.Append <tn bin bng> .Delete: xa mt bng khi CSDL <Tp hp>.Delete <tn bng> (c th l gi tr thuc tnh Name) i tng kiu TableDef Thuc tnh: .Name: tn bng .RecordCount: s bn ghi trong bng .ValidationRule: xem trong phn thit k bng .ValidationText Phng thc: .CreateField: to trng mi cho bng Set <tn bin trng> =<tnbin TableDef>.CreateField(<tn>[,<kiu>][,< rng>]) Tham ngha 51

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

Bi ging Lp trnh trong Access s <tn> < rng> <kiu> do ngi dng t theo quy tc. tnh bng byte i vi text. nhn mt trong cc gi tr nguyn sau: dbBoolean, dbByte, dbInteger, dbLong, dbCurrency, dbSingle, dbDouble, dbDate, dbBinary, dbText, dbLongBinary(kiu OLE), dbMemo. .CreateIndex: to ch s mi cho bng Set <bin ch s> = <tn bin TableDef>.CreateIndex(<tn>) .OpenRecordset

c. Tp hp i tng Fields
Phng thc .Append: thm trng mi vo bng <Tn i tng>.Fields.Append <tn bin trng> .Delete: xa mt trng trong bng <Tn i tng>.Fields.Delete <tn trng>

d. Xy dng CSDL nh bin i tng


To bng mi: dng phng thc ca i tng DataBase. To trng mi: dng phng thc ca i tng kiu TableDef. Thm trng vo bng: dng phng thc ca tp hp i tng Fields. Thm bng vo CSDL: dng phng thc ca tp hp i tng TableDefs. V d 1: th tc to bng vi tn bng v s ct cho trc

Public Sub CreateTable(name As String, quantityOfColum As Integer) Dim db As Database, tb As TableDef, fd As Field Dim i As Integer, fieldName As String Set db = CurrentDb Set tb = db.CreateTableDef(name) For i = 1 To quantityOfColum fieldName = Colum & i Set fd = tb.CreateField(fieldName, dbInteger) tb.Fields.Append fd Next db.TableDefs.Append tb End Sub
Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 52

Bi ging Lp trnh trong Access V d 2: to mt bng mi tn l [Ho so] gm trng [Ho ten] kiu text, trng [Nam sinh] kiu Integer.

Sub TaoBang() Dim DB As Database, TB As TableDef, FD As Field 'DB gn vi CSDL hin hnh Set DB = DBEngine.Workspaces(0).Databases(0) ' To bng [Ho so] v gn vo bin TB Set TB = DB.CreateTableDef("Ho so") ' To trng [Ho ten] kiu Text, rng 25 byte Set FD = TB.CreateField("Ho ten", dbText, 25) ' B sung vo tuyn tp cc trng ca bng TB.Fields.Append FD ' To trng [Nam sinh] kiu Integer Set FD = TB.CreateField("Nam sinh", dbInteger) ' B sung vo tuyn tp cc trng ca bng TB.Fields.Append FD ' B sung bng vo tuyn tp cc bng ca CSDL hin hnh DB.TableDefs.Append TB End Sub e. Tp hp i tng QueryDefs. i tng kiu QueryDef
Tp hp i tng QueryDefs Thuc tnh: .Count: s lng truy vn trong CSDL. Phng thc: .Append: thm truy vn mi vo CSDL. <Tp hp>.Append <tn bin QueryDef> .Delete: xa mt truy vn khi CSDL <Tp hp>.Delete <tn truy vn> (c th l thuc tnh Name) i tng kiu QueryDef Thuc tnh: .Name: Tn truy vn. .SQL: Vn bn SQL ca truy vn. Phng thc: .Execute: thc hin truy vn (hnh ng - to lp CSDL)

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

53

Bi ging Lp trnh trong Access .OpenRecordset: to Recordset, ging phng thc ca i tng Database, khng c tham s ngun. V d: To mt truy vn [DSHS Gioi] gm cc hc sinh c im trung bnh >= 8:

Sub hsGioi() Dim DB As Database Dim QR As QueryDef Dim st As String Set DB = CurrentDB Set QR = DB.CreateQueryDef() QR.Name = "DSHS Gioi" st = "Select distinctrow DSHS.* from DSHS" st = st + "Where [Diem TB]>=8" QR.SQL = st DB.QueryDefs.Append QR ' M truy vn xem DoCmd.OpenQuery "DSHS Gioi" End Sub f. Tp hp i tng Recordsets. i tng kiu Recordset
y l i tng quan trng nht trong cc i tng ca DAO. Chng c dng thc hin cc thao tc trn CSDL nh tm kim, b sung, loi b, thay i,... trong chng trnh. Tp hp i tng Recordsets Thuc tnh: .Count: tng s recordset ang s dng Phng thc: .Refresh: to li cc recordset khi lc CSDL thay i i tng kiu Recordset Dng tham chiu n mt tp hp cc bn ghi trn CSDL. Tp hp ny c th nm trong mt bng hay mt truy vn. C ba loi recordset chnh: Bng, Dynaset, Snapshot. Ngoi ra cn mt s loi khc dng khi nhn d liu t cc ngun khc thng qua ODBC. Phin bn Access 2000 tr ln khng phn bit r s khc nhau gia cc loi recordset. truy nhp n tng trng ca recordset, ngi ta c th dng cc cch thc sau: Qua tp hp i tng Fields: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 54

Bi ging Lp trnh trong Access <Bin Recordset>.Fields(i) i = 0, 1, 2,... <Bin Recordset>.Fields(<tn>) <Bin Recordset>.Fields!<tn> Truy nhp trc tip vo trng: <Bin Recordset>.(Tn) <Bin Recordset>!<Tn> Thuc tnh ca i tng kiu Recordset: .AbsolutePosition: v tr con tr bn ghi ca Recordset, gi tr : 0, 1, 2,... .BOF (T/F) : ng khi con tr bn tri bn ghi u tin .EOF (T /F) : ng khi con tr bn phi bn ghi cui cng .Filter : xu k t th hin iu kin lc cc bn ghi trong recordset .NoMatch (T/F) : dng khi tm kim bng cc phng thc FindFirst, FindLast, FindNext, FindPrevious. .RecordCount: s bn ghi trong recordset. Phng thc ca i tng kiu Recordset .AddNew: thm bn ghi trng vo recordset. Chng ch c cp nht vo CSDL khi ta gi phng thc Update. .Close: ng recordset. .Delete: xa bn ghi hin hnh trong recordset. .Edit: sa bn ghi hin hnh trong recordset. Chng ch c cp nht vo CSDL khi ta gi phng thc Update. .Update: Cp nht nhng thay i trn recordset. .CancelUpdate: b qua khng cp nht nhng thay i trn recordset. .FindFirst | .FindLast | .FindNext | .FindPrevious <iu kin>: chuyn con tr n bn ghi u tin, cui cng, ngay sau bn ghi hin hnh, ngay trc bn ghi hin hnh tha mn iu kin nu c. Nu khng c, chuyn n EOF. .MoveFirst | .MoveLast | .MoveNext | .MovePrevious: chuyn con tr n bn ghi u tin, cui cng, ngay sau bn ghi hin hnh, ngay trc bn ghi hin hnh. Phng thc OpenRecordset dng to mt bin Recordset. C th dng phng thc ny vi cc i tng: Database, TableDef, QueryDef. Cch vit: Set <bin Recordset> = i_tng.OpenRecordset(Ngun, loi) trong : Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 55

Bi ging Lp trnh trong Access Tham s i_tng Ngun ngha l mt bin i tng kiu Database, TableDef, QueryDef l chui k t biu th tn bng, truy vn hoc cu lnh SQL. Tham s Ngun ch s dng vi i tng Database, cn vi i tng TableDef v QueryDef th ngun chnh l cc i tng ny. l mt trong cc dbOpenSnapshot gi tr sau: dbOpenTable, dbOpenDynaset,

Loi Loi mc nh

Nu b qua tham s loi th Access s dng loi mc nh theo quy tc sau: Vi i tng l bng ca CSDL hin hnh th loi mc nh l dbOpenTable. Vi i tng l truy vn hoc l bng ca CSDL khng hin hnh th loi mc nh l dbOpenDynaset.

V d 1: m s bn ghi ca mt Recordset

Sub Dem_so_ban_ghi() Dim DB As Database, rec As RrecordSet, total Set DB = CurrentDB Set rec = DB.OpenRecordSet("DSCB") total = rec.RecordCount MsgBox "Tong so ban ghi la:" & str(total) rec.Close DB.Close End Sub
V d 2: Xt bng DSCB trong c cc trng Bac_luong v Nam_len_luong. Nu nm ln lng trc 1998 th bc lng s c cng thm 200,000. Th tc c vit nh sau:

Sub Dieu_chinh_luong() Dim DB As database, rec As RecordSet Set DB = CurrentDB Set rec = DB.OpenRecordSet("DSCB") Do Until rec.EOF if rec![Nam_len_luong] <=1998 then rec.Edit rec![Bac_luong] = rec![Bac_luong] + 200000 rec.Update
Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 56

Bi ging Lp trnh trong Access

End if rec.MoveNext Loop rec.Close DB.Close End Sub

5.4 i tng d liu ADO (ActiveX Data Object)


s dng ADO, chng ta cn quan tm n cc th vin sau: Th vin ADODB cha cc thao tc n gin nht, cho php kt ni n CSDL, thao tc trn bn ghi. Th vin ADOX cho php gii quyt cc vn lin quan n thit k d liu (bng, truy vn) v an ton d liu. Th vin JRO cho php to lp nhng bn sao ca CSDL. Mun s dng cc th vin ca ADO, ta phi tham chiu n th vin (dng th vin no th tham chiu th vin y). Trn ca s Code, dng hp thoi References

5.4.1 Phn cp cc i tng ch yu ca th vin ADODB


Connection Commands Parameters Recordsets Fields Errors

5.4.2 i tng kiu Connection


Cch thc hin kt ni n CSDL Khai bo: Dim <tn bin> As [New] Connection Kt ni n CSDL khc: Ta gi phng thc <Tn bin Connection>.Open <Dng kt ni> <Dng kt ni> l xu k t, thng bao gm cc tham s: Provider: loi CSDL. V d: provider =microsoft.jet.OLEDB.4.0 DataSource: tn CSDL, bao gm c ng dn Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 57

Bi ging Lp trnh trong Access Truy nhp CSDL hin hnh: Set <Tn bin Connection> = CurrentProject.Connection Thuc tnh ca i tng kiu Connection .Connection String: nhng thng tin lin quan n kt ni, bao gm c nhng thng tin c ch ra trong dng kt ni, ngoi ra cn c user name, password, mt m ha... V d: Ta vit on th tc sau:

Khi chy on m trn, ta thu c kt qu l thng tin v chui kt ni:

.Mode: xc nh qun c lm i vi CSDL, ngm nh l adModeUnknown Cc gi tr ca thuc tnh ny nh bng sau: Gi tr adModeUnknown ngha Cha thit lp vic phn quyn s dng hoc khng phn quyn s dng. adModeRead Ch c. adModeWrite Ch ghi. adModeReadWrite C th c ghi. adModeShareDenyWrite Ngn cn ngi khc m CSDL ghi. adModeShareDenyRead Ngn cn ngi khc m CSDL c. adModeShareExclusive Ngn cn ngi khc m CSDL. adModeShareDenyNone Ngn cn ngi khc lm mi vic vi CSDL. Cc phng thc ca i tng kiu Connection Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 58

Bi ging Lp trnh trong Access .Open: dng m mt kt ni. .Close: ng kt ni. .Execute: thc hin truy vn trong CSDL c tham chiu, c th thc hin c truy vn chn.

5.4.3 i tng kiu Recordset


Cc phng thc ca i tng kiu Recordset .Open : tng t phng thc OpenRecordset ca DAO, dng to RecordSet, thc hin kt ni (hin hoc ngm). Cch s dng: <Tn bin Recordset>.Open[<Ngun>],[<Kt ni>],[<Kiu con tr>],[<Kiu kha>][,<Tu chn>] Trong : Ngun: tn bng, vn bn SQL hay tn bin kiu Command. Kt ni (ActiveConnection): Xc nh kt ni ca Recordset, l xu k t nh kiu dng kt ni. Kiu con tr (CursorType): c th nhn mt trong cc gi tr sau: Gi tr ngha adOpenForwardOnly Con tr ch c th di chuyn v pha trc, ngm nh. adOpenKeyset Khng nhn thy nhng thay i do ngi khc thc hin, di chuyn 2 chiu. adOpenDynamic Quan st c nhng thay i ca nhng ngi dng khc. C th thm, sa, xa. C th di chuyn hai chiu m khng cn lu gi bookmark. Kiu kha (LockType): ch nh cch x l i vi nhng truy nhp ca ngi khc khi ta m Recordset: Gi tr ngha adLockReadOnly Khng cp nht c d liu, ngm nh. adLockPessimistic Kha bn ghi khi ngi dng sa. adLockOptimistic Kha bn ghi khi s dng phng thc Update C th khng xc nh cc tham s ch kt ni, kiu con tr v kiu kha m gn trc tip vo cc thuc tnh ActiveConnection, CursorType v LockType. Ty chn (Options): Cch thc m h thng nh gi tham s ngun: Gi tr adCmdText adCmdTable ngha H thng coi ngun l vn bn ca mt command ADO sinh ra mt truy vn tr v tt c cc dng ca mt bng c tn ch bi ngun. adCmdTableDirect Ly ton b cc bn ghi trong bng c tn ch bi ngun. Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 59

Bi ging Lp trnh trong Access adCmdStoredProc Ngun l th tc. adCmdUnknown Kiu ca ngun cha xc nh, ADO s t xc nh ly. Cc phng thc di chuyn con tr: ging Recordset ca DAO .MoveFirst | .MoveLast | .MoveNext | .MovePrevious

Tm kim: .Find: chuyn con tr n bn ghi u tha mn iu kin (nu c), n cui tp EOF (nu khng c). Cc phng thc: .AddNew, .Delete, .Edit, .Update, .Close ging nh trong DAO. Cc thuc tnh ca i tng kiu Recordset .ActiveConnetion, CursorType, LockType .Filter: b lc ca recordset, c ch khi tm kim vi iu kin phc tp. Khi khng mun lc na, gn <tn bin Recordset>.Filter = adFilterNone. V d: Vit th tc trn form cho php tm kim thng tin nhn vin theo iu kin And

Form trn gm c cc iu khin sau: iu khin Nhn (Label) Hp lit k (ListBox) Thuc tnh Name Caption Name Gi tr ca thuc tnh Label1 Tm kim thng tin nhn vin LstKetqua

RowSourceType Table/Query Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 60

Bi ging Lp trnh trong Access RowSource Hp vn bn (TextBox) Name Hp vn bn Nt lnh Nt lnh Name Name Caption Name Caption trng (s gn trong chng trnh) Text0 Text2 Command4 Tm Command5 Thot

Th tc click chut ca nt Command4: Private Sub Command4_Click() Dim cn As Connection Dim rs As ADODB.Recordset Dim tieuchuan As String Dim dkhoten As String, dkma As String Dim loc As String Set cn = CurrentProject.Recordset Set rs = New ADODB.Recordset With rs .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open "nhan vien", cn, , , adCmdTable End With dkma = IIf(Not IsNull(Text0),"manv like '*" & Text0 & "*","") dkhoten = IIf(Not IsNull(Text2),"hoten like '*" & Text2 & "*","") tieuchuan = IIf(dkma<>"",dkma & IIf(dkhoten<>"","and","")& dkhoten,dkhoten) rs.Filter = tieuchuan If rs.EOF then LstKetqua.RowSource = "" LstKetqua.Requery MsgBox "Khong co nhan vien nao thoa man" Exit Sub End If rs.Close cn.Close loc = "select manv, hoten, luong, diachi from nhanvien where" & tieuchuan LstKetqua.RowSource = loc Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 61

Bi ging Lp trnh trong Access LstKetqua.requery LstKetqua.Visible = True End Sub

Th tc load Form: Private Sub Form_Load LstKetqua.Visible = False End Sub

5.4.4 i tng Command v Parameter


Gip thc hin truy vn chn, tham s, hnh ng. Cc thuc tnh ca i tng Command: .CommandText: vn bn SQL ca Command. .CommandType: Kiu ca i tng Command. Cc phng thc ca i tng Command: .Execute: thc hin Command Tr cc bn ghi cho mt Recordset: Set <tn bin Recordset> = <tn bin Command>.Execute(<RecordsAffected>, <Tham s>, <Ty chn>) Ch thc hin cp nht CSDL: <Tn bin Command>.Execute(<RecordsAffected>, <Tham s>, <Ty chn>) V d: Form i m vt t,dng i tng d liu ADO c kim sot

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

62

Bi ging Lp trnh trong Access

Th tc x l s kin ca nt "Thay i":

Private Sub Command5_Click() If IsNull(Text0) Then MsgBox "Nhap vao ma vat tu can thay doi" End If If IsNull(Text2) Then MsgBox "Nhap vao ma vat tu moi" End If Dim cn As Connetion, cm As Command Dim str As String Set cn = CurrentProject.Connection Dim rs As New ADODB.Recordset With rs .ActiveConnection = cn .CursorType = adOpenKeyset .LockType = adLockOptimistic .Open("select * from vattu where mavt = '"& Text0 &"'") If .BOE And .EOF Then MsgBox "Khong ton tai vat tu co ma" & Text0 Exit Sub End If End With Set cm = New ADODB.Command
Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 63

Bi ging Lp trnh trong Access

str = "parameters macu text(5), mamoi text(5);" str = str & "update vattu set mavt = mamoi where mavt = macu" With cm .ActiveConnection = cn .CommandText = str .CommandType = adCmdText End With Dim pr1 As Parameter, pr2 As Parameter Set pr1 = cm.CreateParameter("macu", adVarWChar, adParamInput, 5) cm.ParametersAppend pr1 Set pr2 = cm.CreateParameter("mamoi", adVarWChar, adParamInput, 5) cm.ParametersAppend pr2 pr1.Value = Text0 pr2.Value = Text2 cm.Execute End Sub

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

64

Bi ging Lp trnh trong Access

Chng 6 Mt s bin php an ton v bo mt trong Access


An ton v bo mt l iu rt quan trng i vi cc h qun tr c s d liu ni ring cng nh cc h thng khc ni chung. Cc c s d liu c to lp cho cc x nghip thng c nhiu ngi qun l, s dng. V d: c 1 hoc 2 ngi to lp v qun l c s d liu, c vi ngi ngi cp nht v truy vn thng tinNhng ngi s dng ny khng c php thay i cu trc v thit k ca c s d liu. V yu t quyt nh cht lng ca c s d liu l tnh ton vn v thng tin nn bo v c s d liu l mt trong nhng vn quan tm hng u. Chng ny s trnh by mt s nhng bin php n gin nhng s gip ch c kh nhiu cho chng ta trong yu cu bo v c s d liu chng li s truy nhp, sa i hay ph hu bt hp php v khng c cn c.

6.1 Khng cho hin th thanh Menu v ca s Database


Mc ch l ngn chn khng cho ngi khc xm nhp vo cc thnh phn ca chng trnh nh bng (table), truy vn (query), mu biu (form), bo biu (report), macro, n th (module). Khi ta khng mun cho ngi khc bit iu g th tt nht l ng hin th n, d l dng v hiu ha (lm m, disable) lm mt thanh Menu ca Access, chng ta ch vic thit k mt h Menu v ci vo mu biu chnh nh ni trc y. Khi m mu biu chnh, h Menu ny s thay th thanh Menu ca Access. lm mt ca s Database, ta a cu lnh sau vo th tc x l s kin On_Open ca mu biu chnh: DoCmd.RunCommand acCmdWindowHide Ngoi ra cn to macro AutoKeys chn bt v lm v hiu ha cc phm m Access hay dng tr v ca s Database v thanh Menu ca Access. Cc bc nh sau: Bc 1: To mt macro c tn Autoexec t ng m mu biu chnh ca chng trnh. Thit k macro ny nh sau: Action: OpenForm Cc tham s: Form Name Tn mu biu chnh View Form FilterName Where Condition DataMode WindowMode Normal Nu mun ci mt khu th cch lm nh sau: Macro Autoexec s m mu biu mt khu. Mu biu mt khu s c mt nt lnh kim tra mt khu, nu ng s m mu biu chnh. Bc 2: Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 65

Bi ging Lp trnh trong Access To macro Menu chnh. Nu chng trnh khng dng giao din Menu (ch dng giao din nt lnh), th Menu chnh l mt menu rng, khi macro Menu chnh c thit k nh sau: Action: AddMenu Cc tham s: Menu Name Menu Macro Name Tn macro ph Status Bar Text Macro ph ch a vo cho th tc, n s khng gy ra bt k hnh ng no. Ta thit k macro ph nh sau: Action: CancelEvent Bc 3: Mu biu chnh Khi thit k mu biu chnh cn s dng 2 thuc tnh Menu B v On Open ca mu biu: a tn ca macro Menu chnh vo dng thuc tnh Menu Bar: Menu Bar: Tn macro Menu chnh Lp hm x l s kin On Open ca mu biu chnh nh sau: Private Sub Form_Open(Cancel As Integer) DoCmd.RunCommand acCmdWindowHide End Sub Bc 4: To macro AutoKey chn bt, lm v hiu ha cc phm m Access hay dng nh: F1 phm tr gip F11 tr v ca s Database . lm v hiu ha cc phm F1, F2, F3 v cc t hp phm Ctrl + F1, Shift + Insert, ta to macro Autokeys vi ni dung nh sau: Macro Name Action Comment {F1} CancelEvent {F2} CancelEvent {F3} CancelEvent ^{F1} CancelEvent +{INSERT} CancelEvent Cch vit cc phm v t hp phm trong ct Macro Name nh sau: Phm hoc t hp phm V d cch vit Ctrl + phm ch hoc phm s ^A hoc ^4 Phm chc nng bt k {F1} Ctrl + phm chc nng bt k ^{F1} Shift + phm chc nng bt k +{F1} Insert {Insert} Ctrl + Insert ^{Insert} Shift + Insert +{Insert} Ctrl + Delete ^{Delete} hoc ^{Del} Shift + Delete +{Delete} hoc +{Del}

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

66

Bi ging Lp trnh trong Access

6.2 t mt khu bng chc nng ca Access


6.2.1 Ci mt khu
Ln lt thc hin nh sau: M CSDL trong ch Exclusive: chn menu File, mc Open Database, hp thoi Open s m ra. nh du mc Exclusive, sau chn c s d liu (tp .mdb) cn m v nhn nt Open. Chn menu Tools, mc Security, mc Set Database Password. Hp thoi Set Database Password m ra. Trong hp thoi ny, ta g mt khu vo cc Password v Verify, sau nhn OK. Ch phn bit ch hoa v ch thng.

6.2.2 G b mt khu
Phi nh mt khu m c s d liu. Trong ca s Database chn menu Tools, chn mc Security, mc Unset Database Password. Hp thoi Unset Database Password m ra. G mt khu ci t vo Password v nhn OK. Nh vy mt khu c g b. Ch : Khi ta m mt c s d liu m chn mc Exclusive th ta kha c s d liu i vi tt c nhng ngi s dng khc trong sut thi gian m n. Mc la chn ny rt hu ch cho nhng my tnh ni mng nhng n li khng quan trng i vi ngi s dng my tnh ring l.

6.2.3 Bo an cho c s d liu c nhiu ngi s dng


Bo an trong Access l mt cng vic phc tp, da trn mt h thng ca cc nhm (group) bao gm ti khon ca ngi s dng (account) c bo v bng mt khu (password). Theo ngm nh, Access to 2 nhm Admins (nhiu quyn hn) v Users (t quyn hn hn). Khi chng ta bt u s dng Access, chng trnh cho rng chng ta l Admin v cho chng ta ng nhp vo m khng i hi password. Ngm nh, Admin c gn cho c 2 nhm Admins v Users, khng hn ch quyn cho ti khi c s d liu ny c bo v. Quy trnh m chng ta phi i qua l: S dng tnh nng Workgroup Administrator to mt tp tin cha cc thng tin v nhm lm vic. Tp tin ny s nhn din cc nhm cng thnh vin ca chng. B sung mt ngi s dng mi cho nhm Admins. Xa ngi s dng Admin ra khi nhm Admins. Admin by gi ch cn l thnh vin ca nhm Users, sau , gn mt password cho ngi s dng Admin. M li Access trong t cch ngi s dng mi. To mt c s d liu mi v xa i tt c quyn hn ca nhm Users i vi tng loi i tng trong c s d liu ny. Nhp cc i tng t c s d liu gc vo c s d liu mi. To cc nhm v nhng ngi s dng mi nu cn thit, gn cho nhm v nhng ngi s dng khc nhng quyn hn xc nh nhm mc ch hn ch kh nng hot ng ca h. Ch : Tp tin cha thng tin v nhm lm vic, cc nhm, cc ti khon ngi s dng hot ng cp chng trnh ch khng phi cp c s d liu. a) To nhm lm vic an ton (Secure Workgroup) b) To ti khon ngi s dng Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni 67

Bi ging Lp trnh trong Access c) To mt c s d liu an ton d) To nhm lm vic mi

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

68

Bi ging Lp trnh trong Access

Ti liu tham kho


[1] Ths. Nguyn Th Thu Hng, bi ging "H qun tr c s d liu", khoa CNTT, H Bch Khoa H Ni. [2] GS. Phm Vn t, 2002, K thut lp trnh Access trn Window, NXB H Ni. [3] TS. Dng Kiu Hoa, 2003, T hc Access 2000 trong 10 ting ng h, NXB Thanh nin.

Nguyn Hng Phng - Email: phuongnh@it-hut.edu.vn Khoa Cng ngh thng tin - H Bch Khoa H Ni

69

You might also like