1/11/2013

HƯỚNG DẪN THỰC HÀNH ACCESS 2003 – PHẦN QUERY HƯỚNG DẪN CHI TIẾT DỂ HIỂU

Nguyễn Nhật Thiên | 1/11/2013|


VD: Xây dựng CSDL Quản lý lương cán bộ một cơ quan có cấu trúc như sau :

Yêu cầu :
- Thiết kế cấu trúc các bảng một cách phù hợp : kiểu dữ liệu các trường;
trường khoá; thuộc tính Lookup và các thuộc tính khác;
- Thiết lập quan hệ cùng các thuộc tính đảm bảo toàn vẹn dữ liệu cho các quan
hệ;
- Nhập dữ liệu như sau :



chuc vu
Mã chức vụ
Tên chức vụ
Phụ cấp chức vụ
 GD
Giám Đốc
900000
NV
Nhân Viên
500000
PGD
Phó Giám Đốc
800000
PP
Phó Phòng
600000
TP
Trường Phòng
700000
 
phong ban
Mã phòng ban
Tên phòng ban
KD
Kinh Doanh
KH
Khác
KT
Kỹ Thuật
SX
Sản Xuất



+ 4 phòng ban;
+ 5 loại chức vụ;
+ 20 hồ sơ cán bộ.

Thiết kế Query

Câu 1: Hãy tính và in ra bảng lương của cơ quan bao gồm các thông tin: Hoten, ngaysinh, tenchucvu, tenphongban, luongchinh, phucapcv, dangphi, congdoanphi, thuclinh.

Trong đó:
Luongchinh = hesoluong * 290000
Dangphi = 20,000 với những ai là Đảng viên
Congdoanphi = 5%Luongchinh với những ai đã vào công đoàn
HD:
B1: Query/New/Design Wiew
B1 Chọn tất cả 3  bảng: can bo, chuc vu, phongban
B3: Thiết kế và gõ công thức như sau:
Tại hàng Field:
Ø  luongchinh: [hesoluong]*29000
Ø  dangphi: IIf([ladangvien]=Yes,"20000","0")
Ø  congdoanphi: IIf([vaocongdoan]=Yes,0,05*[luongchinh],"0")
Ø  thuclinh:[luongchinh]+[phucapcv]
Cấu trúc hàm IIF như sau:
a.      Hàm iif đơn giản:
IIF([tên trường]=<điều kiện>,<lệnh đúng>,<lệnh sai>)
b.      Hàm IIF lồng nhau:
IIF([tên trường 1 ]=<điều kiện 1 >,<lệnh đúng 1>, IIF([tên trường 2]=<điều kiện2>,<lệnh đúng2>… IIF([tên trường n]=<điều kiện n>,<lệnh đúng n>,<lệnh sai>)

kết quả:

Câu 2: Hãy đưa ra danh sách các cán bộ là Đảng viên mà chưa vào công đoàn?
HD:
B1: Query/Create query by using winzard
B2: Họp thoại Table/query ta chọn bảng canbo

Chọn Next à Nextà Finshà Xuất kết quả, sau đó bấm nút lệnh 
 để về chế độ Design view
Tại cột ladangvien dòng Criteriayes à nghĩa là theo như đã khai báo ban đầu thuộc tính yes/no chọn tick vào ô ladangvien = yes, máy ngầm hiểu là yes và ngược lại ko tick vào máy hiểu là No.





KQ:



Câu 3: Hãy lọc ra danh sách cán bộ của một phòng ban nào đó, tên phòng ban được nhập từ bàn phím khi query được kích hoạt;
B1: Query/New/Design Wiew
B2: Làm như hình dưới

B3: Lưu query và chạy sẽ có thông báo
Giả sử nhập phòng Kinh Doanh       




Câu 4: Hãy lọc ra danh sách cán bộ là Đảng viên và có thực lĩnh lớn hơn một số nào đó- được nhập từ bàn phím khi query được kích hoạt;
Dùng Bảng cau1 là bảng được lấy ở query câu 1.

KQ: giả sử nhập 45.000

Câu 5: Hãy lọc ra danh sách cán bộ mà năm sinh rơi vào trong một khoảng năm nào đó được nhập vào từ bàn phím. Ví dụ: khi kích hoạt query, Access yêu cầu nhập vào khoảng năm sinh từ năm nào, đến năm nào. Khi đó query sẽ lọc ra danh sách các cán bộ thoả mãn điều kiện đó;
Hãy tạo query lấy dữ liệu như sau:

Câu 6: Lọc ra danh sách cán bộ có tên được nhập vào từ bàn phím khi kích hoạt query. Ví dụ: khi query kích hoạt sẽ hỏi: Gõ vào tên cần xem? Sau khi gõ vào một tên (có thể cả họ hoặc cả họ và tên), máy tính sẽ lọc ra danh sách cán bộ thảo mãn điều kiện;
HD

Câu 7: Lọc ra danh sách cán bộ đến tuổi nghỉ hưu, biết rằng điều kiện nghỉ
hưu xác định như sau:
- Là Nam giới, tuổi >=60
- Là Nữ giới, tuổi >=55
HD

Kết quả :

Câu 8: Hãy đưa ra bảng tổng hợp số cán bộ đã vào Đảng hay chưa vào Đảng theo giới tính như sau:

    HD: Ta làm như sau: Chọn trường gioitinh them 2 trường Là Đảng viênChưa vào Đảng, gõ công thức nhu hình dưới. Ở đây  Chưa vào Đảng: IIf([ladangvien]=No,1), vì sao ta cho điều kiện đúng là 1 là cho ra kết quả là một biến bất kỳ cho máy tính đếm mà thôi, thực ra ở chỗ 1 có thể là kí tự hoặc số đều được( nếu là ký tự thì chú ý là nó phải nằm trong “ ” )
Để xuất hiện dòng Total ta vào view\totals hoặc click 
-        
Câu 9: Hãy đưa ra bảng tổng hợp tổng số cán bộ theo từng loại chức vụ của
các phòng ban như sau:


HD: Các bước làm như sau:
-                 Phân tích đề : Như đề thì máy tính sẽ đếm số cán bộ trong từng phòng ban và tính tổng cán bộ.
-         Sử dụng Crosstab Query (vào Query/ Crosstab Query) để giải quyết tình huống trên.
+ Chú ý những trường nào hiện thị thì không thể đếm và ngược lại. Ví dụ hiển thị tên phòng ban gồm Kinh doanh, Kỹ thuật, sản xuất, khác thì không thể đếm trường tenphongban mà ta đếm trường làm khóa chính của nó tức là phongbanID, tương tự ta đếm tổng số cán bộ. (Xem hình dưới)


Câu 10: Đưa ra bảng tổng hợp về chức vụ theo giới tính như sau:

HD: Tương tự như câu 9 ta có: chú ý để xuất hiện Nam, Nữ thêm trường giới tính
Giới tình: IIf([gioitinh]=Yes,"Nam","Nữ")


Câu 11: Đưa ra bảng tổng hợp lương theo từng phòng ban như sau:

HD: Ta làm như sau:
B1: chọn bảng phong ban, chọn query tạo ở câu 1
B2: Tạo liên kết phongbanID
B3: sử dụng Crosstab Query truy vấn như hình dưới.

Câu 12. Xuất ra DSCB có ngày sinh từ ngày 01/01/1965 đến ngày 01/01/1985 và đồng thời những cán bộ trên cùng họ Nguyễn.
HD:  Xây dựng Query như sau:

Tìm CB họ Nguyễn:                Like "Nguyễn *"
            Tìm CB có ngày tháng năm sinh theo đề:       >#01/01/1965# And <#01/01/1985#
Hoặc là Between #01/01/1965# And #01/01/1985#
Kết quả:

Một số dạng bài tập trong phần Query và lời giải bởi nhatthienkt.
Chia sẻ trên BLOG của nhatthienkt'Blog
Chúc các bạn học tốt và vui vẻ! 
Fnhuw