3.4.1 Truy vấn tham số
3.4.1.1 Khái niệm truy vấn tham số
Nếu thƣờng xuyên chạy cùng một truy vấn, nhƣng mỗi lần một tiêu chuẩn khác nhau, thay vì phải thiết kế lại truy vấn sau mỗi lần thực hiện, có thể tiết kiệm thời gian bằng cách tạo truy vấn tham số. Khi thực hiện loại này Access sẽ nhắc nhập điều kiện chọn trong hộp thoại enter parameter Value.
Ví dụ:
Giả sử thƣờng xuyên chạy một truy vấn để liệt kê danh sách nhân viên của một cơ quan nào đó có mã cơ quan nhập vào bất kỳ.
Hình 3.20. Parameter Query
* Chú ý: Nội dung các tham số mà chúng ta nhập vào có thể là hằng ( số,chuỗi,ngày..)nhƣng không đƣợc biểu thức
3.4.1.2 Tạo truy vấn tham số
Tạo truy vấn chọn và đƣa các bảng cần thiết vào tham gia truy vấn. Kéo các trƣờng cần thiết vào vùng lƣới QBE.
Tại hàng Criteria gõ vào biểu thức có chứa tham số với chú ý tên tham số phải nằm giữa 2 dấu ngoặc vuông ( [ ])
Tên tham số cũng là chuỗi nhắc nhở.Access cho phép có khoảng trắng và độ dài tối đa 255 ký tự.
Quy định kiểu dữ liệu cho tham số: Chọn memu Design/parameters. Trong hộp thoại query parameters : Trong mục Parameter chọn tham số, trong mục Data type chọn kiểu dữ liệu tƣơng ứng.
Hình 3.21. Tạo truy vấn tham số
Ví dụ: Tạo truy vấn để hiển thị danh sách các khách hàng mua một mặt hàng nào đó (mặt hàng đƣợc nhập bất kỳ từ bàn phím).
Tạo truy vấn để hiển thị danh sách các khách hàng mua hàng có họ lót đƣợc nhập từ bàn phím.
Hình 3.23. Ví dụ truy vấn tham số
3.4.1.3 Truy vấn nhiều tham số
Có thể tạo truy vấn , khi chạy truy vấn nhập nhiều dữ liệu cho điều kiện chọn lựa. Muốn vậy tạo truy vấn nhiều tham số.
Ví dụ:
Tạo một truy vấn hiển thị danh sách các khách hàng mua hàng trong khoảng thời gian nào đó (Thời gian đƣợc nhập từ bàn phím).
Tạo truy vấn chọn và đƣa các 2 bảng dshang và dskhach vào tham gia truy vấn. Kéo các trƣờng tenhang, tenkhach, ngaymua vào vùng lƣới QBE.
Tại hàng Criteria của trƣờng NGAYSINH chọn: Between [Từ ngày] and [Đến ngày]
Chọn Design query/Parameter khai báo kiểu dữ liệu cho 2 tham số là date/time.
Hình 3.24. Bảng dữ liệu nhiều tham số
Kết quả truy vấn sẽ cho kết quả
3.4.1.4 Kết hợp giữa truy vấn tham số và truy vấn tính tổng
Trong nhiều bài toán quản lý ngƣời ta thƣờng gặp những yêu cầu nhƣ: Hãy thống kê xem mỗi loại hàng trong một tháng nào đó bán đƣợc với tổng số lƣợng là bao nhiêu? Tổng thành tiền là bao nhiêu? (Tháng đƣợc nhập từ bàn phím). Vì vậy trƣớc hết chúng ta phải thực hiện truy vấn tính tổng xong mới kết hợp truy vấn tham số.
Ví dụ:
Hãy tạo một truy vấn để hiển thị tổng thanhtien của mỗi mặt hàng bán đƣợc trong một năm nào đó (Năm đƣợc nhập từ bàn phím).
Tạo một truy vấn chọn, đƣa bảng Dshang và dskhach vào tham gia truy vấn. Đƣa các trƣờng tenhang, ngayban, thanhtien vào vùng lƣới QBE.
Chọn Menu Design /Totals
Trong hàng Total: Chọn Group by đối với trƣờng tenhang, và year([ngayban]) Trong hàng Criteria đối với trƣờng Ngaysinh, ta chọn tham số sau:
[Nhap vao nam ban hang].
Hình 3.26. Kết quả truy vấn tham số kết hợp truy vấn tính tổng
3.4.2 Truy vấn có điều kiện
3.4.2.1 Các phép toán có so sánh
a. Các phép so sánh thông thƣờng (=; >; <; >=; <=; <>)
Phép toán so sánh đƣợc đặt trong các biểu thức điều kiện và có kết quả trả về là đúng / sai
b.Các phép toán logic AND , OR, BETWEEN..AND
Phép toán AND cho kết quả đúng khi các biểu thức tham gia đều có kết quả đúng Ví dụ:
Xét kết quả của biểu thức : x>=5 AND y < 2 Nếu x =5, y = 1; x >= 5 → đúng; y < 2 → đúng; Vậy x>=5 AND y < 2 → đúng
OR
Phép toán OR cho kết quả đúng khi một trong các biểu thức tham gia có kết quả đúng
Ví dụ:
Xét kết quả của biểu thức : x>=5 OR y < 2 Nếu x =5, y = 3; x >= 5 → đúng; y < 2 → sai; Vậy x>=5 OR y < 2 → đúng
BETWEEN … AND …
So sánh giá trị có thuộc trong khoảng không NOT Phủ định lại kết quả của biểu thức tham gia
Ví dụ:
Xét kết quả của biểu thức : NOT(x>=5)
Nếu x =5, x >= 5 → đúng; NOT(x>=5) →sai; LIKE c. Phép toán so sánh gần giống ALL/ IN/ NOT IN
Phép toán so sánh gần giống (có giá trị tƣơng đƣơng) chỉ sử dụng cho chuỗi. ALL / IN / NOT IN
Phép toán so sánh trên tập hợp, dùng kết hợp với các phép toán so sánh khác
ALL : tất cả
IN: thuộc vào tập hợp
NOT IN không thuộc vào tập hợp Ví dụ:
Xét biểu thức x > ALL (100, 32, 42, 75, 10).
Nếu x có giá trị lớn hơn tất cả các số trong tập hợp thì biểu thức có giá trị đúng, ngƣợc lại là sai
Khi x = 99 →sai Khi x = 101 → đúng
Xét biểu thức x IN (100, 32, 42, 75, 10). Khi x = 99 → sai Khi x = 75 → đúng
Xét biểu thức x NOT IN (100, 32, 42, 75, 10). Khi x = 99 →đúng Khi x = 75 → sai
3.4.2.2 Cách tạo truy vấn có điều kiện
Ví dụ: Thống kê danh sách học sinh nữ gồm : MAHS, Ho, Tên, Phái Các bƣớc thực hiện
Bƣớc 1, bƣớc 2, bƣớc 3 : Thực hiện tƣơng tụ khi tạo truy vấn Select đơn giản Bƣớc 4: đặt điều kiện tại dòng Criteria ( điều kiện là học sinh nữ, với quy ƣớc nữ là Yes (-1), Nam là No(0))
Hình 3.27. Ví dụ truy vấn có điều kiện
Bƣớc 5: sau khi nhấn nút Run trên menu lệnh thì sẽ có kết quả
Hình 3.28. Kết quả Ví dụ truy vấn có điều kiện
Lưu ý :
Khi so sánh bằng có thể bỏ qua dấu so sánh mà viết dữ liệu trực tiếp
Khi so sánh với KDL chuỗi thì phải đặt chuỗi trong dấu “” và nên dùng phép toán so sánh Like.
Dấu * đại diện cho các ký tự liên tục nhau Dấu? đại diện cho 1 ký tự
Khi so sánh với KDL ngày tháng phải dùng dấu #
Khi có nhiều điều kiện thì cần dùng các phép toán logic để kết hợp các biểu thức điều kiện với nhau.
AND : các biểu thức đƣợc đặt trên cùng dòng Criteria OR: các biểu thức đƣợc đặt khác dòng nhau ở dòng OR
Ví dụ
Tìm các học sinh có MAHS bằng 0002
Hình 3.29. Tìm các học sinh có MAHS bằng 0002
Tìm các học sinh có tên bắt đầu bằng chữ L
Hình 3.30. Tìm các học sinh có tên bắt đầu bằng chữ L
Tìm các học sinh có tên bắt đầu bằng chữ C và tên có 3 ký tự
Hình 3.31. Tìm các học sinh có tên bắt đầu bằng chữ C và tên có 3 ký tự
Tìm các học sinh có ngày sinh trƣớc ngày 1/1/1984. Lƣu ý sinh trƣớc năm 1984 là sinh từ năm 1983 trở về trƣớc nên so sánh nhỏ hơn.
Hình 3.32. Tìm học sinh thỏa mãn các điều kiện
Tìm các học sinh thi đợt 1 và có điểm > =5
Tìm các học sinh nữ đăng ký trƣờng Lê Hồng Phong hoặc học sinh nam đăng ký trƣờng Lê Quý Đôn
Hình 3.34. Tìm các học sinh nữ đăng ký trường Lê Hồng Phong hoặc học sinh nam đăng ký trường Lê Quý Đôn
Câu lệnh SQL tƣơng ứng cho query SELECT <Danh sách tên cột> FROM <Danh sách tên bảng>
WHERE <Biểu thức điều kiện>;