CrossTab Query Query tham chi u chéo... Các thông tin hi n th g m có: SOHD S hóa n, NGAYHD Ngày hóa n, LOAIHD Lo i Hóa n, MAKH Mã khách hàng, TENKH Tên khách hàng, DIACHIKH a ch khách hà
Trang 1Ch ng IV:
QUERY-TRUY V N D LI U4.1 Gi i thi u:
Query là công c cho phép truy v n và x lý d li u, rút trích hi n th nh ng
thông tin c th t các Table và thay i d li u b ng nhi u cách khác nhau Kh n ng
lý truy v n là m t b c quan tr ng trong vi c xây d ng ng d ng
Query là công c khá c tr ng c a Microsoft Access, giúp b n nêu ra và áp
ng các yêu c u truy v n s li u trên DBMS xem, s a và phân tích hay t ng h p s
li u d i nhi u hình th c khá phong phú th c hi n Query, b t bu c ph i cóDatabase và bên trong ó ã có m t hay nhi u Table S li u thì c l u trên Table,còn Query là công c tìm và nhìn s li u d i nhi u góc khác nhau, và có th khinhìn s li u qua Query, b n th c hi n các thao tác s a ch a thì các s a ch a ó l i có
hi u l c ng c l i lên trên nh ng Record c a chính các Table ã tham gia s d ng Khicho th c hi n m t Query, Microsoft Access thu th p các s li u t các Table khác nhau
nh m áp ng yêu c u v n tin c a b n, trong m t n v g i là “dynaset” (dynamicdataset) ngh a là d i hình th c m t b s li u “s ng ng”, ph n nh tình tr ng s li u
hi n th i và khi b n u ch nh s li u trên dynaset thì ng th i s li u t các Table
4.2.1 Select Query (Query ch n s li u)
Select Query là lo i Query c s d ng ph bi n nh t Nó nh n d li u t m thay nhi u Table và hi n th k t qu trong m t datasheet và ó b n có th c p nh trecord v i m t s h n ch nh t nh B n có th s d ng Query nhóm nh ng record
i và th c hi n tính t ng (SUM), m (COUNT), trung bình c ng (AVERAGE) và m t sphép tính t ng h p khác
4.2.2 Delete query (Query xóa s li u)
Xóa m t nhóm các record t m t hay nhi u Table Ví d : b n có th s d ngDelete Query xóa tên nh ng sinh viên n h c phí ho c nh ng sinh viên có trung bình
ng m hai h c k liên ti p nhau d i 4 i v i delete Query, b n có th gi i h n
vi c xóa c a mình trong m t ph m vi nào ó
4.2.3 Update query (Query c p nh t s li u)
Dùng thay i ng lo t nhi u record trong m t ho c nhi u Table Ví d : b n
có th t ng m c a m t s sinh viên nào ó
4.2.4 Append query (Query n i s li u)
i thêm nhi u record t vào ph n cu i m t hay nhi u Table
4.2.5 Make-table query (Query t o ra Table)
o ra m t Table m i t m t hay nhi u table c dùng vào m c ích t o cácTable d phòng, trích rút các record t m t ho c nhi u Table l u tr tr c khi xóacác record này kh i các Table hi n hành
4.2.6 CrossTab Query (Query tham chi u chéo).
Trang 2t nhóm s li u theo ch ng lo i và hi n th s li u d i hình th c c a m t B ngtính kèm theo s c ng ngang và c ng d c Lo i này r t thích h p cho t o s li u c scho các báo bi u (report) và th (Chart).
4.3 M t s thu t ng
Query Wizard: Là t o Query v i s h tr c a Microsoft Access Thông th ngsau khi thi t k Query b ng Query Wizard b n ph i chuy n sang ch Design Viewthi t k l i cho phù h p v i nhu c u c a b n
Design From Scratch: Cách thi t k này th ng c dùng cho nh ng ng i kháthành th o Microsoft Access Trong tài li u tôi ch t p trung vào cách làm này
Parameter Query: u có m t Query mà khi thi hành ph i nh n c các giá trthông s t o ra k t qu tùy theo thông s ó thì g i là Parameter Query Các Querydùng vào b t k m c ích nào (nh Select Query, Append Query, Delete Query, ) n u
có nh n thông s , u có c tính Parameter Query Các thông s này c xem nh là
nh ng giá tr ch a th xác nh vào lúc thi t k , c ghi d i d ng m t tên bi n
Ví d : B n mu n li t kê nh ng sinh viên có ngày sinh trong kho ng th i gian
nào ó, t ngày m y n ngày m y, b n ghi Between [Ngay Sinh Tu:] And [Den Ngay] dòng Criteria d i c t NGAY c a b ng Query Các t h p [Ngay Sinh Tu:], [Den Ngay]
là nh ng bi n dùng trao thông s vào lúc thi hành
Action Query: Là lo i Query mà khi thi hành, không hi n th m t k t qu nào trên
màn hình, mà âm th m làm m t vi c gì ó trên Table, ví d s a s li u (Update Query),xóa s li u (Delete Query), n i thêm record vào Table (Append Query), t o Table m i(Make Table Query) M t Action Query c ng có th c trao thông s tr c khi ch y
4.4 Vài hình nh v Query
4.4.1 Select Query: Là lo i Query thông d ng nh t, dùng ch n s li u t
t hay nhi u Table th a tiêu chu n ch nh, và hi n th k t qu ó theo m t trình t
ng do ta ch nh
Ví d 1: T Table Products và Table Suppliers, trích ch n thành Query Products and Suppliers và k t qu hi n th theo c t Product Name:
Ví d 2: B ng Query sau ây nêu thêm tiêu chu n ch n l a cho c t Supplier ph i
là “Pavlova, Ltd” ho c “Exotic Liquids”:
Khi ch y Query, Microsoft Access rút
trích các m u tin th a mãn u ki n
quy nh và
hi n th
theo
th t
Trang 34.4.2 CrossTab Query cho
Ví d 1: M t Crosstab Query giai n thi t k và k t qu :
Ví d 2: Select Query ch n s li u không k t nhóm, Select Query có k t nhóm và
Trang 44.5 CÁC THÀNH PH N C B N TRONG TRUY V N
4.5.1 H ng: Là i l ng không thay i trong quá trình tính toán
a H ng s : Bao g m t t c các s : 10, 50, 1254.56,
b H ng chu i, ký t : Là t p h p các ký t c t trong d u ngo c kép (“ “)
Ví d : “Trung Tâm Tin H c - i H c An Giang”
c H ng ngày: Là d li u ki u ngày c t trong c p d u # #
Ví d : #08/10/1977#, #05/06/1979#
4.5.2 Ki u: t ki u d li u là t p h p các giá tr mà m t bi n thu c ki u ó nh n c
và m t t p h p các phép toán có th áp d ng trên các giá tr ó
4.5.3 Bi n: Ch ng trình qu n lý các d li u t m thông qua tên bi n M i bi n t ng
ng v i m t ki u d li u nh t nh Khi vi t m t bi n thì ta ph i t trong c p d u ngo cvuông: [Tên Bi n]
Có hai lo i bi n:
1 Bi n tr ng: Có th hi u nh là bi n n i Khi tên bi n gi ng nh tên tr ngtrong các b ng thì Access hi u ó là bi n tr ng Giá tr c a bi n tr ng là giá tr t ng
ng c a tr ng trong Table
Chú ý: Khi có nhi u tên tr ng gi ng nhau trong các Table thì ta ph i ch rõ bi n
tr ng ó c a Table nào theo cú pháp nh sau: [Tên Table]![Tên bi n]
Ví d : [SINHVIEN]![HOTEN] ho c [GIAOVIEN]![HOTEN]
2 Bi n tham s : Có th hi u nh là bi n ngo i, khi tên bi n không gi ng b t c
tên tr ng nào trong CSDL thì Microsoft Access hi u ó là bi n tham s Giá tr c a bi ntham s c nh p vào t bàn phím Ví d : Trong Query có ch a bi n tham s và khi
thi hành Query này thì Microsoft Access hi n th lên h p h i tho i “Enter ParameterValue” i m c ích là yêu c u ta nh p giá tr cho bi n tham s ó
Ví d : Trong Query có bi n tham s : [Nganh Nao:].
Khi thi hành, Query s hi n th ra h p tho i Enter
Parameter Value ta nh p giá tr cho bi n
Select query không k t nhóm: T p h p
li u t nhi u Table và s p th t Select query có k t nhóm:
Trang 5Chú ý: Khi nh p giá tr t bàn phím vào,
Access m c nhiên hi u giá tr ó có ki u Text,
u này có th d n n vi c tính toán sai Do v y
trong tr ng h p ta mu n báo cho Microsoft
Access hi u giá tr mà ta nh p vào thu c ki u d
li u khác thì ta ph i quy nh l i Trình t làm nh
sau:
1 R_Click vào vùng thi t k ch n
Parameter ho c vào menu Query\Parameter
p tho i xu t hi n nh bên c nh
2 Nh p tên bi n vào c t Parameter và ch n
ki u d li u cho bi n trong c t Data Type
dòng Field theo cú pháp: Nhãn:Bi u th c.
4.5.5 Các ký t i di n: i di n cho m t ho c nhi u ký t ngay v trí nó xu t hi n Do
y, ta có th dùng ký t i di n làm u ki n trích l c ho c tìm ki m mà không c nchính xác tên chu i Ký t i di n c dùng khi b n ch bi t m t ph n giá tr mu n tìm
th là bill[!] i di n cho m t ký t b t k không xu t
hi n sau d u !
B[!Ae]ll t ng ng v ibill và bull nh ng không
th là bell-
i di n cho m t ký t trong kho ng B n
ch nh vùng theo th t t ng d n (t A
n Z nh ng không th t Z n A)
B[a-c]d t ng ng v ibad, bbd, và bcd
103, 113, 123
Chú ý:
Text ôi khi b n có th s d ng nó v i nh ng d li u có ki u khác ch ng h n nh d
Trang 6khác bên trong c p d u ngo c [] (Tuy nhiên, n u nh b n có d u ! phía sau d u [, lúc
(1>3) Or (2<8): False(1<3) or (9>7): True
Like
- Cú pháp: <BT> Like <m u>
- Trong ó: BT: Bi u th cchu i; <m u>: Là m t chu i ký
có th bao g m c ký t i
di n
- Ý ngh a: Cho k t qu là True n u <BT> tho mãn
<m u>, ng c l i cho k t quFalse
"aBBBa" Like "a*a" True
"F" Like "[A-Z]" True
"F" Like "[!A-Z]" False
"a2a" Like "a#a" True
"aM5b" Like "a[L-P]#[!c-e]"
True
"BAT123khg" Like "B?T*" True
"CAT123khg" Like "B?T* False
Between
Cú pháp:
<BT> Between GT1 And GT2
- Trong ó: BT là bi u th c,GT1, GT2 là các giá tr
- Ý ngh a: Cho k t qu là True n u giá tr c a BT n m
trong kho ng GT1 n GT2,
ng c l i cho k t qu là False
4 Between 2 And 9 True
10 Between 1 And 3 False
#08/10/1977# Between
#01/10/1977# And #05/06/1979#
True
Trang 7Cú pháp:
- BT in(GT1, GT2, GT3, )
- Trong ó: BT là bi u th c,GT1, GT2 là các giá tr
- Ý ngh a: Cho k t qu là True
u giá tr c a BT n m trongkho ng các giá tr GT1, GT2,GT3, , ng c l i hàm cho k t
4.6 T o truy v n ch n s li u (Select query)
Microsoft Access cung c p hai ph ng ti n truy v n:
- Truy v n b ng l nh c a ngôn ng SQL
- Truy v n b ng ví d QBE (Query By Example)
Tài li u này chúng ta ch t p trung vào công c truy v n b ng QBE
Ta t o m t Query theo yêu c u nh sau:
Hãy li t kê các khách hàng ã tham gia trong các phi u xu t và tr giá c a t ng phi u ó thông tin g m: TENKH, TRGIA, THUE.
Trang 8hai table ngu n HOADON và DMKH (vi c xác nh Table ngu n nào là l thu c vào
ng câu h i c th ) ta t o ra Query ích tên PHIEUXUAT(TENKH, TRIGIA,
THUESUAT), nhìn vào c a s thi t k ta có các nh n xét sau:
Tên Field c a query ích là:
- Tên c a field ngu n, ví d nh : TENKH.
- Tên t m i, cách t TENMOI:BIEUTHUC, ( t tên field gi ng nh ph n t têntrong ph n t o table)
Ví d : THUESUAT:[THUE] (THUESUAT là Tên field m i, k n là d u “:”, sau cùng
là bi u th c ch g m 1 field [THUE])
Ta th y field LOAIHD tham gia trong thi t k query làm u ki n cho ta bi t Phi u
nào là phi u Xu t, nh ng khi xem k t q a thì không hi n c t này là do t i dòng Show
ta cho n
4.6.1 Các thành ph n c b n trong Query c a s QBE
- Vùng l i QBE: Ch a các tr ng (c t) c a các b ng mà truy v n mu n th
hi n d li u (t ng ng v i các m nh WHERE, ORDER BY, danh sách các c t
ho c bi u th c mà truy v n mu n hi n th trong câu l nh SELECT) Chi ti t các dòngtrong vùng l i QBE g m có:
Bi u th c mu n l c trong truy v n N u ghi u ki n trong cùng
t dòng thì t ng ng toán t logic AND, ng c l i n u ghi
u ki n khác dòng nh ng cùng c t thì là toán t logic OR
- Vùng ch a các b ng ngu n: N i ch a các b ng d li u ngu n cho m t truy
n (t ng ng v i m nh FROM trong câu l nh SQL)
4.6.2 T o query ch Design View ây là d ng select query)
Trang 9Click Close óng h p tho i
Show Table Thông th ng
u các b ng ã c t o
quan h trong c a s quan h
thì khi a vào trong truy v n
3 c 3: T o các field m i cho Query.
Ch n các c t s hi n th trong truy v n b ng cách: Kéo chu t c a các c t t
ng xu ng vùng l i QBE ho c D_Click t i c t ó ho c ch n tên c t trongdanh sách các c t t i dòng Field trong vùng l i QBE (xem l i 4.6)
4 c 4: Thi t l p các u ki n và thu c tính c a field, query (xem 4.7.3
– 4.7.4)
d ng các thành ph n trong vùng l i QBE trên các c t t o truy v n có
p x p d li u (dòng Sort-n u s p x p nhi u dòng s u tiên s p x p t tráisang ph i); l c d li u (dòng Criteria); hi n th d li u hay không (dòng Show)
5 c 5: u query (File\Save).
Thí d :
o truy v n hi n th danh sách các hóa n theo th t t ng d n c a s hóa n
và mã khách hàng thu c Kho 3 và Kho 10 Các thông tin hi n th g m có: SOHD (S
hóa n), NGAYHD (Ngày hóa n), LOAIHD (Lo i Hóa n), MAKH (Mã khách hàng), TENKH (Tên khách hàng), DIACHIKH a ch khách hàng), MAKHO (Mã kho), TENKHO (Tên kho), DIACHIKHO a ch kho hàng), TRIGIA (Tr giá hóa n)
Query c thi t k theo yêu c u trên ch Design có d ng nh sau:
Trang 10Trong ó:
Các thông tin cho truy v n này c n có là các c t: SOHD, NGAYHD, LOAIHD , TRIGIA m trong b ng HOADON; MAKH, TENKH, DIACHIKH n m trong b ng DMKH; MAKHO, TENKHO, DIACHIKHO n m trong b ng DMKHO.
Trong thí d trên c t MAKHO s d ng so sánh l c ra các hóa n thu c Kho 3 (KH3) và Kho 10 (KH10) (chúng ta ghi trên hai dòng khác nhau t o ratoán t OR).
u ý:
li u cho truy v n.
4.7 M t s thao tác trên Query
Query, Delete Query, Make - Table Query.
b Thêm ho c xóa các b ng trong khi t o Query b ng QBE
Trong quá trình th c hi n m t Query, n u c n l y thông tin c a các c t trên m t
ng nào ó mà b ng này l i ch a c chèn vào vùng ch a các b ng c a truy v nQBE thì chúng ta ph i chèn thêm b ng ó vào Ng c l i, n u m t b ng n m trong vùng
ch a các b ng c a truy v n mà không có s d ng n a (truy v n không c n n thông tin c a b ng này) thì chúng ta s lo i b nó ra kh i truy v n.
Thêm b ng
1 Trong c a s thi t k QBE ta m h p tho i Show Table: Click vào nút Show Table ; ho c click ph i vào vùng ch a các b ng và ch n Show Table; ho c vào Query\Show Table.
2 a các table (b ng) c n thêm vào (xem 4.6.2)
Trang 11Xóa m t b ng trong truy v n:
- Cách 1: Ch n b ng mu n xóa r i nh n phím Delete ho c ch n Query\Remove Table.
- Cách 2: Click ph i vào b ng mu n xóa, ch n Remove Table.
c Chèn thêm dòng tên b ng (Table) vào vùng l i QBE
ôi khi m t truy v n òi h i ph i c n d li u trên nhi u b ng khác nhau Tuynhiên, gi a các b ng này có th có các c t trùng tên nhau Do ó, th y c c t th
hi n trên vùng l i QBE là c a b ng nào thì chúng ta nên chèn dòng tên b ng (Table)vào vùng l i QBE
Cách hi n/ n c t Table: View\Table Names ho c click ph i vào vùng l i, ch nTable Names
d Chèn thêm c t vào vùng l i QBE: Insert\Columns
Trong quá trình t o Query, có th mu n chèn thêm m t c t m i n m tr c c t
hi n hành ho c có th hi n t i trong vùng l i QBE không còn m t c t tr ng nào t othêm các c t m i cho truy v n thì chúng ta ph i th c hi n chèn thêm m t c t vào truyn
e Xóa c t trong vùng l i QBE
Ch n c t c n xóa r i nh n phím Delete ho c vào Edit\Delete.
4.7.2 T o các c t tính toán c ho c m t bi u th c trong truy v n.
Trong m t truy v n ngoài th hi n các c t d li u s n có trong các b ng, chúng tacòn có th t o các c t m i c tính toán t các c t có s n b ng cách xây d ng các
bi u th c tính toán
Các toán t : +, -, *, /, và các hàm tính toán: YEAR, MONTH, DATE, DAY, IIF,…
c dùng xây d ng các bi u th c c n thi t
Ví d : T o query th hi n các hóa n v i các thông tin: S hóa n, Ngày hóa
n, Lo i Hóa n, Tháng l p hóa n (không hi n th ngày và n m)
Query ch Design View: (d li u ngu n l y t b ng HOADON)
Xây d ng Calculated Field: t con tr t i c t mu n t o Calculated Field Sau
ó nh p bi u th c vào theo m t trong các cách sau:
bi u th c tính toán có liên quan n
Field c a table ngu n thì ta ghi nh
sau:
[TÊN_TABLE]![TÊN_FIELD]
Sau ó nh p bi u th c vào khung
tr ng và click OK sau khi nh p xong
n có th chèn các Field, Control
u khi n), hàm (Function), h ng
Trang 12(Constants), có s n vào bi u th c
ng cách hi n th các i t ng
mu n chèn và click úp vào nó
u ý:
trong bi u th c (ch ng h n nh Field) ph i có m t trong các Table ho c Query tham gia
[HOADON] (n u nh trong table ngu n có 2 field [NGAYHD] n m trên 2 table khác nhau thì b t bu c ta ph i vi t tên Table [HOADON] kèm theo).
ó nh là m t bi n tham s và b n ph i nh p giá tr cho tham s này khi thi hành query.
(Control) nào ó cho Query.
4.7.3 M t s thu c tính c a c t trong Query
Thông th ng khi ta s d ng bi u th c tính toán c (Calculated Field) trongQuery, ôi khi giá tr th hi n không úng nh ta mong mu n, thay i l i cách hi n
th ta ph i quy nh l i thu c tính c a chúng B c làm nh sau:
+ Caption: Tiêu c t (xu t hi n ch Datasheet View ho c Run)
Ví d : Mu n th hi n c t NGAYHD trong Query theo d ng mm/dd/yyyy (tháng
/ngày /n m) và tiêu c t là Ngày hóa n thì chúng ta nh d ng thu c tínhFormat t i c t này nh sau:
4.7.4 Thu c tính c a Query.
qui nh l i thu c tính c a Query, R_Click vào vùng tr ng trong c a s thi t kQuery và ch n Properties