Lệnh rẽ nhánh IF...THEN...END IF

Một phần của tài liệu Bài giảng MS access 2010 (Trang 266 - 277)

2014 Medium Date Ngày – tháng – năm 15-03-2014

3. Sử dụng Sub Report 6.2.1 Sử dụng Total Query

8.5 Một số lệnh về lập trình

8.5.3 Lệnh rẽ nhánh IF...THEN...END IF

If <Bi u th c đi u ki n> Then <Nhóm l nh 1>

Else

<Nhóm l nh 2> End If

267

Ví dụ 1: Ta sửa lại thủ tục XemTuoi() để gặp trường hợp nào máy cũng trả lời:

Sub XemTuoi() Dim tuoi As Integer

tuoi=InputBox(“ Vao tuoi cua ban?”) If tuoi>60 Then

MsgBox(“Chắc bạn nghỉ hưu rồi?”) Else

MsgBox(“Bạn chưa đến tuổi nghỉ hưu!” ) End If

End Sub

Ví dụ 2: Lập trình giải phương trình bậc hai:ax2+bx+c=0

Để tính nghiệm phương trình bậc hai này, bạn phải cho máy biết ba giá trị cụ thể ứng với a, b, c (ở đây kiểu 3 biến ấy là thực, rõ ràng bạn phải dùng lện InputBox).

Nhờ giá trị cụ thể 3 biến đó bạn tính được Delta, sau đó bạn phải xem xét nếu (If) Delta không âm thì có 2 nghiệm, nếu âm thì vô nghiệm. Trình tự đó (giải thuật) được liệt kê như sau:

8.5.3 Lệnh rẽ nhánh IF...THEN...END IF

268

Sub GPTB2()

Dim a As Double, b As Double, c As Double, Delta As Double Dim x1 As Double, x2 As Double

a= InputBox(“vao a=”) b= InputBox(“vao b=”) c= InputBox(“vao c=”) Delta= b*b - 4*a*c If Delta>0 Then

x1=(-b+Sqr(Delta))/(2*a) x2=(-b-Sqr(Delta))/(2*a) MsgBox (“x1=” & Str(x1)) MsgBox (“x2=” & Str(x2)) Else

MsgBox (“Pt vo nghiem”) End If

End Sub

8.5.3 Lệnh rẽ nhánh IF...THEN...END IF

269

Không phải lúc nào cũng “không thế này thì thế kia” (2 nhánh) mà có những trường hợp bạn phải chọn 1 trong nhiều nhánh, ví dụ: Giả sử bằng tốt nghiệp của bạn có 3 loại: Trung bình, Khá và Giỏi. Nếu khá thì được thưởng 100.000đ, nếu giỏi được thưởng 200.000đ, còn trung bình thì không được thưởng.

Chương trình như sau:

Sub XetThuong()

Dim Loai As Integer

Loai=InputBox(“Vào loại: Trung bình gõ vào số1, Khá số2, Giỏi số3”) Select Loai

Case 1

MsgBox(“Bạn không được thưởng”) Case 2

MsgBox(“Bạn được thưởng 100.000đ”) Case Else

MsgBox(“Bạn được thưởng 200.000đ”) End Select

End Sub

8.5.4 Lệnh chọn Select...Case

270

Khi chạy chương trình, nếu bạn gõ vào số 3 thì máy sẽ in dòng:” Bạn được thưởng 200.000đ”. Nhưng nếu bạn không may gõ nhầm số 6 (gõ nhầm là bình thường mà!) thì máy vẫn thưởng bạn 200.000đ, mặc dù không có loại nào là loại 6 cả. Để an toàn bạn sửa lại đoan mã trên như sau:

Sub XetThuong()

Dim Loai As Integer

Loai=InputBox(“Vào loại: Trung bình gõ vào số1, Khá số2, Giỏi số3”) Select Loai

Case 1

MsgBox(“Bạn không được thưởng”) Case 2

MsgBox(“Bạn được thưởng 100.000đ”) Case 3

MsgBox(“Bạn được thưởng 200.000đ”) Case Else

MsgBox(“Bạn gõ nhầm loại bằng rồi!”) End Select

End Sub

8.5.4 Lệnh chọn Select...Case

271

Cú pháp tổng quát của lệnh Select như sau:

Nếu <Giá trị i > bằng i thì thực hiện <Nhóm lệnh i> và kết thúc lệnh Select Case.

Còn nếu không có 1 trường hợp nào đúng thì hực hiện <Nhóm lệnh n+1> và cũng kết thúc luôn lệnh Select Case hoặc ra khỏi Select Case nếu không dùng lệnh Case Else..

8.5.4 Lệnh chọn Select...Case

Select Case <Bi u th c nguyên> Case <Giá tr 1>

<Nhóm l nh 1> Case <Giá tr 2> <Nhóm l nh 2> ………..

Case <Giá tr n> <Nhóm l nh n> [Case Else

<Nhóm l nh n+1>] End Select

272

Ví dụ: Tạo một thủ tục lập kế hoạch công tác trong tuần, đặt vào nút lệnh Command() trên Form. Khi chạy chương trình và kích hoạt nút lệnh thủ tục được thực hiện:

Private Sub command0_Click() Dim Thu As Integer

Thu = InputBox(“Bạn cho biết thứ? ”) Select Case Thu

Case 2

MsgBox (“Họp giao ban”) Case 3

MsgBox (“Đi xuống phân xưởng”) Case 4

MsgBox (“Đi lên tổng công ty”) Case 5 Or 6

MsgBox (“Họp các phân xưởng”) Case Else

MsgBox (“Nghỉ”) End Select

End Sub

8.5.4 Lệnh chọn Select...Case

273

Lệnh For có cú pháp tổng quát như sau:

Ban đầu <Biến đếm> nhận <Giá trị đầu>, và so sánh với <Giá trị cuối>, nếu lớn hơn thì kết thúc For, nếu nhỏ hơn hoặc bằng thì thực hiện <Nhóm lệnh>, gặp Next, <Biến đếm> cộng thêm với <Bước tăng>, và đồng thời so sánh với <Giá trị cuối>, nếu lơn hơn thì kết thúc For, còn nếu đang nhỏ hơn hoặc bằng thì lại thực hiện <Nhóm lệnh>, gặp Next lại làm tiếp như trên.

8.5.5 Lệnh lặp For...Next

For <Bi n đ m>=<Giá tr đ u> To <Giá tr cu i>[Step <Bế ế ị ầ ước tăng>]

<Nhóm l nh> Next

274

Ví dụ: Tính tổng s=11+22+33+...+1010 .

Sub Tong()

Dim s As Double, i As Integer For i = 1 To 10 Step 1

s = s + i^i Next

MsgBox “Kết quả là:” & Str(s) End Sub

8.5.5 Lệnh lặp For...Next

275

Dạng tổng quát như sau:

Chừng nào <Điều kiện> còn đúng thì thực hiện <Nhóm lệnh>

Khi <Điều kiện> sai thì ra thì thoát khỏi vòng lặp và thực hiện nhóm lệnh sau Loop . Ví dụ:

Sub Tong()

Dim s As Double, a As Double, i As Integer i= 1

a=1/i s= 0

Do While a>=0.0001 s= s+a

i= i+1 a=1/i Loop

MsgBox (“Kết quả:”) & Str(s) End Sub

8.5.6 Lệnh Do while... Loop

Do While <Đi u ki n> <Nhóm l nh> Loop

276

Dạng tổng quát như sau:

Chừng nào <Điều kiện> vẫn còn sai thì thực hiện <Nhóm lệnh>.

Ví dụ trên ta viết lại theo lệnh này:

Sub Tong()

Dim s As Double, a As Double, i As Integer i= 1

a=1/i s= 0

Do Until a< 0.0001 s= s+a

i= i+1 a=1/i Loop

MsgBox (“Kết quả:”) & Str(s) End Sub

Khi <Điều kiện> đúng thì ra khỏi vòng lặp và thực hiện nhóm lệnh sau Loop.

8.5.7 Lệnh Do Until... Loop

Do Until <Đi u ki n>

<Nhóm l nh> Loop

277

Trong Access có một số đối tượng mà bạn cần quan tâm:

Đối tượng DBEngine: chứa đối tượng Workspaces (vùng làm việc)

Đối tượng Workspaces: chứa nhiều vùng làm việc, mỗi vùng chứa một Database.

Đối tượng Database: chứa CSDL

Đối tượng RecordSets: chứa các đối tượng trong CSDL

Đối tượng Tabledefs: chứa các bảng của một CSDL

Đối tượng Querydefs: chứa các truy vấn của một CSDL

Đối tượng Field: chứa các trường trong bảng

Đối tượng Form: chứa các Form

v.v..

Một phần của tài liệu Bài giảng MS access 2010 (Trang 266 - 277)

Tải bản đầy đủ (PPTX)

(293 trang)