quẢn tr cƠ s d liỆu access 2

56
TRƯỜNG CAO ĐẲNG NGHỀ ĐẮK LẮK KHOA ĐIỆN TỬ - TIN HỌC GIÁO TRÌNH QUẢN TRỊ CƠ SỞ DỮ LIỆU ACCESS 2 NGHỀ: CÔNG NGHỆ THÔNG TIN TRÌNH ĐỘ: CAO ĐẲNG NGHỀ - TRUNG CẤP NGHỀ Người biên soạn: ThS. Lê văn Tùng Lưu hành nội bộ - 2014

Upload: others

Post on 21-Nov-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: QUẢN TR CƠ S D LIỆU ACCESS 2

TRƯỜNG CAO ĐẲNG NGHỀ ĐẮK LẮK

KHOA ĐIỆN TỬ - TIN HỌC

GIÁO TRÌNH

QUẢN TRỊ CƠ SỞ DỮ LIỆU

ACCESS 2

NGHỀ: CÔNG NGHỆ THÔNG TIN

TRÌNH ĐỘ: CAO ĐẲNG NGHỀ - TRUNG CẤP NGHỀ

Người biên soạn: ThS. Lê văn Tùng

Lưu hành nội bộ - 2014

Page 2: QUẢN TR CƠ S D LIỆU ACCESS 2

1

LỜI NÓI ĐẦU

Giáo trình này là sự đúc kết kinh nghiệm của tác giả trong giảng dạy các

khoá đào tạo về Access cũng như kinh nghiệm sử dụng Access làm hệ quản trị cơ

sở dữ liệu và công cụ phát triển phần mềm. Hầu hết nội dung trình bày trong giáo

trình đều bám theo những bài tập thực hành cụ thể. Do vậy, sau khi đọc xong và

thực hành theo trình tự cuốn sách này, người đọc gần như có thể thiết kế và xây

dựng được những ứng dụng về quản lý thông tin.

Đối tượng chính của giáo trình là sinh viên, học sinh chuyên nghề Công nghệ

thông tin (CNTT) cũng như không chuyên nghề CNTT có học môn Access. Tất

nhiên cũnghoàn toàn phù hợp cho những ai quan tâm học hỏi môn học này bởi lẽ

các nội dungđều được trình bày rất trực quan, có thứ tự và kết quả rõ ràng.

Thời lượng thiết kế 75 tiết. Trong đó 24 tiết lý thuyết, 47 tiết thực hành và 4

tiếtdành cho kiểm tra. Tuỳ theo mức độ ứng dụng của từng nghề vào môn họcnày

mà mỗi đơn vị sẽ chọn cho mình một quĩ thời gian cũng như các nội dunggiảng dạy

phù hợp từ giáo trình này.

Nội dung giáo trình gồm 5 chương:

Chương 1: Tập lệnh Macro – Trình bày cơ bản về đối tượng macro cụ thể và

tập lệnh, biết các thao tác xử lý đối vơi macro và cách sử dụng macro vơi các biến

cố. Tạo được macro vơi các xứ lý cơ bản và kết hợp macro vơi biến cố để xử lý

chức năng trên form.

Chương 2: Lập trình VBA – Trình bày về môi trường lập trình VBA và hiểu

một số khái niệm và cơ chế xử lý của ngôn ngữ VBA. Xây dựng và xử lý sự kiện

trên các biểu mâu sử dụng bộ lệnh Docmd.

Chương 3: Lập trình cơ bản dữ liệu – Trình bày được kiến thức và các ky

thuật DAO. Sử dụng được các đối tượng trên DAO.

Chương 4: Xây dựng thực đơn và thanh công cụ - Trình bày các cách tạo

menu và thanh công cụ trong Access. Gắn được menu và thanh công cụ trên các

form giao diện.

Chương 5: Xây dựng ứng dụng – Trình bày các kiến thức về quy trình xây

dựng ứng dụng. Xây dựng được các ứng dụng vơi các form, báo cáo hiệu quả và

thân thiện và xây dựng được tính bảo mật cho ứng dụng.

Tuy có nhiều cố gắng trong quá trình biên soạn nhưng giáo trình này vân còn

nhiều thiếu sót. Chúng tôi rất mong nhận được các ý kiến đóng góp của các bạn sinh

viên và các bạn đồng nghiệp để chúng tôi có thể hoàn thiện giáo trình này.

Đắk lắk, năm 2014

Tác giả

ThS. Lê Văn Tùng

Page 3: QUẢN TR CƠ S D LIỆU ACCESS 2

2

MỤC LỤC

LỜI NÓI ĐẦU .......................................................................................................... 1

Bài 1: Tập lệnh Macro ............................................................................................... 4

1.1. Giơi thiệu macro .......................................................................................... 4

1.2. Tạo và thi hành macro .................................................................................. 4

1.2.1. Các thành phần trong cửa sổ Macro: (2 phần) ....................................... 4

1.2.2. Ví dụ minh họa ...................................................................................... 5

1.3. Các loại Macro và cách tạo Macro ............................................................... 5

1.4. Một số hành động thông dụng ...................................................................... 6

1.5. Điều kiện trong macro .................................................................................. 7

1.6. Gắn kết các biến cố vơi macro ..................................................................... 8

1.6.1. Quy trình thực hiện................................................................................ 8

1.6.2. Sử dụng biến cố trong mâu biểu, báo biểu ............................................ 9

1.7. Một số ví dụ ............................................................................................... 10

Bài 2: Lập trình VBA .............................................................................................. 13

2.1. Môi trường lập trình VBA ......................................................................... 13

2.2. Các kiểu dữ liệu và khai báo ...................................................................... 14

2.2.1. Các kiểu dữ liệu: ................................................................................. 14

2.2.2. Khai báo .............................................................................................. 14

2.2.3. Kiểu dữ liệu tự định nghĩa: .................................................................. 14

2.3. Cấu trúc lệnh .............................................................................................. 16

2.4. Chương trình con thủ tục và hàm ............................................................... 18

2.4.1. Thủ tục (Procedure) ............................................................................. 18

2.4.2. Hàm (Function) ................................................................................... 19

2.4.3. Đối tượng DoCmd ............................................................................... 20

2.4.4. Ky thuật xử lý lỗi ................................................................................ 20

Bài 3: Lập trình cơ sở dữ liệu .................................................................................. 23

3.1. Ky thuật DAO ............................................................................................ 23

3.2. Lơp đối tượng DAO ................................................................................... 24

3.3. Bài toán đăt lọc dữ liệu .............................................................................. 31

Bài 4: Xây dựng thực đơn và thanh công cụ ............................................................ 35

4.1. Tạo menu ................................................................................................... 35

4.2. Tạo menu sử dụng công cụ ........................................................................ 40

4.3. Tạo menu sử dụng macro ........................................................................... 41

4.4. Tạo thanh công cụ ...................................................................................... 44

4.5. Tạo menu tắt .............................................................................................. 45

Bài 5: Xây dựng ứng dụng ...................................................................................... 48

5.1. Phân tích yêu cầu ....................................................................................... 48

5.2. Thiết kế các thành phần của ứng dụng ....................................................... 49

5.3. Xây dựng form giao diện chính .................................................................. 50

5.4. Kết luận và hương phát triển ...................................................................... 53

5.5. Xây dụng hệ thống menu, thanh công cụ ................................................... 53

5.6. Bảo mật ứng dụng ...................................................................................... 53

TÀI LIỆU CẦN THAM KHẢO .............................................................................. 55

Page 4: QUẢN TR CƠ S D LIỆU ACCESS 2

3

CHƯƠNG TRÌNH MÔ ĐUN QUẢN TRỊ CƠ SỞ DỮ LIỆU VỚI ACCESS 2

Mã số của mô đun: MĐ 22;

Thời gian của mô đun: 75 giờ; (Lý thuyết: 24 giờ; Thực hành: 51 giờ)

I. VỊ TRÍ, TÍNH CHẤT CỦA MÔ ĐUN:

Là mô đun chuyên môn nghề bắt buộc của chương trình đào tạo Cao đẳng

nghề Công nghệ thông tin (ứng dụng phần mềm), được bố trí học sau mô đun Quản

trị cơ sở dữ liệu vơi Access 1.

II. MỤC TIÊU CỦA MÔ ĐUN:

- Biết khái niệm về tập lệnh Macro và module trong Access;

- Hiểu các cách tạo và thực thi tập lệnh Macro;

- Biết cách tạo và thực thi module trong ứng dụng Access;

- Sử dụng macro và module để tăng tính linh hoạt của các chức năng trong ứng

dụng;

- Chủ động, sáng tạo trong việc tìm hiểu các tài liệu phục vụ cho môn học.

III. NỘI DUNG MÔ ĐUN:

1. Nội dung tổng quát và phân bổ thời gian:

Số

TT Tên các bài trong mô đun

Thời gian

Tổng

số LT TH

Kiểm tra*

(LT hoặc TH)

1. Macro 15 5 9 1

2. Lập trình VBA 18 6 12 0

3. Lập trình cơ sở dữ liệu 12 3 7 2

4. Xây dựng thực đơn và thanh công

cụ 10 4 6 0

5. Bài tập lơn 20 6 13 1

Cộng 75 24 47 4

Page 5: QUẢN TR CƠ S D LIỆU ACCESS 2

4

Bài 1: Tâp lênh Macro

Mục tiêu:

- Hiểu đươc cơ ban về đôi tương macro cụ thể tập lệnh;

- Biết các thao tác xử ly đôi vơi macro và cách sử dụng macro vơi các biến cô;

- Tạo đươc macro vơi các xứ ly cơ ban;

- Kết hơp macro vơi biến cô để xử ly chức năng trên form;

- Nghiêm tuc, ti mi trong quá trình tiếp nhận ly thuyết và thực hành.

1.1. Giơi thiêu macro

Macro là một lệnh hay tập hợp một nhóm lệnh được quy định sẵn trong MS -

Access cho phép xác định một tập các thao tác trên các đối tượng cơ sở dữ liệu

(CSDL) của Access như mở biểu mâu, mở bảng in,…

Việc tự động hóa các hành động của macro giúp đảm bảo tính chính xác và

hiệu quả của CSDL.

Macro thường được xây dựng dựa trên một số các hành động (action) thường

dùng trong access được xây dựng sẵn, mỗi Macro gồm một hoăc nhiều hành động

theo một thứ tự nhằm thực hiện một chức năng cụ thể được xác định.

Macro thường được dùng kết hợp vơi sự kiện trên các ô điều kiển của các

biểu mâu, báo biểu. khi các sự kiện xảy ra thì Macro tương ứng sẽ được thực hiện,

thông thường Macro được gán vơi sự kiện On Click của nút lệnh trong biểu mâu để

khi nhắp chuột vào nút lệnh thì Macro được thực hiện hơn.

Thông qua Macro ta có thể điều khiển các đối tượng trên Biểu mâu (Form)

và Báo cáo (Report) một cách dễ dàng và linh hoạt.

1.2. Tạo và thi hành macro

Từ cửa sổ Database chọn đối tượng Macro New, xuất hiện cửa sổ Macro

sau:

Hình 1: Cửa sổ Macro trong MS-Access 2003

1.2.1. Các thành phần trong cửa sổ Macro: (2 phần)

Phần 1:

Cột Macro Name: Quy định tên riêng cho nhóm Macro. Khi trong cửa sổ

Macro bạn muốn tạo nhiều Macro con thì mỗi một Macro này phải có một tên riêng.

(Vào menu View Macro Name để hiển thị mục này).

Cột Condition: Thiết lập các điều kiện kiểm tra cho Macro. (Vào menu View

Condition để hiển thị mục này).

Cột Action: Quy định những hành động được tạo sẵn cho Macro.

Cột Comment: Chú thích, diễn giải về các hành động tương ứng.

Page 6: QUẢN TR CƠ S D LIỆU ACCESS 2

5

Phần 2:

Action Argument: Quy định các tham số tương ứng cho từng hành động.

Trong cửa sổ thiết kế Macro thực hiện các thao tác sau:

Chọn hành động cần gắn cho macro tại cột Action

Gõ dòng giải thích cho hành động tương ứng tại cột Comment (nếu cần)

Chọn các đối mục cho mỗi hành động tại mục Action Arguments

Lưu y: Mỗi macro có thể thực hiện nhiều hành động, thứ tự thực hiện các hành

động phụ thuộc vào thứ tự liệt kê tại cột Action

1.2.2. Ví dụ minh họa

Hãy mở bài tập “Quản lý HSSV” thiết kế và gắn hành động cho hai nút lệnh

sau:

Yêu cầu:

1) Khi click vào nút “quản lý điểm HSSV” thì thực hiện mở biểu mâu (form)

quản lý điểm HSSV ra màn hình.

2) Khi click vào nút “quản lý danh sách HSSV” thì thực hiện mở biểu mâu

(form) danh sách HSSV ra màn hình.

1.3. Các loại Macro và cách tạo Macro

Macro đơn: Dùng để thực hiện một thao tác đơn giản nào đó.

Cách tạo:

Bươc 1: Trong ngăn Macro New

Bươc 2: Trong hộp thoại Macro xuất hiện, chọn:

Action: Hành động cho Macro.

Action Argument: Quy định các tham số cho hành động tương

ứng trên.

Bươc 3: Lưu và đăt tên cho Macro.

Ví dụ: Tạo Macro dùng để mở một Form, như sau:

Page 7: QUẢN TR CƠ S D LIỆU ACCESS 2

6

Macro nhóm (Macro Group): Mục đích nhằm tập hợp các Macro liên quan

vơi nhau vào một cửa sổ Macro sheet, mỗi Macro có một tên riêng và thực hiện độc lập

khi được gọi. Khi Macro nào được gọi thì Macro đó thực hiện.

Cách tạo:

Tại cửa sổ Macro sheet, vào menu View, chọn dòng Macro Name. Lúc này

trong cửa sổ Macro sheet xuất hiện thêm một Macro Name, ta đăt tên Macro thành

phần vào cột này và chọn Action vào dòng tương ứng và các dòng tiếp theo. Muốn

gọi Macro thành phần nào ta chọn:

<Tên Macro nhóm>.<Tên Macro thành phần>

Ví dụ: Tạo một Macro để xem thông tin về các Bảng như sau:

Tạo Macro nhóm có tên “Mo”: Dùng để mở bảng (Table) DM_SINHVIEN,

Truy vấn (Query) DS_HSSV, biểu mâu (Form) quản lý HSSV.

Macro điều kiên: Là Macro mà các hành động chỉ thực hiện khi thỏa mãn

một điều kiện nào đó.

Cách tạo:

Tại cửa sổ Macro sheet, vào menu View Conditions. Lúc này trong cửa sổ

Macro Sheet xuất hiện thêm cột Condition, ta nhập điều kiện vào cột này và chọn

Action vào dòng tương ứng. Nếu một điều kiện đúng thực hiện nhiều hành động thì

dòng tiếp theo của cột Condition ta gõ vào dấu ba chấm (…) và chọn tiếp hành động

trong cột Action (nếu không có dấu ba chấm thì hành động đó thực hiện bất kể điều

kiện nào).

1.4. Môt số hành đông thông dụng

Action/ Argument Ý nghĩa

Close

Object Type

Object Name

Save

Đóng cửa sổ (nếu không có tham số thì đóng cửa

sổ Active)

Kiểu đối tượng (Table, Query, Form,Report,…)

Tên đối tượng đóng

Chọn cách lưu khi đóng

Msg box

Message

Beep

Type

Title

Hiển thị hộp thông báo

Nội dung thông báo

Có/ không có tiếng Bíp

Biểu tượng trong hộp thoại

Nội dung tiêu đề

Open Form Mở một Form

Page 8: QUẢN TR CƠ S D LIỆU ACCESS 2

7

Form Name Tên Form

View Dạng hiển thị (Design, print preview, Data sheet)

Filter Name Tên query nhập dữ liệu

Where condition Điều kiện lọc dữ liệu

Data mode Chế độ dữ liệu(Add,Edit,Read only)

Open Query Mở một query

Query Name Tên query

View Dạng hiển thị (Design, print preview, Data sheet)

Data Mode Chế độ dữ liệu(Add,Edit,Read only)

Open Report Mở một Report

Report Name Tên report

View Dạng hiển thị (Design, print preview, Data sheet)

Filter Name Tên Report nhập dữ liệu

Where condition Điều kiện lọc dữ liệu

Open Modulo Mở một Modulo

Modulo Name Tên Modulo chứa thủ tục cần mở

Procedure Name Tên thủ tục cần mở

Run Macro Chạy một Macro

Macro Name Tên Macro cần chạy

Repeat Count Số lần lăp chạy Macro(không ghi là một lần)

Repeat Expression Biểu thức điều kiện để lăp (False thì dừng)

Run Code Gọi thực hiện một hàm của VBA

Function Name Tên hàm (các tham số)

Maximize Cực đại cửa sổ hiện hành

Restore Phục hồi cửa sổ về kích thươc cũ

Stop All Macro Dừng thực hiện các Macro

Quit Thoát khỏi Access trở về window

Option Xử lý dữ liệu khi thoát (promt, save all, exit)

Requery Cập nhật lại dữ liệu nguồn cho điều khiển

Set Value Gán giá trị, thuộc tính cho một đối tượng điều khiển

Item Tên đối tượng điều khiển nhận giá trị, thuộc tính

Expression Biểu thức gán (nếu khác Form:Form![tên Form]!tên

ĐK)

Apply Filter Lọc dữ liệu khi xử lý Table, Form, Report

Filter Name Tên truy vấn lọc dữ liệu

Where condition Điều kiện lọc dữ liệu

1.5. Điều kiên trong macro

Khi tạo macro ta có thể quy định điều kiện thực hiện từng hành động của

macro, khi thực hiện: nếu điều kiện đúng thì thực hiện hành động tương ứng, nếu

điều kiện sai thì không thực hiện.

Cách tạo:

Bươc 1: Tại cửa sổ macro đơn, chọn Menu View/Conditions. Cửa sổ tạo

macro xuất hiện thêm cột Condition

Bươc 2: Chọn hành động cần gắn cho macro tại cột Action

Bươc3: Gõ dòng giải thích cho hành động tương ứng tại cột Comment (nếu

cần)

Page 9: QUẢN TR CƠ S D LIỆU ACCESS 2

8

Bươc 4: Chọn các đối mục cho mỗi hành động tại mục Action Arguments

Bươc 5: Thiết lập điều kiện thi hành cho mỗi hành động tại cột Condition

Bươc 6: Đăt tên và lưu macro

1.6. Găn kêt các biên cố vơi macro

Macro thường dùng được gắn vơi một nút lệnh trong biểu mâu hoăc một sự

kiện (event) của một ô điều khiển.

Để gắn macro vơi một sự kiện của ô điều khiển ta chọn ô điều khiển, trong

sự kiện thiết kế biểu mâu chọn ô điều khiển cần gắn vơi macro rồi chọn thuộc tính

ứng vơi sự kiện cần gắn macro rồi chọn tên macro (nếu có sẵn) hoăc nhắp chuột vào

nút ba chấm (…) để tạo macro gắn vơi sự kiện. khi đó xuất hiện cửa sổ Choose

Builder, chọn mục macro builder sẽ xuất hiện cửa sổ tạo macro.

1.6.1. Quy trình thực hiên

Bươc 1: R_Click đối tượng cần gán sự kiện (thường là nút lệnh Command

hoăc Text box) chọn properties.

Bươc 2: Xuất hiện màn hình, chọn thẻ Event.

Hình 2: Thuộc tính sự kiện on Click

Bươc 3: Chọn dòng sự kiện (Ví dụ: On Click):

Nếu Macro đã tạo trươc rồi thì ta click vào Combo box trên dòng đó để chọn

Macro gán cho sự kiện của đối tượng.

Nếu chưa tạo Macro thì click vào nút Buid(…) trên dòng đó, xuất hiện hộp

thoại Choose Builder, ta chọn dòng Macro Builder và click ok, xuất hiện cửa sổ

Macro Sheet cùng hộp thoại lưu Macro, ta đăt tên cho Macro đóng hộp thoại lưu và

bắt đầu thiết kế Macro cho sự kiện của đối tượng.

Để gắn một macro vơi một nút lệnh, trong cửa sổ thiết kế biểu mâu chọn nút

lệnh cần gắn vơi macro và chọn tên macro trong thuộc tính On Click

Ví dụ: Để gắn hành động (Action) “Mở biểu mâu”cho nút lệnh (Button) trên biểu

mâu (Form)

Bươc 1: R_Click Button chọn Properties (nhấn F4)

Bươc 2: Trong hộp thoại xuất hiện, thực hiện:

Chọn thẻ Event

Tại dòng On Click, Click vào dấu 3 chấm

Page 10: QUẢN TR CƠ S D LIỆU ACCESS 2

9

Hình 3: Thẻ Event trong hộp thoại Property Sheet

Chọn Macro Bulder

Hình 4: Chọn Macro Builder

Hình 5: Chọn hành động mở From

Bươc 3: Lưu hành động đã chọn

Bươc 4: Thực thi sự kiện xem kết quả

1.6.2. Sử dụng biên cố trong mâu biểu, báo biểu

Để có thể kết hợp các đối tượng của Access phải có cơ chế tham chiếu nội

dung của các đối tượng.

Click

vào dấu

3 chấm

Page 11: QUẢN TR CƠ S D LIỆU ACCESS 2

10

1) Để tham chiếu đến các ô điều khiển của báo biểu dùng cú pháp:

[Forms]! [Tên biểu mẫu]! [Tên ô điều khiển]

2) Nếu tham chiếu đến ô điều khiển của báo biểu dùng cú pháp:

[Forms]! [Tên báo biểu]! [Tên ô điều khiển]

Những tham chiếu này có thể thực hiện từ truy vấn, báo biểu, biểu mâu và

macro. Việc tham chiếu này cho phép các đối tượng trao đổi dữ liệu vơi nhau.

1.7. Môt số ví dụ

Ví dụ 1: Tạo biểu mâu cho phép nhập vào họ tên và ngày sinh của sinh viên

cần tìm, để thực hiện thao tác tìm sinh viên có họ tên và ngày sinh học sinh – sinh

viên nhập vào từ bàn phím.

Yêu cầu:

1. Cửa sổ nhập điều kiện tìm kiếm có dạng

2. Cửa sổ trình bày kết quả tìm kiếm như một bảng truy vấn chứa thông tin

những mâu tin cần tìm.

Các bươc thiết kế:

Tạo biểu mâu tên “f_tim” chứa hai ô Text box, đăt tên “mTenSV”,

“mNgaysinh” và 2 nút lệnh “Tìm”, “Thoát”

Nút lệnh “Tìm” gắn vơi macro “tim SV”, nút lệnh “Thoát” gắn vơi macro

“thoat” có nội dung chi tiết như sau:

Macro “tim”

Action Action Arguments

OpenQuery Query Name: Tim SV_vd1

View: DataSheet

Data mode: ReadOnly

Macro “thoat”

Action Action Arguments

Close Object Type: Form

Object Name: f_tim

Save: Yes

Tạo truy vấn lựa chọn có tên “tim SV_vd1” lấy dự liệu từ danh mục DMSV,

truy vấn này truy vấn đến các ô Text box chứa dữ liệu cần tìm ở bảng “tim

SV_vd1”

Page 12: QUẢN TR CƠ S D LIỆU ACCESS 2

11

Ví dụ 2:Tạo biểu mâu cho phép chọn chế độ in báo cáo “Bang diem SV theo

lop” ra máy in hay xem trên màn hình.

Các bươc thiết kế:

Thiết kế biểu mâu chọn cách in có tên “Chon_in” gồm:

Một Option Group tên “in” vơi hai mục

1. In báo cáo trực tiếp ra máy in

2. Xem báo cáo trên màn hình rồi in

Hai nút lệnh tên “Thực hiện” và “Kết thức” có nội dung như sau:

Macro gắn cho nút lệnh “Thực hiện” là macro có điều kiện có dạng

Action Condition Action Arguments

Open Report [Forms]![Chon_in]![in]=1 Report Name: Bang diem SV theo lop

View: Print

Open Report [Forms]![Chon_in]![in]=2 Report Name: Bang diem SV theo lop

View: Print Preview

Macro gắn cho nút lệnh “kết thức” là macro có chức năng đóng biểu mâu có

dạng:

Page 13: QUẢN TR CƠ S D LIỆU ACCESS 2

12

Action Action Arguments

Close Object Type: Form

Object Name: Chon_in

Save: Yes

Ví dụ 3: Tạo biểu mâu kiểm tra mật khẩu trươc khi vào chương trình ứng

dụng trên Access. Cửa sổ kiểm tra mật khẩu có dạng:

Yêu cầu:

Nếu mật khẩu không đúng thì thoát khỏi Access, ngược lại thì đóng cửa sổ

kiểm tra mật khẩu và cho phép làm việc cơ sở dữ liệu của chương trình.

Thiết kế chi tiết:

Tạo biểu mâu “Kiểm tra mật khẩu” như hình minh hoạ gồm: ô text box và

nút lệnh chi tiết như sau:

Ô text box có các thuộc tính:

Name: Mat_khau

Input Mask: Password

Default value: “”

Nút lệnh “Đồng ý” có thuộc tính có thuộc tính On Click: KTMK (gắn vơi macro

KTMK)

Các thuộc tính của biểu mâu:

Caption: Kiểm tra mật khẩu

Selector Record: No

Navigation Button: No

Pop Up: Yes

Modal: Yes

Tạo macro “KTMK” (kiểm tra mật khẩu) có nội dung như sau:

Action Condition Action Arguments

MsgBox [Forms]![Kiểm tra mật

khẩu]![mat_khau] <> “lop13cct”

Message: sai mật khẩu

Quit …

Close Object Type: Form

Object Name: Kiểm tra mật khẩu

Page 14: QUẢN TR CƠ S D LIỆU ACCESS 2

13

Bài 2: Lâp trinh VBA

Mục tiêu:

- Hiểu về môi trương lập trình VBA;

- Hiểu một sô khái niệm và cơ chế xử ly của ngôn ngư VBA;

- Xây dựng và xử ly sự kiện trên các biểu mẫu sử dụng bộ lệnh Docmd;

- Nghiêm tuc, ti mi trong quá trình tiếp nhận ly thuyết và thực hành

2.1. Môi trường lâp trinh VBA

Visual Basic for Application (VBA) để giúp người dùng có thể tạo ra các tuỳ

biến mạnh hơn, thân thiện hơn vơi trong công việc của mình. Hơn thế nữa VBA

trên Access đã thể hiện tính chuyên nghiệp trong lập trình, phần nào biến được một

CSDL đơn giản trở thành những sản phẩm đóng gói thương mại.

Màn hình làm việc của VBA:

Hình 2.1.1 Môi trương làm việc VBA

Hệ thống thực đơn và thanh công cụ: Cũng như bất kỳ môi trường làm việc

nào đều có hệ thống thực đơn và thanh công cụ đi kèm. Trên đó có chứa các lệnh để

gọi, thi hành hoăc thiết lập các điều khiển cần thiết.

Cửa sổ Project Explorer: Có rất nhiều các thành phần có thể lập trình được bởi

VBA như: Forms, Reports, Modules. Cửa sổ Project Explorer là cây phân cấp lơp các

đối tượng có chứa mã lệnh VBA, đồng thời giúp lập trình viên dễ dàng trong việc viết

(coding) cũng như quản lý các mã lệnh VBA đã viết.

Cửa sổ viết lệnh: Cửa sổ viết lệnh là nơi soạn thảo các dòng lệnh VBA. Mỗi

cửa sổ sẽ chứa toàn bộ mã lệnh cho một đối tượng như: Forms, Reports, Modules.

Trong mỗi cửa sổ có thể có nhiều phần được viết lệnh, mỗi phần có thể là nội dung

một khai báo, một chương trình con, nội dung một thủ tục đáp ứng sự kiện.

Cửa sổ Intermediate: Cửa sổ Intermediate là nơi giúp thi hành trực tiếp một

câu lệnh nào đó, rất hữu dụng trong việc gỡ lỗi phần mềm.

Page 15: QUẢN TR CƠ S D LIỆU ACCESS 2

14

2.2. Các kiểu dư liêu và khai báo

2.2.1. Các kiểu dư liêu:

Tên kiểu Kiểu Field tương Phạm vi

Boolean Yes/No True, False

Byte Byte 0 → 255

Integer Integer -32768 → 32767

Long Long Integer,

AutoNumber -2147483648 → 2147483647

Single Single -3.402823E+38 → -1.401298E-45 và

1.401298E-45 → 3.402823E+38

Double Double

-1.79769313486232E+308 →

-4.94065645841247E-324

và 4.94065645841247E-324 →

1.79769313486232E+308

Currency Currency -922337203685477.5808 →

922337203685477.5807

String Text hoăc Memo Chiều dài từ 0 đến 65500 ký tự

Date Date/ Time Từ 01/01/100 → 31/12/9999

Variant Kiểu bất kỳ (Date,

String, Double)

Tương tự như các kiểu Date,

Double, String ở trên

2.2.2. Khai báo

2.2.3. Kiểu dư liêu tự định nghĩa:

Kiểu dữ liệu tự định nghĩa phải khai báo trong phần

Declarations của module. Để sử dụnh các thành phần (field) trong kiểu tự định

nghĩa thì ghi như sau:

Tên biên. tên file

Biên (Variable)

Là đại lượng có giá trị thay đổi tùy thuộc các xử lý. Biến để lưu trữ tạm thời

các kết quả khi thực hiện các phép tính trong chương trình, các kết quả được so

sánh vơi nhau hoăc lại sử dụng trong các phép tính khác.

Tùy thuộc vào từ khóa khai báo biến và vị trí khai báo mà phạm vi sử dụng

biến trong các thủ tục sẽ thuộc vào 1 trong 3 trường hợp sau:

Loại Từ khóa

khai báo Vị trí khai báo Phạm vi sử dụng

Biến cục bộ Dim Trong các thủ tục Bên trong thủ tục có chứa lệnh

khai báo

Biến thuộc

đơn thể Dim

Trong Declaration

Section của module

Trong bất kỳ các thủ tục thuộc

module có chứa lệnh khai báo

Type Tên_kiểu_định_nghĩa

Tên_field_1 As Kiểu_dữ_liệu

Tên_field_2 As Kiểu_dữ_liệu

End Type

Page 16: QUẢN TR CƠ S D LIỆU ACCESS 2

15

Biến toàn cục Global hoăc

Public

Trong Declaration

Section của module

Trong bất kỳ thủ tục nào thuộc

bất kỳ module nào của hệ

thống ứng dụng

Biên tĩnh:

Thông thường khi 1 thủ tục chấm dứt thi hành thì giá trị các biến cục bộ

được khai báo trong thủ tục này mất đi và lần gọi thi hành sau đó của thủ tục các

biến cục bộ sẽ được khởi tạo lại.

Nếu muốn giữ lại giá trị của biến cục bộ trong 1 thủ tục sau khi thủ tục này

chấm dứt thi hành thì khai báo biến đó là biến tĩnh theo cú pháp sau:

Static tên_biên

Ví dụ:

Dim I As Integer

Static S As Double

Public B As String

Hằng và hằng ký hiêu

Hằng là đại lượng có giá trị cụ thể và không đổi trong chương trình. Cách

biểu diễn hằng tùy thuộc vào kiểu dữ liệu của hằng. Nếu hằng được sử dụng nhiều

lần tại nhiều nơi khác nhau thì nên khai báo hằng ký hiệu để biểu thị cho giá trị

hằng đó. Hằng ký hiệu sau khi khai báo có thể sử dụng trong các biểu thức nhưng

không được phép thay đổi giá trị của hằng ký hiệu hoăc gán cho hằng ký hiệu 1 giá

trị khác.

Phạm vi sử dụng hằng tùy thuộc vào từ khóa khai báo và giá trị khai báo như

sau:

Loại Từ khoá khai

báo Vị trí khai báo Phạm vi sử dụng

Hằng cụcbộ Const Trong các thủ

tục

Bên trong thủ tục có chứa

lệnh khai báo

Hằngthuộc

đơn thể Const

Trong

Declaration

Section của

module

Trong bất kỳ các thủ tục

thuộc module có chứa lệnh

khai báo

Hằng toàncục

Global

Const hoăc

Public Const

Trong

Declaration

Section của

module

Trong bất kỳ thủ tục nào

thuộc bất kỳ module nào của

hệ thống ứng dụng

Ví dụ:

Const CS = “Trung Tâm Máy tính và Điện tử”

Const PI = 3.14159

Const NDN = #1/1/01# Const SAI = False

Mảng (array)

Mảng là một dãy các phần tử liên tiếp nhau có cùng một tên gọi và dùng chỉ

số thứ tự để chỉ định một phần tử nào đó trong mảng.

Mỗi phần tử được sử dụng giống như một biến. Các phần tử có thể có cùng

kiểu dữ liệu hoăc khác kiểu nếu mảng được khai báo là Variant.

Page 17: QUẢN TR CƠ S D LIỆU ACCESS 2

16

Loại

Từ khóa

khai

báo

Vị trí khai báo Phạm vi sử dụng

Mảng cụcbộ Static Trong các thủtục Bên trong thủ tụccó chứa

lệnh khai báo

Mảngthuộc

đơn thể Dim

TrongDeclaration

Section của module

Trong bất kỳ cácthủ tục

thuộc module có chứa lệnh

khai báo

Mảng

toàncục

Global

Dim

hoăc

Public Dim

TrongDeclaration

Section của module

Trong bất kỳ thủtục nào

thuộc bất kỳ module nào của

hệ thống ứng dụng

2.3. Câu truc lênh

Các cấu trúc lệnh là thành phần cơ bản của mỗi ngôn ngữ lập trình. Thông

thường các ngôn ngữ lập trình đều có các cấu trúc lệnh như nhau: lệnh xử lý điều

kiện, lệnh lăp biết trươc số vòng lăp, lệnh lăp không biết trươc số vòng lăp,.. Tuy

nhiên cách thể hiện (cú pháp) mỗi cấu trúc lệnh có thể khác nhau tuỳ thuộc vào mỗi

ngôn ngữ lập trình. Hơn nữa, mỗi ngôn ngữ cũng có thể có một số điểm khác biệt,

đăc trưng trong mỗi cấu trúc lệnh.

Cũng giống như nhiều ngôn ngữ lập trình hiện đại khác, các cấu trúc lệnh

trong VBA đều tuân thủ các nguyên tắc:

Có cấu truc

mỗi cấu trúc lệnh đều có từ khoá bắt đầu và một từ khóa báo hiệu kết thúc.

Thực hiện tuần tự (loại trừ trường hợp đăc biệt thủ tục Goto <Label>)

Có khả năng lồng nhau

Cấu truc rẽ nhánh

Cấu trúc rẽ nhánh hay còn gọi là lệnh lựa chọn. Tức là nếu một điều kiện nào

đó xảy ra sẽ là gì, hoăc trái lại có thể làm gì.

Cú pháp:

If <điều kiện> Then

<thủ tục 1>

[ Else

<thủ tục 2> ]

End If

Chức năng: nếu <điều kiện> = True thì thực hiện các lệnh trong <thủ tục1>.

Trái lại thực hiện các lệnh trong <thủ tục 2>.

Phần trong căp dấu ngoăc vuông [..] có thể có hoăc không có trong câu lệnh,

tuỳ thuộc vào mục đích xử lý.

Ví dụ 1:

Dim SL As Integer, DG As Double, TT As Double

SL = Val(InputBox (“Nhập số lượng:”))

DG = Val(InputBox (“Nhập đơn giá:”))

TT = SL * DG

If TT >= 200000 Then TT = TT * 0.95

Ví dụ 2:

Const PI = 3.14159

Dim ban_kinh As Double

Page 18: QUẢN TR CƠ S D LIỆU ACCESS 2

17

ban_kinh = Val(InputBox (“Nhập bán kính:”))

If ban_kinh > 0 then

Dim dientich As Double

Dim chuvi As Double

Dientich = ban_kinh*ban_kinh*PI Chuvi = ban_kinh*2*PI

End If

Cấu truc lựa chọn

Đây là một loại cấu trúc lựa chọn. Thông thường hoàn toàn có thể sử dụng If

.. End If để thực hiện các xử lý liên quan đến kiểu cấu trúc này, nhưng trong những

trường hợp đăc biệt, cấu trúc Select Case .. End Select thể hiện được sự tiện dụng

vượt trội.

Cú pháp:

Select Case <biểu thức>

Case <giá trị 1>

<thủ tục 1>

Case <giá trị 2>

<thủ tục 2>

………

Case <giá trị n>

<thủ tục n>

[Case Else

<thủ tục n+1>]

End Select

Trong đó: <Biểu thức> luôn trả về giá trị kiểu vô hương đếm được như: số

nguyên, xâu ký tự, kiểu logic,..

Vơi cấu trúc này, VBA hoạt động như sau:

Tính giá trị của biểu thức, Kiểm tra <biểu thức> = <giá trị 1> ?. Nếu đúng thực hiện

<thủ tục 1> và kết thúc lệnh, thực hiện lệnh tiếp theo sau từ khoá End Select.Nếu

sai, thực hiện tiếp việc so sánh <biểu thức> = <giá trị i> tiếp theo và xử lý tương tự

qui trình nêu trên.

Trong trường hợp <biểu thức><><giá trị i>, i=1..n khi đó có 2 khả năng:

Nếu có tuỳ chọn Case Else thì VBA sẽ thực hiện <thủ tục n+1>;

Nếu không có tuỳ chọn Case Else, VBA sẽ không thực hiện bất kỳ thủ tục

nào đã liệt kê trong vùng Select .. End Select cả mà chuyển tơi thực hiện lệnh tiếp

theo sau từ khoá End Select.

Cấu truc lặp

Cấu trúc FOR … NEXT

For… Next là một cấu trúc lăp biết trươc số lần lăp trong VBA, tuy nhiên

trong những tình huống đăc biệt, vân có thể sử dụng cấu trúc này như cấu trúc

không biết trươc được số lần lăp.

Cú pháp:

For <biến chạy> = <giá trị 1> To <giá trị 2> [Step <n>]

<thủ tục>

[Exit For]

Next

Trong đó:

<biến chạy> là biến kiểu vô hương đếm được, hay dùng nhất là biến kiểu

nguyên;

Page 19: QUẢN TR CƠ S D LIỆU ACCESS 2

18

<giá trị 1>, <giá trị 2> là các giá trị mà biến chạy sẽ nhận và thực hiện dịch

chuyển sau mỗi lần lăp. Có thể dịch chuyển đi 1 đơn vị, có thể dịch chuyển

đi nhiều đơn vị một lần, có thể dịch chuyển tiến, cũng có thể dịch chuyển lùi-

tất cả điều này tuỳ thuộc vào việc có hay không có tuỳ chọn [Step <n>];

Nếu có tuỳ chọn [Step <n>] biến chạy sẽ dịch n đơn vị sau mỗi lần lăp. Khi

đó, nếu n>0 dẽ dịch tiến, ngược lại sẽ dịch lùi;

Mỗi lần lăp, VBA sẽ thực hiện <thủ tục> một lần;

Trong trường hợp đăc biệt nếu găp phải lệnh Exit For trong vòng lăp, ngay

lập tức thoát khỏi lệnh lăp và thực hiện lệnh tiếp ngay sau từ khoá Next. Chính Exit

For đã làm mất đi tính lăp biết trươc được số lần lăp.

Cấu trúc WHILE … WEND

While … Wend là một cấu trúc lăp không biết trươc số lần lăp trong VBA.

Cú pháp:

While <điều kiện>

<thủ tục>

Wend

Trong đó:

While, Wend là các từ khoá của lệnh lăp;

Nếu <điều kiện> = True, các lệnh trong <thủ tục> sẽ được thực hiện. Thực

hiện xong lại quay lên dòng lệnh While để kiểm tra tiếp <điều kiện>;

Nếu <điều kiện> = False, sẽ thoát khỏi vòng lăp và thực hiện lệnh tiếp theo

từ khoá Wend.

Chú ý: Luôn phải chứng minh được rằng, sau một số hữu hạn lần thực hiện

<thủ tục>, giá trị của <biểu thức> phải là False để thoát khỏi vòng lăp. Trong

trường hợp không thể thoát khỏi vòng lăp, có nghĩa người lập trình đã mắc phải lỗi

lăp vô hạn. Có thể dân đến chương trình bị treo.

2.4. Chương trinh con thu tục và hàm

Các thủ tục và hàm trong đơn thể Access có hai loại:

2.4.1. Thu tục (Procedure)

Các chương trình Basic được viết thành những đơn vị riêng lẻ gọi là thủ tục.

Trong mỗi thủ tục sẽ chứa các lệnh Basic để thực hiện một xử lý nhất định hoăc tính

toán một giá trị. Có hai loại thủ tục:

Cú pháp

[Public] [Private] Sub <tên CTC>([<danh sách các tham số>])

<thủ tục>

End Sub

Trong đó:

Sub, End Sub là các từ khoá bắt buộc khai báo cấu trúc một chương trình con

dạng thủ tục;

<tên CTC> là tên gọi thủ tục định khai báo. Tên không được chứa dấu cách

(space) và các ký tự đăc biệt;

<danh sách các tham số> danh sách các tham số cần thiết cho thủ tục. Có hay

không có danh sách này tuỳ thuộc vào thủ tục cần tạo

<thủ tục> thân chương trình con. Nếu không có từ khoá Public trươc Sub,

thủ tục đó chỉ có tác dụng cục bộ: trong một module, trong một report hoăc trong

một form. Khi có từ khoá Public trươc Sub, thủ tục sẽ có tác dụng toàn cục. Tức là

có thể sử dụng bất kỳ nơi nào trên tệp Access đó. Tất nhiên, tất cả những gì khai

báo là Public phải được khai báo trong phần Decralations của một Module nào đó.

Page 20: QUẢN TR CƠ S D LIỆU ACCESS 2

19

Ví dụ: Xây dựng thủ tục thực hiện tính tổng hai số:

Sub tong2so(a, b As Double)

tong = a + b ‘tổng là biến được khai báo toàn cục

End Sub

2.4.2. Hàm (Function)

Là loại thủ tục trả về một giá trị kết quả duy nhất tại vị trí tham chiếu đến

hàm đó, vì vậy có thể sử dụng hàm trong các biểu thức. Hàm có thể nhận các đối

mục để sử dụng trong chương trình. Tổ chức của hàm như sau:

Cú pháp

Function <tên hàm>([<danh sách các tham số>]) As <kiểu DL hàm>

<thủ tục>

End Function

Trong đó:

Function, End Function là các từ khoá bắt buộc khai báo cấu trúc một

chương trình con dạng hàm;

<tên hàm> là tên gọi hàm định khai báo. Tên không được chứa dấu cách

(space) và các ký tự đăc biệt;

<danh sách các tham số> danh sách các tham số cần thiết cho hàm. Có hay

không có danh sách này tuỳ thuộc vào hàm cần định nghĩa;

<kiểu DL hàm> kiểu dữ liệu mà hàm sẽ trả lại. Phần này bắt buộc phải được

khai báo vơi mỗi hàm;

<thủ tục> thân chương trình con. Trong đó câu lệnh <tên hàm> = <biểu

thức> phải xuất hiện ít nhất một lần trong thủ tục. Câu lệnh này có tác dụng gán giá

trị cho hàm.

Chú ý: Nếu không có từ khoá Public trươc Function, hàm đó chỉ có tác dụng cục

bộ: trong một module, trong một report hoăc trong một form.

Khi có từ khoá Public trươc Function, hàm sẽ có tác dụng toàn cục. Tức là có

thể sử dụng bất kỳ nơi nào trên tệp Access đó. Tất nhiên, tất cả những gì khai báo là

Public phải được khai báo trong phần Decralations của một Module nào đó.

Ví dụ1: Thiết kế hàm tổng để tính tổng hai số:

Function Tong(a, b As Double) As Double

Tong = a + b

End Function

Ví dụ2: Thiết kế hàm kiểm tra tính nguyên tố của một số:

Function laNguyenTo(so As Integer) As Boolean

Dim uoc As Integer

laNguyenTo = True

If so > 2 Then

For uoc = 2 To Int(Sqr(so))

If so Mod uoc = 0 Then

laNguyenTo = False

Exit For

End If

Next

End If

End Function

Page 21: QUẢN TR CƠ S D LIỆU ACCESS 2

20

2.4.3. Đối tương DoCmd

Chúng ta có thể dùng lệnh DoCmd để thi hành các công việc thông thường

trên Access thông qua môi trường VBA. Như: dùng DoCmd để có thể mở form, mở

report, query, lọc dữ liệu, thi hành macro xử lý bản ghi, ứng dụng,.. Hầu hết các

thao tác xử lý trên các đối tuợng của Access đều có thể dùng lệnh doCmd để gọi ra

thực hiện trong môi trường VBA.

Dươi đây liệt kê một số các phép xử lý của lệnh DoCmd thông dụng:

Lệnh đóng một đôi tương

Lệnh này để đóng (Close) hoăc giải phóng đối tượng nào đó ra khỏi bộ nhơ.

Hay dùng lệnh này để đóng form đang hoạt động hoăc đóng một report đang

preview.

Cu pháp như sau:

DoCmd.Close [ObjectType], [ObjectName], [SaveOption]

Trong đó:

ObjectType: chỉ kiểu đổi tượng cần đóng. Cụ thể như sau:

acForrm: Đóng form

acReport: Đóng report

acQuery: Đóng query

acTable: Đóng bảng

ObjectName: chỉ tên đối tượng cần đóng;

SaveOption: chỉ định tuỳ chọn ghi lại cấu trúc (nếu có sự thay đổi). Cụ thể:

SaveNo Không khi lại

SaveYes Luôn ghi lại

SavePromt Hiển thị hộp thoại nhắc để ghi nếu có sự thay đổi

2.4.4. Ky thuât xử lý lôi

Xử lý lỗi là ky thuật rất quan trọng trong lập trình. Đã lập trình thì khó tránh

khỏi lỗi (Errors). Có rất nhiều nguyên nhân gây ra lỗi; các nguyên nhân này có thể

được lường trươc hoăc không được lường trươc. Ky thuật xử lý lỗi bao gồm các ky

năng phát hiện và xử lý các tình huống khi chương trình gây lỗi.

Xử ly lỗi

Là việc xử lý khi đang lập trình găp phải lỗi. Thông thường khi chạy thử

chương trình trong lúc đang xây dựng phần mềm nếu găp phải lỗi, sẽ xuất hiện hộp

thoại thông báo lỗi có dạng:

Hình 2.4.4.1 Cửa sổ thông báo lỗi

Page 22: QUẢN TR CƠ S D LIỆU ACCESS 2

21

Các thành phần thông báo lỗi bao gồm

Mã sô lỗi: Mỗi lỗi mà VBA có thể kiểm tra được đều có một mã số, được hiển thị ở

dòng thông báo: Run-time error 'mã số lỗi': Ví dụ trên là : Run-time error '11': Tên

lỗi là: Division by zero - lỗi sai kiểu dữ liệu.

Thành phần xử ly lỗi gồm 2 nut lệnh

Nút End để dừng ngay chương trình, chuyển về chế độ Design - thiết kế bình

thường;

Nút Debug để dừng chương trình chuyển về chế độ Break - sửa lỗi trực tiếp.

Khi đó câu lệnh lỗi sẽ được tô bởi màu nền vàng cho phép người lập trình có thể

sửa được mã chương trình.

Chú ý: Cửa sổ Immediate là công cụ hữu hiệu hỗ trợ việc dò lỗi bởi: hộp thoại này

cho phép thực thi từng câu lệnh trên chế độ hội thoại.

2.4.5 Bây lôi

Sử dụng lệnh On Error Resume Next

Sau khi sử dụng bây On Error Resume Next, từ chỗ đó trở đi, nếu chương

trình găp lỗi, nó sẽ bỏ qua (ignore) hoàn toàn. Điểm này tiện ở chỗ giúp chương

trình EXE của ta tránh găp lỗi thoát khỏi đột ngột như phân tích ở trên. Nhưng nó

cũng bất lợi là khi khách hàng cho hay họ găp những trường hợp lạ, không giải

thích được (vì lỗi đã bị bỏ qua mà không ai để ý), thì ta cũng bí luôn, có thể không

biết bắt đầu từ đâu để gỡ lỗi.

Do đó, trong lúc gỡ lỗi ta không nên dùng nó, nhưng trươc khi giao cho

khách hàng bạn nên cân nhắc ky có nên sử dụng trong các đoạn mã lệnh hay không.

Ví dụ: Sử dụng On Error Resume Next để bỏ qua lỗi:

Function A_chia_B(a, b As Double) As Double

On Error Resume Next

A_chia_B = Null

A_chia_B = a / b

End Function

Trong chương trình con trên, nếu b = 0, lệnh A_chia_B = a / b sẽ găp phải

lỗi. Do có lời khai báo On Error Resume Next nên lệnh lỗi này được bỏ qua (không

thực hiện). Tức là giá trị hàm là Null.

Sử dụng câu lệnh On Error Goto <nhãn>

Khi một thủ tục được đăt câu lệnh này, nếu găp phải một lỗi nào đó, VBA sẽ

chuyển thẳng việc thực hiện đến <nhãn> đã chỉ định. Thông thường các lệnh tiếp

theo của <nhãn> là xử lý các tính huống lỗi.

Ví dụ: Sử dụng phương pháp On Error Goto <nhãn> để bây lỗi:

Function A_chia_B(a, b As Double) As Double

On Error GoTo Loi

A_chia_B = a / b

Msgbox “ Ok! “

Loi:

If Err.Number = 11 Then

MsgBox "Lỗi chia cho 0 !"

End If

End Function

Trong chương trình con trên, trong trường hợp b = 0 câu lệnh A_chia_B = a /

b sẽ gây ra lỗi. Theo như khai báo On Error Goto Loi ban đầu, VBA sẽ bỏ qua tất cả

Page 23: QUẢN TR CƠ S D LIỆU ACCESS 2

22

các lệnh sau lệnh lỗi và chuyển thẳng tơi các lệnh sau nhãn Loi: Ở đây là lệnh kiểm

tra lỗi. Nếu Mã lỗi = 11 kết luận ngay một thông báo lỗi tiếng Việt. Lỗi chia cho 0 !

Phương pháp này cũng được dùng phổ biến cả trong quá trình xây dựng để

phát hiện lỗi, cũng như trong phần mềm đã đóng gói gửi đến khách hàng. Mỗi khi

găp lỗi sẽ được thông báo nguyên nhân gây ra lỗi bằng tiếng Việt (chẳng hạn) mà

vân không ảnh hưởng đến hoạt động khác của phần mềm.

Trong phương pháp này, người lập trình nên khai thác tối đa đối tượng Err -

đối tượng mang những thông tin về lỗi đang xảy ra, cụ thể:

Kết quả Hành động

Err.Description Mô tả tên lỗi

Err.Number Đưa ra mã lỗi

Page 24: QUẢN TR CƠ S D LIỆU ACCESS 2

23

Bài 3: Lâp trinh cơ sơ dư liêu

Thời gian: 14 giờ (LT:3 giờ; TH: 7 giờ, KT: 2 giờ)

Mục tiêu:

- Biết đươc kiến thức và các ky thuật DAO;

- Sử dụng thành thạo các đôi tương trên DAO;

- Nghiêm tuc, ti mi trong quá trình tiếp nhận ly thuyết và thực hành.

3.1. Ky thuât DAO

DAO (Data Access Objects – Các đối tượng truy xuất dữ liệu) là tập hợp bao

gồm lơp các đối tượng có thể dùng để lập trình truy cập và xử lý dữ liệu trong các

hệ CSDL. Ở đây CSDL Access, ngôn ngữ lập trình VBA.

Nạp thư viện DAO: Để nạp thư viện DAO3.6 vào làm việc, hãy thực hiện như sau:

Bươc 1: Mở cửa sổ lập trình VBA;

Bươc 2: Chọn thực đơn Tools | References .. Hộp thoại sau xuất hiện:

Hình Chọn thực đơn

Hãy chọn (tích) mục Microsoft DAO 3.6 Object Libraly trên danh sách

Available References; chọn xong, nhấn OK để đóng lại.

Sơ đồ liên kết quan ly cơ sở dư liệu

Tầng ứng dụng: bao gồm những giao diện người sử dụng cũng như những

công cụ đơn giản mà người lập trình có thể dùng để xử lý dữ liệu theo các bài toán.

Tầng Kết nối dữ liệu: bao gồm tập hợp các công cụ, phương thức để kết nối

tơi những dữ liệu cần làm việc trong CSDL. Ở đây, tầng kết nối bao gồm các chuẩn

Microsoft Jet 4.0 và các lơp đối tượng DAO.

Page 25: QUẢN TR CƠ S D LIỆU ACCESS 2

24

Tầng Cơ sở dữ liệu: bao gồm các bảng, các query trong cơ sở dữ liệu thực

tại.

Như vậy để lập trình trên một CSDL phải sử dụng các đối tượng, các phương

thức ở tầng kết nối như là những công cụ để có thể truy cập được vào CSDL tác

nghiệp xử lý. Tầng kết nối đó chính là Jet 4.0 và DAO 3.6 mà chúng ta sẽ được tìm

hiểu dươi đây.

3.2. Lơp đối tương DAO

Cấu trúc một CSDL bao gồm nhiều thành phần, đòi hỏi lập trình cũng cần có

những thành phần tương ứng để làm việc. Lơp các thành phần tương ứng để có thể

lập trình được trên toàn bộ cấu trúc CSDL là lơp các đối tượng DAO. Chúng có tên

gọi, có những tập thuộc tính, các phương thức làm việc và có quan hệ mật thiết vơi

nhau.

3.2.1. Lơp các đối tương DAO

workspaces

Database

RecordSets

QueryDefs

TableDefs

Relations

Trong đó:

Workspaces: định nghĩa tập hợp các vùng làm việc. Đây có thể coi là lơp làm

việc cao nhất. Về lý thuyết có thể khai báo một vài vùng làm việc (Workspace),

những trên thực tế chỉ cần khai báo một vùng làm việc và vùng này luôn được khai

báo ngầm định cho CSDL hiện tại. Nên sẽ không cần bàn nhiều đến lơp các

WorkSpace này.

Databases: định nghĩa tập hợp các CSDL Access cần làm việc trên một dự

án

RecordSets: định nghĩa các tập hợp bản ghi (Records) cần làm việc.

QueryDefs: định nghĩa tập hợp các Query để làm việc. QueryDefs và

Recordsets là khả năng truy xuất, xử lý dữ liệu (Data Manipulation) của DAO.

TableDefs: định nghĩa tập hợp các bảng (Table) cần làm việc. Đây là khả

năng định nghĩ dữ liệu (Data-Definition Language);

Relations: định nghĩa tập hợp các quan hệ (Relationship) cần làm việc. Mỗi

lơp các đối tượng trên sẽ bao gồm tất cả các đối tượng đối tượng cùng loại trong

một đối tượng mẹ đang mở:

Databases sẽ bao gồm tất cả các CSDL đang đựoc mở trong vùng làm việc

hiện tại;

RecordSets sẽ bao gồm tập hợp tất cả các Recordset đang được mở trên

CSDL hiện tại.

Khi đó, để tham chiếu đến một đối tượng cụ thể cần làm việc, có thể dùng

chỉ số (số thứ tự của đối tượng đó trên tập hợp tất cả các đối tượng đó) hoăc dùng

tên gọi đối tượng đó để tham chiếu.

Ví dụ: liệt kê tên của tất cả các Recordset đang sử dụng trong CSDL db.

Dim db As DAO.Database

Page 26: QUẢN TR CƠ S D LIỆU ACCESS 2

25

For i = 0 To db.Recordsets.Count

MsgBox db.Recordsets(i).Name

Next

Để làm việc tơi một đối tượng cụ thể, cần phải tham chiếu từ lơp các đối

tượng mẹ của nó.

Ví dụ: Để hiển thị giá trị của trường (Field) hoten trên tập hợp các bản ghi

(Recordset) rs1 làm như sau:

MsgBox rs1.Fields("hoten").Value

hoăc

MsgBox rs1.Fields![hoten].Value

3.2.2. Đối tương Database

Database là đối tượng dùng làm việc vơi một CSDL (trong trường hợp này

có thể hiểu một CSDL như một tệp Access .MDB).

Lơp các đối tượng con của Database được thể hiện qua sơ đồ sau:

Database

TableDefs

Containers

QueryDefs

Relations

Khai báo

Dim db As DAO.Database ' Gán db cho một CSDL cụ thể

Set db = OpenDatabase(“C:\Baitap\qlbh.mdb”)

'Đăc biệt, lệnh gán db cho CSDL hiện tại như sau:

Set db = CurrentDb

Khi không làm việc vơi CSDL nào đó, có thể ra lệnh đóng để giải phóng bộ

nhơ bằng cách:

db.Close

Sau khi lệnh này thực thi, tất cả các đối tượng con của db nếu đang mở sẽ

được đóng lại để giải phóng bộ nhơ. Bản thân db cũng được giải phóng bộ nhơ

(bằng Nothing), tất nhiên tệp CSDL và dữ liệu vân còn nguyên trên đĩa.

3.2.3. Đối tương RecordSet

Khai báo

Recordset là đối tượng dùng để miêu tả tập hợp các bản ghi của một bảng,

của một query hoăc tập các bản ghi kết quả của việc thi hành một câu lệnh SQL nào

đó.

Lơp các đối tượng con của Recordset được thể hiện qua sơ đồ sau:

Page 27: QUẢN TR CƠ S D LIỆU ACCESS 2

26

Khai báo:

Set rs=db.OpenRecordset(<Name>)

Trong đó:

Set rs = db.OpenRecordset là lệnh để tạo ra tập hợp các bản ghi từ CSDL db

gán vào biến kiểu recordset rs;

<Name> là một xâu ký tự chỉ ra nguồn dữ liệu sẽ trả về cho Recordset. Xâu

này có thể là tên một bảng, một Query hoăc một câu lệnh SQL.

Mỗi biến Recordset khi làm việc, phải được chỉ ra Database xuất xứ của nó

(phải được tham chiếu từ một biến kiểu Database đã được khai báo).

Ví dụ: Gán tập hợp các bản ghi từ bảng canbo vào biến Recordset

Dim rs As DAO.Recordset

Set rs = db.OpenRecordset("canbo")

Ví dụ: Gán tập hợp các bản ghi từ một câu lệnh chọn dữ liệu SQL vào biến

Recordset (ở đây là các thông tin hoten, ngaysinh của tất cả các cán bộ nữ từ bảng

canbo).

Dim rs As DAO.Recordset

Set rs = db.OpenRecordset("SELECT hoten, ngaysinh FROM canbo

WHERE gioitinh = False")

Một số thuộc tính của Recordset

Thuộc tính Name: Trả về xâu ký tự trong tham số <name> của lệnh gọi

Recordset.

Ví dụ: MsgBox rs.Name

Thuộc tính AbsolutePosition: Cho biết vị trí bản ghi hiện tại (được tính từ 0).

Trong trường hợp không có bản ghi nào trên recordset hoăc con trỏ bản ghi đang

nằm ở EOF- sẽ không thể lấy được giá trị thuộc tính này. Do vậy để sử dụng thuộc

tính này thường phải đi kèm thuộc tính kiểm tra có tồn tại bản ghi nào hay không

(RecordCount > 0) và con trỏ bản ghi có ở cuối tệp chưa (EOF = False).

Thuộc tính RecordCount: Cho biết tổng số bản ghi trả về trên Recordset.

Thuộc tính EOF: Cho biết con trỏ bản ghi hiện tại có nằm ở EOF hay không?

Nếu có giá trị thuộc tính này là True, trái lại là False.

Thuộc tính Fields: Dùng tham chiếu tơi các trường (Fields) trên tập hợp các

bản ghi mà Recordset trả về. Thực tế Field cũng là một đối tượng và cũng có bộ

thuộc tính và các phương thức của nó. Vơi Field của Recordset thông thường người

ta hay sử dụng thuộc tính Value. Nếu không chỉ định thuộc tính cụ thể nào cho

Field, VBA vân hiểu ngầm định đó là Value.

Ví dụ: Hiển thị giá trị trường hoten trong Recordset rs

Msgbox rs.Fields("hoten").Value

hoăc

Msgbox rs.Fields("hoten")

Một số phương thức của Recordset

Phương thức Close: Để đóng Recordset, giải phóng bộ nhơ. Chỉ thực hiện

hành động này khi không làm việc vơi Recordset nào đó.

Phương thức di chuyển ban ghi của Recorset: Phương thức MoveFirts: Dịch

chuyển con trỏ về bản ghi đầu tiên.

Phương thức MoveLast: Dịch chuyển con trỏ về bản ghi cuối cùng

Phương thức MoveNext: Dịch đến bản ghi kề sau

Phương thức MovePrevious: Dịch đến bản ghi kề trươc

Ví dụ: duyệt và hiển thị toàn bộ Hoten của bảng canbo

Page 28: QUẢN TR CƠ S D LIỆU ACCESS 2

27

Dim db As DAO.Database

Dim rs As DAO.Recordset

Set db = CurrentDb

Set rs = db.OpenRecordset("canbo")

If rs.RecordCount > 0 Then

rs.MoveFirst

While rs.EOF = False

MsgBox rs.Fields("hoten").Value

rs.MoveNext

Wend

End If

Phương thức AddNew, Update: Để thêm mơi một bản ghi vào Recordset.

Qui trình thêm một bản ghi mơi như sau:

Ra lệnh Addnew

Gán giá trị cho các trường của bản ghi mơi

Ra lệnh Update

Ví dụ: thêm mơi một hồ sơ cán bộ mơi vào bảng canbo

Dim db As DAO.Database

Dim rs As DAO.Recordset

Set db = CurrentDb

Set rs = db.OpenRecordset("canbo")

rs.AddNew

rs.Fields("canboID") = "CB0001"

rs.Fields("hoten") = "Lang Văn Tiền"

rs.Fields("ngaysinh") = #10/08/1989#

rs.Fields("gioitinh") = True

rs.Fields("chucvuID") = "CV001"

rs.Update

Phương thức Edit, Update

Phương thức Edit để sửa dữ liệu một bản ghi nào đó trên recordset. Qui trình

để sửa một bản ghi như sau:

Định vị tơi bản ghi cần sử trên recordset

Ra lệnh Edit

Gán giá trị mơi cho các trường cần sửa

Ra lệnh Update

Ví dụ: sửa hồ sơ cán bộ có mã CB0001

Dim rs As DAO.Recordset

Set db = CurrentDb

Set rs = db.OpenRecordset("SELECT * FROM canbo WHERE

canboID='CB000565'")

If rs.RecordCount > 0 Then

rs.MoveFirst

rs.Edit

rs.Fields("hoten") = "Nguyễn Văn Tiền"

rs.Fields("ngaysinh") = #22/11/1990#

rs.Update

End If

Page 29: QUẢN TR CƠ S D LIỆU ACCESS 2

28

Phương thức Delete: Để xoá bản ghi hiện tại ra khỏi Recordset. Khi đó bản

ghi hiện tại sẽ bị xoá bỏ khỏi CSDL. Cần thận trọng mỗi khi ra lệnh này. Thông

thường các lệnh một nút Xoá bản ghi của một mâu nhập liệu (nhập vào biến

Recordset rs) như sau:

Private Sub cmDelete_Click()

Dim tbao

tbao = MsgBox("Đã chắc chắn xoá chưa?", vbYesNo + vbCritical)

If tbao = vbYes Then

rs.Delete

rs.MoveNext

End If

End Sub

3.2.4. Đối tương QueryDef

Đối tượng Querydef dùng để tham chiếu tơi các Query có sẵn (Buil-in) trên

CSDL Access, hoăc cũng có thể lập trình tạo các Query từ các câu lệnh SQL.

Để tạo và kích hoạt một query trên VBA bằng cách thực thi câu lệnh SQL

chúng ta thực hiện như sau:

Khai báo một biến kiểu Database và một biến kiểu QueryDef

Dim db As DAO.Database

Dim qr As DAO.QueryDef

Ra lệnh tạo một Query mơi, có tên rỗng (chi ở trong bộ nhơ)

Set qr = db.CreateQueryDef(<tên query>)

Gán chuỗi lệnh SQL vào thuộc tính SQL của query

qr.SQL = "lệnh SQL cần thi hành"

Ra lệnh thi hành query

qr.Execute

giai phóng bộ nhơ

qr.Close

Trong đó:

Bắt buộc phải khai báo một biến kiểu QueryDef để làm việc (biến qr);

Phải có một biến Database đã được khai báo sẵn (biến db);

Lệnh Set qr = db.CreatQueryDef(<tên query>) để tạo một query mơi lên

CSDL. <tên query> sẽ được hiển thị trên danh sách trong thẻ Queries trên cửa sổ

Database. Nếu <tên query>="", query này sẽ chỉ tồn tại trong bộ nhơ.

Tuỳ thuộc vào mục đích công việc mà có đăt tên query hay không, nếu chỉ

đơn thuần tạo một query để xử lý công việ nào đó rồi giải phóng, nên đăt <tên

query>="";

Lệnh qr.SQL=<câu lệnh SQL> để gán lệnh SQL cần thực thi vào Query. Tuỳ

thuộc vào câu lệnh SQL này mà query sẽ thực hiện những gì.

Ví dụ: xoá tất cả các bản ghi trên bảng cán bộ:

qr.SQL = "DELETE * FROM Sinhvien"

Để tạo và kích hoạt một query trên VBA bằng cách thực thi câu lệnh SQL

chúng ta thực hiện như sau:

Page 30: QUẢN TR CƠ S D LIỆU ACCESS 2

29

Khai báo một biến kiểu Database và một biến kiểu QueryDef

Dim db As DAO.Database

Dim qr As DAO.QueryDef

Ra lệnh tạo một Query mơi, có tên rỗng (chi ở trong bộ nhơ)

Set qr = db.CreateQueryDef(<tên query>)

Gán chuỗi lệnh SQL vào thuộc tính SQL của query

qr.SQL = "lệnh SQL cần thi hành"

Ra lệnh thi hành query

qr.Execute

giai phóng bộ nhơ

qr.Close

Trong đó:

Bắt buộc phải khai báo một biến kiểu QueryDef để làm việc (biến qr);

Phải có một biến Database đã được khai báo sẵn (biến db);

Lệnh Set qr = db.CreatQueryDef(<tên query>) để tạo một query mơi lên

CSDL. <tên query> sẽ được hiển thị trên danh sách trong thẻ Queries trên cửa sổ

Database. Nếu <tên query>="", query này sẽ chỉ tồn tại trong bộ nhơ.

Tuỳ thuộc vào mục đích công việc mà có đăt tên query hay không, nếu chỉ

đơn thuần tạo một query để xử lý công việ nào đó rồi giải phóng, nên đăt <tên

query>="";

Lệnh qr.SQL=<câu lệnh SQL> để gán lệnh SQL cần thực thi vào Query. Tuỳ

thuộc vào câu lệnh SQL này mà query sẽ thực hiện những gì.

Ví dụ: xoá tất cả các bản ghi trên bảng cán bộ:

qr.SQL = "DELETE * FROM canbo"

3.2.5. Đối tương TableDef

Đối tượng TableDef được dùng để tham chiếu tơi các bảng dữ liệu (Table)

trên CSDL. Thông qua đối tượng này có thể thiết kế, chỉnh sửa được cấu trúc các

bảng dữ liệu trong chế độ Run-time của VBA như trên chế độ thiết kế bảng Design

View.

Một số thuộc tính quan trọng của TableDef

Thuộc tính Name: Cho biết tên bảng được gán vào biến kiểu TableDef

Thuộc tính RecordCount: Cho biết tổng số bản ghi hiện có trên bảng được

gán bởi biến TableDef

Thuộc tính DateCreated: Cho biết thời gian tạo ra bảng được gán vào biển

kiểu TableDef

Thuộc tính Fields: Để tham chiếu tơi các trường của bảng. Đây là thuộc tính

hay được sử dụng nhất đối vơi TableDef. Thực chất, Field ở đây là một đối tượng,

do đó cũng có tập các thuộc tính và phương thức riêng cho thuộc tính này.

Ví dụ: thủ tục hiển thị tên của tất các các trường trong một bảng (ngầm định trên

một CSDL đã được khai báo và gán biến db - kiểu Database).

Sub LietKeTenTruong(tenbang As String)

Dim tbl As DAO.TableDef

Page 31: QUẢN TR CƠ S D LIỆU ACCESS 2

30

Set tbl = db.TableDefs(tenbang)

For i = 0 To tbl.Fields.Count - 1

MsgBox tbl.Fields(i).Name

Next

End Sub

Một số phương thức của TableDef

Phương thức CreateTableDef: Để tạo ra một bảng mơi bằng VBA. Cú pháp tạo

bảng mơi như sau:

Set tbl = db.CreateTableDef(<Tên bảng mơi>)

Các thủ tục tạo trương mơi cho bang

db.TableDefs.Append tbl

Trong đó:

db – là biến kiểu Database đã được gán bởi CSDL cần làm việc (bảng mơi sẽ

được tạo ra trên CSDL này);

<Tên bảng mơi> là tên bảng cần tạo.

Lệnh db.TableDefs.Append tbl là lệnh ghi cấu trúc bảng đang khai báo lên

CSDL đã chỉ định.

Phương thức CreateField: Để tạo ra các trường cho một bảng kiểu TableDef nào

đó. Để thêm một trường mơi lên bảng, sử dụng cú pháp sau:

tbl.Fields.Append tbl.CreateField(<tên trường>,<KiểuDL>,<độlơn>)

Trong đó:

<tên trường> - tên trường mơi cần tạo;

<KiểuDL> - là một tuỳ chọn để khai báo kiểu dữ liệu của trường cần tạo.

Kiểu dữ liệu được khai báo theo các hằng số như sau:

dbBoolean Boolean

dbByte Byte

dbChar Currency

dbDate Date/Time

dbDecimal Decimal

dbDouble Double

dbFloat Float

dbGUID GUID

dbInteger Integer

dbLong dbLong

dbMemo Memo

dbNumeric Numeric

dbSingle Single

dbText Text

dbTime Time

<Độ lơn> là một tuỳ chọn để khai báo độ lơn dữ liệu nếu cần.

Ví dụ:

Sub TaoBangMoi()

On Error GoTo Loi

Dim tbl As DAO.TableDef

Set tbl = db.CreateTableDef("NewTable")

tbl.Fields.Append tbl.CreateField("ID", dbInteger)

tbl.Fields.Append tbl.CreateField("Name", dbText)

tbl.Fields.Append tbl.CreateField("Age", dbByte)

Page 32: QUẢN TR CƠ S D LIỆU ACCESS 2

31

tbl.Fields.Append tbl.CreateField("DateBirth", dbDate)

tbl.Fields.Append tbl.CreateField("Comment", dbMemo)

db.TableDefs.Append tbl

Exit Sub

Loi:

If Err.Number = 3010 Then

MsgBox "Đã tồn tại bảng có tên " + tbl.Name

End If

End Sub

3.2.6. Đối tương Relation

Đối tượng Relation dùng để tạo kết nối (RelationShip) giữa 2 bảng trong

CSDL Access.

Ví dụ: tạo kết nối giữa 2 bảng hoadon và khach trong CSDL Quản lý bán hàng.

Sub CreatRelationShip()

On Error GoTo Loi

Dim db As DAO.Database

Dim rls As DAO.Relation

Set db = CurrentDb

Set rls = db.CreateRelation("TaoQuanHe", "khach", "hoadon",

dbRelationUpdateCascade)

rls.Fields.Append rls.CreateField("khachID")

rls.Fields("khachID").ForeignName = "khachID"

db.Relations.Append rls

Loi:

If Err.Number = 3012 Then

MsgBox "Đã tồn tại quan hệ này !"

End If

End Sub

Trong truờng hợp đã tồn tại kết nối này, một thông báo lỗi tiếng Việt "Đã tồn

tại quan hệ này !" xuất hiện.

3.3. Bài toán đặt lọc dư liêu

Những yêu cầu cụ thể về lọc dữ liệu (điều kiện lọc). Kết quả trả về sẽ là một

tập hợp các bản ghi, có thể được kết xuất trên form hoăc được in ra máy in dươi

dạng report.

Quy trình thực hiện

Bươc 1: Xây dựng Subform - form sẽ chứa những kết quả lọc được.

Bươc 2: Xây dựng Mainform - form chứa những thiết lập điều kiện để lọc.

Bươc 3: Thực hiện lọc ra các bản ghi thoả mãn các điều kiện trên Mainform và hiển

thị kết quả lên Subform.

Ví dụ 1: Thực hiện form lọc dữ liệu sau:

Page 33: QUẢN TR CƠ S D LIỆU ACCESS 2

32

Hình 3.2.6.1 Kết qua hiển thị

Quy trình thực hiện:

Bươc 1: Xây dựng Form con

Sử dụng các ky năng thông thường để tạo một form con đáp ứng được các

kết quả theo như bài toán. Cụ thể từng bươc như sau:

Tạo mơi form ở chế độ Design view;

Thiết lập thuộc tính Record Source cho form là một Total Query như sau:

Hình 3.2.6.2 Màn hình thiết kế

Thiết lập thuộc tính Defaul View cho form con là Datasheets;

Mở cửa sổ FieldList và thiết kế form như sau:

Page 34: QUẢN TR CƠ S D LIỆU ACCESS 2

33

Hình 3.2.6.3 kết qua hiển thị

Đóng thiết kế form con lại và ghi ten là frm_formcon.

Bươc 2: Xây dựng form mẹ

Tạo mơi form ở chế độ Design view;

Đưa hộp Combobox từ thành công cụ Toolbox lên form mẹ (giả sử tên

(Name) của Combo này là Combo0). Sử dụng tính năng Combobox Wizard của

Access để làm việc này. Mục đích là đưa danh sách các khách hàng từ bảng khach

vào hộp Combo để chọn, phục vụ nhu cầu lọc dữ liệu.

Sử dụng đối tượng Sub-form/Sub-report trên thanh công cụ Toolbox để đưa

form con vừa tạo lên form mẹ. Ngầm định tên của subform này là frm_formcon.

Hình 3.2.6.4 Màn hình thiết kế

Bươc 3: Thiết lập lệnh lọc dữ liệu trên form mẹ

Công việc của bươc này là làm sao để sau khi chọn tên một khách hàng ở

hộp Combobox, danh sách các hoá đơn mua hàng của khách đó sẽ được hiển thị lên

form con. Muốn thế, việc lập trình lọc dữ liệu ở đây phải được thực hiện trong thủ

tục đáp ứng sự kiện Combo0_Click.

Giai thuật đáp ứng sự kiện Combo0_Click:

Tạo một biến Recordset để thi hành câu lệnh SQL đưa ra danh sách kết quả

thoả mãn điều kiện đăt lọc:

"SELECT hoadonID, khachID, ngayban, Sum([soluong]*[dongia])"

Page 35: QUẢN TR CƠ S D LIỆU ACCESS 2

34

+ " AS tongtien FROM "

+ " hoadon INNER JOIN (hang INNER JOIN hangban ON "

+ " hang.hangID = hangban.hangID) ON hoadon.hoadonID ="

+ " hangban.hoadonID WHERE Trim(khachID)='"+Trim(Combo0)"

+ " GROUP BY hoadonID, khachID, ngayban "

Gán thuộc tính Recorset của form con là biến kiểu recordset vừa tạo ra (chứa

kết quả đã lọc).

Ra lệnh làm tươi dư liệu cho form con.

Chú ý: trươc đó phải khai báo một biến kiểu Database toàn cục trong form và định

nghĩa nó ở thủ tục Form_Load()

Mô ta đoạn Code:

Dim db As DAO.Database

Private Sub Form_Load()

Set db = CurrentDb

End Sub

Private Sub Combo0_Click()

Dim rs As DAO.Recordset

Set rs = db.OpenRecordset("SELECT hoadonID, khachID, "

+ " ngayban, Sum([soluong]*[dongia]) AS tongtien FROM"

+ " hoadon INNER JOIN (hang INNER JOIN hangban ON "

+ " hang.hangID = hangban.hangID) ON hoadon.hoadonID ="

+ " hangban.hoadonID WHERE Trim(khachID)='"+Trim(Combo0)"

+ " GROUP BY hoadonID, khachID, ngayban ")

Set frm_formcon.Form.Recordset = rs

frm_formcon.Requery

End Sub

Page 36: QUẢN TR CƠ S D LIỆU ACCESS 2

35

Bài 4: Xây dựng thực đơn và thanh công cụ

Mục tiêu:

- Biết các cách tạo menu và thanh công cụ trong Access;

- Gắn đươc menu và thanh công cụ trên các form giao diện;

- Nghiêm tuc, ti mi trong quá trình tiếp nhận ly thuyết và thực hành.

4.1. Tạo menu

Menu là đối tượng được thiết kế có cấu trúc nhằm gắn kết các chức năng

phần mềm lại để người dùng thuận tiện trong việc khai thác các tính năng cũng như

CSDL. Có nhiều cách tạo menu trong Access, dươi đây chúng tôi trình bày cách

đơn giản, dễ tạo và hiệu quả, đó là: sử dụng khả năng Customize của thanh công cụ.

Trươc khi tạo menu, đảm bảo rằng xây dựng xong đầy đủ các tính năng cần

thiết của phần mềm; bươc này sẽ là cuối cùng, mang tính chất gắn kết các chức

năng lại thành phần mềm hoàn chỉnh.

Giả sử trong CSDL Quản lý lương cán bộ đã làm được những việc sau:

1. Đã tạo xong CSDL

2. Đã tạo form nhập dữ liệu cho bảng chucvu, form nhập dữ liệu cho

bảng phongban, form nhập dữ liệu cho bảng canbo;

3. Đã tạo xong report để in ra Danh sách chức vụ, Danh sách phòng ban;

4. Đã tạo xong form tìm kiếm cán bộ theo tên, in danh sách cán bộ một

phòng ban

5. Đã tạo xong form để giơi thiệu phần mềm (frmAbout)

Dươi đây là hương dân để tạo ra hệ thống menu có cấu trúc như sau:

Hình 4.1: Các mục chọn của menu Hệ thông

Page 37: QUẢN TR CƠ S D LIỆU ACCESS 2

36

Hình 4.2: các mục chọn của menu Dư liệu

Hình 4.3: các mục chọn của menu In ấn

Các bước để tọ hệ thống menu trên như sau:

Bươc 1: Tạo một Toolbar mơi

Nhấn chuột phải lên thanh công cụ của Access, chọn Customize

Hộp thoại Customize xuất hiện

Page 38: QUẢN TR CƠ S D LIỆU ACCESS 2

37

Hình 4.4: Hộp thoại Customize

Để tạo mơi một thanh công cụ, nhấn nút New. Hộp thoại sau xuất hiện, yêu

cầu gõ vào tên cho thanh công cụ:

Hình 4.5 Tạo thanh công cụ

Hãy gõ tên cho thanh công cụ, giả sử Quản lý lương. Gõ xong nhấn OK. Khi

đó mà hình làm việc xuất hiện một thanh công cụ trắng. Công việc tiếp theo là xây

dựng hệ thống Menu trên thanh công cụ này.

Hình 4.6 Chọn đôi tương

Bươc 2: Xây dựng các mục cấp 1

Các mục cấp 1 là: Hệ thống, Dữ liệu và In ấn. Để xây dựng các mục này,

trên hộp thoại Customize mở thẻ Commands. Ở danh sách Categories chọn New

Menu và lần lượt kéo mục New Menu trên danh sách Commands thả lên Toolbar

Page 39: QUẢN TR CƠ S D LIỆU ACCESS 2

38

đang thiết kế:

Hình 4.7 Chọn menu

Hãy lần lượt kéo thả đủ số menu cấp 1 (3 menu cấp 1). Tiếp theo lần lượt

thay đổi tiêu đề cho 3 menu này bằng cách:

Nhấn chuột phải lên menu cần thay đổi;

Gõ tiêu đề mơi vào hộp Name (hình dươi):

Hình 4.8 Đặt tên

Bươc 3: Xây dựng các mục cấp con

Ba mục tạo trên là cấp 1, các mục còn lại nằm trong 3 mục đó đều là mục

con, cháu. Bươc này sẽ xây dựng toàn bộ các mục con như vậy.

Mỗi mục con có thể là lời gọi một Form, một Report, một bảng,.. (gọi tắt là

đối tượng) ra để làm việc. Muốn mở đối tượng nào, hãy xác định chủng loại đối

tượng đó bên danh sách Categories; tiếp theo dùng chuột kéo-thả đối tượng cần đưa

lên menu từ danh sách Commands lên vị trí xác định trên menu đang thiết kế.

Page 40: QUẢN TR CƠ S D LIỆU ACCESS 2

39

Hình 4.9 Tạo mục cấp con

Hình trên minh hoạ cách đưa lời gọi đến form frmAbout lên menu Hệ thống.

Tương tự hãy đưa các form và report còn lại lên vị trí thích hợp trên menu

Quản lý lương. Cách đăt tên cho các menu này thực hiện tương tự như cách đăt tên

cho 3 menu mẹ đã trình bày.

Đăc biệt mục Exit lấy ở File | Exit.

Bươc 4: Quyết định là Menu hay ToolBar

Vơi các bươc làm việc như trên, Access ngầm hiểu là đang tạo một ToolBar.

Bươc này hương dân cách tuỳ chọn lại là menu hay toolbar? Cách làm như

sau:

Trở về thẻ ToolBars của hộp thoại Customize, chọn tên toolbar cần làm việc

(Quản lý lương) và nhấn nút Properties:

Hình 4.10 Lựa chọn Menu

Page 41: QUẢN TR CƠ S D LIỆU ACCESS 2

40

Hộp thoại Toolbar Properties xuất hiện cho phép thiết lập các thuộc tính cho

Toolbar đang chọn:

Hình 4.11 Lập thuộc tính

Toolbar Name - để thiết lập tên cho ToolBar;

Type - để xác định kiểu là ToolBar hay Menu?

Docking - để tuỳ chọn các kiểu khoá Menu: không cho phép thay đổi lại

(Can't Change); cho phép thay đổi lại Any Allow);

Show on Toolbars Menu – cho phép hiển thị trên hệ thống thanh công cụ và

menu;

Allow Customizing – cho phép định nghĩa lại các mục;

Allow Resizing – cho phép thay đổi kích cỡ hiển thị;

Allow Moving – cho phép di chuyển được;

Thiết lập xong nhấn Close

4.2. Tạo menu sử dụng công cụ

Trong Access, ngoài menu chuẩn ta có thể tạo một menu cho chương trình

để thực hiện các chức năng của chương trình như mở Form xuất nhập dữ liệu, lập

phiếu thu chi, in ấn các báo cáo…

4.2.1. Ta thực hiên như sau:

Vào menu View, chọn lệnh Toolbars (hoăc R_click vào thanh menu), chọn

Customize, trong thẻ Toolbar của hộp thoại Customize ta click vào nút New, xuất

hiện hộp thoại New Toolbar, ta gõ tên menu cần đăt vào khung Toolbar Name. OK

Click vào Propeties, xuất hiện hộp thoại: trong khung Type ta chọn Menubar

Chọn thẻ Command, trong khung Categories dòng New Menu và kéo chuột

từ nút New Menu sang thả vào thanh Menu vừa tạo.

R-click vào tên Menu vừa tạo để thay đổi các tiêu đề, biểu tượng như trường

hợp Toolbar

Vào thẻ Commands chọn các biểu tượng muốn tạo ra trên Menu, lần lượt kéo

chúng thả vào Menu, sau đó R-click đổi lại tên, biểu tượng (nếu cần).

Thường ta tạo các Menu mở hộp Form nhập liệu, các báo cáo,…trong All

Form, All Report.)

4.2.2. Găn Menu vào chương trinh:

Để gắn Menu vào chương trình ta thực hiện một trong 2 cách sau:

Page 42: QUẢN TR CƠ S D LIỆU ACCESS 2

41

Cách 1: Tạo một Macro có tên là AutoExec có: Action : SetValue,

Argument : Item: Application Menubar; Expression: Tên của Menu vừa tạo, nằm

trong căp dấu ngoăc kép.(ví dụ:”TuTao”)

Cách 2: Vào Menu Tool, chọn lệnh StarUp, xuất hiện hộp thoại StarUp vơi

các tuỳ chọn như sau, chọn xong click OK.

4.3. Tạo menu sử dụng macro

Ta có thể sử dụng Macro để xây dựng hệ thống Menu cho phép lựa chọn

công việc dễ dàng. Thông qua Menu, các đối tượng trong Database được liên kết

thành một khối thống nhất, thuận tiện cho người sử dụng.

Sau đây trình bày cách tạo một hệ thống Menu gồm các mục sau:

4.3.1. Cách tạo

Bươc 1: Tạo Menu cấp 1:

Trong cửa sổ Database, chọn Macro / New, xuất hiện cửa sổ Macro, khai báo

các thông tin như sau:

Hình 4.12 Cửa sổ Macro

Bươc 2: Tạo Menu cấp 2

Chọn Macro / New, chọn View / Macro Names để thêm cột Macro Name,

khai báo các thông tin như sau:

Page 43: QUẢN TR CƠ S D LIỆU ACCESS 2

42

Hình 4.13 Cửa sổ tạo menu

Hình 4.14 Tạo menu cấp 2

Action Arguments cho Macro Xem Danh sách Cán bộ

Report Name: R_DSCanbo

View : Print Preview

Hình 4.15 gán hành động

Bươc 3: Tạo Menu cấp 3

Page 44: QUẢN TR CƠ S D LIỆU ACCESS 2

43

Hình 4.16 tạo menu cấp 3

Bươc 4: Gắn Menu vừa tạo lên một Form (hoăc Report)

Trong cửa sổ Database, chọn Form / New

Kích chuột vào biểu tượng Properties trên thanh công cụ Form

Hình 4.17 Gắn menu vào form

Menu Bar: ghi tên của Macro dành cho Menu cấp 1

Lưu ý: Để tạo Menu, trươc khi tạo các Macro, các nguồn số liệu như Table, Query,

Report (nếu có) cần phải chuẩn bị trươc.

Trang trí thêm cho Form các thành phần như:

Tiêu đề chương trình

Hình vẽ để minh hoạ

Các trang trí khác (nếu muốn)

4.3.2. Sử dụng:

Mở Form đã gắn vơi thực đơn được tạo, có kết quả sau:

Page 45: QUẢN TR CƠ S D LIỆU ACCESS 2

44

Hình 4.18 kết qua

Khi ta đưa trỏ chuột chọn menu thì menu đó sổ xuống một thực đơn các cấp

theo menu đã tạo.

Đưa trỏ chuột vào chỉ mục cần thực thi và bấm chọn thì menu đó thi hành.

4.4. Tạo thanh công cụ

Một Menu hay Toolbar sau khi đã tạo ra, muốn đi kèm vơi đối tượng nào

phải thực hiện gắn kết vào đối tượng đó bằng cách thiết lập thuộc tính Toolbar - nếu

muốn gắn Toolbar hoăc Menu Bar – nêu muốn gắn menu bar.

Các bước tiến hành:

Bươc 1: Mở đối tượng cần gắn kết Menu hoăc ToolBar (ví dụ một form) ở chế độ

Design View:

Bươc 2: Chọn Menu Bar hoăc ToolBar cần gắn kết bằng cách thiết lập thuộc tính

ToolBar hoăc Menu Bar.

Tạo form chính: Form chính là form chứa hệ thống menu (hoăc toolbar) của

phần mềm, nó xuất hiện ngay sau khi khởi động (Start-Up Object). Vơi mỗi phần

mềm đóng gói hầu hết phải tạo form chính. Để từ đây có thể mở đến các chức năng

phần mềm cần làm việc.

Trong một tệp Access, form chính là một form được thiết kế ở chế độ Design

view; có gắn Menu (hoăc ToolBar) và được thiết lập khởi động đầu tiên mỗi khi tệp

này được mở.

Dươi đây là hương dân cách tạo form chính cho CSDL Quản lý lương như

thể hiện ở mục 1. Tạo menu:

Bươc 1: Tạo frmMain

Tạo một form mơi ở chế độ Design View;

Đăt tên form này là frmMain;

Thiết lập một số thuộc tính cho form như sau:

Menu Bar: Quản lý

Caption: Quản lý

Record: Seletor No

Navigation Button: No

Diving Line: No

Để mỗi khi form này khởi động sẽ tự động phóng cực đại cửa sổ, hãy mở cửa

sổ VBA và viết lệnh cho sự kiện Form_Open như sau:

Private Sub Form_Open(Cancel As Integer)

DoCmd.Maximize

End Sub

Bươc 2: Thiết lập các thông tin về ứng dụng

Mở thực đơn Tools | Startup.., hộp thoại Startup xuất hiện:

Page 46: QUẢN TR CƠ S D LIỆU ACCESS 2

45

Hình 4.4.1 Tạo thanh công cụ

Gõ tiêu đề phần mềm vào ô Application Title.

Chọn form chính ở hộp Display Form/Page (chọn frmMain).

Chọn Menu cho ứng dụng ở hộp Menu Bar (chọn menu Quản lý lương).

Hộp Application Icon để chọn một biểu tượng cho ứng dụng (loại tệp *.ico);

Cho phép hiển thị cửa sổ Database hay không?;

Cho phép hiển thị thanh trạng thái?

Cho phép thay đổi menu bar và toolbar?

Thiết lập xong nhấn OK để đóng lại.

4.5. Tạo menu tăt

Trươc khi tạo menu, chúng ta cần phải đảm bảo đã xây dựng xong đầy đủ

các tính năng cần thiết của phần mềm; bươc này sẽ là cuối cùng, mang tính chất gắn

kết các chức năng lại thành phần mềm hoàn chỉnh.

Quy trình tạo hệ thống menu:

Bươc 1: Tạo một Toolbar mơi.

Nhấn chuột phải lên thanh công cụ của Access, chọn Customize. Hộp thoại

Customize có các lựa chọn sau:

Hình 4.5.1 Tạo menu tắt

Page 47: QUẢN TR CƠ S D LIỆU ACCESS 2

46

Để tạo mơi một thanh công cụ, nhấn nút New. Hộp thoại sau xuất hiện, yêu

cầu gõ vào tên cho thanh công cụ:

Hãy gõ tên cho thanh công cụ. Gõ xong nhấn OK. Khi đó mà hình làm việc

xuất hiện một thanh công cụ trắng. Công việc tiếp theo là xây dựng hệ thống Menu

trên thanh công cụ này.

Hình 4.5.2 Cách tạo

Bươc 2: Xây dựng các mục cấp 1

Để xây dựng các mục này, trên hộp thoại Customize mở thẻ Commands. Ở

danh sách Categories chọn New Menu và lần lượt kéo mục New Menu trên danh

sách Commands thả lên Toolbar đang thiết kế, đăt tên cho danh mục menu.

Page 48: QUẢN TR CƠ S D LIỆU ACCESS 2

47

Hình 4.5.3 Đặt tên

Bươc 3: Xây dựng các mục cấp con

Mỗi mục con có thể là lời gọi một Form, một Report, một bảng,.. (gọi tắt là

đối tượng) ra để làm việc. Muốn mở đối tượng nào, hãy xác định chủng loại đối

tượng đó bên danh sách Categories; tiếp theo dùng chuột kéo-thả đối tượng cần đưa

lên menu từ danh sách Commands lên vị trí xác định trên menu đang thiết kế.

Đặc biệt mục Exit lấy ở File | Exit.

Bươc 4: Quyết định là Menu hay ToolBar

Vơi các bươc làm việc như trên, Access ngầm hiểu là đang tạo một ToolBar.

Chúng ta có thể tuỳ chọn lại là menu hay toolbar. Cách làm như sau:

Trở về thẻ ToolBars của hộp thoại Customize, chọn tên toolbar cần làm việc,

nhấn nút Properties: Hộp thoại Toolbar Properties xuất hiện cho phép thiết lập các

thuộc tính cho Toolbar đang chọn:

Thiết lập xong nhấn Close.

Page 49: QUẢN TR CƠ S D LIỆU ACCESS 2

48

Bài 5: Xây dựng ưng dụng Thời gian: 20 giờ (LT:6 giờ; TH: 13 giờ; KT:1 giờ)

Mục tiêu:

- Trình bày các kiến thức về quy trình xây dựng ứng dụng;

- Xây dựng đươc các ứng dụng vơi các form, và báo cáo hiệu qua và thân thiện;

- Xây dựng đươc tính bao mật cho ứng dụng;

- Chủ động, sáng tạo, ti mi trong quá trình thực hành tạo các ứng dụng.

5.1. Phân tích yêu cầu

5.1.1. Khảo sát bài toán

Bài toán quan ly nhân sự:

Yếu tố nhân sự và tiền lương là yếu tố quyết định sự tồn tại và phát triển của

bất kỳ một tổ chức, doanh nghiệp nào, nó đóng vai trò cốt lõi trong tổng thể hệ

thống quản trị nhân sự của doanh nghiệp đó. Tổ chức quản lý nhân sự và kế toán

tiền lương như thế nào để mang lại hiệu quả nhất? Đó là bài toán mà tất cả mọi

người quản lí cần quan tâm và giải quyết. “Ứng dụng access trong công tác quản lý

nhân sự và kế toán tiền lương” xây dựng một chương trình vơi các ứng dụng thích

hợp trong việc quản lý nhân sự, tính lương, xử lý các số liệu kế toán, ghi sổ, in sổ

liên quan đến phần hành kế toán tiền lương và các báo cáo kế toán.

Việc ứng dụng khoa học ky thuật vào quá trình sản xuất và quản lý không

còn là mơi lạ đối vơi các doanh nghiệp Việt Nam. Đăc biệt trong quá trình quản lý

hiện nay, hầu hết các doanh nghiệp đều sử dụng hệ thống công nghệ thông tin phát

triển vơi sự trợ giúp đắc lực từ các phần mềm quản lý, kế toán… nó giúp các doanh

nghiệp có một bộ phận quản lý tốt hơn, xử lý nhanh chóng các chứng từ, giúp các

doanh nghiệp nhanh chóng đưa ra được các quyết định đúng đắn kịp thời cho sự

phát triển của doanh nghiệp. Trong các phần mềm phổ biến trên thị trường hiện nay,

MS OFFICE vơi MS Access là hệ quản trị cơ sở dữ liệu thông dụng, dễ học, dễ

dùng, có thể tiếp cận một cách trực quan và nhanh chóng nhất, mà hầu hết các

doanh nghiệp đều có bộ công cụ dành cho văn phòng này. Và điểm nổi bật là nó tuy

đơn giản nhưng có thể đạt được các chức năng của phần mềm chuyên nghiệp khác

nhau như: quản lý nhân sự, quản lý các chứng từ, các bảng chấm công, báo cáo

thống kê, biểu mâu, tìm kiếm...Dựa trên những ưu điểm đó, nhóm đã tập trung

nghiên cứu và xây dựng nên một chương trình quản lý nhân sự và tiền lương chạy

trên nền MS Access mang tên “Ứng dụng access trong công tác quản lý nhân sự

và kê toán tiền lương”, đề tài nghiên cứu xây dựng một chương trình vơi các ứng

dụng thích hợp trong việc quản lý nhân sự, tính lương, xử lý các số liệu kế toán, ghi

sổ, in sổ liên quan đến phần hành kế toán tiền lương và các báo cáo kế toán…

5.1.2. Khái quát về quá trình quản lý nhân sự

Quá trình quản lý nhân sự bao gồm ba quá trình chính đó là:

Quan ly hồ sơ: tuyển dụng và đào tạo nhân sự, quản lý hồ sơ thông tin của

nhân viên

Quan ly lương: quản lý các thông tin lương cơ bản, tính lương tháng, thưởng

và phụ cấp cho cán bộ công nhân viên

Quan ly danh mục: Khi một đối tác hay một cổ đông muốn biết thông tin về

các phòng ban, hệ thống quản lý nhân sự cần đưa ra thông tin các tổ chức, các

phòng ban trong công ty. Đồng thời, khi họ muốn biết thông tin những người lãnh

đạo trong các bộ phận bất kì, thông qua các danh mục trong hệ thống nhân sự phòng

HCNS có thể đưa ra danh sách các chức vụ trong công ty cùng lý lịch của họ. Danh

Page 50: QUẢN TR CƠ S D LIỆU ACCESS 2

49

mục còn cung cấp cho nhân viên lịch làm việc của tuần hoăc tháng tiếp theo để họ

có thể chủ động trong công việc...

5.1.3. Khái quát chung về kê toán tiền lương

Tiền lương là biểu hiện bằng tiền của một bộ phận sản phẩm xã hội mà người

lao động được sử dụng để bù đắp hao phí lao động của họ trong quá trình sản xuất

kinh doanh. Tiền lương (hay tiền công) gắn liền vơi thời gian và kết quả lao động

mà người lao động đã tham gia thực hiện trong quá trình sản xuất kinh doanh của

doanh nghiệp.

5.2. Thiêt kê các thành phần cua ưng dụng

5.2.1. Xác định các kiểu thực thể và thực thể:

Các kiểu thực thể:

Tài khoản sử dụng 1; Chấm công; bảng lương; Trình độ văn hóa; Chứng từ phát

sinh; Nhân viên; Phòng ban; chức vụ.

Thực thể:

Căn cứ vào kiểu thực thể ta đưa ra được các thực thể tương ứng.

5.2.2. Mô hình quan hê dư liêu và quy trình dòng thông tin

Mô hình quan hệ dư liệu:

Hình 5.1: Mô hình quan hệ dư liệu

Quy trình dòng thông tin:

Page 51: QUẢN TR CƠ S D LIỆU ACCESS 2

50

Hình 5.2: Sơ đồ dòng dư liệu

5.3. Xây dựng form giao diên chính

Kế toán tổng hợp:

Hình 5.3: Biểu mẫu chính kế toán tổng hơp

Chức năng quản lý nhân sự:

Form quản lý hồ sơ nhân viên: gồm các chức năng quản lý hồ sơ, thông tin

lương cơ bản.

Form chấm công: chấm công cho các nhân viên

Page 52: QUẢN TR CƠ S D LIỆU ACCESS 2

51

Hình 5.4: Biểu mẫu chấm công

Ngày công tính lương đươc tính theo công thức:

Ngày Công tính lương = Ngày bình thường + 1,5 * Chủ Nhật + Ngày Lễ

Chức năng Kế toán chi tiết:

Report phiếu lương: chi tiết thông tin lương cho từng nhân viên. Ở đây các

khoản được tính theo công thức như sau:

TONGLUONG = IIf([NGAYTL]=26, [LGCB]+[PHUCAP]+[THUONG],

IIf([NGAYTL]<26,([LGCB]/26*[NGAYTL])+[PHUCAP]+[THUONG],IIf([NGA

YTL]>26,([LGCB]/26*[NGAYTL])+[PHUCAP]+[THUONG])))

BHXH = 0,05*[LGCB]

BHYT = 0,01*[LGCB]

BHTN = 0,01*[LGCB]

THUETNCN =

IIf([TONGLUONG]=5000000,0,05*[TONGLUONG],IIf([TONGLUONG]>50000

00 And

[TONGLUONG]<=10000000,[TONGLUONG]*,1,IIf([TONGLUONG]>10000000

And

[TONGLUONG]<=18000000,[TONGLUONG]*,15,IIf([TONGLUONG]>1800000

0,[TONGLUONG]*,2,0))))

LUONGTHUCTE = [TONGLUONG] - [BHYT] - [BHXH] - [BHTN] -

[THUETNCN] - [TU]

Page 53: QUẢN TR CƠ S D LIỆU ACCESS 2

52

Hình 5.5: Bang thanh toán lương, bang kê các khoan trích nộp theo lương

Report Bảng thanh toán lương, bảng kê các khoản trích theo lương (hình 3):

theo dõi tình hình thanh toán lương cho tất cả nhân viên có trong dữ liệu và thông

tin về các khoản trích nộp theo lương theo quy định của nhà nươc.

Chức năng Kế toán tổng hợp:

Chọn NHẬT KÝ CHUNG để xem sổ nhật ký chung và nhập các nghiệp vụ

kinh tế phát sinh

Hình 5.6: Sổ nhật ky chung

Sau khi nhập các nghiệp vụ kinh tế phát sinh, chương trình sẽ tự động lên các

sổ cái các tài khoản.

Page 54: QUẢN TR CƠ S D LIỆU ACCESS 2

53

Hình 5.7: Sổ cái, nhật ky chung

5.4. Kêt luân và hương phát triển

Ngày nay, tất cả các doanh nghiệp đều nhận thức được tính quan trọng của

việc xây dựng hệ thống quản lý hiệu quả nhân sự và kế toán tiền lương. Đối vơi một

doanh nghiệp đây là yếu tố cơ bản của quá trình sản xuất và là yếu tố mang tính chất

quyết định đến sự tồn tại và phát triển của mỗi doanh nghiệp.

Trong điều kiện nền kinh tế ngày càng phát triển, khoa học ky thuật công

nghệ ngày càng hiện đại, các doanh nghiệp cần phải hoàn thiện công tác tính và trả

lương để vừa mang tính khoa học, khách quan và hợp lý, phù hợp vơi tình hình thực

tế của doanh nghiệp, nhằm giảm chi phí hoạt động kinh doanh và tối đa hoá lợi

nhuận. Từ đó góp phần khuyến khích người lao động hăng say làm việc, phát huy

khả năng sáng tạo, nâng cao trách nhiệm quản lý làm tăng năng suất lao động và là

đòn bẩy kinh tế quan trọng, đem lại lợi nhuận cao cho doanh nghiệp, giúp doanh

nghiệp ngày càng phát triển hơn.

5.5. Xây dụng hê thống menu, thanh công cụ

Mỗi một chức năng ta có thể tạo các cấp độ Menu cho chương trình cho phù hợp và

tiện cho người sử dụng

5.6. Bảo mât ưng dụng

Sử dụng VBA để thiết kế giao diện kiểm tra mật khẩu như sau:

Page 55: QUẢN TR CƠ S D LIỆU ACCESS 2

54

Nút lệnh “Đồng ý” có đoạn Code như sau:

Private Sub Command4_Click()

DoCmd.Maximize

If IsNull(tn) Then

MsgBox "NHAP VAO MAT KHAU ", 64 , "THONG BAO"

Else

If tn = "123456" And ten = "ketoan" Then

DoCmd.Close

DoCmd.OpenForm "F_MAIN"

Else

MsgBox "pass'123456'ten'nhom4'", 64, "thong bao"

End If

End If

End Sub

Page 56: QUẢN TR CƠ S D LIỆU ACCESS 2

55

TÀI LIỆU CẦN THAM KHẢO

[1]:Phạm Văn Ất, Ky thuật lập trình Access trên Windows, NXB Hà Nội, 2002;

[2]:Dương Thùy Trang, Tham khảo nhanh Microsoft Access 2003, NXB Giao thông

vận tải, 2006;

[3]:Trương Công Phuc, Tự học và ứng dụng Microsoft Access 2007, NXB Hồng

Đức, 2008.