Bi n (variable) là m t đ i t ng đ c s d ng đ c t gi các giá tr trong khi thi hành mã ngu n Visual basic. Cú pháp khai báo 1 bi n nh sau:
Dim/Public <tên bi n> [As Ki u] Trong đó:
- Dim/Public: là t khoá c a Visual basic đ ch ra r ng đây là câu l nh khai báo bi n. Chúng ta s ch s d ng 1 trong 2 t khoá Dim hay Public tu theo t ng ng c nh c th . Khi nào s d ng t khoá nào s đ c đ c p ph n ph m vi c a bi n d i đây.
- <tên bi n>: là tên mà ng i dùng đ t cho bi n (theo qui t c đ t tên bi n c a ngôn ng l p trình). Trong mã ch ng trình ta s không s d ng d u < và >.
- As: T khoá c a Visual basic ch ra ki u c a bi n. - Ki u: Ki u c a bi n
C p d u [] ch ra r ng ph n n m bên trong nó là tu ch n. Ng i dùng có th ch ra m t cách t ng minh ki u c a bi n ho c không (n u không, Visual basic ng m hi u ki u c a bi n là variant).
Trong Visual basic, khác v i m t s ngôn ng l p trình khác (nh Pascal hay C), chúng ta có th không nh t thi t ph i khai báo bi n tr c khi s d ng nó. ây chính là cách “không khai báo bi n t ng minh”. Tuy nhiên, đ ch ng trình d “đ c” và d qu n lý, chúng ta có th khai báo t ng minh các bi n tr c khi s d ng nó.
Ví d :
Dim strName as string strName = ‘Nguy n V n An”
đây bi n strName đ c s d ng sau khi đã khai báo. Do đó nó đ c coi là khai báo t ng minh. Ng c l i, n u tr c đó ta ch a khai báo b ng câu l nh Dim trên thì bi n strName đ c s d ng theo ki u không khai báo t ng minh.
Khi đ c khai báo, m t bi n s đ c sinh ra trong Visual basic và s t n t i trong m t ph m vi nào đó, t c là nó s có giá tr trong m t vùng nào đó đã đ c xác đnh tr c. Ngoài ph m vi đó, bi n s không còn có tác d ng. Trong Visual basic, chúng ta có 2 ph m vi cho bi n đó là:
- Bi n c c b : Là bi n đ c khai báo b i t khoá Dim. Bi n này ch t n t i trong ph m vi khai báo nó - trong 1 hàm, m t th t c hay m t module nh t đnh.
- Bi n toàn c c: Là bi n đ c khai báo b i t khoá Public. Bi n này có nh h ng đ n toàn b ch ng trình, do đó trong 1 ch ng trình không th có 2 bi n toàn c c có cùng tên. Tuy nhiên, chúng ta có th khai báo bi n c c b trùng tên v i bi n toàn c c. Khi đó Visual basic s u tiên s d ng bi n c c b trong ph m vi c a nó.
Ngoài ra, Visual basic còn h tr vi c khai báo các h ng s . H ng s là các giá tr c đnh, không b thay đ i trong ch ng trình. Vi c s d ng h ng s r t ti n l i khi trong ch ng trình ta c n s d ng l p đi l p l i m t giá tr nào đó. khai báo h ng s , ta s d ng cú pháp sau:
Const <tên h ng> = <Giá tr >
Ví d : Const name = “Nguy n V n Nam” - Khai báo h ng có giá tr ki u ch Const dob = #09/17/1980# - Khai báo h ng có giá tr ki u ngày tháng.
T ng t nh bi n, h ng c ng có ph m vi nh h ng c a nó. Khi đ c khai báo trong hàm, th t c hay module nào thì h ng s có nh h ng đ n hàm, th t c hay module đó. có h ng có ph m vi toàn c c, ta ph i khai báo h ng b ng t khoá Public Const ngay trong ph n khai báo c a module.
5.3 CÁC C U TRÚC I U KHI N
Các c u trúc đi u khi n cho phép chúng ta đi u khi n th t thi hành c a các câu l nh trong m t ch ng trình. Thông th ng, n u b qua các c u trúc đi u khi n thì th t thi thành c a các câu l nh trong m t đo n mã s là tu n t t trên xu ng d i, b t đ u v i câu l nh đ u tiên và k t thúc b i câu l nh cu i cùng. C ng gi ng nh các ngôn ng l p trình khác, Visual basic cung c p đ y đ các c u trúc đi u khi n cho phép chúng ta thay đ i th t th c thi c a các câu l nh m t cách linh ho t và hi u qu .
5.3.1 C u trúc l nh r nhánh
C u trúc r nhánh cho phép chúng ta ki m tra các đi u ki n r i th c hi n các hành đ ng khác nhau tu thu c vào k t qu đ c ki m tra. Các c u trúc l a ch n c a Visual basic bao g m:
If … Then If .. Then … Else Select Case.
C u trúc If .. Then dùng đ thi hành m t hay nhi u câu l nh khi m t đi u ki n ki m tra đ c tho mãn. C u trúc chung c a If … Then nh sau:
If < đi u ki n> Then <m t ho c nhi u l nh> End If.
V i đo n mã trên, n u <đi u ki n> - th ng là m t bi u th c logic - là đúng thì ch ng trình s th c hi n <m t ho c nhi u l nh>. Ng c l i, ch ng trình s không th c hi n gì.
C u trúc If …Then … Else là s phát tri n c a c u trúc If … Then. trên, n u bi u th c là đúng thì m t ho c nhi u l nh trong kh i đ c th c hi n, ng c l i ch ng trình không th c hi n gì. Tuy nhiên, trong c u trúc này, n u đi u ki n ki m tra là sai thì ch ng trình s th c hi n các l nh n m trong ph n Else: If <đi u ki n> Then <m t ho c nhi u l nh> Else <m t ho c nhi u l nh khác> End If
Select Case l i là ph n m r ng h n c a If … Then … Else. Trong c u trúc If … Then … Else, chúng ta ch có th x lý đ c m t trong 2 tình hu ng là <đi u ki n> đúng ho c sai. Tuy nhiên, trong th c t có r t nhi u tr ng h p <đi u ki n> c a chúng ta l i tr v nhi u h n 2 giá tr . Do đó bi u th c Select Case đ c s d ng đ gi i quy t các tình hu ng đó. Cú pháp c a bi u th c này nh sau:
Select Case <tên bi n> Case <giá tr 1> <t p l nh 1> Case <giá tr 2> <t p l nh 2> …. Case <giá tr n> <t p l nh n>
Case Else
<t p l nh n+1> End Select
Ý ngh a c a bi u th c này nh sau: Ch ng trình s ki m tra <tên bi n>. ng v i m i giá tr c a <tên bi n>, t p l nh t ng ng s đ c th c hi n. Ng c l i, n u không có giá tr nào trong các giá tr trên tho mãn thì t p l nh th n+1 n m sau Case Else s đ c th c hi n.
V i c u trúc này, n u 1 bi n có nhi u h n 1 giá tr thì c ng ch t p l nh đ u tiên ng v i giá tr đ u tiên đ c th c hi n và ch ng trình s t đ ng thoát ra kh i c u trúc Select.
5.3.2 C u trúc l p
Trong l p trình c ng nh trong đ i s ng, chúng ta có th mu n l p đi l p l i m t s thao tác nào đó m t s l n nh t đnh, cho t i khi đ t đ n m t đích cho tr c hay cho t i khi m t đi u ki n nào đó đ c th a mãn. Trong l p trình, tr ng h p đ u đ c g i là m t vòng l p xác đnh tr c s l n l p và tr ng h p sau g i là vòng l p không xác đnh tr c s l n l p. V i Visual basic, chúng ta có các c u trúc l p nh sau:
Do … Loop: ây là c u trúc l p v i s vòng l p không xác đnh tr c. Cú pháp c a c u trúc này nh sau:
Do While <đi u ki n> <các l nh>
Loop
V i c u trúc này, n u <đi u ki n> còn đúng thì <các l nh> s còn đ c th c hi n. Ch khi nào <đi u ki n> là sai thì vòng l p m i k t thúc. ây là c u trúc l p mà ngay t l n th c hi n đ u tiên ch ng trình đã ki m tra <đi u ki n>. i u này có ngh a là có th vòng l p s không đ c th c hi n l n nào n u <đi u ki n> sai ngay l n th đ u tiên. c i ti n, ta có th s d ng c u trúc này theo cách sau:
Do
<các l nh>
Loop While <đi u ki n>
đ m b o ít nh t vòng l p đ c th c hi n m t l n.
Ngoài ra, chúng ta c ng có th s d ng c u trúc l p này v i t khoá Until thay vì t khóa While. i u khác bi t đây là, v i t khoá While, vòng l p s d ng l i khi <đi u ki n> là sai, còn v i t khoá Until, vòng l p s d ng l i khi đi u ki n là đúng.
For … Next: Vòng l p Do …Loop trên ho t đ ng r t t t trong tr ng h p chúng ta ch a bi t chính xác s l ng vòng l p c n th c hi n. Tuy nhiên, trong nhi u tr ng h p, khi chúng ta đã bi t chính xác đ c s l ng vòng l p r i thì c u trúc For … Next là m t l a ch n t t h n. Cú pháp c a c u trúc này nh sau:
For <bi n đ m> = <b t đ u> To <k t thúc> [Step <giá tr t ng>] <các l nh>
Ý ngh a c a c u trúc này nh sau: Ch ng trình s th c hi n <các l nh> v i s l ng là <k t thúc> - <b t đ u> + 1 l n. đây, bi n đ m, b t đ u và k t thúc th ng là các s nguyên. u tiên, ch ng trình thi t l p <bi n đ m> b ng v i <b t đ u> và ng m đnh giá tr t ng là 1 và th c hi n <các l nh>. Sau m i vòng, ch ng trình t ng <bi n đ m> lên 1 giá tr và so sánh nó v i <k t thúc>. N u <bi n đ m> còn nh h n <k t thúc> thì th c hi n ti p <các l nh>, ng c l i thì thoát kh i vòng l p. đây, Step đ c ng m đnh hi u là giá tr 1 n u ta không vi t ra t ng minh. Ví d , chúng ta mu n in ra màn hình các ch s t 1 đ n 10. Do đã bi t đ c s vòng l p là 10 nên ta có th s d ng c u trúc For … Next nh sau:
For i = 1 To 10 Debug.Print i Next i N u mu n in ng c l i t 10 đ n 1, ta s d ng Step = -1 nh sau: For i = 10 to 1 Step -1 Debug.Print i Next i
For Each … Next: Là c u trúc t ng t nh For … Next nh ng nó l p l i m t nhóm các câu l nh cho t ng ph n t trong m t t p h p hay trong m t m ng (array) thay vì l p các câu l nh m t s l n ch đnh. i u này đ c bi t có ích n u chúng ta không bi t có bao nhiêu phân t trong t p h p.
Cú pháp c a c u trúc này nh sau: For Each <ph n t > In <t p h p> <các l nh>
Next <ph n t >
5.3.3 Các c u trúc đi u khi n l ng nhau.
Chúng ta hoàn toàn có th đ t các c u trúc đi u khi n bên trong m t c u trúc đi u khi n khác (ví d m t kh i If…Then n m trong m t vòng l p For …Next). M t c u trúc đi u khi n đ t bên trong m t c u trúc đi u khi n khác đ c g i là l ng nhau. N u mu n, chúng ta c ng có th t ch c các c u trúc đi u khi n trong Visual basic thành nhi u c p.
Qui lu t v các c u trúc đi u khi n l ng nhau là r t đ n gi n. Khi đó, c u trúc bên trong ph i đ c hoàn thành tr c khi tr thành đi u ki n ki m tra cho c u trúc bên ngoài tr c ti p ch a nó. M t k thu t l p trình mà chúng ta nên tham kh o và áp d ng, đó là khi vi t các c u trúc đi u khi n l ng nhau, chúng ta nên c n l cho t ng c u trúc đ đo n mã ch ng trình rõ ràng và d g r i khi có l i x y ra.
5.3.4 Thoát kh i m t c u trúc đi u khi n l p
Nh đã trình bày trên, các vòng l p For và Do đ c l p đi l p l i v i s l ng l n bi t tr c hay không bi t tr c. Tuy nhiên, trong nhi u ng d ng, n u chúng ta đã th c hi n đ c m c tiêu thì chúng ta c n thoát ngay ra kh i vòng l p. Khi đó, câu l nh Exit có th đ c s d ng đ
ch ng trình ngay l p t c thoát ra kh i vòng l p. Cú pháp c a câu l nh này r t đ n gi n, t khoá exit đ c s d ng cùng v i t khoá c a vòng l p For hay Do
Ví d : Exit For s thoát ngay ra kh i vòng l p For.
5.4 S D NG L NH DOCMD
Trong nhi u tr ng h p, mã l nh c a Visual basic không th giúp chúng ta th c hi n đ c m t s hành đ ng - ch ng h n nh đóng hay m m t form, report. Khi đó, l nh DoCmd c a Access là m t công c h u ích giúp chúng ta th c hi n các hành đ ng ki u này.
DoCmd có cú pháp nh sau:
DoCmd.<hành đ ng> <danh sách các tham s >
đây, hành đ ng là các hành đ ng mà Access h tr nh đóng (close), m (open) form hay report, th c thi câu l nh SQL (RunSQL).
<danh sách các tham s > là các tham s mà m i <hành đ ng> trên h tr , m i tham s đ c vi t cách nhau b i 1 d u ph y “,”.
Ví d , chúng ta có 1 form đ c đ t tên là frmUser. m form này, chúng ta có th th c hi n câu l nh DoCmd nh sau:
DoCmd.OpenForm “frmUser”, acNormal - M form ch đ thi hành.
V i các hành đ ng m Form và m Report, chúng ta th ng có các tham s nh sau: [ViewMode], [FilterName], [WhereCondition], [DataMode], [WindowsMode] Trong đó:
- ViewMode - ch đ m . C th :
o acDesign: M Report ra ch đ thi t k
o acNormal: M Report ra đ thi hành - FilterName - t l c
- WhereCondition - Gi i h n các b n ghi trong ngu n d li u - DataMode - thi t l p ch đ d li u trên Report
- WindowsMode - thi t l p ki u c a s Report là:
o acDialog: Ki u h p tho i
o acWindowsNormal: Ki u c a s bình th ng
Ngoài ra, l nh DoCmd.RunSQL <câu l nh SQL> s th c thi m t câu l nh SQL gi ng nh nó đ c vi t ra trong m t truy v n.
5.5CH NG TRÌNH CON - TH T C VÀ HÀM
C ng gi ng nh trong t t c các ngôn ng l p trình khác, Visual basic c ng h tr ng i l p trình t o ra các ch ng trình con d i d ng th t c hay hàm. M t ch ng trình con, v m t c u trúc có th đ c coi nh m t ch ng trình hoàn ch nh đ c vi t đ làm m t s vi c nh t đnh nào
đó. Thông th ng, nhi u khi ng i l p trình mu n s d ng l p đi, l p l i m t đo n mã l nh nào đó. Khi đó, đo n mã l nh đó có th đ c vi t d i d ng m t ch ng trình con đ ng i l p trình có th tái s d ng nó m t cách hi u qu mà không c n ph i vi t l i toàn b đo n mã.
Có hai lo i ch ng trình con, đó là Th t c (Sub) và Hàm (Function). S khác bi t c b n gi a th t c và hàm là ch : Th t c là m t ch ng trình con đ c vi t đ th c hi n m t ho c m t vài thao tác nh ng không tr v m t giá tr nào và không đ c s d ng trong m t bi u th c, trong khi đó, hàm là m t ch ng trình con đ c vi t đ tính toán và tr v m t giá tr nào đó và có