Tao các truy van long nhau trong Access

Go down

Tao các truy van long nhau trong Access

Post  Admin on 4/12/2007, 10:09

Tạo các truy vấn lồng nhau trong Access
Hỏi: Trong căn cứ dữ liệu Access của tôi có 3 bảng (bảng 1, 2, 3). Tôi muốn thiết kế một form gồm có field MaSV và TenSV lấy dữ liệu từ bảng dữ liệu SINH_VIEN, và một combo box cboMaMon dùng để liệt kê danh sách các môn học mà sinh viên hiện hành chưa đăng kư

Trả lời: Ư tưởng để giải quyết bài toán này là: bạn cần thiết kế một combo box có thuộc tính Row Source là một truy vấn (query) mà dữ liệu của nó được lọc từ danh sách tất cả các môn học (bảng dữ liệu MON_HOC) sao cho dữ liệu lọc được không nằm trong danh sách các môn học mà sinh viên hiện hành (có thông tin đang hiển thị trên form) đă đăng kư (bảng dữ liệu DANG_KY). Truy vấn này thuộc loại truy vấn lồng nhau.

Giả sử bạn thiết kế form có tên (thuộc tính Name) là SINH_VIEN để nhập dữ liệu vào các field MaSV và TenSV của bảng dữ liệu SINH_VIEN. Lúc này chưa vội thiết kế combo box. Bạn thiết kế một query có tên qryMonHocChuaDangKy với lệnh SQL gơ vào cửa sổ SQL View (cửa sổ này được mở bằng cách chọn mục SQL View trên tŕnh đơn View khi đang thiết kế truy vấn) như sau:

SELECT MaMon FROM MON_HOC
WHERE MaMon NOT IN (SELECT MaMon FROM DANG_KY
WHERE MaSV=[Forms]![SINH_VIEN]![MaSV]);

Sau đó, bạn thiết kế thêm một combo box (có tên cboMaMon) cho form SINH_VIEN với thuộc tính Row Source là qryMonHocChuaDangKy. Gơ đoạn mă sau đây vào thủ tục xử lư t́nh huống On Current của form:

Private Sub Form_Current()
cboMaMon.Requery
End Sub

Mỗi lần chuyển đến một mẩu tin sinh viên khác th́ combo box tạo lại danh sách.


Bảng 1: Bảng dữ liệu SINH_VIEN



Bảng 2: Bảng dữ liệu MON_HOC


Bảng 3: Bảng dữ liệu DANG_KY
avatar
Admin
Admin

Posts : 41
Join date : 2007-09-29

View user profile http://cntt207.forumotion.com

Back to top Go down

Back to top


 
Permissions in this forum:
You cannot reply to topics in this forum