Thứ Sáu, 1 tháng 7, 2016

Phát triển HTTT kế toán bằng MS Access - Chương 4 - Dùng truy vấn con để tìm các khách hàng chưa có hóa đơn

James Perry, Richard Newmark


Chương 4
Tạo và dùng câu truy vấn


Dùng truy vấn con để tìm các khách hàng chưa có hóa đơn


Bạn có thể dùng lệnh SQL làm tiêu chí cho cột bên trong giao diện lưới QBE mà bạn đã quen thuộc. Giả sử bạn muốn liệt kê họ và tên các khách hàng chưa có hóa đơn. Bạn có thể làm theo hai bước, đầu tiên tìm những khách hàng hóa đơn bằng cách chọn CustomerID từ bảng tblInvoice. Danh sách đó cho biết những khách hàng có hóa đơn. Nếu bạn áp danh sách đó – các khóa ngoại đối với bảng tblCustomer – lên cột CustID thuộc bảng tblCustomer và lờ đi những giá trị trùng khớp thì sẽ được các khách hàng chưa có hóa đơn. Bạn có thể dùng kỹ thuật tương tự để xác định những nhân viên nào hiện thời chưa có khách hàng. Ta hãy thử lợi dụng câu truy vấn SQL đơn giản này.

BÀI TẬP 4.15: TẠO TIÊU CHÍ BẰNG CÁCH DÙNG LỆNH SQL

1. Kích CREATE tab, kích Query Design trong nhóm Queries, kích kép tblCustomer để thêm nó vào khung thiết kế truy vấn, rồi đóng hộp thoại Show Table. Kéo cạnh đáy của khung bảng để hiển thị toàn bộ trường.

2. Trong khung bảng, kích kép các trường sau, theo thứ tự đã liệt kê, để thêm chúng vào các ô trên dòng Field: CustFirstName, CustLastName, CustID, CustLastName, và CustFirstName. Để ý rằng bạn đang thêm một bản sao của các trường CustFirstName và CustLastName.

3. Kích ô Criteria ngay bên dưới cột CustID. Nhấn Shift+F2 để mở hộp thoại Zoom.

4. Gõ biểu thức sau rồi kích OK để đóng hộp thoại Zoom khi bạn hoàn tất:

Not in (Select CustomerID From tblInvoice)

5. Kích ô Show ở ba cột bìa phải (CustID, CustLastName, và CustFirstName) để xóa các đánh dấu. Ba cột cuối trong năm cột không xuất hiện trong kết quả. Chỉ hai cột đầu được đánh dấu. (Sự trùng lắp của họ và tên phục vụ cho sắp xếp chứ không hiển thị.)

6. Kích dòng Sort bên dưới cột CustLastName bên phải, gõ Asc, rồi nhấn Enter. Kích dòng Sort bên dưới cột CustFirstName bên phải, gõ Asc, rồi nhấn Enter. Access sẽ sắp tập động dynaset theo thứ tự tăng dần của họ rồi theo tên nếu họ bị trùng (xem Hình 4.32).

Hình 4.32 Một truy vấn với lệnh SELECT làm tiêu chí.

7. Kích nút Run trong nhóm Results thuộc tab ngữ cảnh DESIGN để thi hành truy vấn.

8. Kích nút Save trong thanh công cụ truy xuất nhanh Quick Access Toolbar, gõ MySQLQuery, rồi kích OK để lưu truy vấn. (Vẫn để mở câu truy vấn để làm tiếp phần Thử nghiệm.)

Bạn rất có thể để ý một khoảng lặng (4 hay 5 giây) trước khi tập động dynaset xuất hiện. Khoảng lặng là do thời gian thi hành truy vấn trong tiêu chí rồi so sánh từng giá trị ID của khách hàng với danh sách ID trả về. Nếu truy vấn của bạn hoạt động đúng, tên khách hàng đầu tiên trong danh sách sẽ là Ole Aaes, và phải có 1358 khách hàng trong tập động dynaset. Nghĩa là, 1358 khách hàng trong số 1789 chưa có hóa đơn.

Bài tập Thử nghiệm tới sẽ chỉ cách xem lại lệnh SQL mà Access đã phát sinh cho truy vấn trên. Rất cần xem lại lệnh nào đã gửi cho cơ sở dữ liệu Access để phát sinh và trả về tập động dynaset.

THỬ NGHIỆM

Với truy vấn MySQLQuery đang mở ở góc nhìn Design hay Datasheet, kích phải MySQLQuery tab rồi kích SQL View trong pop-up menu. Access hiển thị lệnh SQL để tra tập động dynaset trình bày ở Hình 4.32. Access có xu hướng dùng nhiều cặp ngoặc tròn không cần thiết, nhưng làm vậy để tránh sai sót về thứ tự thao tác. Kích phải MySQLQuery tab rồi kích Close để đóng truy vấn.

Không có nhận xét nào:

Đăng nhận xét