149
TRƯỜNG CAO ĐẲNG SƯ PHẠM QUẢNG TRỊ KHOA CÔNG NGHỆ THÔNG TIN

Bai Giang FoxPro All

Embed Size (px)

Citation preview

Page 1: Bai Giang FoxPro All

TRƯỜNG CAO ĐẲNG SƯ PHẠM QUẢNG TRỊ

KHOA CÔNG NGHỆ THÔNG TIN

Page 2: Bai Giang FoxPro All

Mục tiêu

Kiến thức:

Trình bày được khái niệm CSDL và hệ quản trị CSDL

Giải thích được khái niệm tệp CSDL, cấu trúc tệp CSDL, đặc trưng của một trường trong tệp CSDL của Visual FoxPro

Sử dụn các thao tác cơ bản của tệp CSDL: Tạo lập, sửa đổi cấu trúc, cập nhật, bổ sung, loại bỏ bản ghi, sắp xếp, tìm kiếm. Sử dựng được lệnh kết xuất thông tin trong tệp CSDL với Visual FoxPro

Chỉ ra cách làm việc với nhiều tệp CSDL: Cập nhậ DL từ một tệp khác, kết nối hai tệp CSDL và thiết lập mối liên kết với nhiều tệp CSDL

Trình bày được khái niệm SQL và sử dụng được các lệnh cơ bản để thao tác truy vẫn DL bằng ngôn ngữ SQL

Page 3: Bai Giang FoxPro All

Mục tiêu

Kỹ năng:

Thiết lập được tệp từ DL thực tế

Xử lí bằng chế độ hội thoại một số bài toán đơn giản trong thực tế

Tổ chức in DL dưới dạng Report và Label

Thái độ:

Thông qua môn học, SV thấy được vai trò của các hệ quản trịị CSDL với công tác tự động hoá hệ thống thông tin quản lí

Thấy được trách nhiệm của mình về việc ứng dụng CNTT trong công tác kế toán.

Page 4: Bai Giang FoxPro All

NỘI DUNG HỌC PHẦN

Chương 1. Làm quen với Visual FoxPro

Chương 2. Những thao tác ban đầu với tệp CSDL

Chương 3. Tìm kiếm dữ liệu

Chương 4. Thao tác với cấu trúc tệp CSDL

Chương 5. Sửa đổi dữ liệu

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Chương 7. Kết xuất thông tin trong tệp CSDL

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Chương 9. Thao tác với nhiều tệp CSDL

Chương 10. Những thao tác khác với tệp CSDL

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 5: Bai Giang FoxPro All

1. Visual FoxPro là gì?

2. Tệp CSDL.

3. Khởi động Visual FoxPro

4. Các chế độ làm việc.

5. Các loại cửa sổ của FoxPro.

6. Các thao tác cơ bản trên cửa sổ.

7. Ra khỏi FoxPro

Chương 1. Làm quen với Visual FoxPro

Page 6: Bai Giang FoxPro All

Chương 1. Làm quen với Visual FoxPro

1.Visual FoxPro là gì?

Cơ sở dữ liệu: Ví dụ: Bảng danh sách lớp, Bảng điểm, Bảng

danh sách giáo viên, Bảng chấm công, Bảng hệ thống môn

học…

Là tập hợp các dữ liệu có liên quan với nhau, chứa thông tin

của một đối tượng nào đó (như trường học, bệnh viện, ngân

hàng, nhà máy...), được lưu trữ trên bộ nhớ máy tính để đáp

ứng nhu cầu khai thác thông tin của nhiều người sử dụng với

nhiều mục đích khác nhau.

Hệ quản trị cơ sở dữ liệu:

Là phần mềm cung cấp môi trường thuận lợi và hiệu quả để

tạo lập, lưu trữ và tìm kiếm thông tin của CSDL, được gọi là hệ

quản trị CSDL (hệ QTCSDL-DataBase Manegement System)

Page 7: Bai Giang FoxPro All

1.Visual FoxPro là gì?

Visual FoxPro là một hệ quản trị CSDL kiểu quan hệ do hãng

Microsoft sản xuất.

- Foxpro ra đời cuối năm 1980. Lúc đầu là các phiên bản thi

hành trên DOS ( Foxpro Version 1.0 đến 2.6). Sau đó là các phiên

bản thi hành trên Windows. Vào cuối những năm 1990 hãng

Microsft nâng cấp Foxpro lên thành một hệ quản trị CSDL cho phép

lập trình hướng đối tượng và lấy tên là Visual FoxPro

FoxBase --> FoxPro --> Visual FoxPro

Chương 1. Làm quen với Visual FoxPro

Page 8: Bai Giang FoxPro All

2. Tệp CSDL

+ Tên: theo luật đặt tên của Windows nhưng phần mở rộng ngầm

định là DBF (*.DBF). Ví dụ: DMTKHOAN.BDF, HOSOSV.DBF,

HOCKY1.DBF

+ Cấu trúc:

Có thể xem tệp CSDL như một bảng hai chiều, mỗi cột chứa một giá

trị đặc trưng cho một đặc điểm của đối tượng quản lý mà ta gọi đó là

TRƯỜNG (Field). Mỗi dòng chứa một bộ các giá trị mô tả một đối

tượng quản lý mà ta sẽ gọi đó là BẢN GHI(Record).

Chương 1. Làm quen với Visual FoxPro

Page 9: Bai Giang FoxPro All

2. Tệp CSDL

Một trường của tệp CSDL có 4 đặc trưng sau:

+ Tên trường (Field name) :

Quy tắc đặt tên:

- Từ 1 đến 10 ký tự.

- Bắt đầu bằng một ký tự chữ

- Các ký tự tiếp theo (nếu có) phải là ký tự chữ, số, dấu gạch

dưới.

Ví dụ: ma_so_cb, nam_1990, _hosocanhan

Chương 1. Làm quen với Visual FoxPro

Page 10: Bai Giang FoxPro All

2. Tệp CSDL

+ Kiểu trường (Field Type)

Tên kiểu Viết tắt Giá trị

Character C Các ký tự trong bảng mã ASCII

Numeric N 0..9 và dấu phân cách thập phân (.)

Date D một ngày tháng hợp lệ

Logic L .T. và .F. hoặc .Y. và .N.

Memo M Văn bản riêng

Chương 1. Làm quen với Visual FoxPro

Page 11: Bai Giang FoxPro All

2. Tệp CSDL

+ Độ rộng trường (Field Width)

Tên kiểu Viết tắt Độ rộng

Character C 1..255

Numeric N 1..19

Date D 8/10

Logic L 1

Memo M Không hạn chế

Continue

Chương 1. Làm quen với Visual FoxPro

Page 12: Bai Giang FoxPro All

2. Tệp CSDL

+ Phần thập phân (Field Decimal):

Chỉ mô tả khi trường là kiểu số; Phần thập phân <= Độ rộng –

2

Với dữ liệu kiểu ngày ta chú ý như sau:

Nếu môi trường được thiết lập bởi lệnh

SET CENTURY ON - Năm có 4 chữ số (độ dài 10)

SET CENTURY OFF - Năm có 2 chữ số (độ dài 8)

Chương 1. Làm quen với Visual FoxPro

Page 13: Bai Giang FoxPro All

3. Khởi động Visual FoxPro

a. Visual FoxPro

Start --> All Programs --> Microsoft Visual Foxpro

b. Foxpro

* FoxPro for Windows

Start --> All Programs --> Foxpro for Windows

* FoxPro for DOS

Bước 1: Cho máy chạy với môi trường DOS

Bước 2: Chọn thư mục chứa các tệp cơ bản của FoxPro làm thư mục hoạt động.

Bước 3: thi hành tệp FOXPROX.EXE

Chương 1. Làm quen với Visual FoxPro

Page 14: Bai Giang FoxPro All

3. Khởi động Visual FoxPro Mô tả màn hình chính của Visual FoxPro

* Trên đỉnh

- Thanh tiêu đề (Title Bar)

- Thanh menu chính (Menu Bar)

- Thanh Công cụ chuẩn (Standard Tools Bar)

* Vùng lớn nhất gọi là vùng làm việc: Hiện các thông báo của FoxPro hoặc kết quả thao tác của người sử dụng

* Cửa sổ lệnh (Command): Nơi mà người sử dụng đưa vào các lệnh của FoxPro để thao tác với CSDL

Chương 1. Làm quen với Visual FoxPro

Page 15: Bai Giang FoxPro All

4. Các chế độ làm việc

Có 2 chế độ là hội thoại và chương trình

* Chế độ hội thoại: Người sử dụng lần lượt đưa vào từng lệnh.

FoxPro sẽ thực hiện xong một lệnh rồi chờ người sử dụng đưa vào

một lệnh khác.

* Chế độ chương trình: Người sử dụng lập trình và lưu trữ

chương trình vào tệp có dạng *.PRG và sau đó trên cửa sổ lệnh gọi

thực hiện bằng lệng DO <tên chương trình>

Chương 1. Làm quen với Visual FoxPro

Page 16: Bai Giang FoxPro All

5. Các loại cửa sổ của FoxPro

Có nhiều loại nhưng quan trọng nhất là ba loại cửa sổ

* Cửa sổ lệnh

* Cửa sổ hội thoại

* Cửa sổ xuất dữ liệu

Chương 1. Làm quen với Visual FoxPro

Page 17: Bai Giang FoxPro All

6. Các thao tác cơ bản trên cửa sổ Chọn cửa sổ hoạt động.

Kích chuột vào thanh tiêu đề hoặc ấn Ctrl-F1

Dịch chuyển: Làm như với cửa sổ của Windows

Thay đổi kích thước.Làm như với cửa sổ của Windows

(Nếu làm với Foxpro for DOS thì ấn Ctrl-F10 để mở rộng cửa sổ toàn màn hình hoặc thu về kích thước ban đầu)

Ẩn / hiện: Làm như với cửa sổ của Windows

Chú ý: Trong bất kỳ trường hợp nào nếu ta ấn Ctrl-F2 thì xuất hiện cửa sổ lệnh.

Chương 1. Làm quen với Visual FoxPro

Page 18: Bai Giang FoxPro All

7. Ra khỏi FoxPro

Ngoài những cách thông thường của Windows ta có thể dùng lệnh QUIT.

Chương 1. Làm quen với Visual FoxPro

Page 19: Bai Giang FoxPro All

1. Thiết lập tệp CSDL.

2. Mở tệp và vào dữ liệu.

3. Đọc tệp.

4. Di chuyển con trỏ bản ghi.

5. Đóng tệp.

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 20: Bai Giang FoxPro All

1.Thiết lập tệp CSDL1.1. Thiết kế cấu trúc tệp

Thực hiện trên giấy theo mẫu:

Tên tệp:______.DBF

Thuộc tính Tên Kiểu Độ rộng Thập phân

1.2. Các bước thực hiện trên máy* Đưa vào lệnh CREATE <Tên tệp>* Khai báo cấu trúc* Kết thúc khai báo cấu trúc (Ctrl-W)* Kết thúc lệnh.

Ví dụ: Tệp HSCB.DBFCREATE HSCB

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 21: Bai Giang FoxPro All

2. Mở tệp và vào dữ liệu. a. Mở tệp

* Vai trò: Muốn thao tác với một tệp CSDL thì động tác đầu tiên của người sử dụng là phải mở tệp.

* Lệnh mở tệp:

USE [<d:>][<path>]<tên tệp CSDL>

Ví dụ: USE HSCANBO

b. Vào dữ liệu

Sau khi đã mở tệp ta sử dụng lệnh BROWSE

Để nhập một bản ghi ta thực hiện các thao tác sau:

- Ấn Ctrl-Y

- Nhập thông tin của bản ghi

- Kết thúc việc nhập dữ liệu bằng Ctrl-W

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 22: Bai Giang FoxPro All

3. Đọc tệp

- Mở tệp

- Dùng một trong các lệnh sau:

* LIST [TO PRINT]

* DISPLAY ALL

* BROWSE

Ví dụ:

USE HSCB

LIST MSCB,HD,TEN,HSL

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 23: Bai Giang FoxPro All

4. Di chuyển con trỏ bản ghi

Bản ghi hiện thời: Trên tệp CSDL đang mở Visual Foxpro chỉ

sẵn sàng làm việc (và cho phép cập nhật) với một bản ghi và ta

gọi đó là bản ghi hiện thời. Khi mới mở tệp CSDL thì bản ghi

hiện thời là bản ghi đầu tiên.

Con trỏ bản ghi: Con trỏ bản ghi là con trỏ dùng để chỉ đến

bản ghi hiện thời.

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 24: Bai Giang FoxPro All

4. Di chuyển con trỏ bản ghi. Lệnh di chuyển con trỏ bản ghi

a. Lệnh GO

Cú pháp :

GO <n>

GO TOP

GO BOTTOM

Giải thích: GO <n>: Di chuyển con trỏ đến bản ghi có số hiệu <n> (n là thứ tự vật lý của bản ghi trên tệp)

Ví dụ:

USE HSCANBO

GO 5

...

GO 16

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 25: Bai Giang FoxPro All

4. Di chuyển con trỏ bản ghi. GO TOP: Di chuyển con trỏ đến bản ghi đầu tiênGO BOTTOM: Di chuyển con trỏ đến bản ghi cuối cùng.Các hàm hỗ trợ: * RECNO(): Trả về số hiệu bản ghi hiện thời * EOF(): Trả về giá trị .T. nếu con bản ghi nằm sau bản ghi cuối cùng. Các vị trí khác là .F. * BOF(): Trả về giá trị .T. nếu con bản ghi nằm trước bản ghi đầu tiên. Các vị trí khác là .F.Ví dụ: USE HSCANBO

?RECNO()1GO 14?RECNO()14?BOF().F.

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 26: Bai Giang FoxPro All

4. Di chuyển con trỏ bản ghi.b. Lệnh SKIP Cú pháp: SKIP [<n>] Chức năng: Di chuyển con trỏ bản ghi tính từ bản ghi hiện thời. Giải thích: Nếu n là số dương thì di chuyển về cuối tệp n bản ghi tính từ bản ghi hiện thời; Nếu n là số âm thì di chuyển về đầu tệp n bản ghi tính từ bản ghi hiện thời. Chú ý: SKIP = SKIP 1

Ví dụ: USE HOSOCBSKIP 6? RECNO()7SKIP -2? RECNO()5

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 27: Bai Giang FoxPro All

5. Đóng tệp.* Khi không làm việc với tệp CSDL nữa, ta phải tiến hành đóng tệp bằng lệnh:

USE

* Việc mở tệp khác cũng đồng nghĩa với đóng tệp trước đó

Ví dụ:

USE TAIKHOAN

....

USE K_HANG

....

USE

Chương 2. Những thao tác ban đầu với tệp CSDL

Page 28: Bai Giang FoxPro All

1. Biểu thức logic.

2. Sử dụng LIST và DISPLAY với điều kiện tìm kiếm.

3. Tìm kiếm tuần tự.

4. Đặt chế độ chính xác khi tìm kiếm.

Chương 3. Tìm kiếm dữ liệu

Page 29: Bai Giang FoxPro All

1. Biểu thức logic.

.Định nghĩa

.Các cách thiết lập biểu thức logic.

Chương 3. Tìm kiếm dữ liệu

Page 30: Bai Giang FoxPro All

1.Biểu thức logicĐịnh nghĩa

Biểu thức logic là biểu thức cho chúng ta một trong hai giá trị hoặc .T. hoặc .F.

Chương 3. Tìm kiếm dữ liệu

Page 31: Bai Giang FoxPro All

1.Biểu thức logic Các cách thiết lập biểu thức logicHằng logic (.T./.F.), Biến kiểu logic, Hàm cho kết quả kiểu Logic. Hai biểu thức cùng loại (Ký tự, số, ngày) quan hệ với nhau bởi các

phép so sánh >, <, >=, <=, =, <> Các biểu thức logic quan hệ với nhau bởi các phép toán logic NOT

(!), AND, ORVí dụ:

LOCATE FOR <btL> LOCATE FOR .T.LOCATE FOR ten = ’Thanh’LOCATE FOR tdvh=12LOCATE FOR GDINHLOCATE FOR !GDINHLOCATE FOR GDINH AND TDVH=12LOCATE FOR NGAY_S<=CTOD(‘01/01/1980’)

Chương 3. Tìm kiếm dữ liệu

Page 32: Bai Giang FoxPro All

2. Sử dụng LIST và DISPLAY với điều kiện tìm kiếm.Dạng lệnh tổng quát:

LIST FOR <btL> [TO PRINT]

hoặc

DISPLAY FOR <btL>

Giải thích: Lệnh sẽ cho hiện lên màn hình những bản ghi thoả mãn <btL>

Ví dụ: SET DATE FRENCH

SET CENTURY ON

USE HSCANBO

LIST FOR TEN=’Thanh’

DISPLAY FOR TDVH>=10

LIST FOR NGAY_S>=CTOD(‘01/01/1986’) AND

NGAY_S<=CTOD(‘31/12/1988’)

Chương 3. Tìm kiếm dữ liệu

Page 33: Bai Giang FoxPro All

3. Tìm kiếm tuần tự3.1. Lệnh LOCATE Cú pháp: LOCATE FOR <btL> Giải thích: Lệnh đặt con trỏ tới bản ghi đầu tiên của tệp CSDL đang mở thỏa mãn <btL>3.2. Hàm FOUND() Cho giá trị .T. nếu lệnh LOCATE trước đó tìm kiếm thành công, ngược lại cho giá trị .F.3.3. Lệnh CONTINUE Cho phép tìm kiến bản ghi tiếp theo của tệp CSDL đang mở thoả mãn điều kiện tìm kiếm của lệnh LOCATE trước đó.Ví dụ: USE HSCANBO

LOCATE FOR HSL>=3? FOUND()? RECNO()DISPLAYCONTINUE?FOUND()

Chương 3. Tìm kiếm dữ liệu

Page 34: Bai Giang FoxPro All

4. Đặt chế độ chính xác khi tìm kiếmLệnh xác lập môi trường

SET EXACT ON/OFFGiải thích: Môi trường mặc định là OFF Nếu môi trường được xác lập là OFF thì việc so sánh giữa hai biểu thức ký tự không chú ý đến độ dài hay nói cách khác chỉ căn cứ vào biểu thức có độ dài ngắn hơn. Nếu môi trường được xác lập là ON thì việc so sánh giữa hai biểu thức ký tự có chú ý đến độ dài hay nói cách khác hai biểu thức chỉ bằng nhau khi chúng trùng nhau.Ví dụ: SET EXACT OFF

? “Ha” = “Hanh”.T.SET EXACT ON? “Ha” = “Hanh”.F.

Chương 3. Tìm kiếm dữ liệu

Page 35: Bai Giang FoxPro All

1. Xem và in cấu trúc.

2. Sửa cấu trúc tệp.

3. Sao chép cấu trúc tệp.

4. Tạo một tệp CSDL từ tệp lưu cấu trúc.

Chương 4. Thao tác với cấu trúc tệp CSDL

Page 36: Bai Giang FoxPro All

1. Xem và in cấu trúcĐể xem cấu trúc của tệp CSDL đang mở ta sử dụng lệnh

LIST STRUCTURE [TO PRINT]

hoặc

DISPLAY STRUCTURE

Lệnh sẽ cho hiển thị cấu trúc của tệp CSDL đang mở lên màn hình. Nếu có tuỳ chọn TO PRINT cấu trúc đó sẽ được in ra máy in.

Thông tin về cấu trúc tệp bao gồm: Tên trường (Fieldname), kiểu trường (Type), độ rộng trường (Width) và phần thập phân (Decimal)

Ví dụ:

USE HSCANBO

LIST STRU

Chương 4. Thao tác với cấu trúc tệp CSDL

Page 37: Bai Giang FoxPro All

2. Sửa cấu trúc tệp Việc sửa đổi cấu trúc của một tệp CSDL xãy ra khi ta có nhu cầu thực hiện một hay nhiều thao tác sau:

.Sửa tên một trường .Sửa kiểu một trường .Sửa độ rộng một trường .Sửa phần thập phân một trường .Chèn thêm một trường mới .Xoá một trường đang tồn tại .Chắp thêm một trường mới

Các bước tiến hành như sau:

Bước 1: Mở tệp CSDL muốn sửa đổi cấu trúcUSE <tên tệp>

Bước 2: Đưa vào lệnh MODIFY STRUCTURE

Bước 3: Thực hiện các thao tác sửa đổi nêu trên.

Bước 4: Ấn Ctrl+W hoặc chọn OK để kết thúc

Chương 4. Thao tác với cấu trúc tệp CSDL

Page 38: Bai Giang FoxPro All

2. Sửa cấu trúc tệp. Sửa tên một trường

Bước 1: Đưa con trỏ vào ô tên trường cần sửa

Bước 2: Tiến hành sửa giống như sửa một văn bản bình thường

Chương 4. Thao tác với cấu trúc tệp CSDL

Page 39: Bai Giang FoxPro All

Sửa kiểu một trường

Bước 1: Đưa con trỏ vào ô kiểu trường cần sửa

Bước 2: Tiến hành lựa chọn kiểu trường thích hợp

Chương 4. Thao tác với cấu trúc tệp CSDL

2. Sửa cấu trúc tệp.

Page 40: Bai Giang FoxPro All

Sửa độ rộng một trườngBước 1: Đưa con trỏ vào ô độ rộng trường cần sửa

Bước 2: Tiến hành lựa chọn độ rộng trường thích hợp

Chương 4. Thao tác với cấu trúc tệp CSDL

2. Sửa cấu trúc tệp.

Page 41: Bai Giang FoxPro All

Sửa phần thập phân một trường

Bước 1: Đưa con trỏ vào ô phần thập phân trường cần sửa

Bước 2: Tiến hành lựa chọn phần thập phân thích hợp

Chương 4. Thao tác với cấu trúc tệp CSDL

2. Sửa cấu trúc tệp.

Page 42: Bai Giang FoxPro All

Chèn thêm một trường mớiBước 1: Đưa con trỏ vào bất kỳ ô nào trên dòng cần chèn trường mới

Bước 2: Chọn nút Insert ta sẽ thấy xuất hiện một trường mới với tên là NewFld ở vị trí muốn chèn

Bước 3: Tiến hành sửa lại tên, kiểu, độ rộng, phần thập phân cho phù hợp

Chương 4. Thao tác với cấu trúc tệp CSDL

2. Sửa cấu trúc tệp.

Page 43: Bai Giang FoxPro All

.Xoá một trường đang tồn tạiBước 1: Đưa con trỏ vào bất kỳ ô nào trên dòng của trường muốn xoá

Bước 2: Chọn nút Delete ta sẽ thấy trường cần xoá biến mất

Chương 4. Thao tác với cấu trúc tệp CSDL

2. Sửa cấu trúc tệp.

Page 44: Bai Giang FoxPro All

Chắp thêm một trường mới

Bước 1: Đưa con trỏ về sau dòng của trường cuối cùng

Bước 2: Tiến hành đưa vào tên, kiểu, độ rộng, phần thập phân của trường cần chắp cho phù hợp

Chương 4. Thao tác với cấu trúc tệp CSDL

2. Sửa cấu trúc tệp.

Page 45: Bai Giang FoxPro All

3. Sao chép cấu trúc tệp- Sao chép cấu trúc: Với một tệp CSDL đang tồn tại (tệp nguồn) ta có thể tạo ra một tệp mới có cấu trúc bao gồm một phần hoặc toàn bộ các trường của tệp nguồn như sau:USE <tên tệp>COPY STRUCTURE TO <tệp mới> [FIELDS <DS trường>] Nếu có tuỳ chọn [FIELDS <DS trường>] thì <tệp mới> chỉ bao gồm các trường của tệp nguồn được liệt kê trong danh sách, nếu không có tuỳ chọn này thì cấu trúc của tệp mới hoàn toàn giống với cấu trúc của tệp nguồn. - Sao lưu cấu trúc: Để lưu trữ cấu trúc của một tệp CSDL ta có thể tạo ra một tệp CSDL khác lưu cấu trúc của tệp đó như sau:COPY STRUCTURE TO <tệp lưu CT> EXTENDED

Cấu trúc của tệp lưu cấu trúc có dạng như sau:

Chương 4. Thao tác với cấu trúc tệp CSDL

Page 46: Bai Giang FoxPro All

4. Tạo một tệp CSDL từ tệp lưu cấu trúc

Khi đã có tệp lưu cấu trúc ta có thể tạo ra một tệp CSDL mới với

cấu trúc đã lưu bằng lệnh sau:

CREATE <tên tệp> FROM <tệp lưu CT>

Chương 4. Thao tác với cấu trúc tệp CSDL

Page 47: Bai Giang FoxPro All

1. Các tuỳ chọn trên một câu lệnh thao tác dữ liệu của Foxpro

2. Các lệnh cập nhật dữ liệu

3. Các lệnh bổ sung dữ liệu

4. Các lệnh loại bỏ dữ liệu

Chương 5. Sửa đổi dữ liệu

Page 48: Bai Giang FoxPro All

1. Các tuỳ chọn trên một câu lệnh thao tác dữ liệu của Foxpro

Câu lệnh tổng quát:

<LỆNH> [<Phạm vi>] [FIELDS <Ds trường>] [FOR <btL>] [WHILE <btL>]

1.1. Tuỳ chọn phạm vi

1.2. Tùy chọn FIELDS <Ds trường>

1.3. Tùy chọn FOR <btL> và WHILE <btL>

Chương 5. Sửa đổi dữ liệu

Page 49: Bai Giang FoxPro All

1. Các tuỳ chọn trên một câu lệnh thao tác dữ liệu của Foxpro

1.1. Tuỳ chọn phạm vi

Trong các lệnh của Foxpro tùy chọn phạm vi có nghĩa là vùng các bản ghi liên tiếp nhau mà lệnh sẽ tác động lên đó, nó sẽ mang một trong bốn giá trị và có ý nghĩa sau đây:

ALL - Tất cả các bản ghi

Record <n> - Bản ghi có số hiệu n

NEXT <n> - n bản ghi tính từ bản ghi hiện thời

REST - Từ bản ghi hiện thời đến cuối tệp.

Chú ý: Với mỗi lệnh của Foxpro sẽ có một phạm vi ngầm định. Phạm vi này có thể là ALL hoặc bản ghi hiện thời.

Ví dụ: Lệnh LIST có phạm vi ngầm định là ALL còn DISPLAY có phạm vi ngầm định là bản ghi hiện thời.

Chương 5. Sửa đổi dữ liệu

Page 50: Bai Giang FoxPro All

1. Các tuỳ chọn trên một câu lệnh thao tác dữ liệu của Foxpro

1.1. Tuỳ chọn phạm viVí dụ:

Tệp HSCB.DBF có 20 bản ghi

USE HSCB

DISP ALL

DISP Record 5

GO 10

DISP Next 5

GO 18

DISP Rest Fox

Chương 5. Sửa đổi dữ liệu

Page 51: Bai Giang FoxPro All

1. Các tuỳ chọn trên một câu lệnh thao tác dữ liệu của Foxpro 1.2. Tùy chọn FIELDS <Ds trường>

Không có tùy chọn này thì lệnh sẽ tác động lên tất cả các trường của tệp CSDL đang mở còn nếu có tùy chọn này thì lệnh chỉ tác động lên những trường của tệp đó có mặt trong danh sách. Tất nhiên tất cả những trường được liệt kê này phải tồn tại trong tệp đang mở.

Ví dụ:

USE HSCB

LIST FIELDS MSCB,HD,TEN

Fox

Chương 5. Sửa đổi dữ liệu

Page 52: Bai Giang FoxPro All

1. Các tuỳ chọn trên một câu lệnh thao tác dữ liệu của Foxpro 1.3. Tùy chọn FOR <btL> và WHILE <btL>

a. FOR <btL> Lệnh chỉ tác động lên các bản ghi thỏa mãn <btL>

b. WHILE <btL> Khi gặp bản ghi đầu tiên không thỏa mãn <btL> thì lệnh kết thúc.

c. Sự khác nhau của hai tùy chọn FOR <btL> và WHILE <btL> Hai tùy chọn này đều chỉ cho phép lệnh tác động lên các bản ghi thỏa mãn

<btL> nhưng chúng khác nhau ở chỗ khi dùng tùy chọn FOR <btL> thì Foxpro sẽ tuyển chọn tất cả các bản ghi của tệp CSDL để tác động lên những bản ghi thỏa mãn <btL> còn tùy chọn WHILE <btL> thì cho phép lệnh bắt đầu từ đầu tệp để tác động lên các bản ghi thỏa mãn <btL> nhưng ngay lần đầu tiên gặp bản ghi không thỏa mãn <btL> thì lệnh sẽ kết thúc ngay.

Ví dụ: USE HSCBLIST FOR HSL>3LIST WHILE HSL>3 Fox

Chương 5. Sửa đổi dữ liệu

Page 53: Bai Giang FoxPro All

2. Các lệnh cập nhật dữ liệu

2.1. Lệnh EDIT

2.2. Lệnh BROWSE

2.3. Lệnh REPLACE

Chương 5. Sửa đổi dữ liệu

Page 54: Bai Giang FoxPro All

2. Các lệnh cập nhật dữ liệu

2.1. Lệnh EDIT

Cú pháp:

EDIT [<phạm vi>] [FIELDS <ds trường>] [FOR <btL>] [WHILE <btL>]

Giải thích: Phạm vi ngầm định là ALL. Lệnh cho phép sửa đổi dữ liệu của từng bản ghi với khuôn dạng giống như khi ta làm việc với lệnh APPEND.

Ví dụ:

USE HSCB

EDIT

Fox

Chương 5. Sửa đổi dữ liệu

Page 55: Bai Giang FoxPro All

2. Các lệnh cập nhật dữ liệu2.2. Lệnh BROWSE

Cú pháp:

BROWSE [<phạm vi>] [FIELDS <ds trường>] [FOR <btL>]

[LOCK<n>] [FREEZE <trường>] [NOAPPEND] [NOEDIT] [NOMODIFY]

[FONT <Font>, <size>, <style>]

Giải thích: Phạm vi ngầm định là ALL. Lệnh cho phép sửa đổi dữ

liệu của từng bản ghi với khuôn dạng là một bảng hai chiều mà mỗi cột

là một trường và mỗi dòng là một bản ghi.

Continue

Chương 5. Sửa đổi dữ liệu

Page 56: Bai Giang FoxPro All

2. Các lệnh cập nhật dữ liệu2.2. Lệnh BROWSELOCK <n>: Chia màn hình thành hai cửa sổ, cố định n trường bên

trái tệp ở cửa sổ trái và các trường còn lại ở cửa sổ phải. Ta có thể di chuyển ngang các trường trên cửa sổ phải mà không là di chuyển ngang các trường trên cửa sổ trái. Tùy chọn này được dùng khi bề ngang của tệp CSDL đã vượt quá bề ngang màn hình.

FREEZE <trường>: Chỉ cho phép con trỏ di chuyển trên trường <trường>. Tùy chọn này đươc dùng trong trường hợp ta chỉ tiến hành sửa đổi trên một trường.

NOAPPEND: Không cho phép thêm bản ghi trống bằng cách ấn tổ hợp phím Ctrl-Y.

NOEDIT, NOMODIFY: Không cho phép sửa đổi nội dung của các bản ghi đã tồn tại trước.

Chương 5. Sửa đổi dữ liệu

Page 57: Bai Giang FoxPro All

2. Các lệnh cập nhật dữ liệu2.2. Lệnh BROWSE

Ví dụ:

USE HSCB

BROW LOCK 3

BROW FREE HSL

BROW NOAP NOMO

Fox

Chương 5. Sửa đổi dữ liệu

Page 58: Bai Giang FoxPro All

2. Các lệnh cập nhật dữ liệu2.3. Lệnh REPLACE

Cú pháp:

REPLACE [<phạm vi>] <trường1> WITH <bt1> [,<trường2> WITH <bt2> ...] [FOR <btL>]

Giải thích: Phạm vi ngầm định là bản ghi hiện thời. Trên mỗi bản ghi mà lệnh có hiệu lực, Lệnh thay thế giá trị <trường1> bằng <bt1>, <trường2> bằng <bt2> ...

Ví dụ: Tính lương

USE BLUONG

REPL ALL LCB WITH HSL*290000, LPC WITH HSPC*290000

REPL ALL TONG WITH LCB+LPC Fox

Chương 5. Sửa đổi dữ liệu

Page 59: Bai Giang FoxPro All

3. Các lệnh bổ sung dữ liệu

3.1 Lệnh APPEND

3.2 Lệnh BROWSE

3.3 Lệnh INSERT

Cú pháp:

INSERT [BLANK] [BEFORE]

Giải thích: Lệnh chèn một bản ghi mới. Nếu có tùy chọn BLANK

bản ghi mới là rỗng, nếu không thì phải điền dữ liệu cho bản ghi

đó. Nếu có tùy chọn BEFORE thì bản ghi được chèn ở trên bản

ghi hiện thời, nếu không thì ở dưới bản ghi hiện thời.

Ví dụ: USE HSCBGO 5INSERT BLANK BEFORE

Chương 5. Sửa đổi dữ liệu

Page 60: Bai Giang FoxPro All

4. Các lệnh loại bỏ dữ liệu

Việc xóa trong FoxPro có hai loại xóa logic và xóa vật lý.

4.1. Xóa logic (Đánh dấu xóa)

4.2. Phục hồi các bản ghi bị xóa logic.

4.3. Hàm DELETED()

4.4. Lệnh SET DELETED ON/OFF

4.5. Xóa vật lý

Chương 5. Sửa đổi dữ liệu

Page 61: Bai Giang FoxPro All

4. Các lệnh loại bỏ dữ liệu

4.1. Xóa logic (Đánh dấu xóa)

a. Khái niệm: Xóa logic hay đánh dấu xóa là chỉ đánh dấu một hoặc nhiều bản ghi để sau đó tuỳ trường hợp ta có thể xác lập môi trường để cho chúng có hiệu lực tác động lên hay không.

b. Lệnh đánh dấu xóa

DELETE [<phạm vi>][FOR <btL1>][WHILE <BtL2>]

Phạm vi ngầm định là bản ghi hiện thời. Lệnh sẽ xóa các bản ghi trong phạm vi thỏa mãn <btL1> hoặc kết thúc ngay khi gặp bản ghi không thỏa mãn <btL2>

Ví dụ: USE HSCB

GO 6

DELE

DELE FOR RECN()=2 OR RECN()=8

Chương 5. Sửa đổi dữ liệu

Page 62: Bai Giang FoxPro All

4. Các lệnh loại bỏ dữ liệu 4.2. Phục hồi các bản ghi bị xóa logic.

Các bản ghi bị đánh dấu xóa sẽ được phục hồi bởi lệnh:

RECALL [<phạm vi>][FOR <btL1>][WHILE <BtL2>]

Phạm vi ngầm định là bản ghi hiện thời. Lệnh sẽ phục hồi các

bản ghi trong phạm vi thỏa mãn <btL1> hoặc kết thúc ngay khi

gặp bản ghi không thỏa mãn <btL2>.

Ví dụ:

USE HSCB

GO 8

RECALL

RECALL ALL

Chương 5. Sửa đổi dữ liệu

Page 63: Bai Giang FoxPro All

4. Các lệnh loại bỏ dữ liệu

4.3. Hàm DELETED()

Cho kết quả là .T. nếu bản ghi hiện thời bị đánh dấu xóa,

ngược lại cho giá trị .F.

Ví dụ:

USE HSCB

? DELETED()

Chương 5. Sửa đổi dữ liệu

Page 64: Bai Giang FoxPro All

4. Các lệnh loại bỏ dữ liệu 4.4. Lệnh SET DELETED ON/OFFXác lập môi trường đối với các bản ghi bị đánh dấu xóa. Nếu

thiết lập bằng lệnh SET DELE ON thì các bản ghi bị đánh dấu xóa sẽ không có hiệu lực đối với các lệnh tác động lên tệp. Nếu SET DELE OFF thì tất cả các bản ghi trên tệp đều như sau không phân biệt bị đánh dấu xóa hay không. Ngầm định là SET DELE OFF

Ví dụ: USE HSCBGO 6DELE RESTSET DELE ONBROWSET DELE OFFBROW

Chương 5. Sửa đổi dữ liệu

Page 65: Bai Giang FoxPro All

4. Các lệnh loại bỏ dữ liệu 4.5. Xóa vật lý Là loại bỏ hẵn khỏi tệp CSDL và không thể phục hồi bằng lệnh

RECALL.a. Lệnh PACK Các bản ghi bị đánh dấu xóa sẽ bị xóa vật lý nếu ta dùng lệnh

PACK.b. Lệnh ZAPTất cả các bản ghi trong tệp CSDL không phân biệt có bị đánh dấu

xóa hay không, sẽ bị xóa vật lý khi ta dùng lệnh ZAP. Ví dụ: USE HSCB

DELE FOR HSL=0PACK

Ví dụ: USE HSCBZAP

Chương 5. Sửa đổi dữ liệu

Page 66: Bai Giang FoxPro All

1. Khái niệm đối tượng, tiêu chuẩn và trình tự sắp xếp.

2. Sắp xếp bằng lệnh SORT.

3. Lập tệp chỉ số.

4. Tìm kiếm nhanh.

* FIND

* SEEK

5. Dùng nhiều tệp chỉ số.

6. Bài tập

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 67: Bai Giang FoxPro All

1. Khái niệm đối tượng, tiêu chuẩn và trình tự sắp xếp Các bản ghi được đưa vào tệp CSDL theo thứ tự xuất hiện của chúng về thời gian. Tuy nhiên trong mỗi trường hợp cụ thể chúng ta lại muốn các bản ghi trong tệp CSDL xuất hiện theo một trình tự nào đó để thuận lợi cho việc tìm kiếm dữ liệu.

Trong Foxpro việc sắp xếp theo các nguyên tắc sau:Đối tượng: Các bản trong tệp CSDL đang mở.Tiêu chuẩn: Giá trị của một hay nhiều trường dữ liệu.Trình tự: Tăng dần hoặc giảm dần theo mỗi trường.

Ví dụ: Trong một lớp học.Sắp xếp bàn ghế hay học sinh.Nếu sắp xếp theo học sinh thì dựa vào tuổi hay chiều cao.Sắp tăng dần hay giảm dần.

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 68: Bai Giang FoxPro All

2. Sắp xếp bằng lệnh SORTCú pháp:SORT TO <Tệp KQ> ON <trường1>[/A][/D][/C][, <trường2>[/A][/D][/C] ...] [FOR <btL>]Giải thích:

<Tệp KQ>: Là tệp CSDL chứa kết quả sắp xếp. Việc sắp xếp được tiến hành theo tứ tự ưu tiên <trường1>, <trường2>... Nếu sau <trườngi> có tuỳ chọn /A nghĩa là sắp tăng dần, /D nghĩa là sắp giảm dần, /C nghĩa là không phân biệt giữa chữ hoa và chữ thường (chỉ dùng cho trường kiểu ký tự và kết hợp /AC hoặc /DC). FOR <btL>: Chỉ sắp xếp cho những bản ghi thỏa mãn <btL>

Ví dụ: USE HSCBSORT TO SXHSL ON HSLSORT TO SXHT ON TEN/AC, HD/AC, NSINH/DSORT TO SXTDVH ON TDVH FOR HSL>=3

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 69: Bai Giang FoxPro All

3. Lập tệp chỉ số 3.1. Tệp chỉ số: Có tên tổng quát *.IDX, có chức năng điều khiển thứ tự xuất hiện của các bản ghi trên tệp CSDL theo một trình tự nào đó.

3.2. Lệnh lập chỉ số:

Cú pháp:

INDEX ON <khóa> TO <Tệp chỉ số>

Giải thích:<khóa> là một biểu thức mà trong đó tồn tại ít nhất một toán hạng là trường của tệp CSDL.Lệnh thiết lập tệp chỉ số có tên là <Tệp chỉ số> để điều khiển tệp CSDL đang mở xuất hiện các bản ghi tăng dần theo giá trị của <khóa>

Ví dụ: USE HSCB

INDEX ON HSL TO T1

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 70: Bai Giang FoxPro All

4. Tìm kiếm nhanhCác tệp CSDL khi đang được chỉ số theo một trường nào đó chúng ta có thể tìm kiếm nhanh bằng lệnh:

FIND <xâu ký tự>hoặc

SEEK <biểu thức> Việc xác định kết quả của các lệnh FIND và SEEK cũng được thông qua hàm FOUND(), nhưng không thể dùng lệnh CONTINUE.

Ví dụ: USE HSCBINDE ON TEN TO T1FIND Hung?FOUND()SEEK ‘Hung’?FOUND()

INDE ON HSL TO T2SEEK 3.62?FOUND()INDE ON NSINH TO T3SEEK CTOD(‘25/10/1965’)?FOUND()

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 71: Bai Giang FoxPro All

5. Dùng nhiều tệp chỉ số Một tệp CSDL có nhiều tệp chỉ số có thể mở tệp CSDL đó đồng thời với nhiều tệp chỉ số theo một trong hai cách:

Cách 1:

USE <tệp CSDL> INDEX <Ds tệp chỉ số>

Cách 2:

USE <tệp CSDL>

SET INDEX TO <Ds tệp chỉ số>

Khi mới mở tệp thì tệp đầu tiên trong <Ds tệp chỉ số> nắm quyền điều khiển tệp CSDL ta gọi đó là tệp chủ động. Để thay đổi vai trò chủ động của một tệp chỉ số nào đó trong danh sách ta dùng lệnh:

SET ORDER TO <n>

Trong đó n là thứ tự của tệp chỉ số trong danh sách.

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 72: Bai Giang FoxPro All

5. Dùng nhiều tệp chỉ sốVí dụ:

USE HSCB INDEX T1,T2,T3

FIND Hung

?FOUND()

SET ORDER TO 3

SEEK CTOD(‘25/10/1965’)

?FOUND()

SET ORDER TO 2

SEEK 3.62

?FOUND()

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 73: Bai Giang FoxPro All

6. Bài tập

Theo từng nhóm tiến hành thảo luận và viết thu hoạch về phân biệt các lệnh SORT, INDEX và LOCATE, FIND, SEEK và trình bày theo mẫu sau:

SORT INDEX

Giống nhau

Khác nhau

LOCATE FIND SEEK

Giống nhau

Khác nhau

Chương 6. Sắp xếp, chỉ số và tìm kiếm nhanh

Page 74: Bai Giang FoxPro All

Kết xuất thông tin trong tệp CSDL là từ dữ liệu hiện có trong

tệp CSDL đó ta lấy ra những thông tin mang tính thống kê như:

Đếm số lượng các bản ghi thoả mãn một điều kiện nào đó; tính

tổng hoặc giá trị trung bình của một hoặc nhiều trường kiểu số;

tính tổng một hoặc nhiều trường kiểu số của từng nhóm bản ghi

theo một trường khoá nào đó.

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 75: Bai Giang FoxPro All

1. Đếm số lượng bản ghi

2. Tính tổng giá trị các trường kiểu số

3. Tính giá trị trung bình các trường kiểu số

4. Tính tổng bộ phận.

5. Đặt lọc dữ liệu.

6. Giới hạn trường dữ liệu.

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 76: Bai Giang FoxPro All

1. Đếm số lượng bản ghi

1.1. Lệnh COUNT

1.2. Hàm RECCOUNT()

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 77: Bai Giang FoxPro All

1.Đếm số lượng bản ghi1.1. Lệnh COUNT Để đếm số lượng bản ghi trong một tệp CSDL thỏa mãn một điều kiện nào đó ta sử dụng lệnh:

COUNT [<Phạm vi>][FOR <btL>][TO <bbn>]

Giải thích: Phạm vi ngầm định là ALL. Lệnh đếm số lượng các bản ghi trong <phạm vi> thỏa mãn <btL>. Nếu có tuỳ chọn TO <bbn> (biến bộ nhớ) thì kết quả được ghi vào <bbn>, ngược lại kết quả được ghi ra màn hình.

Ví dụ:

USE HSCB

COUNT FOR HSL>=4

COUNT FOR NSINH<=CTOD(‘01/01/1944’) TO CBVH

COUNT TO TSCB

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 78: Bai Giang FoxPro All

1. Đếm số lượng bản ghi1.2. Hàm RECCOUNT()Hàm này sẽ cho kết quả là số lượng các bản ghi đang tồn tại trên tệp CSDL đang mở.

Chú ý: Lệnh COUNT không có tuỳ chọn <phạm vi> và FOR <btL> có nghĩa là đếm số lượng các bản ghi đang hiệu lực trên tệp CSDL đang mở, nhưng nói chung là nó không cho cùng kết quả với hàm RECCOUNT()

Ví dụ:USE HSCBDELE FOR HSL<3SET DELE ONCOUNT TO TSCB? TSCB=RECCOUNT()

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 79: Bai Giang FoxPro All

2. Tính tổng giá trị các trường kiểu sốĐể tính tổng giá trị các trường kiểu số của một tệp CSDL đang mở ta sử dụng lệnh:

SUM [<Phạm vi>][<Ds trường>][TO <Ds bbn>][FOR <btL>]

Giải thích: Phạm vi ngầm định là ALL. Nếu không có tuỳ chọn <Ds trường> thì tất cả các trường kiểu số đều được tính tổng, nếu có thì chỉ tính tổng cho những trường được liệt kê trong danh sách. Nếu có tuỳ chọn TO <Ds bbn> (danh sách biến bộ nhớ) thì các kết quả được lưu vào trong danh sách biến bộ nhớ. Chú ý rằng số lượng biến bộ nhớ được sử dụng trong danh sách này phải bằng đúng số lượng các trường kiểu số được tính tổng và chúng tương ứng với nhau theo thứ tự được liệt kê trong cả hai danh sách. Nếu không sử dụng tuỳ chọn này thì kết quả được đưa lên màn hình.

Continue

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 80: Bai Giang FoxPro All

2. Tính tổng giá trị các trường kiểu số

Ví dụ:

USE BLUONG

SUM

SUM LCB,LPC,TONG TO TLCB,TLPC,TTONG

SUM FOR KHOA=’CNTT’

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 81: Bai Giang FoxPro All

3. Tính giá trị trung bình các trường kiểu sốĐể tính giá trị trung bình các trường kiểu số của một tệp CSDL đang mở ta sử dụng lệnh:

AVERAGE [<Phạm vi>][<Ds trường>][TO <Ds bbn>][FOR <btL>]Giải thích: Phạm vi ngầm định là ALL. Nếu không có tuỳ chọn <Ds trường> thì tất cả các trường kiểu số đều được tính giá trị trung bình, nếu có thì chỉ tính giá trị trung bình cho những trường được liệt kê trong danh sách. Nếu có tuỳ chọn TO <Ds bbn> (danh sách biến bộ nhớ) thì các kết quả được lưu vào danh sách biến bộ nhớ. Chú ý rằng số lượng biến bộ nhớ được sử dụng trong danh sách này phải bằng đúng số lượng các trường kiểu số được tính giá trị trung bình và chúng tương ứng với nhau theo thứ tự được liệt kê trong cả hai danh sách. Nếu không sử dụng tuỳ chọn này thì kết quả được đưa lên màn hình.

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 82: Bai Giang FoxPro All

3. Tính giá trị trung bình các trường kiểu sốVí dụ:

USE BLUONG

AVERAGE

AVERAGE LCB,LPC,TONG TO TLCB,TLPC,TTONG

AVERAGE FOR KHOA=’CNTT’

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 83: Bai Giang FoxPro All

4. Tính tổng bộ phận.

4.1. Khái niệm

4.2. Lệnh TOTAL

4.3. Cơ chế thực hiện

4.4. Ví dụ

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 84: Bai Giang FoxPro All

4. Tính tổng bộ phận

4.1. Khái niệm

Tính tổng bộ phận nghĩa là tính tổng các trường kiểu số cho các

bản ghi có cùng một giá trị khóa cho trước. Mỗi giá trị khóa lập

thành một tổng. Khóa ở đây là một trường của tệp CSDL.

Ví dụ: Trên tệp BLUONG.DBF khi ta cần tính lương theo từng

phòng, khoa. Điều đó có nghĩa là tính tổng của các bản ghi có cùng

một giá trị trên trường KHOA.

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 85: Bai Giang FoxPro All

4. Tính tổng bộ phận4.2. Lệnh TOTAL TOTAL ON <Khoá> TO <tệp KQ> [FOR <btL>][FIELDS <Ds trường>]

Giải thích:

Lệnh tính tổng bộ phận cho các bản ghi có cùng một giá trị <Khóa> nằm liên tiếp nhau lập thành một bản ghi tổng và ghi vào <tệp KQ>.

Nếu có tuỳ chọn FOR <btL> thì chỉ có những bản ghi thỏa mãn <btL> mới được tính tổng bộ phận.

Nếu có tuỳ chọn FIELDS <Ds trường> thì việc tính tổng bộ phận chỉ tiến hành trên những trường được liệt kê trong danh sách.

<Tệp KQ> có cấu trúc hoàn toàn giống với cấu trúc của tệp đang mở.

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 86: Bai Giang FoxPro All

4. Tính tổng bộ phận

4.3. Cơ chế thực hiện

Bắt đầu từ bản ghi đầu tiên lệnh thiết lập một giá trị khóa rồi xét

những bản ghi kế tiếp nó để lập một bản ghi tổng và ghi vào <tệp

KQ>. Khi gặp bản ghi đầu tiên khác giá trị khóa, lệnh chuyển sang

thiết lập giá trị khóa thứ hai, rồi thực hiện như trên, để thiết lập bản

ghi tổng khác. Quá trình thực hiện tương tự như trên, cho đến khi

kết thúc tệp CSDL.

Vì vậy, để kết quả có ý nghĩa. Tệp CSDL phải được sắp xếp

hoặc chỉ số theo trường khoá tính tổng bộ phận.

Page 87: Bai Giang FoxPro All

4. Tính tổng bộ phận4.4. Ví dụ

USE BLUONG

TOTAL ON KHOA TO THOP1

INDEX ON KHOA TO T1

TOTAL ON KHOA TO THOP2

TOTAL ON KHOA TO THOP3 FOR HSL>=3

Page 88: Bai Giang FoxPro All

5. Đặt lọc dữ liệu

Khái niệm: Lọc dữ liệu là chỉ cho phép làm việc với những bản ghi của tệp CSDL thỏa mãn một điều kiện nào đó, như trước đây ta đã dùng tuỳ chọn FOR <btL> trong các lệnh.

Lệnh đặt lọc:

SET FILTER TO <btL>

Với tệp CSDL đang mở việc xác lập môi trường như thế này chỉ cho phép các lệnh tác động lên những bản ghi thỏa mãn <btL>

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 89: Bai Giang FoxPro All

5. Đặt lọc dữ liệuVí dụ:

USE HSCBBROW FOR HSL>3COUNT FOR HSL>3

tương đương vớiUSE HSCBSET FILTER TO HSL>3BROW COUNT

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 90: Bai Giang FoxPro All

6. Giới hạn trường dữ liệu

Khái niệm: Giới hạn trường dữ liệu là chỉ cho phép làm việc

với những trường dữ liệu mà ta quan tâm.

Lệnh giới hạn trường dữ liệu:

SET FIELD TO <Ds trường>

Với tệp CSDL đang mở việc xác lập môi trường như thế này

chỉ cho phép các lệnh tác động lên những trường được liệt kê

trong danh sách.

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 91: Bai Giang FoxPro All

6. Giới hạn trường dữ liệu

Ví dụ:

USE HSCB

BROW FIELD MSCB,HD,TEN

tương đương với

USE HSCB

SET FIEL TO MSCB,HD,TEN

BROW

Chương 7. Kết xuất thông tin trong tệp CSDL

Page 92: Bai Giang FoxPro All

1. Khái niệm báo cáo dạng Report và dạng Label.

2. Tạo tệp khuôn báo cáo.

3. Sửa đổi tệp khuôn báo cáo.

4. Sử dụng lệnh REPORT

5. Tạo tệp nhãn.

6. Sửa đổi tệp nhãn.

7. Sử dụng lệnh LABEL

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 93: Bai Giang FoxPro All

1. Khái niệm báo cáo dạng Report và dạng Label1.1. Báo cáo dạng Report

Là báo cáo theo dạng bảng 2 chiều mà một dòng của nó lấy thông tin trên một bản ghi.

Ví dụ: DANH SÁCH THÍ SINH

Số BD HỌ VÀ TÊN NGÀY SINH

NƠI SINH

121 Nguyễn Văn Hà 26/03/1990 Đông Hà

122 Trần Văn Hoàng 09/08/1989 Vĩnh Linh

123 Hồ Thanh Hùng 17/05/1990 Hải Lăng

Đông Hà, ngày 16 tháng 3 năm 2008CHỦ TỊCH HỘI ĐỒNG

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 94: Bai Giang FoxPro All

1. Khái niệm báo cáo dạng Report và dạng Label1.2. Báo cáo dạng Label Báo cáo mà mỗi trang lấy thông tin trên một bản ghi. Ví dụ:

PHIẾU BÁO THITrường Đại học X, báo tin cho thí sinh

Họ và tên: Nguyễn Văn Hà Số báo danh: 121Ngày sinh: 26/03/1990 Nơi sinh: Đông Hà

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 95: Bai Giang FoxPro All

2. Tạo tệp khuôn báo cáo2.1 Tên tệp khuôn: Tệp khuôn báo cáo có tên *.FRX

2.2. Tạo tệp khuôn: Việc tạo ra nó bao gồm các bước sau:

B1: Thiết kế báo cáo

B2: Phân định rõ 3 vùng: Đầu biểu (Title), nội dung (Detail) và cuối biểu (Summary)

B3: Mở tệp CSDL tương ứng USE <tệp CSDL>

B4: Đưa vào lệnh tạo tệp khuôn báo cáoCREATE REPORT <tệp khuôn bc>

B5: Định dạng trang in (Alt - Report - Page layout - Right Margin Colum)

B6: Khai báo vùng Detail

B7: Mở vùng Title và Summary (Alt - Report - Title/Summary)Đánh dấu Title Band và Summary Band

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 96: Bai Giang FoxPro All

2. Tạo tệp khuôn báo cáo

B8: Khai báo vùng Title

B9: Khai báo vùng Summary

2.3. Cách đưa vào một đối tượng văn bản

2.4. Cách đưa vào một đối tượng trường dữ liệu* Trường đơn giản* Trường có tính toán

Ví dụ: Từ tệp HSCB.DBF lập Danh sách cán bộ trích ngang.USE HSCBCREA REPO DSTN (tạo ra DSTN.FRX)

Từ tệp BLUONG.DBF lập Bảng thanh toán lương.USE BLUONGCREA REPO BTTL (tạo ra BTTL.FRX)

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 97: Bai Giang FoxPro All

3. Sửa đổi tệp khuôn báo cáoVới một tệp khuôn báo cáo đã được thiết lập. Ta có thể sửa đổi nó bằng lệnh:

MODIFY REPORT <tên tệp khuôn>

Ví dụ:

USE HSCB

MODI REPO DSTN

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 98: Bai Giang FoxPro All

4. Sử dụng lệnh REPORT4.1. Cú pháp:

REPORT FORM <tệp khuôn> [FOR <btL>] TO PRINT/PREVIEW

4.2. Giải thích: Lệnh in báo cáo với khuôn dạng của <tệp khuôn> và dữ liệu là ở trên các tệp CSDL đang mở.Nếu có tuỳ chọn FOR <btL> thì chỉ có những bản ghi thỏa mãn <btL> mới được in theo báo cáo.Nếu có tuỳ chọn TO PRINT thì báo cáo được in ra máy in hoặc tuỳ chọn PREVIEW thì báo cáo được đưa ra màn hình.

Ví dụ: USE HSCBREPO FORM DSTN PREVUSE BLUONGREPO FORM BTTL PREV

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 99: Bai Giang FoxPro All

5. Tạo tệp nhãn5.1 Tên tệp nhãn: Tệp nhãn có tên *.LBX

5.2. Tạo tệp nhãn: Việc tạo ra nó bao gồm các bước sau:

B1: Thiết kế nhãn

B2: Mở tệp CSDL tương ứng (USE <tệp CSDL>)

B3: Đưa vào lệnh tạo tệp nhãn (CREATE LABEL <tệp nhãn>)

B4: Định dạng trang in (Alt - Label - Page layout )

B5: Khai báo nhãn

5.3. Cách đưa vào một đối tượng văn bản

5.4. Cách đưa vào một đối tượng trường dữ liệu

Ví dụ: Từ tệp HSCB.DBF tạo nhãn là các Phiếu cán bộ.USE HSCBCREA LABEL PCB (tạo tệp PCB.LBX)

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 100: Bai Giang FoxPro All

6. Sửa đổi tệp nhãn Với một tệp nhãn đã được thiết lập. Ta có thể sửa đổi nó bằng lệnh:

MODIFY LABEL <tệp nhãn>

Ví dụ:

USE HSCB

MODI LABEL PCB

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 101: Bai Giang FoxPro All

7. Sử dụng lệnh LABEL 7.1. Cú pháp:

LABEL FORM <tệp khuôn> [FOR <btL>] TO PRINT/PREVIEW

7.2. Giải thích:

Lệnh in nhãn với khuôn dạng của <tệp nhãn> và dữ liệu là ở trên các tệp CSDL đang mở.

Nếu có tuỳ chọn FOR <btL> thì chỉ có những bản ghi thỏa mãn <btL> mới được in ra nhãn.

Nếu có tuỳ chọn TO PRINT thì nhãn được in ra máy in hoặc tuỳ chọn PREVIEW thì nhãn được đưa ra màn hình.

Ví dụ: USE HSCBLABE FORM PCB PREV

Chương 8. Lập báo cáo bằng lệnh Report & Lable

Page 102: Bai Giang FoxPro All

1. Định vùng làm việc và gán bí danh

2. Cập nhật từ một tệp CSDL khác

3. Kết nối hai tệp CSDL

4. Thiết lập mối liên kết giữa nhiều tệp CSDL

5. Đóng các tệp CSDL đang mở

Chương 9. Thao tác với nhiều tệp CSDL

Page 103: Bai Giang FoxPro All

1. Định vùng làm việc và gán bí danh

1.1. Các vùng làm việc của FoxPro.

1.2. Mở tệp trên một vùng làm việc bất kỳ và gán bí danh.

1.3. Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở ở vùng làm việc khác.

Chương 9. Thao tác với nhiều tệp CSDL

Page 104: Bai Giang FoxPro All

1. Định vùng làm việc và gán bí danh

1.1. Các vùng làm việc của FoxPro

Từ trước cho đến nay chúng ta chỉ làm việc với một vùng của Foxpro nên khi mở tệp CSDL cũng đồng nghĩa với việc đóng tệp CSDL đang mở.

Thực tế Foxpro có 25 vùng làm việc được đặt tên như sau:

Dùng số: Từ 1 đến 25

Dùng ký tự: 10 vùng làm việc đầu tiên có tên bằng số từ 1 đến 10 hoặc bằng ký tự từ A đến J.

Để chọn vùng làm việc ta dùng lệnh

SELECT <Tên vùng>

Ví dụ: SELE Choặc SELE 15

Chương 9. Thao tác với nhiều tệp CSDL

Page 105: Bai Giang FoxPro All

1. Định vùng làm việc và gán bí danh1.2. Mở tệp trên một vùng làm việc bất kỳ và gán bí danh a. Mở tệp trên vùng làm việc

SELECT <Tên vùng>USE <tệp CSDL>

b. Gán bí danh SELECT <Tên vùng>USE <tệp CSDL> ALIAS <bí danh>

<bí danh>: Do người sử dụng tự đặt nhưng phải tuân thủ hai điều sau: * Theo đúng luật đặt tên trường dữ liệu * Tên không thể là các ký tự từ A đến J.

Ví dụ: SELE 5USE HSCB

Ví dụ: SELE 16USE BLUONG ALIAS BL

Chương 9. Thao tác với nhiều tệp CSDL

Page 106: Bai Giang FoxPro All

1.Định vùng làm việc và gán bí danh1.3 Truy nhập trường dữ liệu của tệp hiện thời và tệp đang mở

ở vùng làm việc khác.* Tệp hiện thời: <trường> như đã dùng từ trước đến nay* Tệp ở vùng làm việc khác

<Tên vùng>.<trường><Bí danh>.<trường>

Chú ý rằng việc di chuyển con trỏ bản ghi chỉ thực hiện được đối với tệp hiện thời chứ không làm đưọc với tệp đang mở trên vùng khác, trừ dùng lệnh SET RELATION

Ví dụ: SELE 3USE HSCB ALIAS HSSELE 1USE BLUONG? HSL? HS.HSL (hoặc C.HSL)

Chương 9. Thao tác với nhiều tệp CSDL

Page 107: Bai Giang FoxPro All

2. Cập nhật từ một tệp CSDL khác

2.1. Bổ sung các bản ghi từ một tệp CSDL khác.

2.2. Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác.

Chương 9. Thao tác với nhiều tệp CSDL

Page 108: Bai Giang FoxPro All

2. Cập nhật từ một tệp CSDL khác

2.1. Bổ sung các bản ghi từ một tệp CSDL khác

Khi hai tệp CSDL có cùng chung cấu trúc tệp hay có một số trường trùng nhau về cấu trúc ta có thể bổ sung các bản ghi của tệp này sang tệp kia bằng cách sau:

Tệp muốn bổ sung được mở ở vùng hiện thời.

Tệp chứa các bản ghi để bổ sung ở trạng thái đóng.

Sử dụng lệnh:

APPEND FROM <tệp CSDL> [FOR <btL>][FIELDS <Ds trường>]

Chương 9. Thao tác với nhiều tệp CSDL

Page 109: Bai Giang FoxPro All

2. Cập nhật từ một tệp CSDL khác

2.1. Bổ sung các bản ghi từ một tệp CSDL khác

Giải thích:

Nếu có tuỳ chọn FOR <btL> thì chỉ những bản ghi thỏa mãn <btL> mới được bổ sung.

Nếu có tuỳ chọn FIELDS <Ds trường> thì các bản ghi được bổ sung vào tệp hiện thời theo các trường được liệt kê trong danh sách. Ngược lại các bản ghi được bổ sung vào tệp hiện thời theo tất cả các trường của nó trùng tên với tệp hiện thời.

Ví dụ:USE HSCB

COPY TO HS1

APPEND FROM HS1 FOR HSL>3

APPEND FROM HS1 FIELD MSCB, HD, TEN,HSL

APPEND FROM BLUONG

Chương 9. Thao tác với nhiều tệp CSDL

Page 110: Bai Giang FoxPro All

2. Cập nhật từ một tệp CSDL khác2.2. Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác

Thông thường khi sửa đổi dữ liệu nhiều, người ta sẽ chuẩn bị dữ liệu

sửa đổi trên một tệp khác. Sau đó sẽ dùng tệp đó để sửa trên tệp hiện thời

bằng lệnh:

UPDATE ON <khoá> FROM <bí danh> REPLACE <trường 1> WITH

<bt1>[,<trường 2> WITH <bt2>... ] [ FOR <btL>]

Giải thích: Tệp chứa dữ liệu sửa đổi được mở trên vùng làm việc khác

với <bí danh> và chỉ số theo <khoá> cập nhật. Tệp cần sửa đổi được mở ở

vùng hiện thời và cũng được chỉ số theo <khoá> cập nhật. Với những bản

ghi của hai tệp có cùng giá trị khoá thì việc cập nhật được tiến hành như

mô tả trên REPLACE. Nếu có tuỳ chọn FOR <btL> thì chỉ những bản ghi

thoả mãn <btL> mới được cập nhật.

Chú ý: Trường <khóa> của cả hai tệp phải trùng nhau về cấu trúc.

Chương 9. Thao tác với nhiều tệp CSDL

Page 111: Bai Giang FoxPro All

2. Cập nhật từ một tệp CSDL khác

2.2. Sửa đổi dữ liệu dựa vào dữ liệu trên một tệp khác

Ví dụ:

SELE 3

USE LMOI ALIAS LM

INDE ON MSCB TO T1

SELE 1

USE HSCB

INDE ON MSCB TO T2

UPDATE ON MSCB FROM LM REPL HSL WITH LM.HSL

Chương 9. Thao tác với nhiều tệp CSDL

Page 112: Bai Giang FoxPro All

3. Kết nối hai tệp CSDL

Với hai tệp CSDL có mối quan hệ logic với nhau ta có thể kết nối

chúng bằng lệnh sau:

JOIN WITH <bí danh> TO <tệp KQ> FOR <btL> [FIELDS

<dstrường>]

Điều kiện: Một tệp được mở trên vùng làm việc khác với <bí danh>,

tệp còn lại được mở trên vùng hiện thời.

Giải thích: Lệnh sẽ tiến hành kết nối mỗi bản ghi của tệp hiện thời

lần lượt với từng bản ghi của tệp <bí danh> thỏa mãn <btL> và ghi vào

<tệp KQ>. Nếu có tùy chọn FIELDS <ds trường> thì <tệp KQ> bao gồm

những trường được liệt kê trong danh sách và theo thứ tự này. Nếu

không có tùy chọn đó thì <tệp KQ> bao gồm tất cả các trường của tệp

hiện thời và tất cả các trường của tệp <bí danh> không trùng tên với

các trường của tệp hiện thời.

Chương 9. Thao tác với nhiều tệp CSDL

Page 113: Bai Giang FoxPro All

3. Kết nối hai tệp CSDL

Cơ chế:

Trước hết con trỏ của tệp hiện thời đặt ở bản ghi đầu tiên, con trỏ

của tệp <bí danh> cũng được đặt ở bản ghi đầu tiên và lệnh xét <btL>

nếu thỏa mãn thì một bản ghi sẽ được kết nối và ghi vào <tệp KQ>,

ngược lại thì bỏ qua và con trỏ trên tệp <bí danh> di chuyển đến bản

ghi kế tiếp và lại xét <btL> quá trình tiếp tục cho đến khi con trỏ bản

ghi của tệp <bí danh> đặt ở cuối tệp thì con trỏ của tệp hiện thời được

di chuyển đến bản ghi kế tiếp và con trỏ bản ghi của tệp <bí danh> lại

trở về bản ghi đầu tiên. Quá trình xét bản ghi này của tệp hiện thời với

các bản ghi của tệp bí danh lại diễn ra như trên. Đến khi con trỏ của

tệp hiện thời đặt ở cuối tệp thì lệnh kết thúc.

Chương 9. Thao tác với nhiều tệp CSDL

Page 114: Bai Giang FoxPro All

3. Kết nối hai tệp CSDLVí dụ 1:

CLOS ALL

SELE 2

USE DMHANG ALIAS DM

SELE 1

USE HOADON

JOIN WITH DM TO KQUA FOR MSHH=DM.MSHH FIEL SHHD, MSHH, DM.DGIA, SL, TIEN

USE KQUA

BROW

Chương 9. Thao tác với nhiều tệp CSDL

Page 115: Bai Giang FoxPro All

3. Kết nối hai tệp CSDLVí dụ 2:

CLOSE ALLSELE 3USE DIEMTHI ALIA DTSELE 2USE FACHBT ALIA FASELE 1USE HOSOJOIN WITH FA TO TGIAN FOR SBD=FA.SBDUSE TGIANJOIN WITH DT TO KQTHI FOR FACH=DT.FACHUSE KQTHIBROW

Chương 9. Thao tác với nhiều tệp CSDL

Page 116: Bai Giang FoxPro All

4. Thiết lập mối liên kết giữa nhiều tệp CSDL

Lệnh JOIN có một số nhược điểm sau:

Phải tạo ra tệp CSDL để chứa kết quả (tốn không gian nhớ)

Việc kết nối chỉ thể hiện một lúc hai tệp

Kết quả bị cứng hoá nên sau khi kết nối nếu có sự thay đổi trên các tệp nguồn thì tệp kết quả cũng không thể hiện được.

Để khắc phục chúng ta sẽ tiến hành liên kết bằng lệnh:

SET RELATION TO <khóa> INTO <bí danh> [ADDITIVE]

Điều kiện:Trong các tệp tham gia liên kết ta phải chọn một tệp có khả năng liên kết với các tệp khác để mở ở vùng hiện thời và gọi nó là tệp chủ.Các tệp còn lại gọi là tệp kết được mở trên các vùng làm việc khác với bí danh và được chỉ số theo trường khóa liên kết.

Chương 9. Thao tác với nhiều tệp CSDL

Page 117: Bai Giang FoxPro All

4. Thiết lập mối liên kết giữa nhiều tệp CSDL

Giải thích: Lệnh thiết lập mối liên kết giữa tệp chủ và tệp <bí danh> theo phép so sánh bằng giữa trường <khóa> của tệp chủ và trường lập chỉ số của tệp <bí danh>. Nếu có tuỳ chọn ADDITIVE thì liên kết này sẽ bổ sung vào các liên kết đã có trước đó của tệp chủ. Nếu không đây là liên kết đầu tiên của tệp chủ.

Cơ chế: Với các tệp kết đang thiết lập liên kết với tệp chủ, khi con trỏ của tệp chủ đứng ở một bản ghi nào đó thì con trỏ của các tệp kết sẽ tự động dịch chuyển đến các bản ghi tương ứng

Ví dụ: Trong 2 tệp HOADON.DBF và DMHANG.DBF thì HOADON.DBF là tệp chủ.

Trong 3 tệp HOSO.DBF, FACHBT.DBF và DIEMTHI.DBF thì FACHBT.DBF là tệp chủ

Chương 9. Thao tác với nhiều tệp CSDL

Page 118: Bai Giang FoxPro All

4. Thiết lập mối liên kết giữa nhiều tệp CSDL

Ví dụ 1:

CLOS ALL

SELE 2

USE DMHANG ALIAS DM

INDE ON MSHH TO T1

SELE 1

USE HOADON

SET RELATION TO MSHH INTO DM

BROW FIEL SHHD, MSHH, SL, DM.DGIA, TIEN

Chương 9. Thao tác với nhiều tệp CSDL

Page 119: Bai Giang FoxPro All

4. Thiết lập mối liên kết giữa nhiều tệp CSDL Ví dụ 2:

CLOSE ALLSELE 3USE DIEMTHI ALIA DTINDE ON FACH TO T1SELE 2USE HOSO ALIA HSINDE ON SBD TO T2SELE 1USE FACHBTSET RELA TO SBD INTO HSSET RELA TO FACH INTO DT ADDITIVEBROW FIEL SBD, HS.HVT, DT.DIEM

Chương 9. Thao tác với nhiều tệp CSDL

Page 120: Bai Giang FoxPro All

5. Đóng các tệp CSDL đang mở

CLOSE DATABASE: Đóng tất cả các tệp CSDL và các tệp chỉ số.

CLOSE ALL: Đóng tất cả các loại tệp.

QUIT: Đóng tất cả các loại tệp và thoát khỏi Foxpro

Chương 9. Thao tác với nhiều tệp CSDL

Page 121: Bai Giang FoxPro All

1. Chọn thư mục hiện thời

2. Đọc danh sách các tệp trên đĩa

3. Sao chép tệp

4. Đổi tên tệp

5. Xóa tệp

6. Sử dụng lệnh DOS

Chương 10. Những thao tác khác với tệp CSDL

Page 122: Bai Giang FoxPro All

1. Chọn thư mục hiện thời

Khi ta mới khởi động Foxpro thì thư mục hiện thời là thư mục mà ở

mức DOS ta thực hiện lệnh khởi động Foxpro. Để thay đổi thư mục

hiện thời ta sử dụng lệnh:

SET DEFAULT TO [<d:>]<path>

Giải thích:

Lệnh sẽ chọn thư mục hiện thời là thư mục được chỉ ra bởi

đường dẫn <path> trên ổ đĩa <d:>

Ví dụ: SET DEFA TO C:\QLNS

Chương 10. Những thao tác khác với tệp CSDL

Page 123: Bai Giang FoxPro All

2. Đọc danh sách các tệp trên đĩa

2.1. Tệp CSDL:

Muốn xem danh sách các tệp CSDL đang tồn tại trong một thư mục nào đó ta sử dụng lệnh:

DIR [<path>][TO PRINT]

Giải thích:

Lệnh sẽ hiển thị tên của các tệp CSDL trong thư mục được chỉ ra bởi đường dẫn <path> hoặc đưa ra máy in nếu có tùy chọn TO PRINT

Ví dụ:

DIR TO PRINT

DIR C:\QLNS

Chương 10. Những thao tác khác với tệp CSDL

Page 124: Bai Giang FoxPro All

2. Đọc danh sách các tệp trên đĩa

2.2. Tệp tổng quát:

DIR [<path>]<tên tệp>[TO PRINT]

Giải thích:

<tên tệp> ở đây có thể viết tường minh hoặc mô tả với việc sử

dụng các ký tự đại diện * và ?.

Ví dụ:

DIR *.PRG

DIR HSCANBO.*

DIR C:\QLNS\*.FRX

Chương 10. Những thao tác khác với tệp CSDL

Page 125: Bai Giang FoxPro All

3. Sao chép tệp 3.1. Sao chép tệp CSDL:Với tệp CSDL hiện thời, ta có thể sao chép nó thành một tệp khác

bằng lệnh:COPY TO [<Path>]<tệp KQ> [FIELDS <Ds trường>][FOR <BtL>]

Giải thích: Nếu có tùy chọn FIELDS <Ds trường> thì <tệp KQ> chỉ bao gồm

các trường được liệt kê trong danh sách. Nếu có tùy chọn FOR <BtL> thì chỉ có những bản ghi của tệp hiện thời thỏa mãn <btL> mới được sao chép sang <tệp KQ>.

Ví dụ: USE HSCANBO COPY TO HSCB COPY TO HS1 FIELD MSCB, HD, TEN, HSL COPY TO HS2 FOR HSL>=3

Chương 10. Những thao tác khác với tệp CSDL

Page 126: Bai Giang FoxPro All

3. Sao chép tệp 3.2. Sao chép tệp tổng quát:

Với tệp tổng quát, ta có thể sao chép nó thành một tệp khác bằng lệnh:

COPY FILE [<Path>]<tệp nguồn> TO [<Path>]<tệp đích>

Giải thích:

<tệp nguồn> và <tệp đích> phải được viết dưới dạng đầy đủ và tường minh.

Ví dụ:

COPY FILE HS1.DBF TO HS3.DBF

COPY FILE DSTN.FRX TO BCCB.FRX

Chương 10. Những thao tác khác với tệp CSDL

Page 127: Bai Giang FoxPro All

4. Đổi tên tệp

Với một tệp CSDL hoặc một tệp tổng quát đang ở trạng thái đóng

ta có thể đổi tên nó bằng lệnh:

RENAME [<Path>]<tên cũ> TO <tên mới>

Giải thích:

Lệnh sẽ đổi tệp có tên là <tên cũ> được xác định bởi đường dẫn

<Path> thành tên là <tên mới>.

Ví dụ:

RENAME HS2.DBF TO CBQL.DBF

Chương 10. Những thao tác khác với tệp CSDL

Page 128: Bai Giang FoxPro All

5. Xóa tệp

Để xóa một tệp bất kỳ đang ở trạng thái đóng bạn có thể dùng lệnh:

DELETE FILE <tên tệp>

<tên tệp> phải được viết ở dạng tường minh.

Ví dụ:

DELETE FILE HS3.DBF

DELETE FILE \QLNS\MAIN.PRG

Chương 10. Những thao tác khác với tệp CSDL

Page 129: Bai Giang FoxPro All

6. Sử dụng lệnh DOS

Chúng ta thấy rằng rất nhiều thao tác ở trên chúng ta có thể thực

hiện bằng lệnh DOS nếu ta thoát khỏi FOXPRO. Tuy nhiên khi

đang ở FoxPro ta hoàn toàn có thể thi hành các lệnh của DOS

bằng cách sử dụng cú pháp:

!<Lệnh DOS>

Ví dụ:

!DEL \QLNS\*.PRG

!C:\BP\BIN\TURBO

Chương 10. Những thao tác khác với tệp CSDL

Page 130: Bai Giang FoxPro All

SQL - Structured Query Language - Ngôn ngữ truy vấn dữ liệu có cấu trúc.

Cách viết SQL chuẩn có dấu ; cuối câu nhưng SQL trong FoxPro thì tuân theo luật viết lệnh của Foxpro

Ví dụ:SQL chuẩn SELECT * FROM HSCANBO;SQL Foxpro SELECT *; FROM HSCANBO

Các thuật ngữ:Table: Tệp CSDLRow: bản ghiCol: Trường dữ liệu

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 131: Bai Giang FoxPro All

1. Tạo tệp CSDL và vào dữ liệu

2. Truy vấn dữ liệu đơn giản

3. Kết xuất tệp theo thứ tự hoặc bỏ bản ghi trùng

4. Các hàm SQL

5. Tính tổng bộ phận

6. JOIN và UNION: liên kết dữ liệu

7. Các câu truy vấn dữ liệu lồng nhau

8. Ghi kết quả vào tệp hay in ra máy in

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 132: Bai Giang FoxPro All

1. Tạo tệp CSDL và vào dữ liệu 1.1. Tạo tệp CSDL

Lệnh: CREATE TABLE <tên tệp> (<trường1> <kiểu1>[(<độ rộng>[,<thập phân>])][, <trường2> <kiểu2>[(<độ rộng>[,<thập phân>])] ...])

Giải thích: <tên tệp>: tên của tệp CSDL muốn tạo <trườngi>: tên của trường thứ i <kiểui>[(<độ rộng>[,<thập phân>])]: Là kiểu và độ rộng của trường thứ i được quy định như sau:

C(X)- Kiểu ký tự với độ dài XD - Kiểu ngàyL - Kiểu LogicN(X,Y) - Kiểu số với độ rộng X và phần thập phân là Y.

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 133: Bai Giang FoxPro All

1. Tạo tệp CSDL và vào dữ liệu 1.1. Tạo tệp CSDL

Ví dụ:

CREATE TABLE HSCB (MSCB C(4), HD C(18), TEN C(7), NSINH D, HSL N(4,2), TDVH N(2), GD L)

CREA TABL HOSO (SBD N(4),HVT C(25))

CREA TABL FACHBT (SBD N(4), FACH C(2))

CREA TABL DIEMBT(FACH C(2),DIEM N(5,2))

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 134: Bai Giang FoxPro All

1. Tạo tệp CSDL và vào dữ liệu 1.2. Vào dữ liệu:

Lệnh: INSERT INTO <Tệp> [(<Ds trường>)] VALUES (<Ds biểu thức>)

Giải thích: Lệnh sẽ chắp vào <tệp> một bản ghi mới. Nếu không có tùy chọn

<Ds trường> thì phải vào dữ liệu cho tất cả các trường, nếu có thì chỉ vào dữ liệu cho các trường được liệt kê trong danh sách. <Ds biểu thức> là danh sách các giá trị sẽ gán cho các trường tương ứng theo thứ tự ở <Ds biểu thức> và <Ds trường> hoặc là thứ tự các trường trên tệp nếu không có tùy chọn <Ds trường>.

Ví dụ: INSERT INTO HSCANBO (MSCB, HD, TEN) VALUES (‘NV01’,’TRAN VAN’,’DUNG’)

INSERT INTO DIEMBT VALUES (‘X4’,9.5)

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 135: Bai Giang FoxPro All

2. Truy vấn dữ liệu đơn giản

2.1. Chọn tệp CSDL và các trường

2.2. Chọn các bản ghi

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 136: Bai Giang FoxPro All

2. Truy vấn dữ liệu đơn giản

2.1. Chọn tệp CSDL và các trườngLệnh:

SELECT <Ds trường> FROM <Tệp>

Giải thích:

Lệnh sẽ hiển thị lên màn hình nội dung của <tệp>. Nếu tùy chọn <Ds trường> được thay bằng dấu * thì tất cả các trường đều được hiển thị, nếu viết tường minh thì chỉ các trường được liệt kê trong danh sách mới được hiển thị.

Ví dụ:SELE * FROM HSCANBOSELE MSCB,HD,TEN,HSL FROM HSCANBO

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 137: Bai Giang FoxPro All

2. Truy vấn dữ liệu đơn giản 2.2. Chọn các bản ghiĐể chọn các bản ghi trong tệp CSDL thỏa mãn điều kiện nào đó ta thêm vào lệnh tùy chọn sau:

WHERE <điều kiện chọn>Giải thích: - Với tuỳ chọn này được bổ sung vào lệnh thì chỉ có những bản ghi thỏa mãn điều kiện chọn mới được hiện ra.- <điều kiện chọn> có thể là một trong các dạng sau: * Hai biểu thức cùng loại (Số, Ký tự, Ngày) quan hệ với nhau bằng một trong các phép toán Logic sau:

= bằng # khác> lớn hơn != khác< nhỏ hơn <> khác>= lớn hơn hoặc bằng !> không lớn hơn<= nhỏ hơn hoặc bằng !< không nhỏ hơn

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 138: Bai Giang FoxPro All

2. Truy vấn dữ liệu đơn giản

2.2. Chọn các bản ghi* <trường> IN (<bt1>, <bt2>, ...)

<Trường> có giá trị là một trong các <bti> thì thỏa mãn.

* <trường ktự> LIKE <btC> Ở vị trí của <btC> là dấu gạch dưới _ có nghĩa là thay thế cho một ký tự bất kỳ. Ở vị trí của <btC> là dấu phần trăm % có nghĩa là thay thế cho một xâu ký tự bất kỳ.

* <trường> BETWEEN <bt1> AND <bt2> Giá trị của <trường> ở trong đoạn <bt1> và <bt2>

* Các toán tử logic NOT, AND và OR Với các điều kiện chọn như trên ta có thể sử dụng các toán tử logic kết hợp với chúng.

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 139: Bai Giang FoxPro All

2. Truy vấn dữ liệu đơn giản

2.2. Chọn các bản ghiVí dụ:

SELE * FROM HSCANBO WHERE HSL IN (2.97,3.62)

SELE * FROM HSCANBO WHERE MSCB LIKE “NV__”

SELE * FROM HSCANBO WHERE HD LIKE “%VAN%”

SELE * FROM HSCANBO WHERE TDVH BETWEEN 8 AND 10

SELE * FROM HSCANBO WHERE MSCB LIKE “NV__” AND HSL>3

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 140: Bai Giang FoxPro All

3. Kết xuất tệp theo thứ tự hoặc bỏ bản ghi trùng

3.1 Kết xuất theo thứ tự:

Muốn các bản ghi của một tệp CSDL xuất hiện theo một thứ tự

nào đó ta sẽ bổ sung vào lệnh tuỳ chọn:

ORDER BY <trường1>[ASC|DESC][, <trường2>[ASC|DESC]...]

Giải thích:

Các bản ghi sẽ xuất hiện theo thứ tự ưu tiên trường 1, trường 2,

Nếu có tùy chọn ASC thì được sắp theo thứ tự tăng dần còn DESC

là giảm dần.

Ví dụ: SELE * FROM HSCANBO ORDER BY TEN, HD

SELE * FROM HSCANBO ORDER BY HSL DESC

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 141: Bai Giang FoxPro All

3. Kết xuất tệp theo thứ tự hoặc bỏ bản ghi trùng

3.2 Chỉ hiện một bản ghi có một giá trị trường:

Muốn các bản ghi của một tệp CSDL có cùng một giá trị trường

nào đó chỉ xuất hiện một bản ghi ta sẽ bổ sung vào tên của nó sau

lệnh SELECT tuỳ chọn DISTINCT

Ví dụ: SELECT DISTINCT HSL FROM HSCANBO

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 142: Bai Giang FoxPro All

4. Các hàm SQL

4.1 Hàm COUNT()

Đếm số lượng các bản ghi

Các mẫu lệnh

SELECT COUNT(*) FROM HSCANBO

Đếm số lượng các bản ghi trong tệp HSCANBO

SELECT COUNT(MSCB) FROM HSCANBO

Đếm số lượng các bản ghi trong tệp HSCANBO có MSCB không rỗng.

SELECT COUNT(DISTINCT HSL) FROM HSCANBO

Đếm số lượng các loại hệ số lương trong tệp HSCANBO

SELECT COUNT(MSCB) FROM HSCANBO WHERE HSL=3.62

Đếm số lượng các bản ghi trong tệp HSCANBO có HSL=3.62.

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 143: Bai Giang FoxPro All

4. Các hàm SQL

4.2 Các hàm AVG(), MIN(), MAX(), SUM()

Các hàm này được sử dụng tương tự như trên nhưng không sử

dụng DISTINCT đối với MAX và MIN.

Ví dụ: SELECT AVG(HSL), MAX(HSL), MIN(HSL) FROM

HSCANBO

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 144: Bai Giang FoxPro All

5. Tính tổng bộ phận

Để tính tổng bộ phận chúng ta sẽ sử dụng hai tùy chọn GROUP BY và HAVING

Mẫu lệnh

SELECT KHOA, SUM(TONG) FROM BLUONG GROUP BY KHOA Tính tổng bộ phận của tổng lương theo từng phòng khoa.

SELECT KHOA, SUM(HSL*290000) FROM BLUONG GROUP BY KHOA HAVING (HSL*290000)>600000

Tính tổng bộ phận của tổng lương theo từng phòng khoa với điều kiện HSL*290000>600000.

Ngoài ra chúng ta có thể dùng kết hợp với tùy chọn WHERESELECT KHOA, SUM(HSL*290000) FROM BLUONG WHERE

PCTN>0GROUP BY KHOA HAVING (HSL*290000)>600000

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 145: Bai Giang FoxPro All

6. JOIN và UNION: liên kết dữ liệu

6.1 Liên kết dữ liệu

Để liên kết dữ liệu trên nhiều tệp CSDL ta sẽ mở rộng lệnh

SELECT như sau:

SELECT [*|<bd1>.<trường1>[, <bd2>.<trường2>...]] FROM <tệp1>

<bd1>[, <tệp2> <bd2>... ] WHERE <Điều kiện>

* <bdi> là bí danh của tệp i

* <Điều kiện>: Đây là điều kiện để kết nối các tệp

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 146: Bai Giang FoxPro All

6. JOIN và UNION: liên kết dữ liệu

6.1 Liên kết dữ liệu

Mẫu lệnh

SELECT HD.SHHD,HD.MSHH, DM.TENH, HD.SL,DM.DGIA FROM

HOADON HD, DMHANG DM WHERE HD.MSHH=DM.MSHH

Liên kết hai tệp HOADON.DBF và DMHANG.DBF với điều kiện các bản

ghi bằng nhau về MSHH

SELECT HS.SBD,HS.HVT, FA.FACH, DI.DIEM FROM HOSO HS, FACHBT

FA, DIEMTHI DI WHERE HS.SBD=FA.SBD AND FA.FACH=DI.FACH

Liên kết ba tệp HOSO.DBF, FACHBT.DBF và DIEMTHI.DBF với điều

kiện các bản ghi của hai tệp HOSO.DBF, FACHBT.DBF bằng nhau về

SBD và hai tệp FACHBT.DBF và DIEMTHI.DBF bằng nhau về FACH.

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 147: Bai Giang FoxPro All

6. JOIN và UNION: liên kết dữ liệu

6.2 Bổ sung bản ghi:

Với các tệp CSDL có cấu trúc giống nhau ta có thể nối liền nhau các

bản ghi của nhiều tệp bằng tùy chọn UNION

Mẫu lệnh:

SELECT * FROM HOSO UNION SELECT * FROM HS1 UNION

SELECT * FROM HS2

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 148: Bai Giang FoxPro All

7. Các câu truy vấn dữ liệu lồng nhau

Các câu truy vấn có thể có một câu truy vấn phụ nằm trong tùy

chọn WHERE. Như vậy kết quả của một câu truy vấn sẽ được sử

dụng để thực hiện một câu truy vấn khác.

Mẫu lệnh:

SELECT * FROM DMHANG WHERE MSHH = (SELECT MSHH

FROM HOADON WHERE SL>=50)

Liệt kê các mặt hàng (đầy đủ các thuộc tính) mà đã bán trên mỗi

hoá đơn với số lượng lớn hơn hoặc bằng 50.

Chương 11. Truy vẫn dữ liệu thông qua SQL

Page 149: Bai Giang FoxPro All

8. Ghi kết quả vào tệp hay in ra máy in

* Để đưa kết quả vào tệp ta đưa ra tuỳ chọn

TO FILE <tên tệp>

* Để đưa kết quả ra máy in ta đưa ra tuỳ chọn

TO PRINT

Chương 11. Truy vẫn dữ liệu thông qua SQL