1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Microsoft Access 2010 - Chương 8: Module – Lập trình trong Access

51 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 8: Module – Lập trình trong Access
Trường học Trường Đại Học Kinh Doanh Và Công Nghệ Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài giảng
Thành phố Hà Nội
Định dạng
Số trang 51
Dung lượng 788,06 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong lĩnh vực Công Nghệ Thông Tin nói riêng, yêu cầu quan trọng nhất của người học đó chính là thực hành. Có thực hành thì người học mới có thể tự mình lĩnh hội và hiểu biết sâu sắc với lý thuyết. Với ngành mạng máy tính, nhu cầu thực hành được đặt lên hàng đầu. Tuy nhiên, trong điều kiện còn thiếu thốn về trang bị như hiện nay, người học đặc biệt là sinh viên ít có điều kiện thực hành. Đặc biệt là với các thiết bị đắt tiền như Router, Switch chuyên dụng

Trang 1

KHOA CÔNG NGHỆ THÔNG TIN

MICROSOFT ACCESS 2010

Trang 2

TRƯỜNG ĐẠI HỌC KINH DOANH VÀ CÔNG NGHỆ HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

Module – Lập trình trong Access

Chương 8

Tổ chức, hoạt động chương trình trong Access

Thủ tục đáp ứng sự kiện Tạo và thực hiện thủ tục và hàm Các phép toán, hàm, biến, biểu thức Một số lệnh về lập trình

Trang 3

Chương trình con có hai dạng: Thủ tục hoặc hàm Mỗi chương trình con là

một dãy các lệnh để thực hiện một công việc nào đó Một chương trình có thể có rất nhiều chương trình con

a Chương trình con dạng thủ tục: Bao gồm các thành phần: Đầu thủ

Trang 4

b Chương trình con dạng hàm (Funtion)

 Cũng như thủ tục, hàm cũng có cấu trúc ba phần: Đầu hàm, thân hàm

và kết thúc hàm Dạng tổng quát như sau:

8.1 Tổ chức và hoạt động của chương trình trong Access

[Private] Function <Tên hàm> [(<Danh sách các đối số)>]

oChọn Create chọn New chọn Macro & code , sau đó cửa sổ để bạn

soạn thảo chương trình (hay còn gọi là cửa sổ Code) hiện ra như sau:

Trang 5

Bước 2: Bạn gõ vào cửa sổ Code các lệnh (bạn cứ gõ rồi sau sẽ hiểu

lệnh đó là gì?) như hình sau:

Bước 3: Chạy chương trình: Chọn Run/Run Sub Sau khi chạy chương

trình, kết quả như hình sau:

Giải thích:

Lệnh MsgBox(“Chao ban da den voi lap trinh Access”) sẽ đưa ra một thông báo

như hình trên Ta có thể gọi đây là lệnh hiển thị dữ liệu cũng được Khi đưa ra kết

quả trên chương trình tạm dừng và nếu bạn chọn OK thì chương trình sẽ chạy tiếp và thực hiện lệnh sau lệnh MsgBox( ).

Trang 6

Ví dụ 2: Vào 2 số nguyên, tính tổng và hiển thị tổng của hai số đó.

oBạn gõ vào cửa sổ Code như hình sau:

oKhi chạy chương trình, máy yêu cầu bạn gõ từ bàn phím giá trị a như

giao diện sau:

8.1 Tổ chức và hoạt động của chương trình trong Access

Trang 7

Đến đây nếu bạn gõ vào số 5 và chọn OK (Hay ấn Enter) thì số nguyên 5

sẽ lưu vào biến a Máy lại đưa ra giao diện:

Và nếu bạn gõ vào số 4 và chọn OK thì máy sẽ lưu số nguyên 4 vào biến

b Tiếp tục máy sẽ tính tổng và đưa kết quả là 9 như hình sau:

Trang 8

Giải thích:

Lệnh: Dim a As Integer

o Nghĩa là: Biến (Dim) a là (As) nguyên (Integer) Bạn khai báo biến a là nguyên ,

để máy sử dụng ô nhớ tương ứng với số nguyên mà!, tất nhiên nếu là số thực

thì ô nhớ phải lớn hơn, v.v lý do khai báo là vậy

Lệnh: a = InputBox("Moi ban go vao so a? ")

o Nghĩa là: Hộp nhập liệu (InputBox) ra thông báo: "Moi ban go vao so a? “ Nếu bạn gõ vào một số thì số đó được lưu vào biến a

Lệnh: s = a + b

o Đây là lệnh “gán”, nghĩa là máy sẽ lấy nội dụng biến a (bạn vừa gõ vào 5), cộng với nội dung của biến b (bạn vừa gõ vào 4), kết quả sẽ là 9, “gán” kết quả này cho biến s (gọi lệnh “gán” là như vậy).

Lệnh: MsgBox "Tong 2 so la: " & Str(s)

o Đây là lệnh hiển thị dữ liệu, nhưng dữ liệu thì phải đồng nhất, ở đây: "Tong 2 so la: "(là dữ liệu văn bản) còn nội dung của biến s là một số nguyên Để ghép

8.1 Tổ chức và hoạt động của chương trình trong

Access

Trang 9

Mở đối tượng form hoặc report ở chế độ design.

Click phải trên control muốn gán module → chọn properties.

Chọn tab event → chọn event thích hợp → Click nút biểu tượng

Xuất hiện cửa sổ Choose Builder

Chọn lệnh Code Builder → OK.

Xuất hiện cửa sổ soạn thảo module với nội mặc định

Bạn chọn Event và cuốn để tìm sự kiện mình cần

Trang 10

Ví dụ: Tạo thủ tục để mở bảng có tên SO_LUONG khi ta kích vào vùng

tiêu đề đầu trang Form Ta thao tác như sau:

Chọn Create vào tap Form chon Form Design

Kích vào thanh FormHeader để bật cửa sổ chứa các thủ tục đáp ứng sự

8.2 Thủ tục đáp ứng sự kiện với form, report

Trang 11

Kích vào ô bên phải ứng với dòng On Click, kích mũi tên xuống để chọn

[Event Procedure], kích tiếp vao nút ba chấm bên phải , Sau đó thủ tục đáp ứng sự kiện hiện ra:

Trang 12

Sự kiện Click ở các vùng còn lại thiết kế tương tự

8.2 Thủ tục đáp ứng sự kiện với form, report

Trang 13

a Taọ thủ tục, hàm trong Macro & Code Tab.

o Bước 1: Create chọn Tab Macro & Code chọn Module

o Bước 2: Khai báo và tạo lập thủ tục hoặc hàm

o Bước 3: Ghi Module

Ví dụ: Vào tuổi của hai người, tính tuổi trung bình của họ.

Function Tong()

Dim T1 As Interger

Dim T2 As Interger

Dim TB As Single

T1 = InputBox(“vào tuoi cua nguoi thu nhat?”)

T2 = InputBox(“vào tuoi cua nguoi thu hai?”)

Trang 14

b Tạo thủ tục đáp ứng sự kiên của các điều khiển trên Form.

Trên Form ta có thể đặt các điều khiển như nút lệnh chẳng hạn, nút lệnh này cũng có các sự kiện Các bước tiến hành:

Bước 1: Mở Form và bổ sung một đối tượng lên Form, giả sử nút lệnh

(Button) chẳng hạn

Bước 2: Mở cửa sổ Code:

oChọn nút lệnh, kích phải chuột chọn Build event , sau đó hộp thoại

Code Builder hiện ra:

8.3 Tạo và thực hiện thủ tục và hàm

Trang 15

Chọn Code Builder và chọn OK, một thủ tục sự kiện xuất hiện:

Soạn thủ tục hoặc hàm đáp ứng sự kiện

Ghi lại thủ tục đó và chạy thử

Trang 17

Khi chạy, thủ tục GOI() yêu cầu thủ tục MoBang() làm việc, thủ tục

MoBang() làm việc xong lại quay về thủ tục GOI() và thực hiện tiếp lệnh sau đó (tức là lệnh gọi thủ tục Tong) Cứ như thế cho đến khi tất cả các lệnh trong thủ tục GOI() được hoàn tất Ba thủ tục đó nằm trong một đoạn

mã (chương trình) như sau:

Trang 18

a. Các phép toán số học

b. Các phép toán so sánh:

c. Các phép toán Logic: AND, OR, NOT: Các phép toán so sánh tạo nên biểu

thức logic cho kết quả True(-1) hoặc False(0)

d. Phép ghép chuỗi ký tự: Muốn ghép 2 chuỗi ký tự ta sử sụng phép toán &

Mod : Chia lấy phần dư

<= : Nhỏ hơn hoặc bằng

<> : khác

X Y X And

Y X Or Y Not (x) -1

-1 0 0

-1 0 0 0

-1 -1 -1 0

-1 -1 -1 0

0 0 -1 -1

Trang 19

Khai báo biến:

Biến phải khai báo để chương trình xác định:

Tên của biến là gì? vì chương trình sẽ làm việc với tên đó

Kiểu của biến là gì? (nguyên, thực, logic, văn bản, v.v ) vì chương trình phải “xếp chỗ” cho các biến “lưu trú”, nghĩa là chương trình phải huy động ô nhớ phù hợp với kiểu của biến, ví dụ nếu biến nguyên thì ô nhớ

“bé”, số thực thì ô nhớ “to”, v.v Việc khai báo là để xếp chỗ ở của biến (ô nhớ) cho hợp lý, tránh lãng phí (thừa không gian “lưu trú” hoặc không

đủ chỗ để “lưu trú”)

Dạng khai báo biến như sau:

Dim <Tên biến> [As<kiểu>]

<Tên biến>: Bạn tự đặt theo luật sau: là một chuỗi các chữ cái, chữ số, dấu

gạch chân, độ dài tên không quá 40 ký tự, không được trùng với các từ khoá có trong Access và đặc biệt ký tự đầu phải là chữ cái

[As<kiểu>]: Nếu phần này không ghi thì coi như biến đó ngầm định có các kiểu:

Kiểu số, chuỗi, Date/Time, Null (rỗng) Khi sử dụng biến đó tuỳ ngữ cảnh mà xác định kiểu sau Còn nếu ghi phần này thì kiểu có thể là: Nguyên, thực, văn bản, v.v

Ví dụ về khai báo biến: Dim i As Interger (i là biến nguyên ngắn)

Trang 20

oBiểu thức chỉ chứa hằng: (234+678)/13

oBiểu thức số chỉ chứa biến: (a+b+c)*(a+b)

oBiểu thức số vừa chứa biến và hằng: (a+b)/7

oBiểu thức văn bản: “Tin hoc” & “Văn phong”

8.4 Các phép toán, hàm, biến, biểu thức

Trang 21

Khi lập trình trong Access, 1 câu lệnh chỉ được viết trên 1 dòng, nếu muốn viết nhiều câu lệnh trên 1 dòng ta phải dùng dấu hai chấm(:) để ngăn cách.

Ví dụ: a=4: b=7: s=a+b

 Các câu ghi chú, có ý nghĩa giải thích rõ chức năng từng hằng, biến, biểu thức, câu lệnh, v.v Câu ghi chú phải bắt đầu bằng REM hoặc dấu nháy đơn (‘), ví dụ:

Rem Doan ma sau là de vao du lieu

Trang 23

Chức năng: Cho phép nhập giá trị kiểu Varial vào từ bàn phím

Cú pháp:

InputBox(<Thông báo>[ , [<Tiêu đề>][,<Giá trị ngầm định>]])

Ví dụ:Nhập số chứng từ của một hoá đơn vào biến Sct

Dim Sct

Sct=InputBox(“Số chứng từ”)

c Lệnh MsgBox

Chức năng: Hiện chuỗi văn bản (thông báo) ra hộp thoại.

Cú pháp: MsgBox(<Nội dung>[ ,<kiểu>[ ,<Tiêu đề>]])

Ví dụ: MsgBox (“Hello Thao”)

Ví dụ 2: Nhập và tính tổng hai số và in kết quả ra hộp thoại

Trang 24

Như đã nói qua ở phần đầu lập trình, lệnh gán có dạng:

<Biến>=<Biểu thức>

Ví dụ: s=s+i

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

Dạng 1:

Hoạt động của lệnh này như sau:

Nếu<Biểu thức điều kiện> đúng thì thực hiện <Nhóm lệnh> Nếu<Biểu thức điều kiện> sai thì bỏ qua lệnh If.

Ví dụ:

Sub XemTuoi()

Dim tuoi As Integer

tuoi=InputBox(“ Vao tuoi cua ban?”)

Trang 25

Khi chạy chương trình:

oNếu bạn gõ vào 65 (lơn hơn 60) và Enter thì máy sẽ in ra câu: “Chắc bạn nghỉ hưu rồi”

oCòn nếu bạn gõ vào 25 (nhỏ hơn 60) và Enter thì máy không đưa ra

Trang 26

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?”)

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 đó

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

Trang 28

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”)

Trang 29

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”)

Trang 30

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

End Select

Trang 31

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”)

Trang 32

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.

Trang 34

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 .

Do While a>=0.0001

s= s+a i= i+1 a=1/i

Trang 35

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.

Do Until <Điều kiện>

<Nhóm lệnh>

Loop

Trang 36

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

8.6 Đối tượng, biến đối tượng và xử lý đối tượng

Trang 37

Cách khai báo biến đối tượng:

a Kiểu Database cho phép tham chiếu đến một CSDL, vì vậy để làm

việc với một CSDL ta phải khai báo biến kiểu Database

Để làm việc với một CSDL hiện thời ta làm như sau:

Dim Db As Database (Khai báo biến Db có kiểu Database)

Set Db=DBEngine.Wokspaces(0).Database(0) (gắn biến Db ứng với CSDL

Trang 38

b Sử dụng biến kiểu RecordSet

Kiểu RecordSets cho phép ta tham chiếu đến các đối tượng của CSDL

đã khai báo như: Bảng, truy vấn, các bản ghi, v.v

Ví dụ 1: Tạo 1 biến kiểu RecordSet gắn với bảng So_luong của CSDL

hiện thời:

Sub Form_Load()

Dim Db As Database

Dim Rec As Recordset

Dim Dem As Integer

Trang 39

Ví dụ 2: Ta có thể dùng một biến bảng như sau::

Dem = TB.RecordCount

MsgBox "So ban ghi của Bang So_luong la:" & Str(Dem)

End Sub

Trang 40

Ví dụ 3: Ta có bảng KhoiA (khối A) gồm các trường: Hoten, NgaySinh,

DienToan, DienLy DienHoa, DiemTong, GhiChu như sau:

Set Rec = Db.OpenRecordset("KhoiA")

Do Until Rec.EOF ‘Làm cho đến hết tệp

Rec.Edit ‘cho phép sửa nội dung các bản ghi

Rec![TongDiem] = Rec![DiemToan] + Rec![DiemLy] + Rec![DiemHoa]

Rec.Update ‘cập nhật giá trị mới

Rec.MoveNext ‘Di chuyển đến bản ghi kế tiếp

Loop

8.6.1 Đối tượng và khai báo đối tượng

Trang 41

Sau khi chạy chương trình ta có nội dung bảng mới như sau:

Chú ý:

oTa viết Rec![TongDiem], nghĩa là trường TongDiem trong trong bản

ghi, để phân biệt với biến khi khai báo từ khoá Dim

Ví dụ 4: Cũng từ ví dụ 3, hãy lập trình để ghi vào trường GhiChu chữ

“Do” nếu TongDiem>=15 hoặc chữ “Truot” nếu TongTong<15

Trang 42

Sub Form_Load()

Dim Db As Database

Dim Rec As Recordset

Set Db = CurrentDb()

Set Rec = Db.OpenRecordset("KhoiA")

Do Until Rec.EOF ‘Làm cho đến hết tệp

Rec.Update ‘cập nhật giá trị mới

Rec.MoveNext ‘Di chuyển đến bản ghi kế tiếp

Loop

Rec.Close

8.6.1 Đối tượng và khai báo đối tượng

Trang 43

Sau khi chạy ta có:

Trang 44

a Câu lệnh Macro.

Để thực hiện một Macro ta dùng lệnh sau:

Lệnh này phải đựơc đặt trong các hàm hoặc thủ tục để thực thi.

b Hành động mở, đóng các đối tượng.

Đóng các đối tượng: CLOSE

ví dụ: Để đóng một Form DanhSach ta gõ như sau:

DoCmd.Close acForm, “DanhSach”, acSaveYes

AcForm: là thông số chỉ Form đang hoạt động

AcSaveYes: là thông số cho phép khi đóng Form thì ghi lại mọi sự thay đổi

trên đó.

8.6.2 Mở đóng đối tượng bằng câu lệnh Marco

DoCmd <Tên_hành_động>[,<danh sách đối số>]

Trang 45

Mở các đối tượng ta sử dụng những hành động sau:

Để mở các đối tượng khác ta làm tương tự như trên

Ví dụ 2: Giả sử trong CSDL hiện thời ta có:

1 Hai bảng TaHsTs (bảng Hồ sơ Tuyển Sinh) và bảng TaDiemD (bảng Điểm khối D)

Bảng TaHsTs có các trường sau: Sbd, HoTen, NgaySinh, GioiTinh, KhuVuc, UuTien, TonGiao, DanToc

Bảng TaDiemD có các trường: Sbd, Toan, Van, Anh

2 Ba Form TuyenSinh2014, FoHsTs, FoDiemD

Một giao diện chính của Form TuyenSinh2014 như hình sau:

Trang 46

Chú ý: thuộc tính Name cho

4 nút trên như sau:

oNút có tiêu đề: “NHAP HO SO” có tên NhapHoSo

oNút có tiêu đề: “NHAP DIEM” có tên NhapDiem

oNút có tiêu đề: “KET THUC” có tên KetThuc

a Khi ta kích hoạt nút NHAP HO SO thì Form FoDsTs sẽ được mở để ta đưa

dữ liệu vào, Form này được thiết kế có hình dạng như sau:

8.6.2 Mở đóng đối tượng bằng câu lệnh Marco

Ngày đăng: 02/07/2023, 21:28