Sắp xếp và tìm kiếm bản ghi

Một phần của tài liệu giáo trình tin học ứng dụng (Trang 140 - 143)

CHƯƠNG 2: QUẢN TRỊ DỮ LIỆU TÀI CHÍNH (DỰA TRÊN VISUAL VFP)

2.2. HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU VISUAL FOXPRO

2.2.4. CÁC LỆNH CƠ BẢN CỦA VFP

2.2.4.5. Sắp xếp và tìm kiếm bản ghi

- Dùng để tạo tệp chỉ dẫn để sắp xếp tệp đang mở theo giá trị tăng dần của tiêu thức sắp xếp.

- Dạng:

INDEX ON Biểu_thức TO Tên_tệp [FOR biểu_thức_logic]

Trong đó:

a) Biểu_thức: Là một biểu thức bất kỳ dùng làm tiêu thức sắp xếp.

b) Tên_tệp : Là tên tệp chỉ dẫn, phần mở rộng ngầm định là .IDX

- Tác động: Khi thực hiện INDEX, VFPsẽ dùng giá trị của biểu thức làm khoá để lập chỉ dẫn, sắp xếp sao cho trên các bản ghi từ đầu đến cuối tệp, biểu thức có giá trị tăng dần. Nếu có các bản ghi có cùng giá trị của khoá sắp xếp, VFPsẽ sắp xếp các bản ghi đó theo trật tự vật lí của các bản ghi.

Khi trong lệnh có mệnh đề FOR biểu_thức_logic thì chỉ có các bản ghi làm biểu thức logic đúng mới được coi là có mặt trong tệp và tham gia sắp xếp.

- Ví dụ:

Ví dụ 1: Xét tệp QLHS .DBF

Cần in một doanh sách học sinh khoá 40 đã xếp theo thứ tự alphabet của tên học sinh.

USE QLHS

INDEX ON TEN TO CD1. idx FOR KHOA = ‘40’

- 140 -

LIST TO PRINTER USE

Ví dụ 2: Cần in danh sách khoá 40 xếp theo lớp, cùng lớp xếp theo điểm trung bình tăng dần.

USE QLHS

INDEX ON LOP + STR (DTB, 5, 2) TO CD 2 FOR KHOA = ‘40’

LIST TO PRINTER USE

b. Lệnh SORT

- Dùng để sắp xếp lại tệp dữ liệu, khác với lệnh INDEX, lệnh SORT không sắp xếp trên các bản ghi của tệp đang mở mà tạo ra một tệp mới với các bản ghi lấy của tệp dữ liệu đang mở đã được sắp xếp theo yêu cầu của lệnh.

- Dạng:

SORT TO Tên_tệp ON ds_biểu_thức[/A/D/C] [FOR biểu_thức_logic]

Trong đó:

d) Tên_tệp: Là tên tệp dữ liệu để ghi kết quả đã sắp xếp.

e) Danh_sách_biểu_thức: gồm các biểu thức viết cách nhau dấu phảy, dùng làm tiêu thức sắp xếp. Nếu có nhiều biểu thức thì ưu tiên cho các biểu thức viết trước.

- Tác động: Lệnh sẽ sắp xếp tệp dữ liệu dựa vào giá trị các biểu thức trong danh sách biểu thức.

Nếu có /A thì xếp tăng dần. Nếu có /D thì xếp giảm dần. (Ngầm định là /A) Nếu có /C thì sẽ không phân biệt sự khác nhau giữa chữ in và thường.

Kết quả sắp xếp được ghi vào một tệp dữ liệu có tên xác định bởi <tên tệp>.

- 141 -

Nếu có FOR biểu_thức_logic thì trong tệp kết quả chỉ chứa các bản ghi làm

<BT logic> nhận giá trị đúng.

- Ví dụ: Xét tệp VATTU.DBF

Ta cần xem lại các chứng từ tháng 12/2018 đã nhập vào máy được xếp theo mã vật tư, nếu cùng mã vật tư, xếp theo số tiền giảm dần.

USE VATTU

SORT TO SXEP ON MAVT, TT/D/C FOR MONTH (NLCT) = 12;

.AND. YEAR (NLCT) = 2018 USE SXEP

DISPLAY ALL USE

Trên thực tế lệnh SORT ít được sử dụng hơn lệnh INDEX vì tốn bộ nhớ và tốc độ thực hiện chậm.

c. Lệnh SEEK và FIND

4. Cả hai lệnh đều dùng để tìm kiếm nhanh các bản ghi trên tệp đã được sắp xếp bởi lệnh INDEX.

5. Dạng: SEEK Biểu_thức FIND Biểu_thức Trong đó:

2. Biểu thức của SEEK có thể là biểu thức bất kỳ (Số, xâu, ngày, logic).

3. Biểu thức của FIND phải là loại xâu, nếu không bắt đầu là khoảng trống thì không cần đặt trong cặp dấu nháy.

- 142 -

- Tác động: Xét trên tiêu thức đã dùng để sắp xếp, VFPsẽ tìm từ đầu tệp và đặt con trỏ vào bản ghi đầu tiên mà tiêu thức đó có giá trị bằng <biểu thức> viết trong lệnh.

- Ví dụ: Yêu cầu như ở mục 4.5.3, song tìm kiếm nhanh.

USE VATTU

INDEX ON SOCT + DTOC(NLCT) TO CD SEEK ‘20/VL 10/15/99’

? KL, DG, TT USE

Dùng FIND cũng tương tự

Ưu điểm của SEEK và FIND là tốc độ tìn kiếm nhanh, nhưng nếu trong tệp có ít nhất hai bản ghi cùng thoả mãn điều kiện tìm kiếm thì không thực hiện được, vì nó chỉ tìm tới bản ghi đầu tiên thoả mãn điều kiện. Do vậy các lệnh này chỉ được sử dụng trong điều kiện giá trị tìm kiếm là duy nhất (không có quá 2 bản ghi có cùng giá trị khoá tìm kiếm).

Một phần của tài liệu giáo trình tin học ứng dụng (Trang 140 - 143)

Tải bản đầy đủ (PDF)

(252 trang)