You are on page 1of 36

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

BI 1. C BN V VISUAL BASIC
I. Gii thiu v Visual Basic Visual Basic (Visual Basic) l sn phm ca Microsoft, mt thnh phn phn ca b Visual Studio. Chc nng: L mt ngn ng lp trnh dng xy dng cc ng dng chy trn mi trng Windows. c im: Trc quan, cung cp cc cng c thun li cho vic to cc giao din. Ci t: t a CD VB6.0, chy file setup, thc hin cc bc theo hng dn. Khi ng: Start/Programs/Microsoft Visual Basic 6.0/Microsoft V Basic 6.0 Phiu New: standard EXE to mi mt ng dng (Project). Phiu Existing: m ng dng c. Ca s giao din ca Visual Basic thng c cc ca s con, qui nh vic n hin bng cc thao tc: - View/Project Explorer: trnh by cc thnh phn ca mt ng dng. - View/Properties Window: trnh by cc thuc tnh ca i tng c chn. - View/ Form Layout Window: quy nh v tr xut hin ca ca s kt qu. Mi ng dng l mt chng trnh bao gm cc chng trnh con tng ng vi tng s kin. Chn View/Code vit v xem m lnh ca cc chng trnh con ny. Chn View/Object thit k giao din cho ng dng. VB lu gi cc thng tin ca mt ng dng bng nhiu tp tin .FRM (ni dung form), .VBP (chng trnh chnh),V vy nn to th mc ring cho tng ng dng. II. Cc thao tc c bn khi xy dng ng dng 1. To mi mt ng dng, m mt ng dng sn c: thao tc nh ni trong mc trn. 2. Lu mt ng dng: chn biu tng Save Project, t tn cho cc tp tin .FRM, .VBP. Ch rng phc v cho cng mt ng dng c nhiu tp tin. 3. To mt i tng ( iu khin): chn loi i tng trong Toolbox ri v ln form. 4. Quy nh thuc tnh cho i tng: chn i tng, chn thuc tnh, xc lp gi tr cho thuc tnh trong Properties Window. 5. Vit m lnh: nhp p ln i tng hoc View/Code ri vit m lnh tng ng. Trn ca s Code c th chn i tng v s kin ca i tng trn cc combobox. 6. Chy chng trnh: F5 hoc chn Run/start hoc chn nt start trn thanh cng c. 7. Thot khi VB: nh cc ng dng khc trn windows III. Cc khi nim c bn.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 1

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

1. i tng v cc khi nim lin quan. Hot ng ca mt chng trnh VB hu nh u lin quan n mt s cc i tng no . Cc i tng ny c th l Form, c th l cc iu khin nh Label, Textbox, Command Button,Mt i tng c th c cc thnh phn sau: + Thuc tnh (property): quy nh nhng tnh cht ca i tng nh kch thc, mu sc, v tr, gi tr, C php: V d: <Tn_i_tng>.<tn thuc tnh>=<gi tr thuc tnh> txt1.text=Visual Basic

Cc thuc tnh thng dng ca cc i tng: - Name: tn phn bit vi i tng khc, dng truy xut n cc gi tr thuc tnh ca i tng. Tn khng cha khong trng, khng g du ting Vit. Tn ca cc i tng nn t km theo pha trc l loi ca i tng : Form: frm, TextBox: txt, Command: Cmd, Label: Lbl, ComboBox: Cmb, thun li cho vic khai bo bin v sau. - Caption: Tiu ca i tng. - Font: qui nh font ch cho i tng. - BackColor: mu nn ca i tng. - Height, Width: chiu cao, rng ca i tng. - Left, Top: v tr t bin tri v bin trn n gc trn tri ca i tng. - Visible: hin th (true) hay khng hin th (false) i tng khi chy ng dng. + Phng thc (method): hot ng ch ng (khng c tc ng bn ngoi) ca bn thn i tng nh khi chng trnh bt u chy, + S kin (event): hot ng b ng ca i tng nh xy ra khi kch chut, C php V d <Tn_i_tng>.<tn phng thc> Form1.show

2. Phng php lp trnh hng s kin. + Dng giao din tng tc gia ngi dng v chng trnh. + Ngi dng phi hoch nh th t cho cc s kin. + Th t cc on m lnh ng vi cc s kin l khng quan trng. + Trn mt i tng c th c nhiu s kin khc nhau. IV. Cc i tng c bn. 1. Form L i tng cha mt s i tng khc ca mt ng dng. Khi chy n l mn hnh giao din ca ng dng. Mt s s kin ca form: - Initialize: c h thng kch hot u tin nn c th dng thit lp cc thuc tnh ban u cho form.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 2

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

- Load: xy ra sau s kin trn c th thit lp cc thuc tnh ban u cho cc i tng ca form. - Click: xy ra khi ngui dng nhp chut trn form. Mt s phng thc ca form: - Show: hin th form ln mn hnh, sau khi show c gi cc phng thc ca cc iu khin khc trn form mi thc hin c. - Hide: che giu mt form nhng khng gii phng b nh. - Load: np form vo b nh nhng cha xut hin trn mn hnh. - Unload: ngc li ca Load C th dng tn ngm nh Me thay cho tn Form ang x l. 2. Label. i tng dng hin th thng tin nh li ch gii, li nhc (1) cng c th c dng xut kt qu (2). Thuc tnh thng dng l Caption. Nhng Label (1) thng xc lp thuc tnh trong ca s properties. Cc label (2) dng lnh dng <Tn label>.Caption = Ni dung 3. TextBox. i tng dng nhp, xut d liu. Thuc tnh quan trng nht l Text, cha d liu ca , mc nh c kiu chui. V vy, cn chuyn i kiu nu mun s dng d liu cc kiu khc. TextBox khng c thuc tnh Caption. Mt s thuc tnh, s kin khc: - ScrollBars: thuc tnh qui nh thanh cun ngang, dc c hay khng. - Maxlength: thuc tnh qui nh chiu di ti a ca d liu nhp vo. - Change: s kin xy ra khi d liu ca b thay i. - GotFocus: s kin xy ra khi con tr c nhy vo . - LostFocus: s kin xy ra khi con tr nhy ra khi . - SetForcus: phng thc nhm a con tr vo . 3. Command Button i tng thng dng iu khin vic thc hin mt cng vic no ca ng dng. S kin thng dng Click thi hnh mt on m lnh tng ng. K hiu & trong Caption ca mt command button c tc dng to phm nng, ngi s dng g ctrl+k hiu sau du & c tc dng nh nhp chut. V. V d xy dng ng dng trn VB Xem hng dn trong phn bi tp

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 3

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

BI TP S 1
Bi tp 1.1 To ng dng tnh din tch hnh ch nht c giao din nh sau:

Khi chy ng dng, nhp chiu di, chiu rng, nhn nt tnh kt qu xut hin trong din tch. Khi nhn nt tip tc, chng trnh xa cc s c nhp d liu mi. Nhn nt thot ng Form, quay v VB. Hng dn: + Khi ng VB, to cc label Tnh din tch hnh ch nht, chiu di, chiu rng, din tch. Ni dung cc mc c quy nh trong thuc tnh Caption ca tng label. + To cc Textbox nhp chiu di, chiu rng v xut kt qu l din tch. t tn ln lt cho cc Textbox trn l a, b, S trong thuc tnh Name ca tng Textbox. trng thuc tnh Text ca cc Textbox ny. + To cc Command Button Tnh, Tip tc, That v nhp p ln nt lnh m ca s Code v vit m cho cc nt lnh ny nh sau: M ca Command1
Private Sub Command1_Click() s.Text = a * b End Sub

M ca Command2
Private Sub Command2_Click() a.Text = "" b.Text = "" s.Text = "" a.SetFocus End Sub

M ca Command3
Private Sub Command3_Click() Unload Form1 End Sub

Phng thc a.SetFocus vi mc ch a con tr n nhp chiu di. lm iu ny trong ln chy u tin ng vi thi im Form1 c khi ng, ta nhp p ln Form1 v vit m lnh sau:
Private Sub Form_Load() Show a.Text = "" a.SetFocus End Sub

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 4

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Bi 1.2 To ng dng tnh din tch hnh thang khi nhp y ln, y nh, chiu cao. Bi 1.3 To ng dng nhp vo 2 s nguyn, tnh cng, tr, nhn, chia 2 s vi giao din nh sau:

BI 2. NGN NG LP TRNH VISUAL BASIC


I. Cc kiu d liu c bn. Mi kiu d liu quy nh mt tp hp cc gi tr v mt tp cc php ton c s dng trn tp gi tr . 1. Kiu s nguyn. Tu nhu cu s dng s nh hay ln m ta dng kiu ph hp trong s cc kiu sau: a. Byte: kch thc 1 byte, phm vi t 0 n 255. b. Integer: kch thc 2 bytes, phm vi t -32768 n 32767. c. Long: kch thc 4 bytes, phm vi t -231 n 231-1. Cc php ton: cng, tr, nhn, chia, lu tha, div, mod tng ng vi cc k hiu +, - , *, /, ^, \, mod. Trong , div l php chia ly phn nguyn, mod l php chia ly phn d. 2. Kiu s thc. a. Single: kch thc 4 byte, xc nh n 38 ch s. b. Double: kch thc 8 byte, xc nh n 300 ch s. 3. Kiu chui (string) Chui c t gia hai du c di ln. Php ton: ni chui ng vi k hiu & hoc +. Ch nhng trng hp kt qu sai do VB chuyn kiu t ng. 4. Kiu logic (Boolean) Ch c hai gi tr True, false hoc 1,0. Cc php ton gm hi, tuyn, ph nh ng vi k hiu and, or, not. 5. Kiu ngy, gi (Date)
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 5

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Kch thc 8 byte ghi c c ngy ln gi. Thng thng nu ch dng ngy ta vit gia hai du #. V d: #22/12/2007#, #22-12-2007# Php ton: cng, tr gia ngy v s; v php tr gia ngy v ngy. Ch : Tt c cc kiu trn u c php so snh =, <>, >,<,>=,<= da theo quan h th t ca tng kiu. Nn dng thm ( ) ch ng trnh nhm ln th t u tin ca cc php ton. 6. Kiu Variant Kiu ny cha d liu bt k thuc cc kiu trn ch dng khi no thc s cn thit v kh kim sot s chuyn i kiu t ng. II. Hng, bin. 1. Hng l i lng khng thay i gi tr trong chng trnh. Khai bo: Const <tn hng> [as <kiu>] = <gi tr> V d: Const pi As Single = 3.1416 2. Bin l i lng c th thay i gi tr trong chng trnh. Mt cch y mi bin xc nh bi cc yu t: a ch vt l, tn, gi tr, thi gian tn ti v phm vi hot ng. Trong , tn v gi tr thng c quan tm u tin. Tn bin dng truy xut n gi tr. Tn bin khng cha khong trng, khng g du ting Vit, khng cha du php ton. Khai bo: Dim <tn bin> [As <kiu>] Bin khng khai bo kiu s l bin kiu Variant. V d. Dim x, y As integer. Khi x kiu Variant, y kiu integer. Ch : + Nn thit lp ch bt buc khai bo bin d kim sot li ca chng trnh. lm iu ny vo Tools/Options/Require variable declaration hoc khai bo dng lnh Option Explicit trong phn General ca ca s lnh. + Nhng bin c khai bo trong phn General l bin ton cc. Bin khai bo trong th tc l bin cc b. Bin cc b c tm hot ng trong th tc cha n. Bin ton cc c tm hot ng khp cc th tc. + Php gn: <tn_bin>=<gi tr> c tc dng gn <gi tr > cho bin pha bn tri. III. Hm chun. 1. Mt s hm ton hc. + Abs(x): tr v tr tuyt i ca x. + Sqr(x): tr v cn bc hai ca x. + Round(x,n): lm trn x vi n s l.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 6

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

+ Exp(x): e

+ Log(x): ln(x) + Sin(x), Cos(x), Tan(x): cc hm lng gic tng ng. + Rnd(): tr v s thc ngu nhin trong on [0,1], kch hot trc bng th tc Randomize. 2. Mt s hm thi gian. + Day(ngy), Month(ngy), Year(ngy): tr v ngy, thng, nm ca mt gi tr ngy. + WeekDay(ngy): tr v s nguyn l th ca ngy trong tun, ngoi l ch nht l s 1. 3. Mt s hm kiu chui. + Ucase(chui): tr v chui ch in. Lcase(chui): tr v chui ch thng. + Ltrim(chui), Rtrim(chui), Trim(chui): ct b khong trng bn tri, bn phi, c hai bn chui. + Left(chui,n), Right(chui,n): ly n k t ca chui t bn tri, bn phi. + Len(chui): tr v di ca chui. + Mid(chui,m,n): tr v n k t bt u t v tr th m. + InStr(n, chui 1, chui 2): tr v v tr xut hin ca chui 2 trong chui 1 bt u t v tr th n ca chui 1. + Replace(chui 1, chui 2, chui 3): thay chui 2 trong chui 1 bng chui 3. 4. Mt s hm chuyn kiu. + Val(chui) : tr v s tng ng vi chui. + CStr(s): tr v chui tng ng vi s. + Cdate(chui): tr v ngy tng ng vi chui. IV. V d. Bi tp 2.1

BI TP S 2
Bi tp 2.1 To ng dng bc thm s xe bng cch sinh s ngu nhin c 4 ch s theo giao din sau: + S 9142 trong textbox text1 c sinh ngu nhin khi nhp chut vo nt lnh to s ngu nhin. + Chng trnh dng khi nhp nt Kt thc. + M lnh cho nt to s ngu nhin nh sau
Private Sub Command1_Click() Randomize Text1.Text = Round(1000 + Rnd() * 8999) End Sub

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 7

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Ci tin sinh s ngu nhin trong on [a,b] vi a, b nhp vo t bn phm. Bi tp 2.2 To ng dng tnh din tch hnh trn c bn knh nhp vo t bn phm, trong khai bo hng pi =3.1416 Bi tp 2.3 To ng dng khi nhp vo ni sinh ca bn gm huyn (thnh ph), tnh cch nhau bi mt du gch ni - , chng trnh s t ng tch ring tn huyn (thnh ph), tn tnh vi giao din nh sau:

Khi nhp tip tc xo trng cc thc hin lt mi. M lnh cho nt Tch:
Private Sub Command1_Click() Dim huyen As String, tinh As String Dim n As Byte n = InStr(1, Text1.Text, "-") huyen = Mid(Text1.Text, 1, n - 1) tinh = Mid(Text1.Text, n + 1) Text2.Text = huyen Text3.Text = tinh End Sub

M lnh cho nt Tip tc:


Private Sub Command2_Click() Text1.Text = "" Text2.Text = "" Text3.Text = "" Text1.SetFocus End Sub

BI 3. CC CU TRC IU KHIN
I. Cu trc r nhnh. 1. IFTHEN Cng dng. La chn mt trong hai cng vic cn thc hin.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 8

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

C php. If <iu kin> then <cng vic 1> [Else <cng vic 2>] End If iu khin: Nu iu kin tho mn th thc hin cng vic 1 ngc li thc hin cng vic 2 (nu c). V d. Kim tra mt s nguyn n l chn hay l. 2. SELECT CASE Cng dng. La chn mt trong nhiu cng vic cn thc hin. C php: Select case <biu thc> Case <danh sch gi tr 1> <cng vic 1> Case <danh sch gi tr n> <cng vic n> [Case Else <cng vic n+1>] End Select iu khin: Ln lt kim tra gi tr ca <biu thc> t trn xung, nu ri vo danh sch gi tr no th thc hin cng vic ny ri thot khi khi lnh. Cng vic n+1 (nu c) c thc hin khi gi tr <biu thc> khng ri vo bt k danh sch gi tr no trn. Danh sch gi tr c dng: gi tr 1, gi tr 2,gi tr n hoc gi tr 1 To gi tr n (nu cc gi tr ny lin tc) T kho Is c dng trong trng hp gi tr ca biu thc cn so snh hn, km. V d: Xp loi sinh vin theo im trung bnh
Select case dtb Case Is>=9 Loai=Xut sc Case Is>=8 Loai=Gii Case Is>=7 Loai=Kh Case Is>=6.5 Loai=TB kh Case Is>=5 Loai=TB Case Else Loai=Yu End Select 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 9

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Ch . iu khin chng trnh nhy n mt v tr bt k bng lnh Goto <nhn> Trong nhn c dng <tn nhn:>
3. V d. Xem bi tp 3.1

BI TP 3
Bi tp tp 3.1 To ng dng my tnh cho php nhp s v thc hin cc php tnh cng, tr, nhn chia vi cc s nguyn vi giao din nh sau:

Hng dn: + To textbox txtso xut hin cc s c chn v kt qu. + To cc Command ng vi cc s, cc php ton,.. + Vit cc m lnh gi nh sau, ch rng cc bin pt (php ton), so1 gi s th nht ca php ton phi l cc bin ton cc
Option Explicit Dim pt As String Dim so1 As Integer Private Sub cmd0_Click() txtso = txtso & "0" End Sub Private Sub cmd1_Click() txtso = txtso & "1" End Sub . Private Sub cmd9_Click() txtso = txtso & "9" End Sub Private Sub cmdcong_Click() so1 = Val(txtso) txtso.Text = "" pt = "+" End Sub Private Sub cmdtru_Click() so1 = Val(txtso) txtso.Text = "" pt = "-" End Sub Private Sub cmdnhan_Click() so1 = Val(txtso) 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 10

Trung tm Tin hc 14-B Triu txtso.Text = "" pt = "*" End Sub Private Sub cmdchia_Click() so1 = Val(txtso) txtso.Text = "" pt = "/" End Sub Private Sub cmdbang_Click() Dim kq As Single, so2 As Single so2 = Val(txtso.Text) Select Case pt Case "+": kq = so1 + so2 Case "-": kq = so1 - so2 Case "*": kq = so1 * so2 Case "/" If so2 = 0 Then txtso.Text = "khng chia c" GoTo abc Else kq = so1 / so2 End If End Select txtso.Text = kq abc: End Sub Private Sub cmdxoa_Click() txtso = "" End Sub Private Sub cmdthoat_Click() Unload Me End Sub

Lp trnh Visual Basic

Bi tp 3.2 To ng dng gii phng trnh bc hai ax2 + bx + c = 0. Bi tp 3.3 To ng dng khi nhp vo mt thng ca nm no , chng trnh cho bit s ngy ca thng ny. Bit rng cc thng 1,3,5,7,8,10,12 c 31 ngy; cc thng 4,6,9,11 c 30 ngy; thng 2 nm nhun c 29 ngy, nm khng nhun c 28 ngy. Nm nhun l nm chia ht cho 400 hoc l nm chia ht cho 4 m khng chia ht cho 100.

BI 4. CC CU TRC LP
I- FORNEXT Cng dng. Thc hin cng vic lp li vi s ln lp bit trc. C php. For <bin_iu_khin=gi_tr_u> To <gi_tr_cui> [step n] <cng vic> Next iu khin: + B1. Bin_iu_khin nhn gi_tr_u
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 11

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

+ B2. Nu bin_iu_khin nh hn hoc bng gi_tr_cui th thc hin cng vic ri tng bin_iu_khin ln n ri quay li B2. + B3. Nu bin_iu_khin ln hn gi_tr_cui th kt thc iu khin. Exit For : c dng trong <cng vic> khi no mun thot khi vng lp ngay lp tc (khng ch bin iu khin ln hn gi tr cui). V d. on chng trnh sau tnh tng cc s nguyn t 1 n n (nhp trong txtn)
Dim S As Integer Dim i As Integer, n As Integer S=0 n = Val(txtn.Text) For i = 1 To n S=S+i Next lblkq.Caption = "Kt qu l" & S

II. DO WHILELOOP Cng dng. Thc hin cng vic lp li vi s ln lp khng xc nh trc. C php 1. Do while <iu kin> <cng vic> Loop iu khin: Nu iu kin tho mn th thc hin cng vic v lp li cho n khi iu kin khng tho mn th thot khi cu trc ny. C php 2. Do <cng vic> Loop Until <iu kin> iu khin: Tng t nh c php 1 nhng kim tra iu kin sau khi thc hin cng vic. V d. Tnh s thng cn thit gi ngn hng vi s vn l v = 100.000.000 ng, mc li sut k= 0.65% thng c c c vn ln li s tin l t = 115.000.000 ng (bit rng khng rt li hng thng).
Private Sub Tinh_Click() Dim v As Single, k As Single, st As Single, thang As Byte v = Val(txtv) k = Val(txtk) st = Val(txtst) thang = 0 Do While v < st thang = thang + 1 v = v * (1 + k) Loop txtkq.Text = thang End Sub

BI TP
Bi tp 4.1 Lp ng dng tnh n! vi n nguyn dng nhp t bn phm.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 12

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Bi tp 4.2 Lp ng dng tm c chung ln nht ca 2 s nguyn dng nhp t bn phm. Hng dn: To giao din nh sau

+ Textbox txta: nhp s th nht + Textbox txtb: nhp s th nht + Label lblkq: thng bo kt qu
Private Sub Command1_Click() Dim a As Integer, b As Integer, r As Integer a = Val(txta.Text) b = Val(txtb.Text) Do While b <> 0 r = a Mod b a=b b=r Loop lblkq.Caption = "c chung ln nht ca " & txta.Text & " v " & txtb.Text & " l" & a End Sub Private Sub Command2_Click() Unload Me End Sub

BI 5. BIN MNG
I. Bin mng. Khi nim: Mng l tp hp hu hn cc phn t cng kiu, cng tn v phn bit theo ch s. Khai bo: Dim Tn_mng(n) [As kiu_phn_t] S to mng n phn t c nh ch s t 0 n n-1. V d: Dim A(5) As Integer Khai bo: Dim Tn_mng(n1 to n2) [As kiu_phn_t] S to mng gm cc phn t c nh ch s t n1 n n2. V d: Dim A(3 to 5) As Integer Truy xut: Tn_mng(i) dng truy xut n gi tr ca phn t c ch s i ca mng. Ch : + Hm Lbound(Tn_mng): tr v ch s nh nht ca mng, Ubound(Bin_mng): tr v ch s ln nht ca mng.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 13

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

+ Khai bo mng hai chiu: Dim Tn_mng(m,n) [As kiu_phn_t] Dim Tn_mng(n1 to n2, n3 to n4) [As kiu_phn_t] + Truy xut mng hai chiu: Tn_mng(i,j) dng truy xut n gi tr ca phn t nm trn dng i, ct j ca mng. + Mng c s phn t khng xc nh trc (mng ng): Khai bo: Dim Tn_mng( ) [As kiu_phn_t] Thao tc: Redim Dim Tn_mng(n): thc s to mng n phn t. + Mng gn gi tr trc: Ch dng i vi mng ng v c kiu phn t l Variant, ch s t 0 tr i. V d Dim a( ) A=Array(Mt, hai,ba) II. Mng cc iu khin Trng hp dng mng ng vi cc iu khin trn Form (thng l cc TextBox) thun tin nht l dng mng cc iu khin. Mng cc iu khin l mt bin mng c bit m mi phn t ca mng ng vi mt iu khin. Khi to ra cc iu khin ny ta t tn trng nhau, tn ny ng vi tn ca mng; ch s trong thuc tnh Index khc nhau ng vi ch s ca phn t.

BI TP 5
Bi tp 5.1 Nhp vo ngy sinh ca bn, thng bo ngy ny ri vo th my (bng ting Vit).

Private Sub Command1_Click() Dim TenThu() TenThu = Array("Ch nht", "th hai", "th ba", "th t", "th nm", "th su", "th by") Dim ngay As Date, thu As Byte ngay = CDate(txtngay) thu = Weekday(ngay) If thu = 1 Then Lblkq.Caption = "Bn sinh vo " & TenThu(0) Else Lblkq.Caption = "Bn sinh vo " & TenThu(thu - 1) End If End Sub

Bi tp 5.2 Sinh ngu nhin 4 s nguyn dng trong on t 0 n 100. Sp xp cc s ny thnh mt dy s tng.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 14

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Option Explicit Const n As Byte = 4 Private Sub Command3_Click() Dim i As Integer, j As Integer Randomize For i = 0 To n - 1 txta(i).Text = Round(Rnd() * 100, 0) Next End Sub Private Sub Command1_Click() Dim i As Integer, j As Integer Dim tg As Integer For i = 0 To n - 2 For j = i + 1 To n - 1 If Val(txta(i).Text) > Val(txta(j).Text) Then tg = Val(txta(i).Text) txta(i).Text = txta(j).Text txta(j).Text = tg End If Next Next End Sub

BI 6. CHNG TRNH CON


I. Khi nim Phn loi Khi nim: Mt chc nng tng i c lp c s dng lp li nhiu ln c t chc thnh mt on m lnh c gi l chng trnh con (CTC). V d. Tm UCLN ca hai s nguyn c s dng trong quy ng mu s, ti gin phn s nn thng c thit k thnh mt chng trnh con. Phn loi: + Hm: CTC tnh ton tr v mt gi tr. + Th tc: CTC thc hin mt cng vic khng tr v gi tr no. Phm vi: + CTC vit trong Code ca Form no ch hot ng c cho Form . + CTC vit trong Modules s hot ng c trong ton Project (Chn Project/Add Modules, vit chng trnh con, khi lu mt Modules (n th) s to ra mt tp tin . Bas tng ng. Tp tin .Bas c th thm vo (Add) vo mt Project khc. Trong mt Modules c th cha nhiu CTC. II. Cu trc ca chng trnh con 1. Hm Function <Tn_hm> ([ds tham s]) As <kiu_kt_qu> Cc lnh
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 15

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Tn_hm = <gi tr> End Function + Tn hm: t t theo quy tc nh quy tc t tn bin. + ds tham s: l nhiu tham s khai bo nh danh sch bin. + <gi tr> l kt qu tr v ca hm. + Trong hm c th dng Exit Function thot khi hm V d: Hm tnh UCLN ca hai s nguyn
Function UCLN(a As Integer, b As Integer) As Integer Do While b <> 0 r = a Mod b a=b b=r Loop UCLN = a End Function

2. Th tc

Sub <Tn_th_tc> ([ds tham s]) Cc lnh End Sub

V d. Hon v gi tr ca hai bin


Sub hoanvi(a As Integer, b As Integer) Dim tg As Integer tg = a a=b b = tg End Sub

III. Truyn tham s cho chng trnh con Thng thng, CTC u c tham s. Gi CTC l thc hin chnh CTC vi nhng gi tr tham s thc s. Cch gi nh sau; + i vi th tc: Tn_th_tc [ds_tham_s_thc s]
V d Dim x as Integer, y as Integer x=1 y=2 Hoanvi x,y

+ i vi hm: Tn_hm([ds tham s thc s]) V d Ch : + Truyn theo tr v truyn theo bin: Xt on chng trnh sau:
x=3 y=7 z = UCLN(x, y) Text1.Text = x

UCLN(3,7)

Gi tr ca x sau cu lnh cui cng l bao nhiu. Cu tr li l 1. Bin x ny b thay i trong qu trnh tnh c chung ln nht ca x v y. y l iu khng nn. iu ny khng xy ra, ta sa li tiu ca hm ny nh sau:
Function UCLN(byval a As Integer, byval b As Integer) As Integer 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 16

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Truyn tham s x, y cho a,b lc ny l truyn theo tr (by value). Hot ng ca CTC s khng lm thay i gi tr ca bin x, y. Truyn tham s trong trng hp trc (tham s khi khai bo khng c t kho Byval hoc khai bo bng t kho ByRef) l truyn theo bin. Hot ng ca CTC s lm thay i gi tr ca bin x, y. V vy, nn hn ch vic truyn tham s theo bin v kh qun l nhng hiu ng xy ra khi CTC thc hin. + Khi truyn tham s CTC s kim tra cht ch kiu ca tham s v vy phi ch s ph hp gia kiu d liu ca tham s thc s v tham s hnh thc. Ch : Nhng chng trnh con c vit trong VB c th b sung vo cho cc c s d liu trong Access v dng nh mt hm chun trong Access. Xem hng dn bi tp 6.2.

BI TP 6
Bi tp 6.1 To ng dng hng dn cho hc sinh ph thng kim tra vic cng hai phn s.

Cc i tng chnh: txta, txtb, txtc, txtd, txta1, txtb1, txtc1, txtd1, txte1, txtf1, txtp, txtq; M lnh cho nt Quy ng mu s, cng:
Private Sub Command1_Click() Dim msc As Integer, a As Integer, b As Integer, c As Integer, d As Integer a = Val(txta.Text) b = Val(txtb.Text) c = Val(txtc.Text) d = Val(txtd.Text) msc = b * d \ ucln(b, d) Txta1.Text = a * msc \ b txtb1.Text = msc txtc1.Text = c * msc \ d txtd1.Text = msc txte1.Text = (Txta1.Text) + Val(txtc1.Text) txtf1.Text = msc End Sub

M lnh cho nt rt gn
Private Sub Command2_Click() Dim tg As Integer, e As Integer, f As Integer tg = ucln(Val(txte1.Text), Val(txtf1.Text)) e = Val(txte1.Text) \ tg f = Val(txtf1.Text) \ tg 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 17

Trung tm Tin hc 14-B Triu If (f = 1) Or (e = 0) Then txtp.Text = e Else txtp.Text = e txtq.Text = f End If End Sub Function UCLN(byval a As Integer, byval b As Integer) As Integer Do While b <> 0 r = a Mod b a=b b=r Loop UCLN = a End Function

Lp trnh Visual Basic

Cn thit phi c hm tnh UCLN c th ni trn vi tiu cho hm nh sau:

Bi tp 6.2 Vit hm tch tn trong chui h v tn. Thit k ng dng s dng hm ny nh sau:

i tng chnh txthoten, txtkq; nt lnh Tch tn Command1 Hm v m lnh:


Function Tachten(ByVal S As String) As String Dim i As Byte S = RTrim(S) i = Len(S) Do While Mid(S, i, 1) <> " " i=i-1 Loop Tachten = Mid(S, i + 1) End Function Private Sub Command1_Click() Txtkq.Text = Tachten(Txthoten.Text) End Sub

By gi ta s dng hm ny tch ring tn ca khch hng trong bng Nhap Xuat Vat Tu (tp tin QUANLY.MDB) thc hnh trong mn Access trc y: + M CSDL QUANLY.MDB trong Access + Chn Modules/New + Chp hm Tachten trong VB vo Modules ny, lu li + Trong Access, to Query ly d liu t bng Nhap Xuat Vat Tu c ct th nht l HoTenKH, ct th hai l TenKH, l mt biu thc dng hm Tachten([HoTenKH]). Tng t, bn c th vit hm i h tn khch hng thnh dng chun s dng cho bi tp s 2 (phn Form trong Access): khi nhp xong h v tn khch hng trn Form th t ng i thnh dng chun.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 18

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Bi tp 6.3 Tham kho hm c s thnh ch s dng trong cc ho n, phiu tnh tin sau y:

Function doc3so(n As Integer) As String Dim chu(1 To 9) As String chu(1) = "mt " chu(2) = "hai " chu(3) = "ba " chu(4) = "bn " chu(5) = "nm " chu(6) = "su " chu(7) = "by " chu(8) = "tm " chu(9) = "chn " Dim ht, hc, dv As Byte Dim s As String ht = n \ 100 dv = n Mod 10 hc = ((n - dv) \ 10) Mod 10 s = "" If ht > 0 Then s = chu(ht) + "trm " End If Select Case hc Case 0: If (ht > 0 And dv <> 0) Then s = s + "l " End If Case 1: s = s + "mi " Case Else s = s + chu(hc) + "mi " End Select Select Case dv Case 0: Case 1: If (hc = 0 or hc=1) Then s = s + "mt " Else s = s + "mt " End If Case 5: If hc = 0 Then s = s + "nm " Else s = s + "lm " End If Case Else 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 19

Trung tm Tin hc 14-B Triu s = s + chu(dv) End Select doc3so = s End Function Function docnso(n As Long) As String Dim t As String Dim s As String Dim s1 As String Dim i As Byte Dim j As Byte Dim n1 As Integer Dim ch(1 To 4) As String ch(1) = "" ch(2) = "ngn " ch(3) = "triu " ch(4) = "t " t = Trim(Str(n)) Do While (Len(t) Mod 3 <> 0) t = "0" + t Loop s = "" j=1 For i = Len(t) - 2 To 1 Step -3 s1 = Mid(t, i, 3) n1 = Val(s1) s = doc3so(n1) + ch(j) + s j=j+1 Next docnso = s End Function Private Sub Command1_Click() Dim n As Long Dim s As String n = Val(so.Text) s = docnso(n) kq = s End

Lp trnh Visual Basic

BI 7. LISTBOX, COMBOBOX, SCROLLBAR


I. LISTBOX ListBox l loi i tng iu khin cho php ngi dng chn mt s mc trong cc mc c lit k bi mt danh sch. Mt s thuc tnh c bn: + List: cha ni dung cc mc ca ListBox bng mt mng, mi phn t l mt chui c ni dung tng ng vi cc mc. Mng ny c nh ch s bt u t 0. Nh vy, ly mc th i ta dng <Tn ListBox>.<List>(i). Nhp danh sch: chn thuc tnh List, g ni dung, ctrl+Enter; kt thc bng Enter. + ListIndext: cho bit s th t ca ang chn (tnh t 0) + ListCount: cho bit s mc ca danh sch Mt s phng thc c bn (c dng khi vit m lnh) + AddItem: Thm mt mc Ni dung vo danh sch ti v tr i, theo c php
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 20

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

<Tn_ListBox>.<AddItem> <Ni dung> [i] + Remove: Xo mt mc th i khi danh sch, theo c php <Tn_ListBox>.<RemoveItem> <i> + Clear: Xo ton b danh sch, theo c php <Tn_ListBox>.<Clear> <i> V d. To mt ng dng chn cc mn hc. Xem bi tp 7.1 II. COMBOBOX Tng t nh ListBox nhng Combobox cho nhp thm d liu. Mt s thuc tnh c bn: Combobox c tt c nhng thuc tnh v phng thc ca ListBox, ngoi ra n c nhng thuc tnh, s kin c trng sau: + Text: thuc tnh ny cha ni dung ca mc c chn trn Combobox + Click: s kin xy ra khi ngi s dng nhp chut chn mt mc. + Change: s kin xy ra khi ngui dng nhp d liu hoc thay i ni dung ca Combobox V d: Xem bi tp 7.2 III. HSCROLLBAR, VSCROLLBAR Cc i tng ny cho php chn mt gi tr trong mt khong xc nh trc bng cc thanh cun ngang, thanh cun dc. Mt s thuc tnh: + Value: gi tr s hin thi, dng x l. + Min, Max: gi tr nh nht, ln nht ca khong. + SmallChange: bc nhy khi nhp chut vo u thanh cun + LargeChange: bc nhy khi nhp chut vo gia thanh cun V d: Xem bi tp 7.2, 7.3

BI TP 7
Bi tp 7.1 To ng dng chn cc mn hc theo giao din sau:

Cc i tng chnh: List1, List2, cc nt lnh


10A, 14 B Triu, Quy Nhn. 056-821483 Trang 21

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

M lnh cho nt >


Private Sub Command1_Click() Dim i As Byte i = List1.ListIndex If i >= 0 Then List2.AddItem List1.List(i) List1.RemoveItem i End If End Sub

M lnh cho nt >>


Private Sub Command2_Click() Dim i As Byte For i = 0 To List1.ListCount - 1 List2.AddItem List1.List(i) Next List1.Clear End Sub

Lc bt u, mc nhin chn mc u tin trong List1:


Private Sub Form_Load() List1.ListIndex = 0 End Sub

Cc nt lnh cn li cc bn t vit m lnh. Bi tp 7.2 To ng dng gm mt Combobox chn thng v mt HScrollBar chn mt nm t 2000 n 2020, chng trnh cho bit s ngy trong thng?

Cc i tng chnh: cmbThang, txtNam, HscNam, lblkq v hm tnh s ngy sau:


Function songay(t As Integer, n As Integer) As Integer Select Case t Case 1, 3, 5, 7, 8, 10, 12: songay = 31 Case 4, 6, 9, 11: songay = 30 Case 2: If (n Mod 400 = 0) Or (n Mod 4 = 0 And n Mod 100 <> 0) Then songay = 29 Else songay = 28 End If End Select End Function Private Sub Form_Load() Dim i As Byte For i = 0 To 11 CmbThang.List(i) = i + 1 Next CmbThang.ListIndex = 0 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 22

Trung tm Tin hc 14-B Triu HScNam.Min = 2000 HScNam.Max = 2020 HScNam.SmallChange = 1 End Sub

Lp trnh Visual Basic

Private Sub CmbThang_Click() lblkq = "Thng ny c " & songay(Val(CmbThang.Text), Val(txtnam.Text)) End Sub Private Sub HScNam_Change() txtnam.Text = HScNam.Value lblkq = " Thng ny c " & songay(Val(CmbThang.Text), Val(txtnam.Text)) End Sub

Bi tp 7.3 Mt mu no c to thnh do s pha trn 3 mu c bn Red, Green v Blue. Trong VB, hm RGB(x,y,z) tnh gi tr khi pha ba mu tng ng ni trn vi t l x, y, z. Xy dng mt ng dng xem mu mu khi pha bng cch thay i gi tr ca x,y,z bng cc VScrollBar.

Cc i tng chnh: Vscr1, Vscr2, Vscr3, txtkq Chun b cc gi tr


Private Sub Form_Load() VScr1.Min = 0 VScr1.Max = 255 VScr1.Value = 127 VScr2.Min = 0 VScr2.Max = 255 VScr2.Value = 127 VScr3.Min = 0 VScr3.Max = 255 VScr3.Value = 127 End Sub

X l khi dng thanh trt


Private Sub VScr1_Change() txtkq.BackColor = RGB(VScr1.Value, VScr2.Value, VScr3.Value) End Sub Private Sub VScr2_Change() txtkq.BackColor = RGB(VScr1.Value, VScr2.Value, VScr3.Value) End Sub Private Sub VScr3_Change() txtkq.BackColor = RGB(VScr1.Value, VScr2.Value, VScr3.Value) End Sub

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 23

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

BI 8. IMAGE, DRIVERLISTBOX, DIRLISTBOX, FILELISTBOX


I. IMAGE i tng cho php hin th cc tp tin nh. Mt s thuc tnh: + Picture: tn ca tp tin nh cn hin th + Stretch: quy nh c hay khng vic co gin cho va vi kch thc nh xc lp tp tin cn hin th: - t trc tip vo thuc tnh Image hoc - Dng lnh: <tn_tng>.Picture = LoadPicture(ng dn\tn tp tin nh) V d: Xem bi tp 8.1 II. FILELISTBOX L mt ListBox hin th danh sch cc tp tin ca th mc c chn, mc nhin l ca th mc hin hnh. Mt s thuc tnh c trng l: + Path: cha ng dn n th mc c chn trong FileListBox hay ni cch khc danh sch cy th mc c th hin trong FileListBox do tham s ny quy nh. + Pattern: qui nh dng ca tp tin c hin th. V d: Pattern=*.jpg; *.bmp + Filename: tn ca tp tin c chn (khng km theo ng dn) Chn mt tp tin l s kin Click III. DIRLISTBOX L mt ListBox dng hin th cu trc cy th mc ca a c chn (mc nhin l a hin hnh). Ngoi cc thuc tnh nh ca mt ListBox, n c thuc tnh c trng l: + Path: cha ng dn n th mc c chn trong DirListBox hay ni cch khc danh sch cy th mc c th hin trong DirListBox do tham s ny quy nh. Chn mt th mc l s kin Change IV. DRIVELISTBOX i tng ny l mt Combobox dng lit k cc a hin c trong my tnh. Mt s thuc tnh: + Drive: tn ca a c chn, mc nhin l a hin hnh (khi cha chn). + List: danh sch cc a trong my + ListIndex: s th t ca a c chn (tnh t 0,...)
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 24

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

+ ListCount: tng s cc a. Chn mt a l s kin Change V d. Xem bi tp 8.2

BI TP S 8
Bi tp 8.1 To ng dng xem nh cc lp hc ca TTTH 14-B Triu, khi nhp Load ln lt xem cc nh sau:

Cc i tng chnh: ImgAnh, command1, command2. Cc tp tin nh c tn trong chng trnh phi c sn trn a, c th dng tp tin khc thay th.
Dim n As Byte Private Sub Form_Load() n=0 End Sub Private Sub Command1_Click() If n < 3 Then n=n+1 Else n=1 End If Select Case n Case 1: ImgAnh.Picture = LoadPicture("C:\dsc00129.jpg") Case 2: ImgAnh.Picture = LoadPicture("C:\dsc00148.jpg") Case 3: ImgAnh.Picture = LoadPicture("C:\dsc00149.jpg") End Select End Sub Private Sub Command2_Click() ImgAnh.Picture = LoadPicture("") End End Sub

Bi tp 8.2 To mt ng dng cho php la chn tp tin nh trong mt th mc ca a no trong my v load tp tin nh ln form theo giao din nh sau:

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 25

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Cc i tng chnh Drive1, Dir1, File1, image1, txtkq


Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path File1.Pattern = "*.jpg;*.bmp" End Sub Private Sub File1_Click() Dim s As String s = Dir1.Path & "\" & File1.FileName Image1.Picture = LoadPicture(s) txtkq = s End Sub

BI 9. NG DNG C NHIU FORM, TO MENU


I. NG DNG C NHIU FORM. Mt ng dng c th cha nhiu Form, c th chuyn giao d liu t form ny qua form khc hoc ng form ny iu khin form kia. Cc thao tc thng gp bao gm: + Thm mt form vo ng dng: Project/Add Form; sau ta c th chn thm mt form mi (New) hoc thm mt form sn c (Existing). + Quy nh form c m u tin trong ng dng: Project/ Project properties; trong mc Startup Object chn tn form c m u tin. + M mt form khc (form2): dng <Tn_Form2>.Show + ng mt form khc: dng Unload <Tn_Form2> + Truy xut d liu ca form khc: <Tn_Form2>.<i_tng>.<thuc_tnh> V d. Xem bi tp 9.1 II. TO MENU Mt menu thng cha nhiu mc chn, mi mc chn l mt i tng c hai thnh phn c bn l Name v Caption. y, Name l thuc tnh quan trng hn, lin quan n m lnh; Caption n thun ch l thuc tnh xut hin ni dung ca mc chn khng lin quan n m lnh. V vy, khi thay i Name phi sa li m lnh cn thay i Caption th khng cn. Mt s thuc tnh khc: + Enabled: cho php chn (true) hay khng (false) mc ny trn menu. + Visible: cho php hin th hay khng mc ny trn menu. Phng thc duy nht cho mc chn l Click. Cch thit k menu: Menu c th c nhiu cp. T chc cc cp ca menu nh th no ph thuc lc thit k giao din cho menu. Thit k bng Menu Editor nh sau: + Tools/Menu Editor
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 26

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

+ Khai bo thuc tnh cho tng mc chn. Cc cp c thit k nh phn di ca bng:

V d. Xem bi tp 9.2

BI TP S 9
Bi tp 9.1 To ng dng gm hai form mi form c textbox nhp d liu. Form1 c chc nng ng, m form2. Form 2 c chc nng hon v gi tr nhp.

Cc i tng chnh: + Form1: text1, cc nt lnh Command1, Command2, Command3 ng vi m form2, ng form2 v thot. + Form2: text1, cc nt lnh Command1, Command2 ng vi hon v, ng form2. M lnh trn Form1
Private Sub Command1_Click() Form2.Show End Sub Private Sub Command2_Click() Unload Form2 End Sub Private Sub Command3_Click() Unload Me End Sub

M lnh trn Form2:


Private Sub Command1_Click() Dim tg As String tg = Form1.text1.Text Form1.text1.Text = Form2.text1.Text Form2.text1.Text = tg End Sub Private Sub Command2_Click() Unload Me End Sub 10A, 14 B Triu, Quy Nhn. 056-821483 Trang 27

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Bi tp 9.2 Thit k Menu trn form chn mu nn Blue, Red cho form; chn kch thc cho dng ch vn bn mu l 10,20 nh sau:

Dng Menu Editor thit k nh hnh v trong bi l thuyt. M lnh ( trong chng trnh c mt mc c Name l MnuRed, tn ny do ngi thit k t t)
Private Sub Menu10_Click() menu20.Enabled = True Menu10.Enabled = False txt1.FontSize = 10 End Sub Private Sub menu20_Click() menu20.Enabled = False Menu10.Enabled = True txt1.FontSize = 20 End Sub Private Sub menuBlue_Click() menuBlue.Enabled = False MnuRed.Enabled = True Form1.BackColor = vbBlue End Sub Private Sub MnuRed_Click() MnuRed.Enabled = False menuBlue.Enabled = True Form1.BackColor = vbRed End Sub Private Sub MenuExit_Click() End End Sub

BI 10. I TNG IU KHIN ADO


I. B sung iu khin ADO vo hp cng c. ADO (ActiveX Data Object) l iu khin dng kt ni gia mt form trong VB vi mt c s d liu. ADO cung cp cc chc nng duyt qua cc mu tin v truy xut d liu trn c s d liu. Thm i tng ADO hay y l ADODC (ADO Data Control) vo hp cng c: Project/Components/Microsoft ADO Data Control 6.0

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 28

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Kt qu: xut hin biu tng adodc trong hp cng c. Chn cng c ny v v ln form ta s c i tng ADODC trn form. II. Cc thuc tnh c bn ca ADODC. 1. Thuc tnh ConnectionString: quy nh kt ni CSDL vi i tng ADODC vi hai thng tin quan trng gm: kiu kt ni v CSDL c kt ni, xc lp qua cc bc sau: + Kch chut vo thuc tnh ConnectionString, xut hin hp thoi Property Page. + Chn Build...(H.1) + Chn Microsoft Jet 4.0 OLE DB Provider kt ni vi CSDL trong Access 2002 (H.2) + Chn tp tin .mdb cn kt ni (H.3) Kt qu: Dng Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\My Documents\nhanvien.mdb;Persist Security Info=False xut hin trong Use Connection String nu kt ni vi tp tin nhanvien.mdb. 2. Thuc tnh RecordSource: quy nh c th Table, Query ca tp tin .mdb (hoc cu lnh SQL) s dng ly d liu.

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 29

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

H.1

H.2

H.3

H.4

+ Chn RecordSource trong ca s property, xut hin Property Page (H.4) + Chn 2-adCmdTable d liu l Table hoc Query trong Access (chn 1adCmdText d liu ly bng mt cu lnh Sql). + Chn tn Table cn kt ni. III. Truy xut d liu Xong mc II, chng ta qui nh vic kt ni d liu n mt Table hay mt Query c th ca mt tp tin .mdb, cng vic tip theo l truy xut d liu n tng trng trn Table (query) ny. n gin nht l dng cc i tng iu khin bit nh Textbox,...lin kt vi cc trng. To Textbox v qui nh hai thuc tnh sau ca Textbox: + Thuc tnh DataSource: chn ADODC ng vi tp .mdb cung cp d liu + Thuc tnh DataField: chn trng truy xut d liu. V d. Xem bi tp 10.1 IV. Mt s phng thc v s kin ca ADODC + Refresh: cp nht ngay nhng thuc tnh ca ADODC. Cc phng thc sau y thuc thnh phn RecordSet ca ADODC: + Tn_ADODC.RecordSet.MoveFirst: chuyn n mu tin u tin. + Tn_ADODC.RecordSet.MoveLast: chuyn n mu tin cui cng. + Tn_ADODC.RecordSet.MoveNext: chuyn n mu tin k tip. + Tn_ADODC.RecordSet.MovePrevious: chuyn n mu tin pha trc. + Tn_ADODC.RecordSet.Bof: kim tra mu tin hin hnh c l mu tin u tin hay khng, nu c th tr v gi tr true v ngc li. + Tn_ADODC.RecordSet.Eof: kim tra mu tin hin hnh c l mu tin cui cng hay khng, nu c th tr v gi tr true v ngc li. + Tn_ADODC.RecordSet.RecordCount: cho bit tng s mu tin.
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 30

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

+ Tn_ADODC.RecordSet.AbsolutePosition: chi bit v tr hin ti ca mu tin hin hnh. + Tn_ADODC.RecordSet.AddNew: thm mu tin trng vo bng + Tn_ADODC.RecordSet.Update: Cp nht d liu vo bng. + Tn_ADODC.RecordSet.Delete: Xo mu tin hin hnh. Cc s kin sau y thng dng khi lp trnh: + Tn_ADODC.RecordSet.MoveComplete: xy ra khi mt mu tin no tr thnh mu tin hin hnh (sau khi thc hin cc phng thc di chuyn mu tin hin hnh) + Tn_ADODC.RecordSet.WillChangeRecord: xy ra trc khi di chuyn mu tin hin hnh hoc Update d liu (thng dng kim tra tnh hp l ca d liu trc khi cp nht hoc thc hin mt thao tc khc) + Tn_ADODC.RecordSet.RecordChangeComplete: xy ra sau khi mt mu tin no hon tt vic thay i d liu trong CSDL (dng thay i giao din lin quan n mu tin mi, cp nht thng tin va thay i trong CSDL ln form) V d. Xem bi tp 10.2

BI TP S 10
Bi tp 10.1 M bng Nhn vin trong bi tp mn Access, thm vo vng MaPhong. To thm bng DMPhong nh sau: Maphong HC KD TV Tenphong Hnh chnh Kinh doanh Ti v

To ng dng lin kt xem thng tin trong bng Danh mc phng theo giao din nh sau:

Hng dn: Thc hin cc bc nh trong bi hc. Sau to Form v cc i tng chnh: txtmaphong, txttenphong lin kt vi cc trng m phng, tn phng ca bng. Bi tp 10.2 To ng dng thc hin cc thao tc trn bng nhn vin nh gi trn form sau y:

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 31

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Cc i tng chnh: + adodc1 lin kt vi bng nhn vin, thuc tnh Visible bng false. + txtho, txtten, txtngsinh, chkgioitinh, cmbmaphong ly d liu ti cc trng tng ng vi tn ca cc i tng. + Cc nt lnh CmdDau, CmdCuoi, CmdTruoc, CmdSau, CmdThem, CmdLuu, CmdXoa, CmdThoat; cc nt ny ng vi cc Command1, command2,... M lnh c th cho cc nt:
Private Sub Command1_Click() Adodc1.Recordset.MoveFirst End Sub Private Sub Command2_Click() Adodc1.Recordset.MoveLast End Sub Private Sub Command3_Click() If Not Adodc1.Recordset.BOF() Then Adodc1.Recordset.MovePrevious Else Adodc1.Recordset.MoveLast End If End Sub Private Sub Command4_Click() If Not Adodc1.Recordset.EOF() Then Adodc1.Recordset.MoveNext Else Adodc1.Recordset.MoveFirst End If End Sub Private Sub Command5_Click() Adodc1.Recordset.AddNew txtho.SetFocus End Sub Private Sub Command6_Click() Adodc1.Recordset.Update End Sub Private Sub Command7_Click() Adodc1.Recordset.Delete Adodc1.Recordset.MoveNext End Sub

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 32

Trung tm Tin hc 14-B Triu Lp trnh Visual Basic Private Sub Adodc1_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) Adodc1.Caption = "H s th " & Adodc1.Recordset.AbsolutePosition & "/" & Adodc1.Recordset.RecordCount End Sub

BI 11. MT S H TR KHC CHO QUN TR CSDL


I. DATAGRID iu khin ny dng th hin d liu ca cc mu tin cng lc di dng bng. Cc thuc tnh c bn: + DataSource: quy nh ngun d liu ly t ADODC no. + AllowAddNew: cho php (true) hay khng (false) c thm mu tin t DataGrid + AllowDelete: cho php (true) hay khng (false) c xo mu tin. + AllowUpdate: cho php (true) hay khng (false) c sa i d liu cho mu tin t DataGrid. Thao tc: khng c sn trn ToolBox, ta phi thm vo bng dy thao tc sau + Project/Components/Microsoft DataGrid Control 6.0 + Chn v v mt DataGrid ln form, trc trn form phi xc lp mt ADODC lin kt vi mt CSDL + Xc lp thuc tnh DataSource + Thm tn cc trng: chut phi ln DataGrid chn Retrieve Fields + Sa i: chut phi ln DataGrid chn Edit + Nhng chi tit khc c th thay i bng cch chut phi ln DataGrid chn Properties. V d. Xem bi tp 11.1 II. Ly d liu thng qua cu lnh SQL 1. Khi nim, c php: SQL (Structured Query Language) l ngn ng nh ngha v thao tc d liu trong a s h QTCSDL. SQL c chc nng rt rng, tuy nhin trong khun kh ca gio trnh ny chng ta ch quan tm n kh nng chn lc rt ra d liu tho mn mt s iu kin. C php. SELECT <ds trng> FROM < bng> [WHERE <iu kin>] Cho php ly d liu gm cc <ds trng> ca cc mu tin t <bng> vi iu kin cc mu tin ny tho mn <iu kin> Nu cn ly ht tt c cc trng th thay <ds trng> bng du * V d: SELECT * FROM nhanvien WHERE maphong = TV
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 33

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Ch : + Trng c th thay bng biu thc dng <biu thc> [As <Tn>] V d. SELECT ho, ten, luong*0.05 As BaoHiem FROM nhanvien + Ngoi cc php ton thng dng nh >,<,>=,<=,=,<>; cc php ton logic AND, OR, NOT trong iu kin ngi ta thng dng BETWEEN, LIKE c c php ging nh trong Access. rng du % l k t i din thay th cho mt nhm k t ti v tr ca n. V d: Ten LIKE % n chn nhng ngi c k t cui trong tn l n. 2. Quy nh d liu ly qua SQL Thay v ly trc tip d liu t bng, linh hot hn trong trng hp cn lc d liu chng ta ly d liu thng qua cu lnh SQL. Cch 1: Kch chut phi ln ADODC chn Properties, t Command Type l 1adCmdText, cu lnh SQL c g vo nh hnh v.

Cch 2: Quy nh hai thng tin trn bng m lnh V d:


Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from nhanvien where maphong="&TV &

Ch du nhy n v nhy kp trong cch vit ="& "TV" & " " Cu lnh SQL l mt chui, v vy kh linh hot c th biu din iu kin phc tp. Xem bi tp 11.3

BI TP S 11
Bi tp 11.1 To mt ng dng lit k danh sch cc phng trong tp tin danh mc phng dng bng nh sau: Hng dn: Ln lt thc hin cc thao tc nh trong phn l thuyt

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 34

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Bi tp 11.2 To ng dng lit k danh sch nhn vin trong tp tin nhn vin dng bng theo mu sau: Khi chy chng trnh nhp m phng, ch xut hin cc nhn vin trong phng cn xem.

Cc i tng chnh: + Adodc1 lin kt vi bng nhn vin nh bi tp 11.1 + To mt DataGrid1 hin th cc trng ca bng nhn vin + To txtdk nhp m phng cn xem + Nt lnh xem ng vi Command1 v m lnh sau:
Private Sub Command1_Click() Adodc1.CommandType = adCmdText Adodc1.RecordSource = "select * from nhanvien where maphong LIKE '" & "%" & txtdk.Text & "'" Adodc1.Refresh End Sub Private Sub Form_Load() Form1.Show txtdk.SetFocus End Sub

Bi tp 11.3 To ng dng tm kim nhn vin theo iu kin. iu kin g vo no th kt hp tm nhn vin tho cc iu kin . Cc i tng chnh: + Adodc1 lin kt vi bng nhn vin nh bi tp 11.1 + To mt DataGrid1 hin th cc trng ca bng nhn vin + To txtmaphong nhp m phng cn xem + To txttuoi1 nhp tui + Nt lnh Tm ng vi Command1 v m lnh sau:
10A, 14 B Triu, Quy Nhn. 056-821483 Trang 35

Trung tm Tin hc 14-B Triu

Lp trnh Visual Basic

Private Sub Command1_Click() Dim dk As String, dk1 As String, dk2 As String, sql As String dk = "" Adodc1.CommandType = adCmdText dk1 = "maphong = '" & txtmaphong.Text & "'" dk2 = " year(date())-year(ngaysinh)>='" & Val(txttuoi1.Text) & "'" dk = dk1 & " and " & dk2 sql = "select * from nhanvien where " & dk Adodc1.RecordSource = sql Adodc1.Refresh End Sub Private Sub Form_Load() Form1.Show txtmaphong.SetFocus End Sub

Tng t nh vy, cc bn c th b sung thm cc iu kin khc. Cng c ca Microsoft Visual Studio cho php to mt b ci t hon chnh cho mt ng dng tu . Vo Start/Programs/ Microsoft Visual Studio 6.0/ Microsoft Visual Studio 6.0 Tools/ Package and Deployment Wizard v lm theo hng dn.

TI LIU THAM KHO


1. Gio trnh Lp trnh Visual Basic, TS. Trn Thin Thnh, H Quy Nhn. 2. Gio trnh Lp trnh ng dng Visual Basic, ng Th Khoa, HQG TP HCM 3. Gio trnh in t ca B GD-T http://ebook.edu.net.vn

10A, 14 B Triu, Quy Nhn. 056-821483

Trang 36

You might also like