Khi thay đổi cấu trúc của bảng bạn cần chú ý đến việc thay đổi thuộc tính của các trường, tên trường,.. phải thống nhất giữa các bảng có thiết lập quan hệ. Nếu không Access sẽ thông báo lỗi sau khi bạn thay đổi cấu trúc của
bảng:
3.7 Một số hàm thường dùng trong ACCESS :
Hàm Left$(<Chuỗi>,<n>): Trích bên trái chuỗi n ký tự. Hàm Right$(<Chuỗi>,<n>): Trích bên phải chuỗi n ký tự. Hàm Ucase(<Chuỗi>): Trả lại một chuỗi in hoa.
Chương 3: Chỉnh sửa cấu trúc và tinh chế bảng
Hàm Lcase(<Chuỗi>): Trả lại một chuỗi in thường.
Hàm IIF(<Điều kiện>,<Giá trị 1>,< Giá trị 2>): Nếu <Điều kiện> nhận giá trị true thì hàm trả lại <Giá trị 1>, ngược lại hàm trả lại <Giá trị 2>. Ứng dụng của các hàm này vào việc lọc dữ liệu.
Chương 4: Truy vấn (Query)
CHƯƠNG IV: TRUY VẤN (QUERY)
Sức mạnh thực sự của CSDL là khả năng tìm đúng và đầy đủ thông tin mà chúng ta cần biết, trình bày dữ liệu sắp xếp theo ý muốn. Để đáp ứng yêu cầu trên, Acces cung cấp một công cụ truy vấn cho phép đặt câu hỏi với dữ liệu đang chứa bên trong các bảng trong CSDL.
4.1 Khái niệm về truy vấn và các loại truy vấn
4.1.1 Khái niệm
Truy vấn là một công cụ cho phép đặt câu hỏi với dữ liệu trong bảng dữ liệu trong CSDL.
Loại truy vấn thông dụng nhất là truy vấn chọn (Select Query ). Với kiểu truy vấn này chúng ta có thể xem xét dữ liệu trong các bảng, thực hiện phân tích và chỉnh sửa trên dữ liệu đó, có thể xem thông tin từ 1 bảng hoặc có thể thêm nhiều trường từ nhiều bảng khác nhau.
Ví dụ:
Cho 2 bảng dữ liệu KHOHANG (MAHANG, TENHANG, GIA)
BANHANG(MAHANG, TENKHACH, SOLUONG, NGAYMUA). Hãy hiển thị những khách hàng mua hàng trong tháng 7 bao gồm các thông tin: MAHANG, TENHANG, GIA, TENKHACH.
Sau khi thực hiện truy vấn, dữ liệu thỏa mãn yêu cầu được rút ra và tập hợp vào một bảng kết qủa gọi là Dynaset (Dynamic set). Dynaset cũng hoạt động như 1 bảng (Table) nhưng nó không phải là bảng và kết quả khi hiển thị có thể cho phép sửa đổi.
Một loại bảng thể hiện kết quả truy vấn khác là Snapshot, nó tương tự như dynaset tuy nhiên không thể sửa đổi thông tin ( Như truy vấn Crosstab....).
4.1.2 Các loại truy vấn
Select Query : Truy vấn chọn
Crosstab Query : Truy vấn tham khỏa chéo (Thể hiện dòng và cột) Action Query : Truy vấn hành động gồm
Truy vấn tạo bảng (make table Query ) Truy vấn nối (append Query )
Truy vấn cập nhật ( Update Query ) Truy vấn xóa dữ liệu ( Delete Query )
Chương 4: Truy vấn (Query)
Pass throught Query : Gởi các lệnh đến một CSDL SQL như Microsoft SQL server.
4.2 Cách tạo truy vấn
4.2.1 Tạo truy vấn “Query Wizard”
Trong cửa sổ database, chọn Queries, chọn lệnh New, xuất hiện hộp thoại New Query:
Chọn Simple Query Wizard, nhấn OK, xuất hiện Simple Query Wizard:
Ở hộp Table/Queries: Chọn bảng chứa các trường đưa vào Query. Ở hộp Available fields: Chứa các trường có trong bảng được chọn
Chọn trường cần đưa vào Query rồi nhấn nút >; muốn chọn tất cả các trường thì nhấn nút >>
Nhấn Next, xuất hiện hộp thoại Wizard thứ hai (hình 4.3) nếu như bạn đã chọn các trường số để đưa vào Query ngược lại sẽ xuất hiện hình 4.4:
Hình 4.1. Hộp thoại New Query
Chương 4: Truy vấn (Query)
Nhập tiêu đề mới cho Query trong hộp What title do you want for your query? Nếu bạn muốn hiển thị query thì chọn Open the query to view information để mở query trong chế độ hiển thị datasheet.
Chọn Modify the query design để mở query trong chế độ hiển thị design. Nhấn nút finish để hoàn thành.
4.2.2 Tạo truy vấn “From Scratch Method”
Hình 4.3. Hộp thoại thứ hai của Simple Query Wizard nếu chọn trường số
Chương 4: Truy vấn (Query)
Trong cửa sổ database, chọn Queries, chọn lệnh New, xuất hiện hộp thoại New Query -> Design Query:
Access mở cửa sổ Select Query đồng thời với hộp thoại Show Table, chọn
Table/Query có chứa dữ liệu cần thiết cho Tham gia vào truy vấn
Chọn các trường tham gia vào truy vấn trong hộp Field
Để nêu điều kiện cho trường nào thì Gõ điều kiện tại dọng Criteria của trường đó
Muốn sắp xếp thự tự thì chọn tại dòng
Sort, chọn Ascending (tăng dần), Descending (giảm dần)
Để che không cho trường nào xuất hiện trong Query thì tại dòng Show tắt thuộc tính Show.
Chọn nút Close để đóng và lưu Query
Như vậy bạn vừa tạo xong một Query theo kiểu “Select Query” Ví dụ:
4.3 Một số xử lý khi thực hiện truy vấn
Chương 4: Truy vấn (Query)
Mở query trong chế độ hiển thị design:
Trong ô Field chọn trường cần đưa vào query.
Trong ô Table chọn bảng chứa trường cần đưa vào query.
Đánh dấu chọn trong ô Show để hiển thị trường được chọn trong query.
4.3.2 Sắp xếp lại, chèn và xóa các trường
1. Sắp xếp lại các trường
- Chọn trường cần thay đổi vị trí. - Rê đến vị trí mới, thả chuột. 2. Xoá các trường
- Đưa con trỏ vào thanh chọn sao cho con trỏ biến thành hình mũi tên trỏ xuống, click để chọn trường
- Nhấn phím delete
Nếu muốn xoá tất cả các trường trong vùng lưới QBE: chọn Edit/clear grid
4.3.3 Điều chỉnh độ rộng cột.
- Đưa con trỏ vào đường biên của hai trường sao cho con trỏ biến thành hình mũi tên hai đầu.
- Kéo chuột để tăng, giảm độ rộng của trường cho phù hợp rồi thả chuột.
Chương 4: Truy vấn (Query)
Muốn biết tên trường hiện tại trong vùng lưới QBE là của tên bảng nào, tại chế độ Design View người sử dụng thực hiện View/tables name.
4.3.5 Xem bảng kết quả của truy vấn.
Tại cửa sổ Database chọn tên truy vấn rồi chọn Open, hoặc trong khi thiết kế truy vấn thực hiện lệnh View/datasheet View.
4.3.6 Đổi tên trường trong truy vấn.
Đổi tên trường trong truy vấn mục đích là làm cho bảng kết xuất dễ đọc hơn (Trừ khi đã quy định thuộc tính Caption).
Muốn đổi tên tiêu đề cột thực hiện theo các bước sau:
- Mở truy vấn ở chế độ Design View
- Chọn vào bên trái ký tự đầu tiên của tên trường trong vùng lưới QBE - Gõ vào tên mới, theo sau là dấu 2 chấm (:).
4.3.7 Định thứ tự sắp xếp
Có thể sử dụng nhanh trong chế độ datasheet View .
Có thể tạo sắp xếp trong khi thiết kế truy vấn bằng cách chọn Ascending (tăng dần) hoặc Descending (giảm dần) trong hàng Sort của vùng lưới QBE.
Chú ý: Nếu có nhiều trường định vị sắp xếp thì theo thứ tự ưu tiên từ trái sang phải.
Chương 4: Truy vấn (Query)
4.3.8 Lập tiêu chuẩn chọn lựa (Criteria)
1. Chọn một nhóm các bản ghi thỏa mãn một điều kiện nào đó
Muốn thực hiện các phép chọn trong khi thể hiện truy vấn người ta thường sử dụng các phép toán sau:
Phép toán Ví dụ Ý nghĩa < > >= <> = <#20/10/99# >#10/10/98# >= #05/05/90# <>#01/01/99# = #10/10/97# Trước ngày 20/10/99 Sau ngày 10/10/98
Sau và trong ngày 05/05/90 Khác ngày 01/01/99 Trong ngày 10/10/97 Between .... and ... Between #1/2/97# and #1/7/97# Từ ngày 1/2/97 đến 1/7/97 Ví dụ:
Cho 2 bảng dữ liệu Dslop(Malop, Tenlop)
Dssv(Masv, malop, hotensv, ngaysinh, quequan, giotinh, hocbong)
Tạo một truy vấn để hiển thị danh sách những sinh viên có ngaysinh trong khoảng thời gian từ 05/0784 đến 10/09/85 bao gồm các trường: Tenlop, Masv,Hotensv, Ngaysinh.
Tạo truy vấn chọn và đưa 2 bảng dslop và dssv vào tham gia truy vấn Đưa các trường Tenlop, Masv, hotensv, ngaysinh vào vùng lưới QBE Trong hàng Criteria của trường Ngaysinh: Between #05/02/84# and #10/09/85#
Chương 4: Truy vấn (Query)
2. Ký tự thay thế
Ký tự * : Thay thế một nhóm ký tự bất kỳ. Ký tự ? : Thay thế 1 ký tự.
Ký tự [ ] : Thay thế các ký tự trong ngoặc vuông. Ký tự ! : Phủ định.
Ký tự - : Từ ký tự đến ký tự. Ví dụ
Cho 2 bảng dữ liệu Dslop(Malop, Tenlop)
Dssv(Masv, malop, hotensv, ngaysinh, quequan, giotinh, hocbong)
Tạo một truy vấn để hiển thị danh sách những sinh viên có Tenlop bắt đầu là "T" bao gồm các trường: Tenlop, Hotensv, Ngaysinh,
Tạo truy vấn chọn và đưa 2 bảng dslop và dssv vào tham gia truy vấn Đưa các trường Tenlop, hotensv, ngaysinh vào vùng lưới QBE
Trong hàng Criteria của trường Tenlop: Like "T*"
3. Chọn các bản ghi không phù hợp với một giá trị nào đó Dùng toán tử Not
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên có Tenlop không bắt đầu là "T" bao gồm các trường: Tenlop, Hotensv, Ngaysinh,
Chương 4: Truy vấn (Query)
4. Định nhiều tiêu chuẩn trong lựa chọn
Dùng phép “Và” và phép “Hoặc” trong một trường
Muốn quy định nhiều tiêu chuẩn trong cùng một trường, chúng ta phải sử dụng toán tử AND (và ) cùng toán tử OR (hoặc).
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên có Họ là "Nguyễn" và Tên "Thuỷ" bao gồm các trường: Tenlop, Hotensv, Ngaysinh. Tạo truy vấn chọn và đưa 2 bảng dslop và dssv vào tham gia truy vấn
Đưa các trường Tenlop, hotensv, ngaysinh vào vùng lưới QBE
Trong hàng Criteria của trường Hotensv : Like "Nguyễn *" and "* Thuỷ"
Dùng phép “Và” và phép “Hoặc”trên nhiều trường
Ví dụ: Tạo một truy vấn để hiển thị danh sách những sinh viên có Họ là "Nguyễn" và tên "Thuỷ" và có quê quán ở "Huế" bao gồm các trường: Tenlop, Hotensv, ngaysinh Quequan.
Tạo truy vấn chọn và đưa 2 bảng dslop và dssv vào tham gia truy vấn Đưa các trường Tenlop, hotensv, ngaysinh, quequan vào vùng lưới QBE
Trong hàng Criteria của trường Hotensv: Like "Nguyễn *" and "* Thuỷ", trường Quequan: Huế
Chương 4: Truy vấn (Query)
Tạo một truy vấn để hiển thị danh sách những sinh viên có Họ là "Lê" hoặc có quê quán ở "Đà Nẵng bao gồm các trường: Tenlop, Hotensv, Ngaysinh, Quequan.
Tạo truy vấn chọn và đưa 2 bảng dslop và dssv vào tham gia truy vấn Đưa các trường Tenlop, hotensv, ngaysinh, Quequan vào vùng lưới QBE
Trong hàng Criteria của trường Hotensv : Like "Lê *" Trong hàng or của trường Quequan : Đà Nẵng
Chương 4: Truy vấn (Query)
5. Chọn các bản ghi có chứa có giá trị
Chúng ta có thể chọn các bản ghi có chứa hoặc không chứa giá trị, chẳng hạn như tìm những sinh viên mà không có số điện thoại nhà ở.
Access cung cấp 2 phép toán
Phép toán Ý nghĩa
IS NULL Trường không chứa giá trị IS NOT NULL Trường có chứa giá trị Ví dụ:
Tạo một truy vấn để hiển thị danh sách những sinh viên không có học bổng bao gồm các trường: Tenlop, Hotensv, hocbong.
6. Chọn các bản ghi thuộc danh sách các giá trị nào đó Chúng ta có thể sử dụng phép toán IN (Danh sách giá trị) Ví dụ
Tạo một truy vấn để hiển thị danh sách những sinh viên thuộc lớp "TTH05" hoặc "CT04A" hoặc "CT04B" bao gồm các trường: Tenlop, Hotensv, hocbong.
Chương 4: Truy vấn (Query)
7. Tham chiếu đến các trường khác
Nếu trong biểu thức chọn của truy vấn, các tính toán tham chiếu đến các trường phải đặt trong dấu [ ], trường hợp tham chiếu đến trường của bảng khác phải chỉ rõ bảng nguồn của nó. [Tên bảng]![Tên trường].
4.3.9 Phương pháp lập biểu thức
Cho 2 bảng dữ liệu Dssv( Masv, hotensv, ngaysinh, quequan, gioitinh) Dsdiem( Masv, mamon, diem_lan1, diem_lan2)
Tạo truy vấn để hiển thị các thông tin: Hotensv, mamon, diem_lan1, diem_lan2, dtb, trong đó dtb=(diem_lan1+ diem_lan2*2)/3.
Chương 4: Truy vấn (Query)
Chú ý
Sau khi thực hiện truy vấn chúng ta không thể thay đổi giá trị trong trường kiểu biểu thức, tuy nhiên nếu thay đổi giá trị trong trường tham gia biểu thức thì kết quả trong trường kiểu biểu thức cũng thay đổi theo.
4.3.10 Phương pháp đưa giá trị vào để thành lập phép chọn trong Criteria đối với các trường có kiểu dữ liệu khác nhau: đối với các trường có kiểu dữ liệu khác nhau:
Tuỳ thuộc vào kiểu dữ liệu mà cách đưa giá trị vào biểu thức chọn trong Criteria sẽ khác nhau:
- Giá trị kiểu số: Đối với các trường kiểu dữ liệu Number, Currency, Counter chỉ cần nhập các con số và nếu cần thêm dấu cách thập phân
- Giá trị kiểu ngày: Đối với trường kiểu ngày, có thể nhập biểu thức với bất kỳ dạng ngày giờ nò. Ký hiệu # đặt hai bên giá trị để chỉ dạng ngày giờ là tuỳ chọn.
- Giá trị kiểu văn bản (Text): Muốn nhập giá trị kiểu này, gõ văn bản vào để trong dấu “”, không phân biệt chữ hay thường.
- Giá trị kiểu Yes/No: Muốn lập biểu thức dựa trên kiểu này, bạn nhập Yes, True, On hay -1 tương trưng cho Yes; No, False, Off tượng trưng cho No
4.3.11 Xem và thiết lập các thuộc tính.
Click chuột phải vào cột chứa trường cần thiết lập trong lưới QBE, chọn lệnh Build trong menu thả xuống, xuất hiện hộp thoại:
Chương 4: Truy vấn (Query)
Trong ô Expression Bulder bạn nhập trường kiểu biểu thức. Có thể sử dụng các toán tử +, -, /, *, +,…, Like, () và các trường có trong các Table, query, …để thiết lập công thức cho biểu thức. Kết thúc nhấn OK.
4.3.12 Thiết lập các định dạng trình bày số liệu.
Click chuột phải vào cột chứa trường cần thiết lập trong lưới QBE, chọn lệnh Properties trong menu thả xuống, xuất hiện hộp thoại:
Sau đó thiết lập định dạng trình bày số liệu trong ô Format (xem lại phần đặt thuộc tính Format 3.1.2 trong chương III).
4.3.13 Mối quan hệ giữa thuộc tính của trường trong truy vấn và trong bảng bảng
- Theo mặc nhiên trường trong truy vấn kế thừa tất cả các thuộc tính của trường trong bảng dữ liệu. Nếu thay đổi thiết kế bảng dữ liệu và sửa lại thuộc tính của trường, thuộc tính mới của trường này được phản ánh trong truy vấn. Tuy nhiên có thể quy đinh lại các thuộc tính của truy vấn bỏ qua tính kế thừa mặc nhiên của bảng dữ liệu.
- Trong bảng kết quả của truy vấn có thể tồn tại những trường mà kết quả của những phép tính toán, dữ liệu của nó không phụ thuộc bất ký bảng dữ liệu nào do đó nó không kế thừa thuộc tính từ bảng.
4.3.14 Không thể hiện một số trường trong Dynaset
Trong lưới QBE, ở ô Field bạn không chọn những trường không muốn hiển thị, nếu bạn có chọn trường ở ô Field thì trong ô Show bạn đừng đánh dấu chọn.
Chương 4: Truy vấn (Query)
1. Thêm bảng vào truy vấn Trong cửa sổ Design của query, vào QUERY- >SHOW TABLE, xuất hiện
hộp thoại:
Chọn table cần thêm vào query, nhấn nút Add.
2. Xoá bảng trong truy vấn: Trong cửa sổ Design của query chọn bảng muốn xoá, nhấn phím Del để xoá
4.4 Giới thiệu lệnh thực hiện một số loại truy vấn
4.4.1 Truy vấn cập nhật dữ liệu (Update Query)
Truy vấn Update giúp bạn dễ dàng thay đổi giá trị của bất kỳ trương hợp nào trong cơ sở dữ liệu cho các bản ghi phù hơp với các điều kiện được đặt ra. Để tạo truy vấn Update, trong cửa sổ thiết kế truy vấn, chọn trên menu Query/Update Query. Khi đó cửa sổ thiết kế Qurey thêm mục Update To (xem hình)
+ Chọn trường cần sửa đổi dữ liệu trong dòng Field và dòng Update To là giá trị hoặc biểu thức cần sửa đổi cho trường tương ứng.
Ví dụ: Đổi mã lớp L1 thành ML1 và thay tên lớp thành tên “ TC Tin học NVVP”
Chương 4: Truy vấn (Query)
4.4.2 Truy vấn tạo bảng (Make Table Query)
Loại truy vấn Make-Table tạo một bảng mới chứa toàn bộ thông tin mà truy vấn của bạn thu được. Loại truy vấn này đặc biệt hữu ích cho việc sao chép thông tin. Ví dụ, trước khi bạn xóa toàn bộ các bản ghi trước ngày nào đó, bạn có thể dùng loại truy vấn Make-Table để tạo một bảng riêng biệt chứa thông tin đó.
Để tạo truy vấn bảng, trong cửa sổ thiết kế truy vấn chọn trên menu: Query/Make Table cửa sổ Make Table xuất hiện.
+ Trong bảng Make Table ta
đặt tên bảng cần tạo vào mục Table Name.
+ Chọn mục Current Database để tạo bảng trong CSDL hiện tại.
+ Chọn mục Another
Database để tạo bảng CSDL khác, khi đó phải nhập tên của CSDL chứa bảng cần tạo trong mục Field Name.
Giả sử đã tạo được một Select query đưa ra được bảng kết quả như sau:
Bài toán đặt ra là: đưa toàn bộ kết quả của query đang hiển thị ra một