Tải bản đầy đủ (.doc) (62 trang)

Tự học lập trình cơ sở dữ liệu với Visual Basic 5 trong 21 ngày docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (475.35 KB, 62 trang )

T h c l p trình c s d li u v i Visual Basic 5 trong 21 ng y – n ph m 2ự ọ ậ ơ ở ữ ệ ớ à ấ ẩ
(L i nói u )ờ đầ
L i c m nờ ả ơ
Có m t s ng i c m n xung quanh c h i n y. Tr c h t,t t nhiên l h ng tr mộ ố ườ ả ơ ơ ộ à ướ ế ấ à à ă
b n ã c n b n u tiên c a chúng tôi. Chúng tôi r t may m n nh n c nhi u ý ki nạ đ đọ ấ ả đầ ủ ấ ắ ậ đượ ề ế
c a b n c. Nh ng ý ki n v yêu c u c a các b n ã c chúng tôi thêm v o n ph mủ ạ đọ ữ ế à ầ ủ ạ đ đượ à ấ ẩ
th hai n y.ứ à
Chúng tôi c ng c m n các ng nghi p v khách h ng, nh ng ng i ã ki m traũ ả ơ đồ ệ à à ữ ườ đ ể
lý thuy t v ví d c a chúng tôi.Tuy v y có m t v i ng i không th c s ng h t i,ế à ụ ủ ậ ộ à ườ ự ự ủ ộđề à
nh ng s ng h , ng viên c a các b n l vô giá cho chúng tôi ti p t c th nghi mư ự ủ ộ độ ủ ạ à để ế ụ ử ệ
v i Visual Basic trong th c t .ớ ự ế
Cu i cùng l các b n Sam Publishing ã liên t c cho nh ng giúp vô giá vố à ạ ở đ ụ ữ đỡ à
ng h chúng tôi l m vi c n cùng n ph m m i n y.ủ ộ à ệ đế ấ ẩ ớ à

V Tác Giề ả
Mike Amundsen l m vi c nh m t c v n IS v o t o chuyên gia cho à ệ ư ộ ố ấ à đà ạ Design
–Synergy Corporation. M t c v n v qu n tr án chuyên v các d ch v công nghộ ố ấ à ả ị đề ề ị ụ ệ
thông tin. ông ã i M v Châu Âu gi ng d y v c v n trong nh ng t i phát tri nđ đ ỹ à để ả ạ à ố ấ ữ đề à ể
Windows.
Nh ng công trình khác c a Mike g m có MAPI, SAPI v TAPI công b b i Samữ ủ ồ à ố ở
Publishing óng góp cho Sams Publishing's Visual Basic 4 Unleashed and Sams' VB4đ
Developer's Guide. Mike l m t ng i góp ph n xu t b n cho bên trong Visual Basic c aà ộ ườ ầ ấ ả ủ
Codd i v i nh ng ánh d u m i c a Windows v nguyên t c góp ph n cho Cobb'sđố ớ ữ đ ấ ớ ủ à ắ ầ
Access Developer's Journal, Inside Microsoft Access v Microsoft Office Developer'sà
Journal. Công trình c a ông c ng ã c công b trên t p chí Visual Basicủ ũ đ đượ ố ạ
Programmer's Journal v t p chí VB Tech.à ạ
Khi ông không b n nghiên c u v truy c p n các site c a khách h ng. Ông ã nghậ ứ à ậ đế ủ à đ ỉ
cùng gia ình Kentucky. B n có th n v i ông t i a ch CompuServe –đ ở ạ ể đế ớ ạ đị ỉ
102461,1267 ho c t i ặ ạ Curtis Smith đã làm việc
trong kinh doanh máy tính nhiều năm. Ông là một kế toán. Curtis đã làm
việc trong chính phủ liên bang và trong nhà băng, trong vận tải và


nghành kinh doanh thuốc. Ông có những kinh nghiệm quan trọng bổ xung cho
vấn đề tài chính, quản trị dự án, bảo trì các phần mềm úng dụng. Curtis
hiện giữ một MBA từ trường đại học Miami(Oxford,Ohio).

Nói cho chúng tôi nh ng gì b n ngh !ữ ạ ĩ
Nh m t ng i c,các b n l nh phê bình quan tr ng nh t v góp ý nh ngư ộ ườ đọ ạ à à ọ ấ à ữ
quy n sách c a chúng tôi. Chúng tôi coi tr ng ý ki n c a các b n v mu n bi t chúng tôiể ủ ọ ế ủ ạ à ố ế
ang l m úng nh ng gì, chúng tôi có th l m gì t t h n, v nh ng l i b y t sáng su tđ à đ ữ ể à ố ơ à ữ ờ à ỏ ố
khác, các b n có thi n ý i theo cách c a chúng tôi. Các b n có th giúp chúng tôiạ ệ đ ủ ạ ể đỡ
l m cho nh ng cu n sách ng y c ng t t h n nó tho mãn nh ng cái b n c n v em l ià ữ ố à à ố ơ ả ữ ạ ầ àđ ạ
s h ng d n c a máy tính m b n òi h i.ự ướ ẫ ủ à ạ đ ỏ
Các b n có truy c p v o CompuServe hay World Wide Web không ? Sau ó ki m traạ ậ à đ ể
di n n CompuServe c a chúng tôi b ng cách ánh GO SAMS d u nh c.N u b n thíchễ đà ủ ằ đ ấ ắ ế ạ
dùng World Wide Web h n thì ki m tra t i a ch c a chúng tôi ơ ể ạ đị ỉ ủ .
Note : N u b n có câu h i chuyên môn v cu n sách n y, hãy g i cho chúng tôi t i 317-ế ạ ỏ ề ố à ọ ạ
581-3833.
1
V i t cách qu n lý công vi c xu t b n c a nhóm t o quy n sách n y. Tôi hoanớ ư ả ệ ấ ả ủ ạ ể à
nghênh nh ng phê bình c a các b n. Các b n có th Fax, Email ho c vi t th ng cho tôiữ ủ ạ ạ ể ặ ế ẳ
tôi bi t b n thích hay không thích quy n sách n y. chúng tôi bi t v l m chođể ế ạ ể à Để ế à à
quy n sách ng y c ng t t h n. ể à à ố ơ
Here l thông tin :à
Fax: 317-581-4669
E-mail:
Mail: Greg Wiegand Sams Publishing
201 W. 103rd Street Indianapolis, IN 46290
L i nói uờ đầ
Ch o m ng b n ã n v i L p trình c s d li u v i Visual Basic 5à ừ ạ đ đế ớ ậ ơ ở ữ ệ ớ
Hoan nghênh b n n v i l p trình c s d li u v i VB5 trong 21 ng y, n b n th 2.ạ đế ớ ậ ơ ở ữ ệ ớ à ấ ả ứ
Các b n i c nhi u n i trong 21 b i h c— t h m phát tri n y nh p v o m nạ đ đượ ề ơ à ọ ừ à ể đầ đủ ậ à à

hình h n 10 dòng mã VB v vi t nh ng th vi n VB, n s i u khi n ph c t p ng iơ à ế ữ ư ệ đế ự đề ể ứ ạ ườ
s d ng b o v v ki m tra nh ng ng d ng c a a ng i dùng, t o nh ng giúp tr cử ụ ả ệ à ể ữ ứ ụ ủ đ ườ ạ ữ đỡ ự
tuy n cho ch ng trình nh ng VB v nhi u h n. Không bi t b n có l m t ng i dùngế ươ ữ à ề ơ ế ạ à ộ ườ
quy n l c, m t chuyên gia kinh doanh, m t chuyên gia c s d li u ho c m t l p trìnhề ự ộ ộ ơ ở ữ ệ ặ ộ ậ
viên Visual Basic, các b n s tìm c nhi u i u trong quy n sách n y giúp b n mạ ẽ đượ ề đề ể à để ạ ở
mang ki n th c Visual Basic k n ng c s d li u cu b n. ế ứ ỹ ă ơ ở ữ ệ ả ạ
M i tu n các b n s t p trung v o m t v n khác nhau c a l p trình c s d li u v iỗ ầ ạ ẽ ậ à ộ ấ đề ủ ậ ơ ơ ữ ệ ớ
Visual Basic. Trong tu n u b n h c v nh ng v n liên quan n xây d ng nh ngầ đầ ạ ọ ề ữ ấ đề đế ự ữ
ng d ng c s d li u s d ng nh ng i u khi n d li u s n có c a Visual Basic. Trongứ ụ ơ ở ữ ệ ử ụ ữ đề ể ữ ệ ẵ ủ
tu n th hai t p trung v o nh ng k thu t t o nh ng ng d ng c s d li u v i mãầ ứ ậ à ữ ỹ ậ để ạ ữ ứ ụ ơ ở ữ ệ ớ
cua Visual Basic. Trong tu n th ba b n h c nh ng ch cao c p nh SQL v thao tácầ ứ ạ ọ ữ ủ đề ấ ư à
ngôn ng v nh ng v n cho các ng d ng a ng i dùng nh khoá các k ho ch bíữ à ữ ấ đề ứ ụ đ ườ ư ế ạ
m t, tính nguyên v n c a c s d li u v c p an to n c a ng d ng. B n c ng h cậ ẹ ủ ơ ở ữ ệ à ấ độ à ủ ứ ụ ạ ũ ọ
các k thu t t o ODBC l m cho nh ng ng d ng Visual Basicỹ ậ ạ à ữ ứ ụ
Nh ng k n ng thi t k c s d li uữ ỹ ă ế ế ơ ở ữ ệ
Quy n sách n y giúp b n phát tri n nh ng k n ng thi t k c s d li u. M i tu n ph iể à ạ ể ữ ỹ ă ế ế ơ ở ữ ệ ỗ ầ ả
i ít nh t m t ch thi t k c s d li u. Ng y th hai i c nh ng ki u d li u c ađ ấ ộ ủđề ế ế ơ ở ữ ệ à ứ đ đượ ữ ể ữ ệ ủ
c s d li u Visual Basic v ng y th b y ph i h c s d ng c ch ng trình Visdataơ ở ữ ệ à à ứ ả ả ọ ử ụ đượ ươ
t o v qu n lý nh ng c s d li u. Ng y th tám d y cho b n s d ng nh ng câuđể ạ à ả ữ ơ ở ữ ệ à ứ ạ ạ ử ụ ữ
l nh SQL ệ SELECT thi t l p nh ng d li u có s n v o trong nh ng b d li u dùng c.để ế ậ ữ ữ ệ ẵ à ữ ộ ữ ệ đượ
V o ng y th 13 v 15 b n h c nh ng nh ngh a d li u b ng SQL cao c p h n v nh ngà à ứ à ạ ọ ữ đị ĩ ữ ệ ằ ấ ơ à ữ
k thu t thao tác trên nó v ng y th 16 b n h c 5 quy t c thông th ng c a d li u.ỹ ậ à à ứ ạ ọ ắ ườ ủ ữ ệ
Nh ng ActiveX Dll v nh ng i u khi n c a khách h ngữ à ữ đề ể ủ à
To n b quy n sách, chúng tôi d y b n l m th n o phát tri n nh ng Dll v nh ngà ộ ể ạ ạ à ế à để ể ữ à ữ
i u khi n t t o, b n có th dùng l i t t c nh ng ch ng trình Visual Basic trong t ngđề ể ự ạ ạ ể ạ ấ ả ữ ươ ươ
lai. cho nh ng th nh ph n n y nh p v o có hi u l c, b y l i, in báo cáo, d li u minhĐể ữ à ầ à ậ à ệ ự ẫ ỗ ữ ệ
ho , nh ng form t o nh p, ng i s d ng log in ho c log out, ch ng trình b o v cạ ữ ạ ậ ườ ử ụ ặ ươ ả ệ đặ
bi t v ODBC API. T t c nh ng th nh ph n n y có th c thêm v o nh ng cái angệ à ấ ả ữ à ầ à ể đượ à ữ đ
t n t i v nh ng ch ng trình Visual Basic v n r t nh . Sau ó b n có th xây d ngồ ạ à ữ ươ ẫ ấ ỏ đ ạ ể ự
nh ng th vi n, b n có th thay i chúng phù h p v i nh ng cái b n c n v th m chíữ ư ệ ạ ể đổ để ợ ớ ữ ạ ầ à ậ

thêm v o nh ng th vi n m i c a riêng b n.à ữ ư ệ ớ ủ ạ
2
Ai nên c quy n sách n yđọ ể à
Quy n sách n y c thi t k giúp b n trau d i nh ng k n ng l p trình c s d li uể à đượ ế ếđể ạ ồ ữ ỹ ă ậ ơ ở ữ ệ
s d ng Visual Basic. B n không ph i l chuyên gia mã hoá Visual Basic s d ngử ụ ạ ả à để ử ụ
quy n sách n y. N u b n l ng i s d ng t i n ng,b n mu n l m th n o s p tể à ế ạ à ườ ử ụ à ă ạ ố à ế à để ắ đặ
nh ng cái c b n v i nhau. B n s thu c r t nhi u t quy n sách n y. N u b n có m tữ ơ ả ớ ạ ẽ đượ ấ ề ừ ể à ế ạ ộ
v i kinh nghi m v i Visual Basic v mu n n m b c ti p theo trong l p trình c s dà ệ ớ à ố ắ ướ ế ậ ơ ở ữ
li u. B n c ng s tìm th y m t l ng l n các thông tin có ích ây. Cu i cùng n u b nệ ạ ũ ẽ ấ ộ ượ ớ ởđ ố ế ạ
l m t l p trình viên chuyên nghi p,b n có th n m c nh ng k thu t v nh ng mãà ộ ậ ệ ạ ể ắ đượ ữ ỹ ậ à ữ
c mô t ây v áp d ng chúng v o các án c a b n.đượ ảởđ à ụ à đề ủ ạ
B n c n gì s d ng quy n sách n yạ ầ để ử ụ ể à
H u h t các ví d trong quy n sách n y c xây d ng cho Visual Basic 5, Professionalầ ế ụ ể à đượ ự
Edition (the Remote Data Control v Remote Data Objects có th ch c s d ng v ià ể ỉ đượ ử ụ ớ
the Enterprise edition of Visual Basic 5). H u h t các ví d c ng l m vi c v i Visualầ ế ụ ũ à ệ ớ
Basic 4, Professional Edition nh ng c ng có m t v i ví d không dùng c. Version 5ư ũ ộ à ụ đượ
c a Visual Basic có m t v i i m m i không phù h p v i Version 4. n u b n s d ngủ ộ à để ớ ợ ớ ế ạ ử ụ
Visual Basic 4,b n v n tìm c m t l ng l n trong quy n sách n y nh ng chúng tôiạ ẫ đượ ộ ượ ớ ể à ư
khuyên b n nên c p nh t b n Visual Basic 5. Có r t nhi u nh ng c i m m i trongạ ậ ậ ả ấ ề ữ đặ để ớ
Visual Basic 5 v b n s th y m ng khi c p nh t.à ạ ẽ ấ ừ ậ ậ
N u b n có Visual Basic 5 Enterprite Edition, b n có th n m c nhi u cái có ích c aế ạ ạ ể ắ đượ ề ủ
m t v i cái c bi t không c công b trong Visual Basic 5 Professional Edition nh ngộ à đặ ệ đượ ố ư
ây không ph i l m t i u b t bu c. Nó c ng giúp b n n u b n có Microsoft Word.đ ả à ộ đề ắ ộ ũ đỡ ạ ế ạ
Visual Basic 5 ch có hi u l c trong m t version 32-bit. Có ngh a l b n c n ch y Visualỉ ệ ự ộ ĩ à ạ ầ ạ
Basic 5 ( ho n th nh các án ) d i Windows 9x ho c Windows NT.à à đề ướ ặ
Cách gi i quy t nhanhả ế
ây l m t gi i thích ng n g n nh ng gì b n l m xong trong m i tu n.Đ à ộ ả ắ ọ ữ ạ à ỗ ầ
Tu n th nh tầ ứ ấ : Data Controls v Microsoft Jet Databases à
Trong tu n u tiên, b n h c v nh ng ki u c s d li u quan h , l m th n o ầ đầ ạ ọ ề ữ ể ơ ở ữ ệ ệ à ế à để
s d ng nh ng i t ng c s d li u c a Visual Basic truy c p v c p nh t nh ng cử ụ ữ đố ượ ơ ở ữ ệ ủ để ậ à ậ ậ ữ ơ

s d li u có s n, v l m th n o s d ng ch ng trình Visdata t o v b o vở ữ ệ ẵ à à ế à để ử ụ ươ để ạ à ả ệ
nh ng c s d li u. B n c ng h c l m th n o thi t k v vi t nh ng m c m u d li uữ ơ ở ữ ệ ạ ũ ọ à ế à để ế ế à ế ữ ụ ẫ ữ ệ
(data entry forms ) k c s d ng h n ch nh ng i u khi n d li u ( bound dataể ả ử ụ ạ ế ữ đề ể ữ ệ
controls) c a Visual Basic v l m th n o nh p úng nh ng th t c t i ng tác gõủ à à ế à để ậ đ ữ ủ ụ ạ độ
phím, tr ng (field), v các c p c a form. Cu i cùng b n h c l m th n o s d ngườ à ấ độ ủ ố ạ ọ à ế à để ử ụ
Visual Basic Crystal Reports Pro thi t k nh ng b n báo cáo n gi n v l m th n o ế ế ữ ả đơ ả à à ế à để
s d ng i u khi n Crystal Reports ch y nh ng b n báo cáo n y bên trong nh ngử ụ đề ể để ạ ữ ả à ữ
ch ng trình Visual Basic c a b n.ươ ủ ạ
Khi b n ho n th nh công vi c c a tu n th nh t, b n s có th xây d ng nh ng c s dạ à à ệ ủ ầ ứ ấ ạ ẽ ể ự ữ ơ ở ữ
li u Microsoft Jet, t o nh ng kh i d li u m c m u (data entry forms) ó nh p úngệ ạ ữ ố ữ ệ ụ ẫ đ ậ đ
nh ng th t c v k t qu c in ra các báo cáo d li u c a b n.ữ ủ ụ à ế ảđượ ữ ệ ủ ạ
Tu n th haiầ ứ : L p trình v i Microsoft Jet Database Engineậ ớ
Tu n th hai t p trung v o các ch , ó l nguyên t c nh ng nh phát tri nầ ứ ậ à ủđề đ à ắ để ữ à ể
trong nh ng môi tr ng quan i m riêng v l m vi c theo nhóm. Chúng ta i qua các chữ ườ để à à ệ đ ủ
có tính ch t r ng l n,bao g m :đề ấ ộ ớ ồ

• L m th n o s d ng Structured Query Language (SQL) l y d li u tà ế à để ử ụ để ấ ữ ệ ừ
nh ng c s d li u có s n.ữ ơ ở ữ ệ ẵ
3
• Microsoft Jet engine l gì, v b n s d ng mã Visual Basic t o v b o v cácà à ạ ử ụ để ạ à ả ệ
i t ng truy c p d li u.đố ượ ậ ữ ệ
• L m th n o t o nh ng data entry form v i mã Visual Basic.à ế à để ạ ữ ớ
• L m th n o s d ng i u khi n ho c a Microsoft t o nh ng hình nhà ế à để ử ụ đ ề ể đồ ạ ủ đẻ ạ ữ ả
v nh ng bi u d li u c a b n.à ữ ể đồ ữ ệ ủ ạ
• L m th n o s d ng nh ng h p danh sách (list boxes) data-bound, nh ng h pà ế à để ử ụ ữ ộ ữ ộ
combo ( combo boxes) data-bound v nh ng l i (grids) data-bound t oà ữ ướ để ạ
nh ngữ data entry form.
• L m th n o t o nh ng ng d ng thêm hi u l c v i vi c b y l i.à ế à để ạ ữ ứ ụ ệ ự ớ ệ ẫ ỗ
Khi b n ho n th nh các ch ng tu n th hai, b n có th xây d ng nh ng c s d li uạ à à ươ ở ầ ứ ạ ể ự ữ ơ ở ữ ệ
cao c p s d ng ngôn ng SQL v t o nh ng data entry form ph c t p s d ng mã c aấ ử ụ ữ à ạ ữ ứ ạ ử ụ ủ

Visual Basic, k quy nh gi i h n cho các danh sách (lists) v các l i (grids) v nh ngể đị ớ ạ à ướ à ữ
l i v n d ng h ng ng y ( error-handling routines).ỗ ậ ụ à à
Tu n th ba ầ ứ : L p trình c s d li u cao c p v i SQL v ODBC ậ ơ ở ữ ệ ấ ớ à
Trong tu n th ba v tu n cu i cùng,chúng ta i qua nh ng cái khác nhau r t quanầ ứ à ầ ố đ ữ ấ
tr ng c a các ch . Công vi c c a tu n n y t p trung v o nh ng v n c s d li uọ ủ ủ đề ệ ủ ầ à ậ à ữ ấ đề ơ ở ữ ệ
b n ng n khi b n phát tri n nh ng ng d ng c s d li u cho nhi u ng i dùngạ độ đế ạ ể ữ ứ ụ ơ ở ữ ệ ề ườ
(multiple user) ho c nhi u n i ( multiple sites). B n h c ngôn ng cao c p SQL choặ ề ơ ạ ọ ữ ấ
nh ng b n ghi trong ph m vi nh ng c s d li u có s n ( DML). B n c ng h c n m quyữ ả ạ ữ ơ ở ữ ệ ẵ ạ ũ ọ ă
t c chu n hoá d li u v áp d ng nh ng quy t c n y có th c i ti n c t c , chínhắ ẩ ữ ệ à ụ ữ ắ à ể ả ế đượ ố độ độ
xác, v tính nguyên v n nh ng c s d li u c a b n. Chúng ta b o v nh ng tình tr ngà ẹ ữ ơ ở ữ ệ ủ ạ ả ệ ữ ạ
s p x p c s d li u Visual Basic, b ng, v c p s ki n. Chúng tôi c ng gi i thíchắ ế ơ ở ữ ệ ả à ấ độ ự ệ ũ ả
nh ng l i th v gi i h n c a thêm v b t nh ng nh ngh a c s d li u quan h c aữ ợ ế à ớ ạ ủ à ớ ữ đị ĩ ơ ở ữ ệ ệ ủ
b n ạ
B n c ng h c l m th n o s d ng nh ng t khoá c a Visual Basic nh : ạ ũ ọ à ế à để ử ụ ữ ừ ủ ư BeginTrans,
CommitTrans, v à Rollback c i ti n tính to n v n c s d li u v s lý t c trongđể ả ế à ẹ ơ ở ữ ệ à ử ố độ
khi c p nh t m t kh i l ng l n. ậ ậ ộ ố ượ ớ
Chúng tôi c ng b y cho b n l m th n o vi t nh ng data entry form use Remote Dataũ à ạ à ế à để ế ữ
Control, Remote Data Objects, v ODBC API g i liên k t tr c ti p v i giao di n ODBCà ọ ế ự ế ớ ệ
truy c p d li u trong ng ký nh ng d li u ngu n c a ODBC (registered ODBC datađể ậ ữ ệ đă ữ ữ ệ ồ ủ
sources ). B n c ng h c l m th n o c i t qu n lý c a ODBC v t o nh ng d li uạ ũ ọ à ế à để à đặ ả ủ à ạ ữ ữ ệ
ngu n ODBC m i i v i nh ng ch ng trình Visual Basic cho phép ODBC c a b n. ồ ớ đố ớ ữ ươ ủ ạ
Chúng ta c ng xem xét nh ng c p b o v c a ng d ng nh ng i dùng log in v logũ ữ ấ độ ả ệ ủ ứ ụ ư ườ à
out, c p ch ng trình truy c p úng.ấ độ ươ ậ đ
B n c ng h c l m th n o s d ng Microsoft Replication Manager thi t l p v b o vạ ũ ọ à ế à để ử ụ ế ậ à ả ệ
k ho ch tái t o c s d li u b o v v c p nh t nhi m v khó s p x p d li u c aế ạ ạ ơ ở ữ ệ để ả ệ à ậ ậ ệ ụ ắ ế ữ ệ ủ
b n ạ
Khi b n k t thúc tu n cu i cùng c a khoá h c b n s có th s d ng nh ng câu l nh caoạ ế ầ ố ủ ọ ạ ẽ ể ử ụ ữ ệ
c p c a SQL t o v b o trì c s d li u. B n c ng có th xây d ng nh ng kh i ngấ ủ để ạ à ả ơ ở ữ ệ ạ ũ ể ự ữ ố ứ
d ng a ng i dùng bao g m nh ng khoá s p x p, nh ng t ng, nh ng gi i quy t c s dụ đ ườ ồ ữ ắ ế ữ ầ ữ ả ế ơ ở ữ
li u ; Nh ng b m t ODBC API ; ng d ng an to n v ki m tra nh ng c i m ; v b nệ ữ ề ặ ứ ụ à à ể ữ đặ để à ạ

s có th qu n lý phân ph i b n sao d li u.ẽ ể ả ố ả ữ ệ
Nh ng ph l cữ ụ ụ
C ng có cái quan tr ng thêm v o các ph l c. Có m t l i gi i thích chi ti t c a SQL-ũ ọ à ụ ụ ộ ờ ả ế ủ
VB5 Ng i gi i thích s d ng t u n cu i quy n sách n y ( k c mã ngu n) v tronườ ả ử ụ ừđầ đế ố ể à ể ả ồ à
4
v n m t ch ng vi t nh ng file giúp tr c tuy n c a riêng b n i v i nh ng ng d ngẹ ộ ươ ế ữ đỡ ự ế ủ ạ đố ớ ữ ứ ụ
Visual Basic c a b n.ủ ạ
Nh ng gì không a ra trong quy n sách n y ữ đư ể à
D u cho có nhi u món trong quy n sách n y, có v i ch quan tr ng chúng tôi a raẫ ề ể à à ủđề ọ đư
trong nh ng trang n y. i v i ví d , chúng tôi không nói nhi u trong n i dung mã hoáữ à Đố ớ ụ ề ộ
Visual Basic. n u b n l ng i m i n v i Visual Basic, b n có th c n xem l i quy nế ạ à ườ ớ đế ớ ạ ể ầ ạ ể
sách Teach Yourself Visual Basic in 21 Days. ây l m t b c u l m quen r t t t v iĐ à ộ ướ đầ à ấ ố ớ
Visual Basic.
M c dù chúng tôi th o lu n nh ng v n nh l m cho m ch l c i m cu i nh ng c sặ ả ậ ữ ấ đề ư à ạ ạ để ố ữ ơ ở
d li u nh SQL Server v Oracle, Chúng tôi ã không a nh ng ch rõ c a nh ng hữ ệ ư à đ đư ữ ỉ ủ ữ ệ
th ng n y. Chúng tôi t p trung v o các k thu t b n c n n i nh ng ng d ng Visualố à ậ à ỹ ậ ạ ầ để ố ữ ứ ụ
Basic n nh ng c s d li u t xa. đế ữ ơ ở ữ ệ ừ

Chúng tôi c ng không a ra nh ng i u khi n third-party ho c add-ins cho Visual Basic ũ đư ữ đề ể ặ
4. ó không ph i vì chúng tôi không ngh chúng có ích. úng l có h ng tr m cái m i vĐ ả ĩ Đ à à ă ớ à
các s n ph m third-party có s n cho Visual Basic v nhi u cái trong s chúng r t t t. ả ẩ ẵ à ề ố ấ ố
Chúng tôi có nh ng ví d v nh ng b n gi i thi u m t v i s n ph m third-party n y trên ữ ụ à ữ ả ớ ệ ộ à ả ẩ à
a CD-ROM i kèm. Tuy v y chúng tôi mu n quy n sách c ng g n g i c ng t t i v i đĩ đ ậ ố ể à ầ ũ à ố đố ớ
t t c ng i c. Chúng tôi ch s d ng nh ng s n ph m control v add-in trong c Visualấ ả ườ đọ ỉ ử ụ ữ ả ẩ à ả
Basic 5 Professional Edition.
Trên a CD-ROM có nh ng gì ?đĩ ữ
ng sau c a quy n sách n y, có m t CD-ROM ch a nhi u o n mã Visual Basic,ở đằ ủ ể à ộ ứ ề đ ạ
nh ng ví d v nh ng ch ng trình minh ho , nh ng ti n ích d s d ng.Sau ây l m tữ ụ à ữ ươ ạ ữ ệ ễ ử ụ đ à ộ
o n mô t nh ng n i dung trong CD. Tham kh o n nh ng h ng d n c i t trên trangđ ạ ả ữ ộ ả đế ữ ướ ẫ à đặ
cu i c a quy n sách i v i các n i dung cho vi c ch y hay c i t nh ng ch ng trình.ố ủ ể đố ớ ộ ệ ạ à đặ ữ ươ

Nh ng ch ng d án v ví d ữ ươ ự à ụ
T t c nh ng ví d v b i t p c nói n trong quy n sách n y l c l uấ ả ữ ụ à à ậ đượ đế ể à à đượ ư
trong th m c ư ụ TYSDBVB c a CD-ROM. B n có th sao chép tr c ti p nh ng file n y nủ ạ ể ự ế ữ à đế
a c ng c a b n ho c nh p chúng t nh ng danh sách trong quy n sách n y.đĩ ứ ủ ạ ặ ậ ừ ữ ể à

Nh ng th vi n mã Visual Basic, các Dll, v Custom Controlữ ư ệ à
T t c các th mã có th dùng l i c a ra trong d ng text c ng có trên a CDấ ả ư ể ạ đượ đư ạ ũ đĩ
n u b n mu n l u nh ng b n ánh máy c a riêng b n,b n có th n gi n thêm nh ngế ạ ố ư ữ ả đ ủ ạ ạ ể đơ ả ữ
th vi n n y v o nh ng án Visual Basic c a b n. B n c ng có th sao chép nh ng thư ệ à à ữ đề ủ ạ ạ ũ ể ữ ư
vi n n y v o ôr c ng v thay i chúng cho nh ng s d ng c a riêng b n.ệ à à ứ à đổ ữ ử ụ ủ ạ
Nh ng t p tin c gi i thi uữ ậ đượ ớ ệ
Bên c nh nh ng n i dung c a CD, chúng tôi gi i thi u cho b n ch n l a s n ph m c aạ ữ ộ ủ ớ ệ ạ ọ ự ả ẩ ủ
riêng b n :ạ
MS Windows 95 Help Authoring Kit. ây l b d ng c t o ra b i MicrosoftĐ à ộ ụ ụ ạ ở
Comporation’ Help. Nó bao g m t t c các công c (tool) b n c n bi n i (convert)ồ ấ ả ụ ạ ầ để ế đổ
nh ng v n b n Microsoft Word sang d ng các t p tin giúp cho ng d ng Visualữ ă ả ạ ậ đỡ ứ ụ
Basic.
B n có th thu c t công ty Microsoft ho c tìm m t b n mi n phí c a nó ( hãy tìmạ ể đượ ừ ặ ộ ả ễ ủ
n đế What 6 )
t trang Web c a Microsoft t i :ừ ủ ạ
/>5
Người phiên dịch SQL-VB5
Th m c \ư ụ SQLVB5 ch a nhi u cái th c thi v mã ngu n c a ch ng trình SQL-ứ ề ự à ồ ủ ươ
VB5 Interpreter. Ch ng trình n y c a ra trong Appendix A. Ch ng trình SQL-ươ à đượ đư ươ
VB5 c nh ng t p tin v n b n mã ASCII ch a nh ng o n mã ch y c c a SQL.đọ ữ ậ ă ả ứ ữ đ ạ ạ đượ ủ
SQL-VB5 Interpreter có th c s d ng t o, thay i, c p nh t, v xoá nh ng c sểđượ ử ụ để ạ đổ ậ ậ à ữ ơ ở
d li u nh d ng b i Microsoft Jet. M t s các c i m m i ã c thêm v o nh ngữ ệ đị ạ ở ộ ố đặ để ớ đ đượ à ữ
kh n ng c a SQL-VB5 x lý nh ng nh d ng d li u không ph i l Jet. V nh ngả ă ủ để ử ữ đị ạ ữ ệ ả à à ữ
l p OLE Automation m i cho phép b n g i SQL-VB5 t nh ng ch ng trình VBAớ ớ để ạ ọ ừ ữ ươ
khác.

Nh ng ph n m m b n quy n v ph n m m gi i thi uữ ầ ề ả ề à ầ ề ớ ệ
CD-ROM ch a nhi u ph n m m b n quy n v ph n m m gi i thi u c a hãng ph n m mứ ề ầ ề ả ề à ầ ề ớ ệ ủ ầ ề
th ba ( third-party). Chúng tôi khuyên b n ki m tra các công c ph n m m n y v n uứ ạ ể ụ ầ ề à à ế
b n thích nh ng gì b n tìm th y, ng h nh ng tác gi ph n m m b ng cách mua m tạ ữ ạ ấ ủ ộ ữ ả ầ ề ằ ộ
b n quy n ch ng trình b n tìm th y s d ng c hiê qu .ả ề để ươ ạ ấ ử ụ đượ ụ ả
Nh ng t i nguyên tr c tuy n ữ à ự ế
Chúng tôi khuy n khích b n gi quan h v i chúng tôi b ng ph ng th c i n t . B n cóế ạ ữ ệ ớ ằ ươ ứ đệ ử ạ
th th m Web site c a chúng tôi t i ể ă ủ ạ www.amundsen.com/tysdbvb v g i email choà ử
chúng tôi t i ạ v à t ng thêm thôngĐể ă
tin trên Web site c a chúng tôi v nh ng t i nguyên Visual Basic tr c tuy n khác có íchủ à ữ à ự ế
b n có th tìm th y trong ạ ể ấ resource. htm trên CD-ROM.
Ng y Th Nh t à ứ ấ :
Ch ng trình c s d li u u tiên c a b n trong Visual Basic 5ươ ơ ở ữ ệ đầ ủ ạ
Ch ng n y d nh cho nh ng ng i ch a bao gi t o nh ng ng d ng c s d li u trênươ à à ư ườ ư ờ ạ ữ ứ ụ ơ ở ữ ệ
Visual Basic. Nh ng ai ã bi t l m th n o s d ng di u khi n d li u (data control)ữ đ ế à ế à để ử ụ ề ể ữ ệ
v nh ng bound control c a Visual Basic t o nh ng ch ng trình nh p d li u nà ữ ủ để ạ ữ ươ ậ ữ ệ đơ
gi n (data entry program) có th b qua ch ng n y v chuy n n ng y th hai, “ T oả ể ỏ ươ à à ể đế à ứ ạ
c s d li u ” (Creat databases).ơ ở ữ ệ
Cái k ho ch ng y hôm nay c a b n l t o m t ch ng trình nh p d li u chính th c sế ạ à ủ ạ à ạ ộ ươ ậ ữ ệ ứ ử
d ng Visual Basic.Ch ng trình m b n t o s có th truy c p n các b ng d li u trongụ ươ à ạ ạ ẽ ể ậ đế ả ữ ệ
m t c s d li u có s n. Nó c ng s cho phép nh ng ng òi s d ng thêm, s a, xoá cácộ ơ ở ữ ệ ẵ ũ ẽ ữ ư ử ụ ử
b n ghi. B n s b s ng s t v o lúc b n t các ch ng trình c s d li u v o v i nhauả ạ ẽ ị ử ố à ạ đặ ươ ơ ở ữ ệ à ớ
m t cách nhanh chóng. Nhi u công vi c v t v thông th ng k t h p v i nh ng ch ngộ ề ệ ấ ả ườ ế ợ ớ ữ ươ
trình nh p d li u (screen layout, cursor control, input editing, v t ng t nh th ) cậ ữ ệ à ươ ụ ư ế đượ
t ng x lý ch s d ng m t v i cái i u khi n cung c p c a Visual Basic. Trong ph nự độ ử ỉ ử ụ ộ à đề ể ấ ủ ầ
thêm v o, v i nh ng i u khi n d li u c a Visual Basic nó c ng d d ng l m t ng thêmà ớ ữ đề ể ữ ệ ủ ũ ễ à à ă
kh n ng c v vi t các b ng c s d li u.ả ă đọ à ế ả ơ ở ữ ệ
Do v y chúng ta hãy b t u !ậ ắ đầ
B t u v i nh ng án m i c a b nắ đầ ớ ữ đề ớ ủ ạ
N u b n ã có b n Visual Basic nh trên v ang ch y nó, hãy ch n Fileế ạ đ ả ư ở à đ ạ ọ | New Project

t o m t d án m i. n u b n ch a kh i ng Visual Basic thì hãy kh i ng ngay bâyđể ạ ộ ự ớ ế ạ ư ở độ ở độ
gi i. L a ch n Standard EXE v nh p chu t v o OK trong h p h i tho i hi n ra. Bâyờ đ ự ọ à ắ ộ à ộ ộ ạ ệ
gi b n s n s ng t o m c nh p d li u trên m n hình.ờ ạ ă à ạ ụ ậ ữ ệ à
Thêm i u khi n c s d li u ( Database Control)đề ể ơ ở ữ ệ
6
Cái u tiên b n c n cho ch ng trình c s d li u l m c s d li u lên v l a ch nđầ ạ ầ ươ ơ ở ữ ệ à ở ơ ở ữ ệ à ự ọ
b ng d li u b n mu n truy c p. l m c i u n y, b n kích úp lên cái i u khi nả ữ ệ ạ ố ậ Để à đượ đề à ạ đ đề ể
c s d li u trong h p công c (toolbox) c a Visual Basic ( xem hình 1.1). Vi c n y tơ ở ữ ệ ộ ụ ủ ệ à đặ
m t i u khi n d li u v o gi a c a form. Khi vi c n y c l m, form ã s n s ng mộ đề ể ữ ệ à ữ ủ ệ à đượ à đ ẵ à ở
m t b ng d li u. T i i m n y, m n hình c a b n gi ng nh hình 1.1.ộ ả ữ ệ ạ để à à ủ ạ ố ư
Hình 1.1 :
M oẹ : B n không ch c ch n nh ng bi u t ng n y h p công c l i u khi n d li u ?ạ ắ ắ ữ ể ượ à ộ ụ à đề ể ữ ệ
B n có th n F1 trong khi cái c a s h p công c n i lên hi n th m t ch d n giúp ạ ểấ ử ổ ộ ụ ổ để ệ ị ộ ỉ ẫ đỡ
trên m n hình c a m i công c Visual Basic. Cái b ng thông báo n y hi n nh ng giúp à ủ ỗ ụ ả à ệ ữ đỡ
thêm c a tool icon v các point, danh sách các thu c tính, s ki n, v các ph ng th c cóủ à ộ ự ệ à ươ ứ
s n cho m i i u khi n. B n có th h i c giúp trên m t cái i u khi n c bi tẵ ỗ đề ể ạ ể ỏ đượ đỡ ộ đề ể đặ ệ
trong h p công c b ng cách nh p lên bi u t ng v n F1 kích ho t cái giúp c aộ ụ ằ ắ ể ượ àấ để ạ đỡ ủ
Visual Basic. Nh ng Tool Tip c ng có s n trong Visual Basic 5. n gi n l t con trữ ũ ẵ Đơ ả à đặ ỏ
chu t lên b t c bi u t ng n o hi n lên o n mô t c a bi u t ng ó.Cái l a ch nộ ấ ứ ể ượ à để ệ đ ạ ả ủ ể ượ đ ự ọ
n y có th thay i v t t b ng cách l a ch n Tools| Opions, ch n General tab v sau óà ể đổ à ắ ằ ự ọ ọ à đ
ánh d u v o h p ki m tra (checkbox) Show ToolTips.đ ấ à ộ ể
Ti p theo b n c n t m t v i cái thu c tính i u khi n ch ra c s d li u v cácế ạ ầ đặ ộ à ộ đề ể để ỉ ơ ở ữ ệ à
b ng d li u b n mu n truy c p.ả ữ ệ ạ ố ậ
Thi t l p các thu c tínhế ậ ộ DatabaseName v à RecordSource
B n ph i t hai cái thu c tính sau u tiên khi b n liên k t m t i u khi n d li u nạ ả đặ ộ đầ ạ ế ộ đề ể ữ ệ đế
m t c s d li u :ộ ơ ở ữ ệ
DatabaseName L a ch n c s d li u.ự ọ ơ ở ữ ệ
RecordSource L a ch n b ng d li u trong c s d li u.ự ọ ả ữ ệ ơ ở ữ ệ
T p tin c s d li u ậ ơ ở ữ ệ BOOKS5. MDB s c s d ng trong các b i t p sau ây. c s dẽ đượ ử ụ à ậ đ ơ ở ữ
li u n y có th c tìm th y trong th m c ệ à ểđượ ấ ư ụ TYDBVB5 \ Source \ Data trên CD.

M oẹ : N u b n không xem h p h i tho i Properties, n F4 ho c ch n View | Propertiesừ ạ ộ ộ ạ ấ ặ ọ
t th c n, ho c kích v o bi u t ng các thu c tính (properties icon) trên thanh công cừ ự đơ ặ à ể ượ ộ ụ
t i nh c a m n hình.ạ đỉ ủ à
t Đểđặ DatabaseName c a i u khi n d li u, u tiên l a ch n cái i u khi n d li u ủ đề ể ữ ệ đầ ự ọ đề ể ữ ệ
b ng cách kích v o thanh i u khi n ( Cái i u khi n d li u s c l a ch n n u b n ằ à đề ể đề ể ữ ệ ẽđượ ự ọ ế ạ
không kích v o ch khác c ng nh trên form sau khi b n kích úp lên i u khi n d à ỗ ũ ư ạ đ đề ể ữ
li u trong h p công c (Toolbox) ). Cái n y tác d ng lên nh ng thu c tính i u khi n d ệ ộ ụ à ụ ữ ộ đề ể ữ
li u c hi n trong h p h i tho i Visual Basic Properties. xác nh v trí thu c tính ệ đượ ệ ộ ộ ạ Để đị ị ộ
DatabaseName ( Nh ng cái thu c tính l m t danh sách trong c hai cách s p x p theo ữ ộ à ộ ả ắ ế
th t (alphabetical) v không theo th t (categorical)) v kích tên thu c tính. Khi b n ứ ự à ứ ự à ộ ạ
l m cái n y, ba cái ch m nh ( ), nút d u ba ch m c a cac thu c tính, hi n ra bên ph i à à ấ ỏ ấ ấ ủ ộ ệ ả
c a h p nh p d li u. Kích v o nút ba ch m nó a lên h p h i tho i Windows chu n ủ ộ ậ ữ ệ à ấ đư ộ ộ ạ ẩ
File | Open. Bây gi b n có th l a ch n t p tin tờ ạ ể ự ọ ậ ừ BOOKS5. MDB danh sách nh ng t p tin ữ ậ
c s d li u ã có ơ ở ữ ệ đ (\\TYSDBVB5\SOURCE\DATA\BOOKS5.MDB). M n hình c a b n s à ủ ạ ẽ
c trông nh hình 1.2.đượ ư
Hình 1.2 :
Khi b n ã có v trí t p tin ạ đ ị ậ BOOKS5.MDB b n kích OK. Visual Basic s chèn y aạ ẽ đầ đủổđĩ
ng d n v tên c a t p tin c s d li u v o trong vùng nh p, liên k t c s d li u,đườ ẫ à ủ ậ ơ ở ữ ệ à ậ ế ơ ở ữ ệ
cùng ch ng trình c a b n. Luôn luôn ki m tra úp thu c tính n y ch c ch n r ngươ ủ ạ ể đ ộ à để ắ ắ ằ
b n ã l a ch n úng c s d li u mong mu n.ạ đ ự ọ đ ơ ở ữ ệ ố

Chú thích: Ng i ta th ng s d ng hoán i nh ng t c s d li u v b ng d li u.ườ ườ ử ụ đổ ữ ừ ơ ở ữ ệ à ả ữ ệ
Trong su t quy n sách n y, b ng d li u c s d ng nói n m t b ng d li u nố ể à ả ữ ệ đượ ử ụ để đế ộ ả ữ ệ đơ
7
v c s d li u c s d ng nói m t b s u t p các b ng quan h . Cho ví d , b ngà ơ ở ữ ệ đượ ử ụ để ộ ộ ư ậ ả ệ ụ ả
Titles v b ng Publishers l hai b ng d li u trong t p tin c s d li u à ả à ả ữ ệ ậ ơ ở ữ ệ BOOKS5.MDB.
Bây gi b n bi t c s d li u gì b n s s d ng, b n ph i l a ch n b ng d li u bênờ ạ ế ơ ở ữ ệ ạ ẽ ử ụ ạ ả ự ọ ả ữ ệ
trong c s d li u ó b n mu n truy c p b ng cách t thu c tính ơ ở ữ ệ đ ạ ố ậ ằ đặ ộ RecordSource c a dủ ữ
li u i u khi n. B n có th l m cái n y b ng cách xác nh v trí thu c tínhệ đề ể ạ ể à à ằ đị ị ộ
RecordSource trong c a s Properties v sau ó kích n v o nút m i tên ch xu ng bênử ổ à đ đơ à ũ ỉ ố

ph i c a thu c tính. Nó s mang lên m t danh sách t t c các b ng trong t p tin c s dả ủ ộ ẽ ộ ấ ả ả ậ ơ ở ữ
li u ệ BOOKS5.MDB nh hình 1.3. i v i ch ng trình c s d li u u tiên, b n s sư Đố ớ ươ ơ ở ữ ệ đầ ạ ẽ ử
d ng b ng d li u Titles trong t p tin c s d li u ụ ả ữ ệ ậ ơ ở ữ ệ BOOKS5.MDB.
Hình 1.3 :
l a ch n b ng Titles t danh sách n y, b n hãy kích lên nó. Visual Basic t ngĐể ự ọ ả ừ à ạ ự độ
chèn tên b ng v o thu c tính ả à ộ RecordSource trong c a s Properties.ử ổ
Thi t l p các thu c tính ế ậ ộ Caption v à Name
B n c n t hai thu c tính i u khi n d li u khác trong án (project). Haiạ ầ đặ ộ đề ể ữ ệ đề
thu c tính n y không òi h i (reqire) có nh ng t chúng l m t cách luy n t p l p trìnhộ à đ ỏ ư đặ à ộ ệ ậ ậ
t t b i vì nó c i thi n ( improve) kh n ng c (readability) c mã ch ng trình. ây lố ở ả ệ ả ă đọ đọ ươ Đ à
nh ng thu c tính không b t bu c :ữ ộ ắ ộ
Caption Hi n th tên c a i u khi n d li u.ể ị ủ đề ể ữ ệ
Name Tên ch ng trình i u khi n d li u.ươ đề ể ữ ệ
S b trí thu c tính ự ố ộ Caption l t dòng ch gi a nh ng m i tên l a ch n b n ghià đặ ữ ở ữ ữ ũ ự ọ ả
(xem hình 1.4) trên thanh i u khi n d li u ( xin l u ý r ng b n s c n m r ng cáiđề ể ữ ệ ư ằ ạ ẽ ầ ở ộ
chi u r ng c a thanh i u khi n d li u c c dòng ch ). Nó l m t thói quen t t.ề ộ ủ đề ể ữ ệ đểđọ đượ ữ à ộ ố
S b trí thu c tính ự ố ộ Name l t dòng ch ó s c s d ng b i ng i l p trình. Nóà đặ ữ đ ẽ đượ ử ụ ở ườ ậ
s không c th y v phía ng i s d ng, nh ng b n nên t thu c tính ẽ đượ ấ ề ườ ử ụ ư ạ đặ ộ Name có m tộ
v i i m gi ng thu c tính à để ố ộ Caption th c hi n nó d d ng h n n m i quan h c ađể ự ệ ễ à ơ đế ỗ ệ ủ
chúng khi ang l m vi c trên ch ng trình c a b n.đ à ệ ươ ủ ạ
i v i ch ng trình c a b n t thu c tính Đố ớ ươ ủ ạ đặ ộ Caption l à Titles v thu c tính à ộ Name là
datTiltles. Bây gi b n ã thêm dòng ch v o thu c tính ờ ạ đ ữ à ộ Caption, hãy s d ng chu t ử ụ ộ để
kéo d i thanh i u khi n d li u do ó b n có th nhìn th y tr n v n dòng ch . Cái formà đề ể ữ ệ đ ạ ể ấ ọ ẹ ữ
c a b n bây gi trông nh hình 1.4.ủ ạ ờ ư
Hình 1.4 :
Chú ý : Tên c a thanh i u khi n d li u (ủ đề ể ữ ệ datTitles) có th trông không bình th ng. Tuyể ườ
nhiên nó l m t cái tên h p lý (logic), n u b n b ba ký t u tiên, dat.Cái ti n t n yà ộ ợ ế ạ ỏ ựđầ ề ố à
c thêm v o ch nh i t ng n y. S quy c tên c a ba ký t u l cái nghđượ à để ỉ đị đố ượ à ự ướ ủ ựđầ à đề ị
t tên c a Microsoft cho Visual Basic 5 v c s d ng trong su t quy n sách n y. Sđặ ủ à đượ ử ụ ố ể à ử
d ng c i th nh ng tìm ki m “ Object Naming Conventions ” trong nh ng quy n sáchụ à à ữ ế ữ ể

Visual Basic 5 tr c tuy n tìm m t danh sách y c a nh ng i t ng ti n t .ự ế để ộ đầ đủ ủ ữ đố ượ ề ố
L u gi cái án c a b nư ữ đề ủ ạ
Bây gi l th i i m t t l u gi công vi c c a b n . l u gi án n y, hãyờ à ờ để ố để ư ữ ệ ủ ạ Để ư ữđề à
l a ch n File | Save Project t th c n chính. Khi ó b n ánh cho nó m t tên i v iự ọ ừ ự đơ đ ạ đ ộ đố ớ
cái form l à DATCNTR. FRM. Sau ó b n l i ánh ti p m t cái tên cho án l đ ạ ạ đ ế ộ đề à DATCNTR.
VBP.
Nó luôn luôn l m t khái ni m t t l u công vi c th ng xuyên c a b n.à ộ ệ ố để ư ệ ườ ủ ạ
8
Chú ý : án n y, v t t c các án khác b n l m t quy n sách n y, có th c tìmĐề à à ấ ả đề ạ à ừ ể à ểđượ
th y trên a CD c a quy n sách n y.ấ đĩ ủ ể à
M oẹ : M t cách ch c ch n b n ã c t m t án ã sao chép l u gi trên a “ Khiộ để ắ ắ ạ đ ấ ộ đề đ ư ữ đĩ
m t ch ng trình b t u :” có th b thay i hãy v o Save Changes. B n có th l mộ ươ ắ đầ ể ị đổ à ạ ể à
công vi c n y b ng cách l a ch n Tools | Opions v ch n Environment tab.Sau ó cóệ à ằ ự ọ à ọ đ
th ch n m t trong hai ho c c hai l Save Changes v Prompt to Save Changes.ể ọ ộ ặ ả à à
Thêm v o nh ng bound input controlà ữ
Bây gi b n ã liên k t th nh công form n m t c s d li u v i thanh i u khi n dờ ạ đ ế à đế ộ ơ ở ữ ệ ớ đề ể ữ
li u v l a ch n m t b ng d li u truy c p. B n sãn s ng thêm v o nh ng inputệ à ự ọ ộ ả ữ ệ để ậ ạ à à ữ
control n form. Visual Basic 5 ã cung c p cho b n v i nh ng input control có th cđế đ ấ ạ ớ ữ ểđượ
n i (bound; connected) tr c ti p n b ng d li u m b n mu n truy c p. T t c các cáiố ự ế đế ả ữ ệ à ạ ố ậ ấ ả
b n c n l m l m t v i ch nh p các i u khi n trên form v n nh (assign) choạ ầ để à à ộ à ỗ ậ đề ể à ấ đị
chúng n m t i u khi n d li u.đế ộ đề ể ữ ệ
Chú ý : S liên k t m t i u khi n trên m t form n m t tr ng trong b ng d li u cự ế ộ đề ể ộ đế ộ ườ ả ữ ệ đượ
chuy n n nh liên k t m t i u khi n. Khi chúng n nh n m t d li u ngu n,ể đế ư ế ộ đề ể ấ đị đế ộ ữ ệ ồ
nh ng i u khi n n y c g i n nh ng bound input control.ữ đề ể à đượ ọ đế ữ
Chúng ta hãy thêm v o cái bound input control u tiên n b ng Titles. N i m t cáià đầ đế ả ơ ộ
input control trên form b ng cách kích úp i u khi n textbox trong h p công cằ đ đề ể ộ ụ
(toolbox) Visual Basic 5. Nó chèn m t i u khi n textbox tr c ti p v o trung tâm c aộ đề ể ự ế à ủ
form. Khi cái i u khi n trên form, b n có th s d ng chu t rê v ch nh l i kích cđề ể ở ạ ể ử ụ ộ để à ỉ ạ ỡ
m b n ch n. B n có th thêm v o nh ng cái t ng thêm input control b ng cách kíchà ạ ọ ạ ể à ữ ă ằ
úp v o nút textbox trong h p công c nhi u l n b n c n. t thu c tính đ à ộ ụ ề ầ ạ ầ Đặ ộ Name c a i uủ đề

khi n textbox l ể à txtTitle. Hãy thêm v o m t cái nhãn mô t cái i u khi n n y b ngà ộ để ả đề ể à ằ
cách kích v o i u khi n Label. t cái thu c tính à đề ể Đặ ộ Name c a Label l ủ à lbitllTe v thu cà ộ
tính Caption l à Title. Chuy n n hình 1.1 n u b n có nh ng v n tìm th y m t i uể đế ế ạ ữ ấ đề ấ ộ đề
khi n c bi t c a Visual Basic.ể đặ ệ ủ
M oẹ : Khi m b n kích úp lên nh ng i u khi n trên m t form, môi tr ng h p i uà ạ đ ữ đề ể ộ ườ ợ đề
khi n c n p v o trung tâm c a form . Khi b n thêm v o v i i u khi n theo cách n y,ể đượ ạ à ủ ạ à à đề ể à
m i i u khi n c n p chính xác cùng ch trên form, nh m t tr ng bánh. Nó trôngỗ đề ể đượ ạ ỗ ư ộ ồ
nh ch có m t, nh ng t t c chúng ó !. B n có th nhìn (view) m i i u khi n m b nư ỉ ộ ư ấ ả ởđ ạ ể ỗ đề ể à ạ
n p lên form b ng cách s d ng chu t kéo v th ( drag and drop ) chúng n ph nạ ằ ử ụ ộ để à ả đế ầ
khác c a form.ủ
Thi t l p các thu c tính DataSource v DataField ế ậ ộ à
B n ph i t hai thu c tính c a textbox trong vi c s p x p i u khi n textbox ạ ả đặ ộ ủ ệ ắ ế đề ể để
t ng tác v i i u khi n d li u. ây l hai thu c tính c n ph i có.ươ ớ đề ể ữ ệ Đ à ộ ầ ả
DataSource Tên c a i u khi n d li u.ủ đề ể ữ ệ
DataField Tên c a tr ng trong b ng.ủ ườ ả
M t quan h c thi t l p gi a m t tr ng ( thu c tính DataField ) trong m tộ ệ đượ ế ậ ữ ộ ườ ộ ộ
b ng ( thu c tính DataSource ) v m t ph m vi i u khi n khi b n thi t l p hai thu cả ộ à ộ ạ đ ề ể ạ ế ậ ộ
tính n y. Khi nó ã c thi t l p, t t c d li u hi n th v d li u ghi v o trong inputà đ đượ ế ậ ấ ả ữ ệ ể ị à ữ ệ à
control n y liên k t tr c ti p n b ng d li u/ tr ng d li u m b n l a tr n. à ế ự ế đế ả ữ ệ ườ ữ ệ à ạ ự ọ
S thi t l p thu c tính DataSource c a i u khi n textbox liên k t input controlự ế ậ ộ ủ đề ể ế
n i u khi n d li u ( data control). thi t l p thu c tính DataSource c a textbox,đế đề ể ữ ệ Để ế ậ ộ ủ
u tiên ch n i u khi n textbox ( B ng cách kích lên nó m t l n ), v sau ó kích lênđầ ọ đề ể ằ ộ ầ à đ
thu c tính DataSource trong c a s Properties. B ng cách kích v o m i tên ch xu ngộ ử ổ ằ à ũ ỉ ố
9
c a thu c tính n y, b n có th nhìn th y m t danh sách c a t t c các d li u i u khi nủ ộ à ạ ể ấ ộ ủ ấ ả ữ ệ đề ể
hi n ang ho t ng trên form n y. B n ch có th thêm v o m t d li u i u khi n nệ đ ạ độ à ạ ỉ ể à ộ ữ ệ đề ể đế
form n y, do v y b n ch có th xem m t tên trong danh sách ( xem hình 1.5). thi tà ậ ạ ỉ ể ộ Để ế
l p giá tr DataSource n datTitles b ng cách kích t datTitles trong h p danh sách thậ ị đế ằ ừ ộ ả
xu ng.ố
Hình 1.5 :

Thu c tính yêu c u ( require) th hai cho m t bound input control l thu c tínhộ ầ ứ ộ à ộ
DataField Vi c thi t l p thu c tính n y liên k t v i m t tr ng ã c ch rõ trongệ ế ậ ộ à để ế ớ ộ ườ đ đượ ỉ
b ng d li u input control. Thi t l p thu c tính DataField c a input control hi n t iả ữ ệ để ế ậ ộ ủ ệ ạ
b ng cách kích n v o thu c tính DataField trong c a s Properties v sau ó kích v oằ đơ à ộ ử ổ à đ à
nút m i tên ch xu ng bên ph i c a thu c tính. Bây gi b n nhìn th y m t danh sáchũ ỉ ố ở ả ủ ộ ờ ạ ấ ộ
t t c các tr ng c nh ngh a cho b ng d li u m b n l a ch n trong thu c tínhấ ả ườ đượ đị ĩ ả ữ ệ à ạ ự ọ ộ
DataSource ( xem hình 1.6 ). Hãy kích v o tr ng Title t thu c tính DataField choà ườ đểđặ ộ
i u khi n n y.đề ể à
Hình 1.6 :
Bây gi b n ã có khái ni m chung, s a sang l n cu i data entry form b ng cách thêmờ ạ đ ệ ử ầ ố ằ
v o nh ng bound input control cho nh ng tr ng còn l i trong b ng d li u Title. Quayà ữ ữ ườ ạ ả ữ ệ
l i hình 1.1 l m chi ti t.ạ để à ế
Trong khi b n ó, thêm v o các i u khi n Label bên trái c a nh ng i u khi nạ ở đ à đề ể để ủ ữ đề ể
textbox v thi t l p các thu c tính Caption c a chúng các giá tr c xem nh b ngà ế ậ ộ ủ để ị đượ ư ả
1.2. C ng t kích c v s p cho th ng h ng (align) nh ng i u khi n trên form v C ngũ đặ ỡ à ắ ẳ à ữ đề ể à ũ
t l i kích c form b ng cách l a ch n mép v kéo c m t ki u mong mu n. Formđặ ạ ỡ ằ ự ọ à đểđượ ộ ể ố
c a b n trông nh hình 1.7.ủ ạ ư
B ng 1.1ả : nh ng thu c tính DataSource v DataField c a Input Control cho Form Tiltesữ ộ à ủ
Textbox DataSource DataField
txtISBN datTitles ISBN
txtTitle datTitles Title
txtYearPub datTitles YearPub
txtPubID datTitles PubID
txtDescription datTitles Description
txtNotes datTitles Notes
txtSubject datTitles Subject
txtComments datTitles Comments
B ng 1.2ả : Nh ng thu c tính Caption c a Label control cho Form Titles ữ ộ ủ
Label Caption
lblISBN ISBN

lblTitle Title
lblYearPub YearPub
lblPubID PubID
lblDescription Description
Notes Notes
lblSubject Subject
lblComments Comments
Hình 1.7 :
Bây gi b n có th ch y ch ng trình v xem i u khi n d li u ho t ng. Hãy ch nờ ạ ể ạ ươ à đề ể ữ ệ ạ độ ọ
Run | Start ( ho c n F5 ) d ch v ch y ch ng trình.B n có th i n cùng d li uặ ấ để ị à ạ ươ ạ ểđ đế ữ ệ
10
b ng b ng cách kích v o m i tên trái v ph i trên thanh i u khi n d li u t i áy c aả ằ à ũ à ả đề ể ữ ệ ạ đ ủ
form. M i tên có m t g ch bên trái s a b n n b n ghi u tiên trong b ng dũ ộ ạ ở ẽ đư ạ đế ả đầ ả ữ
li u. M i tên có m t g ch bên ph i s a b n n b n ghi cu i cùng trong b ng dệ ũ ộ ạ ở ả ẽ đư ạ đế ả ố ả ữ
li u. Còn hai m i tên khác a b n n t ng b n ghi.ệ ũ đư ạ đế ừ ả
Bây gi chúng ta có kh n ng thêm nh ng b n ghi m i ( record) v xoá nh ng b nờ đủ ả ă để ữ ả ớ à ữ ả
ghi ã có ttrong b ng d li u.đ ả ữ ệ
Thêm nút l nh New v Delete ệ à
Khi b n thêm v o nút New v nút Delete, chúng v n ch a có hi u l c do hai thạ à à ẫ ư ệ ự ủ
t c New v Delete tr ng hay ch a có k ch b n c a mã Visual Basic.Do v y, trong th t cụ à ố ư ị ả ủ ậ ủ ụ
thêm kh n ng chèn v xoá các b n ghi, ban ph i vi t t ng c ng hai dòng mã Visualđể ă ă à ả ả ế ổ ộ
Basic : m t dòng cho h m thêm b n ghi v m t dòng cho h m xoá b n ghi.ộ à ả à ộ à ả
Chú ý : Thêm m t ký hi u ( &) n thu c tính Caption c a m t nút l nh ngay l p t c kýộ ệ đế ộ ủ ộ ệ ậ ứ
t c g ch chân. Ký t g ch chân ( c ng c hi u nh phím nóng ( hot key) ) cự đượ ạ ự ạ ũ đượ ể ư đượ
cung c p nh l i nh c t i ng i s d ng, b ng cách gi cùng nút Crtl th c hi n th t c.ấ ư ờ ắ ớ ườ ử ụ ằ ữ để ự ệ ủ ụ
Xem b ng 1.3 v hình 1.8 bi t chi ti t :ả à để ế ế
Hãy kích úp v o nút đ à Add n c a s mã Visual Basic thêm o n mã v o ngđể đế ử ổ để đ ạ à đằ
ssau nút Add. B n s nhìn th y u v cu i th t c có s n cho b n. T t c các cái b nạ ẽ ấ đầ à ố ủ ụ ă ạ ấ ả ạ
c n l thêm m t dòng mã gi a chúng.ầ à ộ ữ
Private Sub cmdAdd_Click()

datTitles.Recordset.AddNew ` add a new record to the table
End Sub
Chú ý : Visual Basic t ng t o Sub_End, nh ng biên t p thông th ng cho m i th t cựđộ ạ ữ ậ ườ ỗ ủ ụ
m i c t o. Khi b n l m nh ng b i t p trong quy n sách n y.ớ đượ ạ ạ à ữ à ậ ể à
Bây gi hãy n c a s mã ng sau nút ờ đế ử ổ đằ Delete thêm v o do n mã Visual Basic :để à ạ
Private Sub cmdDelete_Click()
datTitles.Recordset.Delete ` delete the current record
End Sub
Nh ng thu c tính th c hi n ữ ộ ự ệ
RecordSet ch l m t thu c tính th c hi n c a d li u i u khi n. Thu c tính n yỉ à ộ ộ ự ệ ủ ữ ệ đề ể ộ à
l m t s quan h n b ng d li u c s c ng ngh a trong th i i m trình b y thu cà ộ ự ệđế ả ữ ệ ơ ởđượ đị ĩ ờ để à ộ
tính RecordSource. RecordSet c chuy n n m t b ng có s n trong c s d li u ho cđượ ể đế ộ ả ẵ ơ ở ữ ệ ặ
m t b ng o.Nh Visual Basic Dynaset ho c Snapshot. Nó c b n sâu h n v o ng yộ ả ả ư ặ đượ à ơ à à
th ba, “Nh ng i t ng c s d li u Visual Basic ”. Còn bây gi , coi nh thu c tínhứ ữ đố ượ ơ ở ữ ệ ờ ư ộ
RecordSet nh m t b n th c hi n c a thu c tính RecordSource m b n thi t l p khi b nư ộ ả ự ệ ủ ộ à ạ ế ậ ạ
thi t k form ế ế
Trong hai o n mã nh tr c, b n ã s d ng ph ng th c AddNew v Delete. B n sđ ạ ỏ ướ ạ đ ử ụ ươ ứ à ạ ẽ
c h c thêm v nh ng ph ng th c n y v nh ng ph ng th c khác trong b i c ađượ ọ ề ữ ươ ứ à à ữ ươ ứ à ủ
ng y th t , “ Thi t l p nh ng data entry form v i bound control ”.à ứ ư ế ậ ữ ớ
Hãy l u án v ch y l i ch ng trình . Bây gi b n có th kích v o nút Add v xemư đề à ạ ạ ươ ờ ạ ể à à
m t t p vùng r ng c a nh ng input control cho m c d li u. Hãy i n t t c chúng v iộ ậ ỗ ủ ữ ụ ữ ệ đề ấ ả ớ
m t v i d li u ( xem hình 1.9 cho m t ví d c a m t ghi m i ), v sau ó chuy n nộ à ữ ệ ộ ụ ủ ộ ớ à đ ể đế
b n ghi khác trong b ng. D li u c t ng l u v o b ng. B n c ng có th s d ngả ả ữ ệ đượ ự độ ư à ả ạ ũ ể ử ụ
11
nút Delete xoá b n ghi. u t ên tìm n b n ghi b n v a thêm v o ( nó l b n ghiđể ả Đầ ỉ đế ả ạ ừ à à ả
cu i cùng trong b ng ), sau ó kích v o nút Delete. Bây gi chuy n n b n ghi tr c óố ả đ à ờ ể đế ả ướ đ
v th r i l i xem b n ghi b n v a xoá. B n không th trông th y. Nó không ó !à ử ờ ạ để ả ạ ừ ạ ể ấ ởđ
Chú ý : Khi b n nh p d li u trong form n y, b n có th ã chú ý r ng cái trình t nhãnạ ậ ữ ệ à ạ ểđ ằ ự
không theo m t chu i logic n o. V n n y x y ra b i vì b n thêm cái i u khi nộ ỗ à ấ đề à ả ở ạ đề ể
txtTitles u tiên, nh ng l i t cái i u khi n txtISBN v o v trí u tiên c a form.đầ ư ạ đặ đề ể à ị đầ ủ

Visual Basic nh ngh a th t nhãn c a các i u khi n liên ti p chúng t trên form. đị ĩ ứ ự ủ đề ể ế đặ ở Để
hi u ch nh úng v n n y, l a ch n i u khi n cu i cùng b n mu n trong chu i nhãnệ ỉ đ ấ đề à ự ọ đề ể ố ạ ố ỗ
c a b n ( trong tr ng h p n y,nút Exit ) v nh p 0 v o trong thu c tính TabIndex. Ti pủ ạ ườ ợ à à ậ à ộ ế
t c thi t l p t t c giá tr TabIndex v zero ói v i t t c i u khi n trong cái chu i nhãn.ụ ế ậ ấ ả ị ề đ ớ ấ ảđề ể ỗ
Ho n th nh quá trình b ng cách t giá tr TabIndex c a i u khi n txtISBN v 0.à à ằ đặ ị ủ đề ể ề
Thu c tính TabIndex c a m t i u khi n c t ng lên 1 m i l n m t giá r nh h n cộ ủ ộ đề ể đượ ă ỗ ầ ộ ị ỏ ơ đượ
nh p v o trong i u khi n khác. B i v y b ng cách thi t l p thu c tính TabIndex c aậ à đề ể ở ậ ằ ế ậ ộ ủ
i u khi n txtISBN v 0, b n t l i giá tr thu c tính TabIndex c a i u khi n txtTitle vđề ể ề ạ đặ ạ ị ộ ủ đề ể ề
1, txtYearPub v 2 v vân vân. ề à
Hình 1.9 :
N u b n không nh p d li u v o data entry form b n t o trong b i t p n y gi ngế ạ ậ ữ ệ à ạ ạ à ậ à ố
nh cách hình 1.9 ( cho ví d , b n nh p nh ng ký t sai trong tr ng Year, nó ch nh nư ụ ạ ậ ữ ự ườ ỉ ậ
s ), b n có th nh n c m t thông i p l i t Visual Basic 5 nói r ng b n ã có d li uố ạ ể ậ đượ ộ đệ ỗ ừ ằ ạ đ ữ ệ
không h p l m t trong các tr ng. ây l gi thi t x y n ! Visual Basic 5 ( chính xácợ ệ ộ ườ Đ à ả ế ả đế
h n, Microsoft Jet Engine ) ki m tra t t c các m c d li u b o m r ng ki u d li uơ ể ấ ả ụ ữ ệ để ả đả ằ ể ữ ệ
úng c nh p trongđ đượ ậ m i tr ng h p l , m t cái ý ngh a l n c a gi i h n m c d li uỗ ườ ợ ệ ộ ĩ ớ ủ ớ ạ ụ ữ ệ
th m chí xa h n n a c l m k h n v o ng y th 5 “ Input Validation ” v b y l i cậ ơ ữ đượ à ỹ ơ à à ứ à ẫ ỗ đượ
xem trong b i h c c a ng y 14, “ L i x lý trong Visual Basic 5 ”. B n có th b quaà ọ ủ à ỗ ử ạ ể ỏ
thông báo n y ngay bây gi .à ờ
B n tóm t tả ắ
Trong b i h c c a ng y hôm nay b n h c c nh ng cái sau ây :à ọ ủ à ạ ọ đượ ữ đ
+ B n h c l m th n o s d ng i u khi n d li u (data control ) liên k tạ ọ à ế à để ử ụ đề ể ữ ệ để ế
m t form n m t c s d li u v b ng d li u b ng cách thi t l p thu c tínhộ đế ộ ơ ở ữ ệ à ả ữ ệ ằ ế ậ ộ
DatabaseName v DataSoucrce.à
+ B n h c l m th n o s d ng i u khi n textbox bound input liên k t m tạ ọ à ế à để ử ụ đề ể để ế ộ
h p input trên m t form n m t b ng d li u v tr ng d li u b ng cách thi t l p thu cộ ộ đế ộ ả ữ ệ à ườ ữ ệ ằ ế ậ ộ
tính DataSource v DataField.à
+ B n h c l m th n o k t h p nh ng nút l nh chu n ( standard commandạ ọ à ế à để ế ợ ữ ệ ẩ
buttons ) v ph ng th c ( method) à ươ ứ Addnew và Delete cung c p thêm b n ghi v xoá b nấ ả à ả
ghi ho t ng n m t data entry form.ạ độ đế ộ

Câu h i ki m tra ỏ ể
1. Hai thu c tính gì c a i u khi n d li u (data control) ph i c t khi b nộ ủ đề ể ữ ệ ả đượ đặ ạ
liên k t m t form n m t c s d li u v b ng d li u có s n ?ế ộ đế ộ ơ ở ữ ệ à ả ữ ệ ẵ
2. Thu c tính gì ph i c thi t l p n u b n mu n i u khi n d li u hi n th tênộ ả đượ ế ậ ế ạ ố đề ể ữ ệ ệ ị
c a b ng d li u gi nh ng m i tên c a thanh i u khi n d li u.ủ ả ữ ệ ở ữ ữ ũ ủ đề ể ữ ệ
3. Hai thu c tính gì c a i u khi n textbox ph i c t khi b n liên k t inputộ ủ đề ể ả đượ đặ ạ ế
control n i u khi n d li u trên m t form.đế đề ể ữ ệ ộ

4. Có bao nhiêu dòng mã c a v o h m xoá m t b n ghi n Visual Basicđượ đư à à ộ ả đế
form khi b n s d ng data control.ạ ử ụ
12
5. Thi t l p cái gì b n có th ch c ch n r ng Visual Basic s t ng l u côngế ậ để ạ ể ắ ắ ằ ẽ ựđộ ư
vi c c a b n m i l n b n th ch y m t ch ng trình.ệ ủ ạ ỗ ầ ạ ử ạ ộ ươ
B i t p à ậ
1. Thêm o n ch “ The Titles Program” n data entry form c t o trongđ ạ ữ đế đượ ạ
ch ng n y.ươ à
2. Thêm v o nút l nh có nhãn l Exit trên data entry form. Thêm o n mã sau nútà ệ à đ ạ
l nh n y cu i ch ng trình khi b n kích úp v o nút.ệ à ở ố ươ ạ đ à
3. Thay i nút Add chuy n contr n v trí i u khi n nh p u tiênđổ để ể ỏ đế ị đề ể ậ đầ
( txtISBN ) trên data entry form ( G i ýợ : Hãy tìm SetFocus trong giúp tr c tuy n c ađỡ ự ế ủ
Visual Basic ).
Ng y th hai à ứ :
T o nh ng c s d li u ạ ữ ơ ở ữ ệ
Trong b i h c ng y hôm nay, b n h c m t nh ngh a c a m t quan h c s dà ọ à ạ ọ ộ đị ĩ ủ ộ ệ ơ ở ữ
li u, nh ng y u t c b n t t nh t c a m t c s d li u, bao g m b ng d li u, b n ghiệ ữ ế ố ơ ả ố ấ ủ ộ ơ ở ữ ệ ồ ả ữ ệ ả
d li u v tr ng d li u. B n c ng có th h c thi t l p v b o trì nh ng quan h d li uữ ệ à ườ ữ ệ ạ ũ ể ọ ế ậ à ả ữ ệ ữ ệ
quan tr ng. ây l m t v i y u t phát tri n nh ng c s d li u ch t l ng các ngọ Đ à ộ à ế ố để ể ữ ơ ở ữ ệ ấ ượ ứ
d ng c a b n.ụ ủ ạ
B n c ng c h c nh ng ki u tr ng c s d li u c a Visual Basic, bao g m tênạ ũ đượ ọ ữ ể ườ ơ ở ữ ệ ủ ồ
kích c l u tr v nh ng s d ng thông th ng c a chúng. Theo cách n y, b n t o m tỡ ư ữ à ữ ử ụ ưỡ ủ à ạ ạ ộ

án th m dò nh ng h n ch , nh ng kh n ng, nh ng s d ng thông th ng nh ng ki uđề ă ữ ạ ế ữ ả ă ữ ử ụ ườ ữ ể
tr ng c s d li u Visual Basic.ườ ơ ở ữ ệ
Nh ng c s d li u quan h :ữ ơ ở ữ ệ ệ
Tr c khi tìm ki m nh ng th nh ph n riêng l c a c s d li u quan h , u tiênướ ế ữ à ầ ẻ ủ ơ ở ữ ệ ệ đầ
chúng ta xác nh m t nh ngh a n gi n. i v i m c ích c a quy n sách n y, m t cđị ộ đị ĩ đơ ả Đố ớ ụ đ ủ ể à ộ ơ
s d li u quan h l nh ngh a m t t p d li u ó ch ra m i quan h gi a nh ng y u tở ữ ệ ệ à đị ĩ ộ ậ ữ ệ đ ỉ ố ệ ữ ữ ế ố
d li u ; [ ho c dùng nó ngay tr c ti p ].M t quan h c s d li u l m t t p c a quanữ ệ ặ ự ế ộ ệ ơ ở ữ ệ à ộ ậ ủ
h d li u.ệ ữ ệ
Trong n i quy, xây d ng m t t p d li u quan h ,b n c n ba khoá. Nh ng cáiộ để ự ộ ậ ữ ệ ệ ạ ầ ữ
koá n y l ( t nh nh t n l n nh t ) :à à ừ ỏ ấ đế ớ ấ
+ Nh ng tr ng d li u – Data fields ( Th nh tho ng g i l c t d li u).ữ ườ ữ ệ ỉ ả ọ à ộ ữ ệ

+ Nh ng b n ghi d li u – Data records( c hi u nh h ng d li u ). ữ ả ữ ệ đượ ể ư à ữ ệ
+ Nh ng b ng d li u – Data tables.ữ ả ữ ệ
Chúng ta hãy xem nh ng y u t n y sâu h n.ữ ế ố à ơ
Nh ng tr ng d l u – Data fields :ữ ườ ữ ệ
Kh i xây d ng u tiên trong m t c s d li u quan h l tr ng d li u. Tr ngố ự đầ ộ ơ ở ữ ệ ệ à ườ ữ ệ ườ
d li u bao g m y u t nh nh t c a d li u ó b n có th l u trong m t c s d li u vữ ệ ồ ế ố ỏ ấ ủ ữ ệ đ ạ ể ư ộ ơ ở ữ ệ à
m i tr ng ch bao g m m t y u t d li u. Cho ví d , n u b n mu n ch a tên c a m tỗ ườ ỉ ồ ộ ế ố ữ ệ ụ ế ạ ố ứ ủ ộ
khách h ng, b n ph i t o m t tr ng d li u âu ó trong c s d li u v c ng choà ạ ả ạ ộ ườ ữ ệ đ đ ơ ở ữ ệ à ũ
tr ng ó m t tên, ví d nh CustomerName. n u b n mu n l u m t t i kho n c a m tườ đ ộ ụ ư ế ạ ố ư ộ à ả ủ ộ
khách h ng, b n ph i tap m t tr ng khác, có l g i nó l AccountBalance. T t c cácà ạ ả ọ ộ ườ ẽ ọ à ấ ả
tr ng b n t o c l u trong m t c s d li u n ( xem hình 2.1 ).ườ ạ ạ đượ ư ộ ơ ở ữ ệ đơ
13
Hình
2.1
Chú ý : Trong lý thuy t c s d li u chính th c, m t tr ng th ng c xem nh m tế ơ ở ữ ệ ứ ộ ườ ườ đượ ư ộ
c t. Trong su t quy n sách n y, nh ng cách di n t tr ng d li u v c t d li u c sộ ố ể à ữ ễ đạ ườ ữ ệ à ộ ữ ệ đượ ử
d ng thay cho nhau.ụ
D u cho nó có th l u nhi u h n m t y u t d li u trong m t tr ng n ( ví dẫ ể ư ề ơ ộ ế ố ữ ệ ộ ườ đơ ụ

nh h , v tên ), nó không l m t c s d li u t t l m. Trong th c t , vi c l u tr h nư ọ à à ộ ơ ở ữ ệ ố để à ự ế ệ ư ữ ơ
m t y u t d li u trong m t tr ng có th d n n nhi u v n khi b n ho c ng i sộ ế ố ữ ệ ộ ườ ể ẫ đế ề ấ đề ạ ặ ườ ử
d ng khác c g ng l y v c p nh t d li u.ụ ố ắ ấ à ậ ậ ữ ệ
Khái ni m n y xem nh n gi n trong lý thuy t. Nh ng nó không d d ng trongệ à ưđơ ả ế ư ễ à
th c ti n. Tr ng CustomerName c b n lu n g n ây l m t ví d t t. Cho r ng b nự ễ ườ đượ à ậ ầ đ à ộ ụ ố ằ ạ
có m t c s d li u bao g m m t danh sách nh ng tên khách h ng c a b n, v b n c nộ ơ ở ữ ệ ồ ộ ữ à ủ ạ à ạ ầ
s p x p danh sách b ng h ( last name ). Cái n y s c l m nh th n o ? B n có thắ ế ằ ọ à ẽ đượ à ư ế à ạ ể
cho r ng môi tr ng d li u CustomerName bao g m m t last name ? M t v i ch ch aằ ườ ữ ệ ồ ộ ộ à ỉ ứ
m t first name ? Có th có m t v i ch a c hai first v last name –nh ng trong th t gìộ ể ộ à ứ ả à ư ứ ự
( last name, first name hay first name, last name) ? Khi b n nhìn tr ng thái n y, b n phátạ ạ à ạ
hi n ra r ng b n th c s l u hai y u t d li u trong tr ng CustomerName ( first nameệ ằ ạ ự ự ư ế ố ữ ệ ườ
v last name ). i v i lý do n y, nhi u c s d li u không ch bao g m tr ng d li uà Đố ớ à ề ơ ở ữ ệ ỉ ồ ườ ữ ệ
CustomerName, nh ng nh ng tr ng d li u LastName v FirstName.ư ữ ườ ữ ệ à
Khi b n b t u xây d ng c s d li u c a b n, hãy b chút th i gian ngh vạ ắ đầ ự ơ ở ữ ệ ủ ạ ỏ ờ ĩ ề
nh ng cách không gi ng nhau ( v nh ng ng i s d ng c a b n ) c n l y ra d li u h uữ ố à ữ ườ ử ụ ủ ạ ầ ấ ữ ệ ữ
ích. Ch t l ng v s h u ích c a c s d li u c a b n c nhìn nguyên v n c a y uấ ượ à ự ữ ủ ơ ở ữ ệ ủ ạ đượ ẹ ủ ế
t nh nh t c a nó –tr ng d li u.ố ỏ ấ ủ ườ ữ ệ
Nh ng b n ghi d li u – Data records :ữ ả ữ ệ
Nh ng b n ghi l m t t p các tr ng quan h . s d ng ví d b t u g n âyữ ả à ộ ậ ườ ệ Để ử ụ ụ ắ đầ ầ đ
nh t, M t Customer Record có th ch a LastName, FirstName, v AccountBalance. T tấ ộ ể ứ à ấ
c ba tr ng mô t m t khách h ng trong c s d li u.ả ườ ả ộ à ơ ở ữ ệ
Chú ý : Trong lý thuy t c s d li u chính th c xem m t b n ghi nh m t h ng. C haiế ơ ở ữ ệ ứ ộ ả ư ộ à ả
b n ghi v h ng c s d ng thay cho nhau trong su t quy n sách n y.ả à à đượ ử ụ ố ể à
M t b n ghi ch ch a m t sao chép c a m i tr ng ã ch rõ. Cho ví d , m t b nộ ả ỉ ứ ộ ủ ỗ ườ đ ỉ ụ ộ ả
ghi không th ch a h n m t tr ng LastName. Hình 2.2 a ra Company Database v iể ứ ơ ộ ườ đư ớ
m t Customer Record ã nh ngh a. Customer Record ( row ) ch a ba tr ngộ đ đị ĩ ứ ườ
( columns).
B ng d li u các h ng v các c t ả ữ ệ à à ộ
B ng cách k t h p các tr ng v các b n ghi, b n t o h u h t các y u t thôngằ ế ợ ườ à ả ạ ạ ầ ế ế ố
th ng c a c s d li u quan h –b ng d li u. Cái y u t n y ch a các b n ghi v m iườ ủ ơ ở ữ ệ ệ ả ữ ệ ế ố à ữ ả à ỗ

b n ghi ch a các tr ng ( xem hình 2.3 ).ả ứ ườ
Chính m i b n ghi ch a các tr ng d li u ( LastName, FirstName,vỗ ả ứ ườ ữ ệ à
AccountBalance ), m i b ng ch a các b n ghi quan h . Các b ng có y các tên có ýỗ ả ứ ả ệ ả đầ đủ
ngh a ( Customer Table ho c Invoice Table ), trong cách gi ng nhau ó các tr ng có yĩ ặ ố đ ườ đầ
các tên có ý ngh a ( LastName, FirstName,AccountBalance v vân vân ). Nh ng cáiđủ ĩ à ữ
tên n y giúp b n v ng i khác nh n i dung c a các y u t ( các y u t b ng và ạ à ườ ớ ộ ủ ế ố ế ố ả à
tr ng ).ừơ
Các quan h c s d li u ệ ơ ở ữ ệ
14
Hình
2.2
Hình
2.3
Chính m t b n ghi có th ch a các tr ng quan h riêng r , m t c s d li u cóộ ả ể ứ ườ ệ ẽ ộ ơ ở ữ ệ
th ch a các b ng khác nhau. Vi c s d ng các m t quan h l m t cách r t có hi u l cể ứ ả ệ ử ụ ỗ ệ à ộ ấ ệ ự
l u m d li u ph c t p. Cho ví d , m t b ng l u các tên khách h ng có th cđể ư ớ ữ ệ ứ ạ ụ ộ ả ư à ể đượ
quan h n b ng khác ang l u các thông tin c a các tên khách h ng có mua. cái n o cóệđế ả đ ư ủ à à
th c quan h trong vi c tác ng n m t b ng l u t t c các thông tin c a các tênể đượ ệ ệ độ đế ộ ả ư ấ ả ủ
b n ph i mua. B ng cách thi t l p các m i quan h có ngh a gi a các b ng.b n có th t oạ ả ằ ế ậ ố ệ ĩ ữ ả ạ ể ạ
các c u trúc d li u m m d o d d ng b o trì.ấ ữ ệ ề ẻ để ễ à ả
B n có th thi t l p các m t quan h gi a các b ng b ng cách s d ng các con trạ ể ế ậ ố ệ ữ ả ằ ử ụ ỏ
ho c các tr ng có quy n trong b ng c a b n.ặ ườ ề ả ủ ạ
B n s d ng các tr ng có quy n tr n các b n ghi trong các b ng khác ãạ ử ụ ườ ề để ỏđế ả ả đ
có thông tin.Các tr ng có quy n th ng mô t nh ng gì bi t v các m i quan h gi aườ ề ườ ả ữ ế ề ố ệ ữ
cái n y v i cái kia( 1-1). M t ví d t t c a m i quan h 1-1 l m i quan h gi a m t b nà ớ ộ ụ ố ủ ố ệ à ỗ ệ ữ ộ ả
ghi v i m t b n ghi trong b ng a ch shipping.( xem hình 2.4 ).ớ ộ ả ả đị ỉ

B n s d ng các tr ng tr tr n m t ho c nhi u b n ghi trong các b ng khác cóạ ử ụ ườ ỏ để ỏ đế ộ ặ ề ả ả
các thông tin quan h . Các tr ng tr th ng mô t nh ng gì bi t v các m i quan hệ ườ ỏ ườ ả ữ ế ề ố ệ
gi a m t cái v i nhi u cái ( 1-n ).M t ví d t t m i quan h 1-n l quan h gi a m t b nữ ộ ớ ề ộ ụ ố ố ệ à ệ ữ ộ ả

ghi chính v các th t n i b t khác nhau ( xem hình 2.5). Các m i quan h 1-1 c sà ứ ự ổ ậ ố ệ đượ ử
d ng liên k t các b n ghi ( ví d nh Customer Table ) n m t b n ghi quan h trongụ để ế ả ụ ư đế ộ ả ệ
b ng khác.ả
Cho ví d , Cho r ng b n có hai ki u c a khách h ng in trong Company Databaseụ ằ ạ ể ủ à
c a b n : bán l v bán buôn. Các khách h ng bán l tr ti n trong vi c mua bán, do v yủ ạ ẻ à à ẻ ả ề ệ ậ
b n c n thêm m t tr ng Commission n b ng Customers. Các khách h ng bán buôn,ạ ầ ộ ườ đế ả à
m c dù, mua các s n ph m c a h m t s chi t kh u, do v y b n c ng c n thêm m tặ ả ẩ ủ ọ ở ộ ự ế ấ ậ ạ ũ ầ ộ
tr ng Discount n b ng Customers. Bây gi nh ng ng i s d ng c s d li u c a b nườ đế ả ờ ữ ườ ử ụ ơ ở ữ ệ ủ ạ
ph i nh r ng, i v i các khách h ng Retail,tr ng Discount ph i l tr ng, v i v i cácả ớ ằ đố ớ à ườ ả à ố àđố ớ
khách h ng Wholesale, tr ng Commission ph i tr ng. B n ph i nh các quy t c n y khià ườ ả ố ạ ả ớ ắ à
thêm, xoá, s a d li u t c s d li u, v t o các báo bi u. ử ữ ệ ừ ơ ở ữ ệ à ạ ể
Bây gi cái nãy xem nh m t công vi c qu n lý, nh ng bây gi c g ng thêm v oờ ư ộ ệ ả ư ờ ố ắ à
m t tá hay nhi u h n các tr ng, v b n có ho n to n m t tình tr ng trên tay c a b n !ộ ề ơ ườ à ạ à à ộ ạ ủ ạ
Thay vì thi t l p t t c các tr ng cho t t c các khách h ng, nh ng gì b n c n l m tế ậ ấ ả ườ ấ ả à ữ ạ ầ à ộ
cách ch nh ngh a các tr ng b n c n cho m i ki u khách h ng.B n có th l m i u n yỉ đị ĩ ườ ạ ầ ỗ ể à ạ ể à đề à
b ng cách thi t l p nhi u b ng trong m t c s d li u n v sau ó thi t l p m i quanằ ế ậ ề ả ộ ơ ở ữ ệ đơ à đ ế ậ ố
h gi a các b ng.ệ ữ ả
Trong ví d c l m sáng t trong hình 2.6, b n ã thêm m t tr ng : Type.ụđượ à ỏ ạ đ ộ ườ
Tr ng n y có t cách ho c nh rõ ki u c a khách h ng l u trong b n ghi n y.ườ à ư ặ đị ể ủ à ư ả à
B n có th s d ng ki u c a thông tin n y nói b n âu tìm ki m các thông tin thêmạ ể ử ụ ể ủ à ạ ởđ để ế
v khách h ng. Cho ví d , n u tr ng Type c t n Retail, do v y b n bi t b n cóề à ụ ế ườ đượ đặ đế ậ ạ ế ạ
th tìm khách h ng trong Retail Table tìm ki m thêm các thông tin. n u tr ng Typeể à để ế ế ườ
t n Wholesale, b n có th tìm thêm các thông tin trong Wholesale Table.đặ đế ạ ể
B ng cách t o tr ng RecordType b n có th thi t l p m t m i quan h 1-1 gi aằ ạ ườ ạ ể ế ậ ộ ố ệ ữ
các b n ghi trong Customer Table v Retail, Wholesale Table. Các m i quan h 1-n sả à ố ệ ử
d ng liên k t các b n ghi trong m t b ng chính ( ví d nh Customer Table ) n aụ để ế ả ộ ả ụ ư đế đ
b n ghi trong các b ng khác.ả ả
15
Hình
2.4

Hình
2.5
Hình
2.6
Cho ví d b n có th t d u c a các th t thông th ng cho m i khách h ngụ ạ ể đặ ấ ủ ứ ự ườ ỗ à
trong c s d li u c a b n. N u b n không t o m t c s d li u quan h , b n có thơ ở ữ ệ ủ ạ ừ ạ ạ ộ ơ ở ữ ệ ệ ạ ể
ch c ch n thêm m t tr ng n b ng khách h ng g i Order. Cái n y có th ch a th tắ ắ ộ ườ đế ả à ọ à ể ứ ứ ự
cu i cùng t b i khách h ng n y. Nh ng n u b n c n gì t d u nhi u h n m t chố đặ ở à à ư ế ạ ầ để đặ ấ ề ơ ộ ỉ
d n ? B n s thêm hai, b n ho c sáu hay nhi u h n n a các tr ng ph i không ? B n cóẫ ạ ẽ ố ặ ề ơ ữ ườ ả ạ
th nhìn th y v n .ể ấ ấ đề
Thay vì, b n có th thêm m t b ng ( Order Table ) có th e ch a nhi u các th tạ ể ộ ả ể ứ ề ứ ự
áng chú ý cho m t khách h ng b n c n. Sau khi b n t o Order Table b n có th thi t l pđ ộ à ạ ầ ạ ạ ạ ể ế ậ
m t n i quan h gi a Customer Table v Order Table s d ng tr ng LastName ( xem l iộ ỗ ệ ữ à ử ụ ườ ạ
hình 2.4 ). Tr ng LastName s d ng nh m t con tr trong Order Table n v trí xácườ ử ụ ư ộ ỏ đế ị
nh t t c các lo i cho khách h ng n y. B n có th s d ng nhi u cách khác nhau đị ấ ả ạ à à ạ ể ử ụ ề để
thi t l p các m i quan h gi a các b ng.Chúng th ng c thi t l p nh m t tr ngế ậ ố ệ ữ ả ườ đượ ế ậ ờ ộ ườ
khoá. Các tr ng khoá a ra sâu h n trong o n ti p theo.ườ đư ơ đ ạ ế
Các tr ng khoá - Key fields ườ
Th ng th ng, t i tr ng nh nh t trong m i b ng l m nhi m v nh m t tr ngườ ườ ạ ườ ỏ ấ ỗ ả à ệ ụ ư ộ ườ
khoá cho b ng.Các tr ng khoá trong các c s d li u quan h c s d ng nhả ườ ơ ở ữ ệ ệ đượ ử ụ để đị
ngh a v b o trì tính to n v n cu c s d li u v thi t l p các m i quan h gi a cácĩ à ả à ẹ ả ơ ở ữ ệ àđể ế ậ ỗ ệ ữ
b ng. B n t o các khoá trong b ng c a b n b ng cách ch nh m t ( tr ng ) ho c h nả ạ ạ ả ủ ạ ằ ỉ đị ộ ườ ặ ơ
trong b ng nh m t khoá chính ho c m t khoá ngo i. M t b ng có th ch có m t khoáả ư ộ ặ ộ à ộ ả ể ỉ ộ
chính, nh ng nó có th có các khoá ngo i. Khoá chính dùng i u khi n th t trongư ể à đểđề ể ứ ự
d li u c h n th .Khoá ngo i s d ng n quan h các tr ng n y n tr ng khácữ ệ đượ ể ị à ử ụ đế ệ ườ à đế ườ
trong ( foreign) các b ng khác trong c s d li u.ả ơ ở ữ ệ
Chú ý : Các tr ng khoá th nh tho ng c xem nh các tr ng ch s ( index) ho c cácườ ỉ ả đượ ư ườ ỉ ố ặ
ch s . C hai “tr ng khoá” v “ tr ng ch s ” c s d ng thay cho nhau trong su tỉ ố ả ườ à ườ ỉ ố đượ ử ụ ố
quy n sách n y.Nó quan tr ng chú ý r ng trong h u h t c s d li u c a PC ( Xbase,ể à ọ để ằ ầ ế ơ ở ữ ệ ủ
Paradox, Btreive, v ), các ch s ( index ) ch s d ng n t c x lý c a các t p tinà ỉ ố ỉ ử ụ đế ố độ ử ủ ậ

l n v ch óng m t vai di n nh trong s b o trì các m i quan h c a b ng . Ki u c sớ à ỉ đ ộ ễ ỏ ự ả ỗ ệ ủ ả ể ơ ở
d li u Visual Basic ( các t p tin.mdb ) v các ki u c s d li u quan h khác h p lýữ ệ ậ à ể ơ ở ữ ệ ệ ợ
khác s d ng các tr ng khoá thi t l p các quy t c b o to n c s d li u t t t ngử ụ ườ để ế ậ ắ ả à ơ ở ữ ệ ố để ă
t c tìm ki m v ph c h i.ố độ ế à ụ ồ
Nh c p lúc b n u, m t b ng ch có th có m t khoá chính. Khoá chínhư đề ậ ạ đầ ộ ả ỉ ể ộ
c s d ng nh ngh a m t b n ghi duy nh t trong b ng.Trong b ng Customer,đượ ử ụ để đị ĩ ộ ả ấ ả ả
tr ng LastName l khoá chính cho b ng. i u n y có ngh a l không có hai b n ghiườ à ả Đề à ĩ à ả
trong b ng có th có hai giá tr gi ng nhau trong các tr ng LastName ( xem hình 2.7 ).ả ể ị ố ườ
Vi c th thêm v o h n m t b n ghi v i m t khoá chính gi ng h t s có k t qu trongệ ử à ơ ộ ả ớ ộ ố ệ ẽ ế ả
m t c s d li u l i.ộ ơ ở ữ ệ ỗ
M oẹ : Cái vai trò chính c a khoá chính l duy trì to n v n bên trong c a m t b ng. iủ à à ẹ ủ ộ ả Đố
v i lý do n y, không có hai b n ghi trong b ng có th có khoá chính gi ng nhau. Nhi uớ à ả ả ể ố ề
công ty v i n n t ng khách h ng l n s d ng các s Social Security ho c mã vùng ( areaớ ề ả à ớ ử ụ ố ặ
code ), s i n tho i, b i vì h bi t h nh có thêm m t khách h ng v i tên gi ng nhau.ốđ ệ ạ ở ọ ế ọ ư ộ à ớ ố
Trong nh ng tr ng h p n y, SSN ho c s i n tho i s l khoá chính.ữ ườ ợ à ặ ốđ ệ ạ ẽ à
M t b ng có th có nhi u h n m t khoá ngo i. Nó c ng có th không có khoáộ ả ể ề ơ ộ à ũ ể
ngo i. Trong b ng Order, tr ng LastName s c nh ngh a nh m t khoá ngo i. i uà ả ườ ẽđượ đị ĩ ư ộ à Đề
n y có ngh a l nó không l tr ng n trong b ng n y nó tr n m t tr ng khoá trongà ĩ à à ườ đơ ả à ỏđế ộ ườ
m t b ng ngo i. Vi c th thêm m t b n ghi v o b ng Order ó ch a m t giá tr trongộ ả à ệ ử ộ ả à ả đ ứ ộ ị
tr ng LastName. Nó c ng không t n t i (exist) trong tr ng LastName c a b ngườ ũ ồ ạ ườ ủ ả
Customer, nó s x y ra trong m t c s d li u l i. B ng cách t o các khoá ngo i trongẽ ả ộ ơ ở ữ ệ ỗ ằ ạ à
m t b ng,b n xây d ng tính to n v n d li u trong c s d li u c a b n.ộ ả ạ ự à ẹ ữ ệ ơ ở ữ ệ ủ ạ
M oẹ : Vai trò chính c a khoá ngo i l nh nghiã v b o v các m i quan h gi a cácủ à à đị à ả ệ ố ệ ữ
16
Hình 2.7
b ng trong m t c s d li u. i v i lý do n y, các khoá ngo i không l ch có m t trongả ộ ơ ở ữ ệ Đố ớ à à à ỉ ộ
b ng.ả
Chú ý : Tính to n v n c s d li u v các khoá ngo i c nói k h n trong ng y16, “à ẹ ơ ở ữ ệ à à đượ ỹ ơ à
Tiêu chu n c a c s d li u ” v ng y 17 “ S quan tâm n nhi u ng i dùng ”.ẩ ủ ơ ở ữ ệ à à ự đế ề ườ
Bây gi b n ã l m vi c v i h u h t cái chung c a các y u t c s d li u cờ ạ đ à ệ ờ ầ ế ủ ế ố ơ ở ữ ệ ơ

b n, hãy nhìn các c tr ng rõ r ng c a các tr ng Visual Basic.ả đặ ư à ủ ườ
Các ki u tr ng c s d li u c a Visual Basic ể ườ ơ ở ữ ệ ủ
Visual Basic l u các giá tr c a b ng trong các tr ng. Visual Basic công nh n 14ư ị ủ ả ườ ậ
ki u tr ng khác nhau, b n có th s d ng l u các giá tr ó. M i ki u tr ng có cể ườ ạ ể ử ụ để ư ị đ ỗ ể ườ đặ
tính riêng r i u ó l m nó c bi t phù h p l u gi các ki u khác nhau c a d li u.ẽ đề đ à đặ ệ ợ ư ữ ể ủ ữ ệ
M t v i ki u s d ng l u các hình nh, các k t qu cu a checkbox, các giá tr ti n t ,ộ à ể ử ụ ư ả ế ả ỉ ị ề ệ
ng y tháng l ch v các kích c s khác nhau. B ng 2.1 li t kê 14 ki u c s d li u cà ị à ỡ ố ả ệ ể ơ ở ữ ệ đượ
công nh n b i Visual Basic.ậ ở
C t th nh t ch a tên ki u tr ng d li u. ây l tên b n s d ng khi b n t o cácộ ứ ấ ứ ể ườ ữ ệ Đ à ạ ử ụ ạ ạ
b ng s d ng Visual Data Manager t Toolbar. B n h c v cách s d ng công c n yả ử ụ ừ ạ ọ ề ử ụ ụ à
trong ng y th 7, “ Vi c s d ng Visdata Program ”.à ứ ệ ử ụ
C t th hai cho th y s các byte c chi m b i các ki u tr ng d li u khácộ ứ ấ ố đượ ế ở ể ườ ữ ệ
nhau. n u c trong c t l V, ó l chi u d i c a bi n v c xác nh b i b n t i th iế ỡ ộ à đ à ề à ủ ế à đượ đị ỏ ạ ạ ờ
i m thi t k ho c t i th i i m ch y ch ng trình.để ế ế ặ ạ ờ để ạ ươ
C t th ba trong b ng cho th y ki u d li u Visual Basic t ng ng. C t n yộ ứ ả ấ ể ữ ệ ươ đươ ộ à
nói v i b n ki u d li u Visual Basic b n có th s d ng c p nh t tr ng c s d li u.ứ ạ ể ữ ệ ạ ể ử ụ ậ ậ ườ ơ ở ữ ệ
B ng 2.1ả :
Data Field Type Size VB Type Comments
BINARY V (none) Gi i h n 255 byteớ ạ
BOOLEAN 1 Boolean Ch l u 0 ho c –1ỉ ư ặ
BYTE 1 Integer Ch l u t 0 n 255ỉ ư ừ đế
COUNTER 8 Long Ki u Long t ngể ựđộ
t ngă
CURRENCY 8 Curency
DATETIME 8 Date/Time
DUBLE 8 Double
GUID 16 (none)
INTEGER 2 Integer
LONG 8 Long
LONGBINARY V (none)

MEMO V String
SINGLE 4 Single
TEXT V String
Chú ý : Nó lá cái quan tr ng hi u gi a các ki u tr ng d li u Visual Basic khác nhauọ để ể ữ ể ườ ữ ệ
v các ki u d li u Visual Basic. Các ki u tr ng d li u l c ch p nh n nh các ki uà ể ữ ệ ể ườ ữ ệ àđượ ấ ậ ư ể
d li u h p lý. Các ki u d li u l các ki u c công nh n b i Visual Basic khi nhữ ệ ợ ể ữ ệ à ể đượ ậ ở đị
ngh a các bi n trong m t ch ng trình.Cho ví d , b n có th l u giá tr 3 trong ki uĩ ế ộ ươ ụ ạ ể ư ị ể
BYTE trong m t b ng, nh ng b n l u giá tr nh th trong ki u INTEGER trong m t b nộ ả ư ạ ư ị ư ế ể ộ ế
ch ng trình Visual Basic. ươ
Tuy v y nó v n úng Visual Basic cho phép ng i l p trình t o các ng d ng cậ ẫ đ ườ ậ ạ ứ ụ ơ
s d li u có th c v vi t d li u trong v i nh d nh d li u khác nhau, t t c các nhở ữ ệ ểđọ à ế ữ ệ à đị ạ ữ ệ ấ ả đị
d ng c s d li u không ch p nh n các ki u tr ng d li u. Cho ví d , các ki u tr ngạ ơ ở ữ ệ ấ ậ ể ườ ữ ệ ụ ể ườ
17
d li u c a xBase không ch p nh n ki u CURRENCY. Tr c s phát tri n các ng d ngữ ệ ủ ấ ậ ể ướ ự ể ứ ụ
cross data-engine, b n c n hi u chính xác các ki u tr ng d li u v chúng c s p tạ ầ ể ể ườ ữ ệ à đượ ắ đặ
nh th n o n các nh d ng d li u khác nhau. Các nh d ng d li u khác nhau cư ế à đế đị ạ ữ ệ đị ạ ữ ệ đượ
nói sâu h n trong ng y th 9, “ Visual Basic v Microsoft Jet Engine ”.ơ à ứ à
M t s trong các ki u trong b ng 2.1 áng thêm các chú thích :ộ ố ể ả đ
+ LONGBINARY l cho vi c l u tr các hình nh v các i t ng OLE. Visual Basicà ệ ư ữ ả à đố ượ
không có ki u d li u bên trong t ng ng s p t tr c ti p n LONGBINARY. Thôngể ữ ệ ươ ứ ắ đặ ự ế đế
tin n y th ng c l u tr nh ký t trong Visual Basic.Cho ví d ,m t nh bitmap sà ườ đượ ư ữ ư ự ụ ộ ả ẽ
c l u trong m t LONGBINARY nh ng nó s c l u nh m t bi n xâu trong m tđượ ư ộ ư ẽ đượ ư ư ộ ế ộ
ch ng trình Visual Basic. Kích úp m t tr ng LONGBINARY t ng d n ch ng cácươ đ ộ ườ ựđộ ẫ ứ
tin t c ng d ng i u ó l ng ký n qu n lý l u tr i t ng OLE.ứ ứ ụ đ ề đ àđă đế ả ư ữđố ượ
+ Ki u BOOOLEAN thông th ng s d ng lwuw=u tr k t qu c a m t checkbox nóể ườ ử ụ để ữ ế ả ủ ộ
ch l u –1 (True) ho c 0 ( False ). Cho ví d , n u b n nh p 13 v o inputbox, Visualỉ ư ặ ụ ế ạ ậ à
Basic l u –1 trong tr ng d li u. l m các vi c r c r i, Visual Basic không thông báoư ườ ữ ệ Để à ệ ắ ố
m t l i khi m t s khác h n 0 ho c –1 c nh p. B n nên c n th n khi s d ng ki uộ ỗ ộ ố ơ ặ đượ ậ ạ ẩ ậ ử ụ ể
BOOOLEAN b i vì s n o khác 0 c nh p v o trong tr ng BOOOLEAN cở ố à đượ ậ à ườ đượ
chuy n th nh –1.ể à

+ Ki u BYTE ch ch p nh n nh p trong ph m vi t 0 n 255. Nh ng giá tr khác ( g mể ỉ ấ ậ ậ ạ ừ đế ữ ị ồ
các s không ch p nh n ) có k t qu trong m t runtime error ( s l i 524 ) khi b n cố ấ ậ ế ả ộ ố ỗ ạ ố
g ng c p nh t b n ghi.ắ ậ ậ ả
C nh báoả : Cái ho t ng n y c thay i t Visual Basic 4.0. Trong quá kh thì,ạ độ à đượ đổ ừ ứ
Microsoft Jet s t ng chuy n các giá tr không h p l n m t giá tr byte v khôngẽ ự độ ể ị ợ ệ đế ộ ị à
thông báo l i. N u b n nh p giá tr 255 ( c l u tr nh FF trong h s hexa), Visualỗ ế ạ ậ ị đượ ư ữ ư ệ ố
Basic l u 255 trong tr ng d li u. n u b n nh p 260 ( d c l u nh 0104 trong h sư ườ ữ ệ ế ạ ậ ượ ư ư ệ ố
hexa—nó s chi m hai byte! )ẽ ế

+ Ki u COUNTER l m t tr ng h p c bi t. ây l m t s t ng t ng, nó l tr ngể à ộ ườ ợ đặ ệ Đ à ộ ự ựđộ ă à ườ
d li u ch c.ữ ệ ỉ đọ
+ Ki u MEMO v TEXT ể à
+ Ki u GUID ể
Xây d ng án các ki u tr ng d li u Visual Basic 5 ự đề ể ườ ữ ệ
án sau minh ho các ki u tr ng d li u khác nhau l u các d li u v o c a ng i sĐề ạ ể ườ ữ ệ ư ữ ệ à ủ ườ ử
d ng. B n c ng xem Visual Basic tr l i vi c nh p v o ó l ph m vi bên ngo i c a cácụ ạ ũ ả ờ ệ ậ à đ à ạ à ủ
cho các ki u tr ng d li u khác nhau.ể ườ ữ ệ
1. B t u b ng cách t o m t án Visual Basic m i ( l a ch n File | Newắ đầ ằ ạ ộ đề ớ ự ọ
Project). S d ng b ng 2.2 v hình 2.8 nh l h ng d n.ử ụ ả à ư à ướ ẫ
C nh báoả : Chú ý r ng b n ang t o m t b b n nút v i tên gi ng nhau, nh ng các giá trằ ạ đ ạ ộ ộ ố ớ ố ư ị
thu c tính khác nhau. ây l m t m ng i u khi n. Các m ng i u khi n a ra m tộ Đ à ộ ả đề ể ả đề ể đư ộ
cách hay n gi n mã Visual Basic. đểđơ ả

Hình 2.8 :
18
B ng 2.2 :ả
i u khi n ( Control)Đề ể Thu c tính ( Property)ộ Thi t l p ( Setting)ế ậ
Project Name prjFieldTypes
Form
Name

Caption
frmFieldTypes
VB 5 Basic Data Field
Types
CommandButton
Name
Caption
Height
Index
Width
cmdBtn
&Add
300
0
1200
CommandButton
Name
Caption
Height
Index
Width
cmdBtn
&Update
300
1
1200
CommandButton
Name
Caption
Height

Index
Width
cmdBtn
&Delete
300
2
1200
CommandButton
Name
Caption
Height
Index
Width
cmdBtn
E&xit
300
4
1200
DataControl
Name
DatabaseName
RecordSource
datFieldTupes
FieldTypes. mdb
FieldTypes

2. Bây gi hãy thêm o n mã ng sau các nút l nh. Kích úp nút Add ( Ho cờ đ ạ đằ ệ đ ặ
m t nút khác ) n c a s mã. Nh p mã t danh sách 2.1 bên trong s ki nộ để đế ử ổ ậ ừ ự ệ
cmdBtn_click.
Danh sách 2.1

Private Sub cmdBtn_Click(Index As Integer)
`
` handle button selections
`
On Error GoTo LocalError
`
Select Case Index
Case 0 ` add
datFieldTypes.Recordset.AddNew
Case 1 ` update
datFieldTypes.UpdateRecord
datFieldTypes.Recordset.Bookmark =
ÂdatFieldTypes.Recordset.LastModified
Case 2 ` delete
datFieldTypes.Recordset.Delete
datFieldTypes.Recordset.MovePrevious
Case 3 ` exit
19
Unload Me
End Select
Exit Sub
`
LocalError:
MsgBox Err.Description, vbCritical, Err.Number
`
End Sub
ó có th l các th khác nhau trong o n mã n y ó l cái m i cho b n. Th nh t, cácởđ ể à ứ đ ạ à đ à ớ ạ ứ ấ
dòng mã khác nhau c th c hi n c b n trên nút cái ó c n v o b i ng i s d ng.đượ ự ệ ơ ả đ đượ ấ à ở ườ ử ụ
ây l ch báo b i tham s Index cái ó c chuy n n s ki n Đ à ỉ ở ố đ đượ ể đế ự ệ click. Th hai, m t v iứ ộ à
mã c a error-handling ã c thêm v o l m cho nó d d ng i v i b n thủ đ đượ à để à ễ à đố ớ ạ để ử

nghi m v i form d li u. B n s h c thêm v error-handling v o ng y 14 “ Error-ệ ờ ữ ệ ạ ẽ ọ ề à à
hangling trong Visual Basic 5.0 ”. ng lo l ng n u o n mã n y trông khó hi u. NgayĐừ ắ ế đ ạ à ể
bây gi hãy ti n lên v nh p o n mã ó.ờ ế à ậ đ ạ đ
Bây gi l th i i m t t l u án. L u form nh FieldTypesờ à ờ để ố để ư đề ư ư .frm v án nhà đề ư
FieldTypes.vbp. Ch y án ch ch c ch n r ng b n ã nh p chính xác t t c o n mã.ạ đề ỉ ắ ắ ằ ạ đ ậ ấ ả đ ạ
n u b n nh n c các thông báo l i t Visual Basic. Hãy xem l i b ng 2.2 v các dòngế ạ ậ đượ ỗ ừ ạ ả à
mã có tr c ó t úng v n .Ki m tra ki u BOOOLEAN. Bây gi b n có th thêmướ đ đểđặ đ ấ đề ể ể ờ ạ ể
m t i u kh ên text box input v m t label n form n y. Thi t l p caption c a label lộ đề ỉ à ộ đế à ế ậ ủ à
Boolean : Hãy thi t l p thu c tính DataSource c a text box n datFieldTypes v thu cế ậ ộ ủ đế à ộ
tính DataField n BoooleanField. t thu c tính Text tr ng. Xem hình 2.9.đế Đặ ộ để ố
Hình 2.9 :
Bây gi thì hãy ch y ch ng trình. n u ây l th i i m u tiên b n ch y ch ngờ ạ ươ ế đ à ờ để đầ ạ ạ ươ
trình, b n nên xem m t tr ng r ng. n nút Add t o m t b n ghi m i v sau ó n nútạ ộ ườ ỗ ấ để ạ ộ ả ớ à đ ấ
Update l u b n ghi. B n th y r ng giá tr u tiên trong input box l m t s không, óđể ư ả ạ ấ ằ ị đầ à ộ ố đ
l giá tr m c nh c a BOOOLEAN. Nh p s 13 trong teexxt box v kích nút Update.à ị ặ đị ủ ậ ố à
Cái n y tác d ng i u khi n d li u l u tr ng d li u nh p v o n b ng d li u và ụ đề ể ữ ệ để ư ườ ữ ệ ậ à đế ả ữ ệ à
c p nh t. V n gì x y ra n s 13 ? Nó b chuy n th nh –1. Ki m tra k u BYTE.ậ ậ ấ đề ả đế ố ị ể à ể ể
Bây gi hãy thêm m t label v i u khi n input cho ki u BYTE thay vì ch n l a cácờ ộ à đề ể ể ọ ự
i u khi n thêm v o t Tooolbox v typing trong các thi t l p thu c tính, Visual Basicđề ể à ừ à ế ậ ộ
cho phép b n sao chép các i u khi n ã có . Vi c sao chép các i u khi n ti t ki m th iạ đề ể đ ệ đề ể ế ệ ờ
gian, gi m b t vi c ánh các l i v giúp t l i kích c v hình d ng c a các i u khi nả ớ ệ đ ỗ à đặ ạ ỡ à ạ ủ đề ể
trên form c a b n.ủ ạ
sao chép các i u khi n, s d ng con tr chu t, v i vi c n nút chu t trái t o raĐể đề ể ử ụ ỏ ộ ớ ệ ấ ộ để ạ
m t vòng d u ch m xung quanh i u khi n label v text box ã trên form ( trongộ ấ ấ đề ể à đ ở
tr ng h p n y, nhãn Boolean v textbox ). Khi b n th nút chu t trái, b n nhìn th y haiườ ợ à à ạ ả ộ ạ ấ
i u khi n c ánh d u. Bây gi kích Edit | Copy sao chép các i u khi n ã cđề ể đượ đ ấ ờ để đề ể đ đượ
l a ch n n Clipboard. S d ng Edit | Paste sao chép các i u khi n t Clipboard.ự ọ đế ử ụ để đề ể ừ
T i th i i m n y, Visual Basic h i b n có mu n t o m t Control Array không. Nói Yesạ ờ để à ỏ ạ ố ạ ộ
c hai l n. B n nhìn th y hai i u khi n hi n ra t i nh bên trái c a form. S d ng chu tả ầ ạ ấ đề ể ệ ạ đỉ ủ ử ụ ộ
xác nh l i v trí c a chúng trên form ( xem hình 2.10 ).để đị ạ ị ủ

Hình 2.10 :
M oẹ : i u khi n Textbox v Label trên form n y l m t ph n c a m t m ng i u khi n.Đề ể à à à ộ ầ ủ ộ ả đề ể
B i vì s d ng m ng i u khi n gi m t ng s các i u khi n riêng bi t trên form. Chúngở ử ụ ả đề ể ả ổ ố đề ể ệ
gi m s l ng t i nguyên c a Windows m ch ng trình c a b n s d ng.B n có th saoả ố ượ à ủ à ươ ủ ạ ử ụ ạ ể
chép các i u khi n nhi u l n b n thích – th m chí các form v án chéo nhau.đề ể ề ầ ạ ậ àđề
20
B n ã t o hai b n c a i u khi n nh p v o BOOLEAN . T t c cái b n c n l m ngayạ đ ạ ả ủ đề ể ậ à ấ ả ạ ầ à
bây gi l thay i nhãn l Byte v thu c tính DataField c a textbox l ByteField v b nờ à đổ à à ộ ủ à à ạ
có hai i u khi n m i trên form c a b n. Form c a b n bây gi trông nh hình 2.11.đề ể ớ ủ ạ ủ ạ ờ ư
Hình 2.11 :
Hãy sao l u v ch y ch ng trình. Th i i m n y, sau khi n nút Add nh p giá tr 256ư à ạ ươ ờ để à ấ ậ ị
v o i u khi n nh p tên l Byte v n nút Update. B n nhìn th y cái ó khi Visual Basicà đề ể ậ à àầ ạ ấ đ
c g ng l u giá tr n b ng d li u. M t run time error c thông báo. Các tr ng dố ắ ư ị đế ả ữ ệ ộ đượ ườ ữ
li u ki u Byte ch có th ng ý chính xác giá tr t 0 n 255. Khó kh n l u giá trệ ể ỉ ể đồ ị ừ đế ă để ư ị
n o khác trong tr ng d li u n y ng c ph ng ti n d li u Microsoft Jet a thôngà ườ ữ ệ à độ ơđể ươ ệ ữ ệ đư
báo m t l i n Visual Basic. Ki m tra ki u d li u CURRENCY b ng cách sao chép l iộ ỗ đế ể ể ữ ệ ằ ạ
i u khi n label v text box s d ng chu t l a ch n các i u khi n r i sao chép. Vđề ể à ử ụ ộ để ự ọ đề ể ồ à
sau ó dùng l nh Copy v Paste t th c n Edit. Thay i thu c tính Caption c a nhãnđ ệ à ừ ự đơ đổ ộ ủ
l Currency v thu c tính DataField c a text box. Xem hình 2.12.à à ộ ủ
Hình 2.12 :
Hãy l u v ch y ch ng trình v ki m tra ki u CURRENCY. n nút Add, nh p giá trư à ạ ươ à ể ể ấ ậ ị
1.00001 ; B t bu c Visual Basic l u giá tr n b ng d li u ( n nút Update ) v xem v nắ ộ ư ị đế ả ữ ệ ấ à ấ
gì x y ra. Th nh p 1.23456. Khi l u tr giá tr ki u CURRENCY, Visual Basic chđề ả ử ậ ư ữ ị ể ỉ
l u b n ch bên ph i c a s th p phân. n u s l n h n b n ch bên ph i, Visual Basicư ố ỗ ả ủ ố ậ ế ố ớ ơ ố ỗ ả
l m tròn giá tr tr c khi l u nó trong tr ng d li u. B n chú ý r ng Visual Basic khôngà ị ướ ư ườ ữ ệ ạ ằ
thêm m t d u dollar ($) hi n th ki u CURRENCY. Ki m tra ki u DATETIME. Ki uộ ấ để ệ ị ể ể ể ể
DATETIME c a Visual Basic l m t trong các ki u m nh nh t.ủ à ộ ể ạ ấ
T o m t b label v textbox m i b ng cách sao chép l i các i u khi n label v textbox.ạ ộ ộ à ớ ằ ạ đề ể à
Thay i thu c tính Caption c a label l DateTime v thu c tính DataField lđổ ộ ủ à à ộ à
DateTimeField. Form c a b n trông nh hình 2.13.ủ ạ ư

Hãy l u v ch y ch ng trình. Th nh p 12/32/95. Nh b n có th nhìn th y, Visualư à ạ ươ ử ậ ư ạ ể ấ
Basic a ra cho b n m t thông báo l i, b t c lúc n o b n nh p m t ng y tháng sai. Bâyđư ạ ộ ỗ ấ ứ à ạ ậ ộ à
gi nh p 1/1/0 trong h p text bõ Date. Chú ý r ng Visual Basic nh d ng ng y tháng choờ ậ ọ ằ đị ạ à
b n.ạ
Hình 2.13.
Visual Basic gi i quy t th n o khuôn m u ng y tháng s d ng ? khuôn m u ng yả ế ế à ẫ à để ử ụ ẫ à
tháng c s d ng n t các thi t l p trong m t ch ng trình nh Windows 9.x Controlđượ ử ụ đế ừ ế ậ ộ ươ ỏ
Panel Regional Settings. Trong khi b n có ch ng trình n y, th nghi m b ng cách g iạ ươ à ử ệ ằ ọ
ch ng trình s lý ng y tháng c a Windows 9.x Regional Settings.( T Taskbar, ch nươ ử à ủ ừ ọ
Start | Settings | Control Panel v sau ó ch n Regional Settings.) Thay i thi t l p ng yà đ ọ đổ ế ậ à
tháng v tr l i ch ng trình Visual Basic xem k t qu .à ở ạ ươ để ế ả
M oẹ : Ki u DATETIME c a Visual Basic luôn ể ủ
2
c s d ng l u tr các giá tr ng yđượ ử ụ để ư ữ ị à
tháng. N u b n c i t ch ng trình c a b n Châu Âu, ó khuôn m u hi n th ng yế ạ à đặ ươ ủ ạ ở ở đ ẫ ể ị à
tháng thông th ng l DD-MM-YY thay vì khuôn mãu MM/DD/YY thông th ng c aườ à ườ ủ
U.S ho c nh các giá tr s trong khuôn m u YYMMDD.ặ ư ị ố ẫ
Ki m tra ki u COUNTER. Bây gi chúng ta hãy ki m tra ki u tr ng c s d li u cể ể ờ ể ể ườ ơ ở ữ ệ đặ
bi t chính xác – Ki u COUNTER. Ki u n y t ng thi t l p b i Visual Basic m i l nệ ể ể à ựđộ ế ậ ở ỗ ầ
b n thêm m t b n ghi m i v o b ng d li u. Ki u COUNTER l m m t tr ng khoáạ ộ ả ớ à ả ữ ệ ể à ộ ườ
chính duy nh t t t b i vì Visual Basic có th t o v l u tr h n m t t các giá tr duyấ ố ở ể ạ à ư ữ ơ ộ ỷ ị
nh t trong tr ng COUNTER thi u s nhân ôi.ấ ườ ế ự đ
Chú ý : Th c s ki u COUNTER không ph i l m t ki u c s d li u th c s . thayự ự ể ả à ộ ể ơ ở ữ ệ ự ự Để
th ki u Counter l m t tr ng d li u Long v i thu c tính Attribute t lế ể à ộ ườ ữ ệ ớ ộ đặ à
AutoIncrField. B n s không tìm th y ki u Counter ghi trong t i li u, nh ng b n s xemạ ẽ ấ ể à ệ ư ạ ẽ
tham chi u các tr ng t ng t ng ( auto-incrementing ) v xem m t ki u “ Counter”ế ườ ự độ ă à ộ ể
21
nh m t s ch n l a khi b n b n xây d ng các tr ng d li u v i Visual Data Manager.ư ộ ự ọ ự ạ ạ ự ườ ữ ệ ớ
Hãy sao chép các i u khi n label/textbox khác.Thay i thu c tính Caption c a label lđề ể đổ ộ ủ à
Counter v thu c tính DataField c a textbox l AutoIncrField. Xem hình 2.14.à ộ ủ à

Hình 2.14 :
Bây gi hãy l u v ch y ch ng trình thêm m t l n n a. Chú ý r ng ki u COUNTER ãờ ư à ạ ươ ộ ầ ữ ằ ể đ
có m t giá tr trong nó, ngay c b n không có nh p d li u v o trong tr ng. Visual Basicộ ị ả ạ ậ ữ ệ à ườ
t giá tr c a tr ng COUNTER ; m nh ng ng i s d ng không t.Thêm m t b ngđặ ị ủ ườ à ữ ườ ử ụ đặ ộ ả
ghi m i v o b ng b ng cách n nút Add. B n s nhìn th y m t giá tr m i trong i uớ à ả ằ ấ ạ ẽ ấ ộ ị ớ đề
khi n nh p c a COUNTER. Visual Basic c ng b o m các s duy nh t trong thi t l pể ậ ủ ũ ả đả ố ấ ế ạ
c a a ng i s d ng. N u có ba ng i ang ch y ch ng trình t ng t thêm các b nủ đ ườ ử ụ ế ườ đ ạ ươ ươ ự ả
ghi v o b ng n y. Chúng s nh n t t c các giá tr duy nh t trong h p text Counter.à ả à ẽ ậ ấ ả ị ấ ộ
C nh báoả : B n nên ng bao gi c g ng so n th o giá tr trong h p text Counter ! N uạ đừ ờ ố ắ ạ ả ị ộ ế
Visual Basic xác nh r ng giá tr counter ã thay i, nó hi n th m t thông báo l i, vđị ằ ị đ đổ ệ ị ộ ỗ à
b n không th l u b n ghi. Ngay c b n t l i giá tr trong tr ng d li u COUNTERạ ể ư ả ả ạ đặ ạ ị ườ ữ ệ
quay tr l i giá tr g c c a nó.Visual Basic t ch i l u b n ghi.ở ạ ị ố ủ ừ ố ư ả
• Visual Basic tr l i m t l i n u b n nh p h n s ký t l n nh t v o trong m tả ờ ộ ỗ ế ạ ậ ơ ố ự ơ ấ à ộ
tr ng d li u TEXT.ườ ữ ệ
• Tr ng LONGBINARY c s d ng l u d li u nh th v cho phép dườ đượ ử ụ để ư ữ ệ ả đồ ị à ữ
li u ki u s v ch c nh p v l u.Vi c l u tr d li u th c a ra ch mệ ể ố à ữđượ ậ à ư ệ ư ữ ữ ệ đồ ị đượ đư ậ
trong sách ( xem ng y 11 “ Vi c hi n th d li u c a b n v i th ”).à ệ ệ ị ữ ệ ủ ạ ờ đồ ị
• Ki m tra giúp tr c tuy n c a Visual Basic d i các ki u d li u c a Visualể đỡ ự ế ủ ướ ể ữ ệ ủ
Basic cho thông tin thêm v o trên các lo i cao v th p i v i các tr ng d li uà ạ à ấ đố ớ ườ ữ ệ
DOUBLE,INTEGER v SINGLE.à
• Tr ng d li u BOOLEAN cho phép b n nh p các giá tr khác h n 0 ho c –1ườ ữ ệ ạ ậ ị ơ ặ
không có thông báo l i.Chú ý r ng Visual Basic thay i d li u li u b n nh pỗ ằ đổ ữ ệ ệ ạ ậ
các tr ng d li u ó m nó không gây n t ng bên ngo i.ườ ữ ệ đ à ấ ượ à
• Tr ng d li u CURRENCY ch l u b n v trí u tiên bên ph i c a ph n th pườ ữ ệ ỉ ư ố ị đầ ả ủ ầ ậ
phân n u b n nh p v t quá v trí th p phân th t , Visual Basic l m tròn giá trế ạ ậ ượ ị ậ ứ ư à ị
n b n v không a ra thông báo l i.đế ố à đư ỗ
• Tr ng d li u DATETIME có m t v i x lý thú v . Visual Basic không cho phépườ ữ ệ ộ à ử ị
b n l u m t ng y tháng ho c th i gian không h p l trong tr ng d li u, b nạ ư ộ à ặ ờ ợ ệ ườ ữ ệ ạ
nh n c m t “ Type mismacth” thay cho l i.Ngo i ra, khuôn m u hi n th choậ đượ ộ ỗ à ẫ ệ ị
ng y tháng v th i gian l xác nh b ng các thi t l p m b n ch n trongà à ờ à đị ằ ế ậ à ạ ọ

Windows Control Panel. Trong th c t d li u h p l c l u trong m t tr ngự ế ữ ệ ợ ệđượ ư ộ ườ
DATETIME, b n có th thay i khuôn m u hi n th ( ch n t 12 gi hi n th nạ ể đổ ẫ ệ ị ọ ừ ờ ệ ị đế
24 gi hi n th ), v th i gian ti p theo b n quan sát b n ghi ó, nó ph n ánh cáiờ ệ ị à ờ ế ạ ả đ ả
thay i c l m thông qua Control Panel.đổ đượ à
• Ki u tr ng d li u GUID các s 128 bit c bi t c g i l Globally Uniqueể ườ ữ ệ ố đặ ệ đượ ọ à
Identifiers.
• Ki u tr ng d li u BINARY cho phép t 0 n 255 bytes v ch có g i h n sể ườ ữ ệ ừ đế à ỉ ớ ạ ử
d ng. n u b n ang s d ng Visual Data Manager, b n hãy xem ki u tr ng “ụ ế ạ đ ử ụ ạ ể ườ
binary ” ây th c s l tr ng LONGBINARY.Đ ự ự à ươ
• Ki u tr ng MEMO v LONGBINARY c bi t nh tr ng d li u “ giá trể ườ à đượ ế ư ườ ữ ệ ị
l n” vì l r ng chúng có th có giá tr lên n 1.2 gigabytes c a d li u trongớ ẽ ằ ể ị đế ủ ữ ệ
22
m t tr ng n . n u b n ang l m vi c v i các tr ng d li u l n, b n c nộ ườ đơ ế ạ đ à ệ ớ ườ ữ ệ ớ ạ ầ
chuy n d li u gi a ch ng trình c a b n v b ng d li u s d ng ph ng th cể ữ ệ ữ ươ ủ ạ à ả ữ ệ ử ụ ươ ứ
Getchunk v Appendchunk. B n h c thêm v các ph ng th c n y v o ng y thà ạ ọ ề ươ ứ à à à ứ
9.
• Các ki u tr ng d li u khác c a v i mô t t i li u c a Visual Basic 5 c côngể ườ ữ ệ ủ à ả à ệ ủ đượ
nh n b i Microsoft Jet ( Big Integer, Char, Decimal, Float, Numberic, Time,ậ ở
TimeStamp v VarBinary. ). Tuy v y các tr ng d li u khác không th c t oà ậ ườ ữ ệ ể đượ ạ
s d ng Visual Data Manager ho c s d ng mã Visual Basic.Các ki u tr ng dử ụ ặ ử ụ ể ườ ữ
li u thêm v o ó có th c tr l i b ng cách xây d ng các b ng d li u sệ à đ ể đượ ả ạ ằ ự ả ữ ệ ử
d ng các công c c s d li u khác. G m Microsoft SQL Server ho c các c sụ ụ ơ ở ữ ệ ồ ặ ơ ở
d li u cu i khác.ữ ệ ố
Tóm t t ắ
Ng y hôm nay b n h c v các c s d li u quan h sau :à ạ ọ ề ơ ở ữ ệ ệ
• M t c s d li u quan h l t p h p c a d li u quan h .ộ ơ ở ữ ệ ệ à ậ ợ ủ ữ ệ ệ
• Ba khoá xây d ng các kh i c a c s d li u quan h l data field, data record,ự ố ủ ơ ở ữ ệ ệ à
data table.
• Hai ki u c a m i quan h c s d li u l 1-1v 1-n.ể ủ ố ệ ơ ở ữ ệ à à
• Có hai ki u tr ng khoá : primary key v foreign key.ể ườ à

B n c ng h c ạ ũ ọ 14 ki u tr ng d li u n gi n d c công nh n b i Microsoft Jet vể ườ ữ ệ đơ ả ượ ậ ở à
Visual Basic. B n c ng xây d ng m t data entry form cho phép b n ki m tra cách Visualạ ũ ự ộ ạ ể
Basic x lý khi b n c g ng l u tr d li u nh p v o bên trong các ki u tr ng khácử ạ ố ắ ư ữ ữ ệ ậ à ể ườ
nhau.
Ki m traể
1. Ba khoá chính xây d ng các kh i cho các c s d li u quan h l gì ?ự ố ơ ở ữ ệ ệ à
2. Kh i xây d ng nh nh t trong m t c s d li u quan h l gì ?ố ự ỏ ấ ộ ơ ở ữ ệ ệ à
3. M t b n ghi d li u l m t t p h p c a ___________.ộ ả ữ ệ à ộ ậ ợ ủ
4. Vai trò chính c a m t khoá chính trong m t b ng d li u l gì ?ủ ộ ộ ả ữ ệ à
5. M t b ng d li u có th có h n m t khoá ngo i không ?ộ ả ữ ệ ể ơ ộ à
B i t pà ậ

Tr l i câu h i 1,2 v 3 d a trên d li u trong b ng n y :ả ờ ỏ à ự ữ ệ ả à
SSN Last First Age City St Comments
123-45-
6789
Smith Mark 17 Austin TX Trans.
from New
York.
456-79-
1258
Smith Ron 21 NewYork NY Born in
Wyoming.
987-65-
8764
Johnson Curt 68 Chicago IL Play golf
on Wed.
1. Có bao nhiêu b n ghi trong b ng d li u ?ả ả ữ ệ
2. Tr ng n o b n nên l a ch n l m khoá chính ?ườ à ạ ự ọ à
2. Thay i ví d Visual Basic Data Field Types t b i n y b ng cách t o m tđổ ụ ừ à à ằ ạ ộ

checkbox.
23
Ng y th 3 à ứ
Các i t ng c s d li u c a Visual Basic đố ượ ơ ở ữ ệ ủ
Trong b i h c c a ng y tr c, b n h c l m th n o t o các form data entry n gi nà ọ ủ à ướ ạ ọ à ế à để ạ đơ ả
s d ng m t v i các i u khi n data-bound v các ki u tr ng d li u khác nhau. ng yử ụ ộ à đề ể à ể ườ ữ ệ à
hôm nay b n h c v các i t ng d li u ch ng trình c a Visual Basic 5. Các iạ ọ ề đố ượ ữ ệ ươ ủ đố
t ng d li u c s d ng trong ph m vi m t ch ng trình Visual Basic thao tác cácượ ữ ệ đượ ử ụ ạ ộ ươ để
c s d li u, t t v i các b ng v các ch m c bên trong c s d li u. Các i t ng dơ ở ữ ệ ố ớ ả à ỉ ụ ơ ở ữ ệ đố ượ ữ
li u l các i di n ( trong mã ch ng trình ) c a c s d li u, các b ng, các tr ng,ệ à đạ ệ ươ ủ ơ ở ữ ệ ả ườ
các ch m c v vânỉ ụ à
2
. C b i h c ng y hôm nay, b n t o các ch ng trình Visual Basicả à ọ à ạ ạ ươ
nh l m rõ các i m c bi t c a m i i t ng.ỏ à để đặ ệ ủ ỗ đố ượ
M i ch ng trình Visual Basic truy c p các b ng d li u s d ng các i t ng d li u.ọ ươ ậ ả ữ ệ ử ụ đố ượ ữ ệ
Th m chí n u b n ch s d ng các i u khi n data-aware ( cho ví d , i u khi n d li uậ ế ạ ỉ ử ụ đề ể ụ đề ẻ ữ ệ
v các i u khi n bound input ) v không vi t mã ch ng trình, b n v n ang s d ngà đề ể à ế ươ ạ ẫ đ ử ụ
các i t ng.đố ượ
i t ng d li u chính c s d ng trong ch ng trình Visual Basic l i t ngĐố ượ ữ ệ đượ ử ụ ươ à đố ượ
RecordSet. ây l i t ng n m gi t p h p các b n ghi s d ng trong các ch ng trìnhĐ àđố ượ ắ ữ ậ ợ ả ử ụ ươ
Visual Basic c a b n. Có ba ki u khác nhau c a i t ng RecordSet. Chúng l :ủ ạ ể ủ đố ượ à
• i t ng Dyneset-type RecordSet.Đố ượ
• i t ng Table- type RecordSet.Đố ượ
• i t ng Snapshot-type RecordSet.Đố ượ
B t k m t cái n o trong các i t ng RecordSet ó có th c s d ng t ng t c ấ ỳ ộ à đố ượ đ ể đượ ử ụ ă ố độ
truy c p n m t b ng trong m t c s d li u. Tuy nhiên, chúng có các thu c tính khácậ đế ộ ả ộ ơ ở ữ ệ ộ
th ng v x lý khác nhau t i các th i i m. Ng y hôm nay b n h c v ba ki u c a iườ à ử ạ ờ để à ạ ọ ề ể ủ đố
t ng RecordSet khác nhau v khi n o nó l t t nh t s d ng các i t ng ó trongượ à à à ố ấ ử ụ đố ượ đ
ch ng trình c a b n.ươ ủ ạ
Chú ý : Trong các phiên b n tr c c a Visual Basic, các ki u i t ng RecordSet có thả ướ ủ ể đố ượ ể

dùng nh các i t ng d li u duy nh t ( Dyneset, Table v Snapshot ). Các i t ng óư đố ượ ữ ệ ấ à đố ượ đ
có th v n c s d ng khi ang l m vi c v i ki u i t ng d li u truy c p c h nể ẫ đượ ử ụ đ à ệ ớ ể đố ượ ữ ệ ậ ũ ơ
( version 2.5 ). Nh ng nó không c gi i thi u. Bây gi t t c các ki u i t ng truyư đượ ớ ệ ờ ấ ả ể đố ượ
c p d li u cung c p các ki u i t ng RecordSet v ó l i t ng b n nên s d ngậ ữ ệ ấ ể đố ượ à đ à đố ượ ạ ử ụ
trong t t c các ch ng trình Visual Basic m i.ấ ả ươ ớ
Ng y hôm nay b n c ng h c v i t ng d li u khác : i t ng Database. B n có thà ạ ũ ọ ề đố ượ ữ ệ đố ượ ạ ể
s d ng i t ng Database em các thông tin v vi c k t n i c s d li u. Trong b iử ụ đố ượ đểđ ề ệ ế ố ơ ở ữ ệ à
h c n y, b n h c v các thu c tính chung v các x lý c a i t ng Database c a i uọ à ạ ọ ề ộ à ử ủ đố ượ ủ đề
khi n d li u v b n có th s d ng chúng trong ch ng trình nh th n o.ể ữ ệ à ạ ể ử ụ ươ ư ế à
Chú ý : B n h c thêm v i t ng Database trong ng y th 9 “ Visual Basic vạ ọ ề đố ượ à ứ à
Microsoft Jet Engine ”.
Dataset-Oriented ch ng l i d li u Record- Orientedố ạ ữ ệ
Tr c khi b n h c v các i t ng d li u Visual Basic, b n nên u tiên h c m t v iướ ạ ọ ề đố ượ ữ ệ ạ đầ ọ ộ à
cái c b n c a Visual Basic ho t ng th n o trên các c s d li u. Khi b n hi u Visualơ ả ủ ạ độ ế à ơ ở ữ ệ ạ ể
Basic l m th n o xem các c s d li u, b n có th t o các ch ng trình t t h n ápà ế à để ơ ở ữ ệ ạ ể ạ ươ ố ơ đ
ng v i các cái c n thi t c a b n.ứ ớ ầ ế ủ ạ
Ki u c s d li u ng sau c s d li u c a Microsoft Access v các c s d li u SQL-ể ơ ở ữ ệ đằ ơ ở ữ ệ ủ à ơ ở ữ ệ
oriented khác l ho n to n khác t ki u c s d li u ng sau các c s d li u PCà à à ừ ể ơ ở ữ ệ đằ ơ ở ữ ệ
24
truy n th ng ví d nh FoxPro, dBASE, v Paradox. Các c s d li u PC Truy n th ngề ố ụ ư à ơ ở ữ ệ ề ố
l các h th ng c s d li u record-oriented. Các c s d li u SQL l các h th ngà ệ ố ơ ở ữ ệ ơ ở ữ ệ à ệ ố
dataset-oriented. Vi c hi u bi t s khác nhau gi a s x lý record-oriented v s x lýệ ể ế ự ữ ự ử à ự ử
dataset-oriented l chìa khoá hi u các ch ng trình c s d li u ánh giá th n oà để ể ươ ơ ở ữ ệ đ ế à
trong Visual Basic.
Trong các h th ng record-oriented, b n l m ho t ng c s d li u m t b n ghi t i m tệ ố ạ à ạ độ ơ ở ữ ệ ộ ả ạ ộ
th i i m. H u h t các ch ng trình thông th ng xay d ng trong record-oriented l l p.ờ để ầ ế ươ ườ ự à ặ
Ví d c a mã gi sau l m rõ l m th n o t ng tr ng price c a m t b ng kê khaiụ ủ ả à à ế à để ă ườ ủ ộ ả
trong m t c s d li u record-oriented.ộ ơ ở ữ ệ
ReadLoop:
If EndOf File

Goto EndLoop
Else
Read Record
If Record.SalesRegion = `Northeast' Then
Price=Price*1.10
Write Record
End If
EndIf
Goto ReadLoop
EndLoop:
End Program
S x lý trong các h th ng record-oriented th ng bao h m vi c t o m t th t c thôngự ử ệ ố ườ à ệ ạ ộ ủ ụ
th ng, c m t b n ghi n, x lý nó,v quay l i c b n ghi khác cho n khi côngườ đọ ộ ả đơ ử à ạ đọ ả đế
vi c c ho n th nh. Các c s d li u c a PC s d ng các ch s t c x lý c a cácệ đượ à à ơ ở ữ ệ ủ ử ụ ỉ ốđể ố độ ử ủ
b n ghi nh v trong các b ng. Các ch s c ng giúp t ng t c b ng cách ch rõ các cả đị ị ả ỉ ố ũ ă ố độ ằ ỉ ơ
s d li u c a PC truy c p d li u trong tr t t s p x p ( b i LastName,ở ữ ệ ủ để ậ ữ ệ ậ ự ắ ế ở
AccountBlance, v vânà
2
).
Trong các h th ng data-oriented ví d nh Microsoft Access, b n l m ho t ng c sệ ố ụ ư ạ à ạ độ ơ ở
d li u m t b b n ghi t i m t th i i m ch không ph i l m t b n ghi t i m t th i i mữ ệ ộ ộ ả ạ ộ ờ để ứ ả à ộ ả ạ ộ ờ để
H u h t các ch ng trình thông th ng xây d ng trong các h th ng set-oriented l l nhầ ế ươ ườ ự ệ ố à ệ
SQL. Thay vì vi c s d ng mã ch ng trình l p h t các b n ghi n. Các c s dệ ử ụ ươ để ặ ế ả đơ ơ ở ữ
li u c a SQL có th l m các thao tác trên to n b các b ng ch t m t l nh SQL. o nệ ủ ể à à ộ ả ỉ ừ ộ ệ Đ ạ
mã gi c a ví d sau l m rõ l m th n o b n có th c p nh t tr ng price trong cùngả ủ ụ à à ế à để ạ ể ậ ậ ườ
t p inventory trong m t c s d li u dataset-oriented :ệ ộ ơ ở ữ ệ
UPDATE Inventory SET Price=Price*1.10 WHERE Inventory.SalesRegion = `Northeast'
L nh UPDATE c a SQL ch y v i nhi u c s d li u c a SQL nh các t khoá x lý v iệ ủ ạ ớ ề ơ ở ữ ệ ủ ư ừ ử ớ
các ch ng trình Visual Basic c a b n. Trong tr ng h p n y, UPDATE nói v i c s dươ ủ ạ ườ ợ à ớ ơ ở ữ
li u r ng nó mu n c p nh t nguyên m t b ng ( b ng Inventory ). L nh SET c a SQL thayệ ằ ố ậ ậ ộ ả ả ệ ủ

i giá tr c a m t tr ng d li u ( trong tr ng h p n y l tr ng Price ). L nh WHEREđổ ị ủ ộ ườ ữ ệ ườ ợ à à ườ ệ
c s d ng l m m t s so sánh h p lý c a tr ng SalesRegion n giá tr Northeast.đượ ử ụ để à ộ ự ợ ủ ườ đế ị
Nh b n có th th y trong các c s d li u dataset-orented, b n t o m t l nh n m chư ạ ể ấ ơ ở ữ ệ ạ ạ ộ ệ đơ à ỉ
l a ch n các b n ghi b n c n l m m t thao tác c a c s d li u. Sau khi b n nh nự ọ ả ạ ầ để à ộ ủ ơ ở ữ ệ ạ ậ
bi t c dataset, b n áp d ng phép toán n t t c các b n ghi trong t p h p. Trong cácế đượ ạ ụ đế ấ ả ả ậ ọ
h th ng dataset, các ch s c s d ng xác nh thêm tính to n v n c a c s dệ ố ỉ ố đượ ử ụ để đị à ẹ ủ ơ ở ữ
li u t ng t c xác nh v trí c a các b n ghi c th .ệ để ă ố độ đị ị ủ ả ụ ể
Visual Basic v các i t ng d li u à đố ượ ữ ệ
Các i t ng c s d li u c u Visual Basic l dataset-oriented. Các ch ng trìnhđố ượ ơ ở ữ ệ ả à ươ
Visual Basic thông th ng l m t t h n khi các thao tác c a d li u c l m v i h n m tườ à ố ơ ủ ữ ệ đượ à ớ ơ ộ
dataset khi các thao tác c a d li u c l m trên các b n ghi n. M t v i i t ngủ ữ ệ đượ à ả đơ ộ à đố ượ
Visual Basic l m vi c t t khi l m các thao tác record-oriented ; còn l i h u h t l không.à ệ ố à ạ ầ ế à
25

×