Các lệnh cơ bản trên file DBF

Màu nền
Font chữ
Font size
Chiều cao dòng

2.3. CÁC LỆNH CƠ BẢN TRÊN FILE DBF

2.3.1 Dạng lệnh tổng quát

Lệnh là một chỉ thị cho máy thực hiện một thao tác cụ thể. Một lệnh trong Foxpro nói chung có cú pháp tổng quát như sau:

Lệnh [phạm vi] [FIELDS <dsách trường>] [FOR <btL1>] [WHILE <btL2>] [FROM <tên file> / ARRAY <tên mảng>] [TO print/tên file/dsách biến]

Trong đó,

Lệnh: một từ khoá, cho biết mục đích của công việc, phải viết đầu tiên và có thể viết 4 kí tự đầu nếu lệnh có nhiều hơn 4 ký tự.

Ví dụ: DISPLAY FIELDS HOTEN, HSLUONG

DISP FIEL HOTEN, HSLUONG

Phạm vi (Scope): chỉ định phạm vi các mẫu tin chịu sự tác động của lệnh, phạm vi có thể là:

• ALL: tất cả các mẫu tin trong file dữ liệu đều bị tác động của lệnh (nếu có sử dụng FOR thì phạm vi được hiểu là ALL).

• NEXT <n>: n mẫu tin tiếp theo tính từ mẫu tin hiện thời bị tác động của lệnh.

• RECORD <n> Lệnh chỉ tác động đến mẫu tin thứ n

• REST Lệnh sẽ tác động từ mẫu tin hiện thời cho đến hết.

FIELDS <dsách trường>: lệnh chỉ có tác dụng trên những trường có tên được nêu trong <dsách trường>.

FOR <btL1>: mẫu tin nào thoả mãn <btL1> mới bị tác động bởi lệnh.

WHILE <btL2>: chừng nào <btL2> còn đúng thì lệnh còn hiệu lực. Nghĩa là, lệnh sẽ tác động lên các bản ghi thoả mãn biểu thức logic đi kèm (có giá trị là .T.) cho đến khi gặp một bản ghi không thoả mãn biểu thức logic (có giá trị .F.) hoặc đến hết file dữ liệu. Nếu điều kiện sai thì lệnh được dừng ngay. Trong lệnh nếu vừa có FOR vừa có WHILE thì mệnh đề WHILE ưu tiên thực hiện trước.

FROM <tên file>: tên của file mà từ đó lệnh lấy số liệu để sử dụng cho file DBF đang mở.

TO PRINT/tên file/dsách biến: chuyển kết quả sau khi thực hiện lệnh đến máy in/file/biến.

Các mệnh đề theo sau lệnh có mặt hay không tuỳ trường hợp và không cần phải viết theo thứ tự như đã nêu.

2.3.2 Tạo bảng dữ liệu

Cú pháp: Create <tên file DBF>  hoặc

Chọn File/New/<chọn loại file dữ liệu DBF>

Ví dụ: create nhanvien  && tạo bảng nhanvien

Chú ý: - Các tên trường không được trùng nhau, không được trùng với từ khoá.

- Đối với dữ liệu kiểu số nếu có phần thập phân thì độ rộng của phần thập phân phải nhỏ hơn độ rộng của trường ít nhất là 2 đơn vị.

Để kết thúc việc nhập cấu trúc ta ấn đồng thời phím Ctrl+W, lúc này sẽ nhận được hộp thoại

Lúc này: trả lời <No> thì sẽ quay lại cửa sổ lệnh, trả lời <Yes> để tiến hành nhập các bản ghi. Khi chọn Yes sẽ tiếp tục xuất hiện hộp thoại để nhập dữ liệu.

Khi kết thúc việc nhập dữ liệu, nhấn tổ hợp <Ctrl+W> để lưu file dữ liệu lên đĩa. Khi đó file dữ liệu sẽ có dạng <tên file>.DBF

Chú ý: Để nhập dữ liệu cho trường MEMO, ta đưa con trỏ đến hộp memo rồi nhấn tổ hợp phím Ctrl_PgUp, lúc đó sẽ xuất hiện cửa sổ nhập dữ liệu cho trường này. Sau khi kết thúc việc nhập dữ liệu cho nó, ta ấn tổ hợp Ctrl+W để ghi lại.

2.3.3 Định vị con trỏ đến một bản ghi

a. Định vị tuyệt đối

Cú pháp: GO <N>|[TOP]|[BOTTOM]

Tác dụng: Dùng để chuyển con trỏ bản ghi đến bản ghi có số hiệu <n> được chi định trong câu lệnh.

+ GO TOP: Dùng để chuyển con trỏ bản ghi về đầu file dữ liệu.

+ GO BOTTOM: Dùng để chuyển con trỏ bản ghi về cuối file dữ liệu.

b.Định vị tương đối

Cú pháp: Skip [+|-] [<n>]

Tác dụng: Di chuyển con trỏ bản ghi về trước (-) hay sau (+) so với bản ghi hiện thời.

Chú ý: Khi chỉ gõ lệnh Skip  thì con trỏ bản ghi sẽ được di chuyển về sau bản ghi hiện thời một đơn vị.

2.3.4 Lấy dữ liệu từ bảng

a. Lệnh Display

Cú pháp: display [<phạm vi>] [fields<danh sách trường>]

[For<bthức logic>] [While<bthức logic>] [on|off]

Tác dụng: Hiển thị nội dung của các bản ghi trong <phạm vi> được chỉ định và thoả mãn điều kiện của các biểu thức logic đi sau FOR và WHILE nếu có.

Theo mặc định thì tất cả các trường trong bảng dữ liệu sẽ được hiển thị, nếu có [field<danh sách trường>] thì những trường được chỉ ra trong danh sách này mới được hiển thị lên màn hình. <phạm vi> mặc định là bản ghi hiện thời.

Ví dụ: 1. Hiển thị tất cả các bản ghi của bảng dữ liệu nhanvien:

Use nhanvien 

Display all 

2. Hiển thị tất cả những người có năm làm việc (namlv) trước 1980

Display for namlv <1980 

Chú ý: Trong câu lệnh của Fox, nếu có mệnh đề FOR thì phạm vi mặc định là ALL.

b. Lệnh LIST

Cú pháp: List [<phạm vi>] [fields<danh sách trường>] [For<bthức logic>] [While<bthức logic>] [on|off]

Tác dụng: Hiển thị nội dung của các bản ghi như lệnh Display nhưng mặc định của lệnh này là ALL

Ví dụ:1. Hiển thị tất cả các bản ghi của bảng dữ liệu nhanvien:

Use nhanvien 

List 

2. Hiển thị tất cả những người có năm làm việc (namlv) trước 1980

List for namlv <1980 

c. Lệnh ?|??

Cú pháp: ?|?? <danh sách biểu thức>

Tác dụng: Lệnh này tính toán và cho hiển thị kết quả của danh sách biểu thức lên màn hình.

Chú ý: lệnh ? trước khi in dữ liệu thì xuống dưới 1 dòng, còn lệnh ?? thì không.

Ví dụ: Cho hiển thị họ tên của người có số hiệu là 5 lên màn hình:

Go 5 

? 'ho ten', hoten 

Chú ý: danh sách biểu thức trong Fox được viết cách nhau bởi dấu phẩy ",".

Ví dụ: cho biết họ tên, năm làm việc của người có số hiệu là 2:

Go 2 

?'ho ten:',hoten,'nam lam viec:',namlv

2.3.5 Chèn, bổ sung bản ghi

a. Chèn bản ghi

Cú pháp: INSERT [BEFORE][BLANK]

Tác dụng: Chèn một bản ghi ngay sau bản ghi hiện thời (nếu có [Before]) với nội dung được nhập vào. Nếu có [BLANK] thì sẽ chèn một bản ghi trắng.

Ví dụ: chèn một bản ghi vào sau bản ghi thứ 3:

Go 3 

Insert

b. Bổ sung bản ghi

Cú pháp: APPEND [BLANK]

Tác dụng: Để chèn 1 bản ghi vào cuối bảng dữ liệu (giá trị được nhập vào), nếu có tham số [BLANK] thì sẽ bổ sung một bản ghi trắng.

2.3.6 Sửa chữa nội dung bản ghi

a. Lệnh BROWSE:

Cú pháp: BROWSE [field<dsách trường>] [Freeze<dsách trường>][nodelete]

[noedit] [FOR<Bthức logic>]

Tác dụng: hiển thị nội dung của bảng dữ liệu, mỗi bản ghi được thể hiện trong một hàng (dòng), ta có thể xem và di chuyển hộp sáng từ trường này qua trường khác, bản ghi này sang bản ghi khác và có thể sửa đổi nội dung của từng mẫu tin trong bản ghi.

Ví dụ:

Use nhanvien 

Browse 

[Field<dsách trường>]: Cho phép các trường trong danh sách này được hiển thị trên màn hình, nếu không có tham số này thì tất cả các trường trong bảng dữ liệu sẽ được hiển thị.

[Freeze<dsách trường>]: Cho phép các trường trong danh sách này luôn được hiển thị trên màn hình.

[nodelete]: Không cho phép xoá

[noedit]: Không cho phép sửa đổi.

Ví dụ: Hiển thị nội dung của các trường hoten, namlv để tiến hành sửa đổi.

Browse field hoten,namlv freeze namlv

[For<bthức logic>]: Chỉ cho phép những biểu thức thoả mãn điều kiện của biểu thức logic mới được hiển thị.

b. Lệnh Edit

Cú pháp: Edit [<phạm vi>] [field<dsáchtrường>][ Noappend][nodelete] [noedit]

[for<Bthức logic>] [While<Bthức logic>]

Tác dụng: Tương tự như lệnh Browse nhưng các bản ghi được xuất hiện như ở lệnh Append.

c. Lệnh REPLACE

Cú pháp: REPLACE [<phạmvi>]<trường 1>WITH<Bthức 1>[additive]

[,<trường 2> WITH <Bthức 2> [additive]...][for<Bthức logic>]

[While<Bthức logic>]

Tác dụng: Dùng để thay thế nội dung các trường được chỉ ra của các bản ghi nằm trong <phạm vi> và thỏa mãn điều kiện của <biểu thức logic> đi sau For hoặc While bởi các biểu thức tương ứng. Phạm vi mặc định là bản ghi hiện thời.

Chú ý: Kiểu dữ liệu của <biểu thức> và của <trường> tương ứng phải tương đương nhau, nếu không thì Fox sẽ thông báo lỗi kiểu dữ liệu "Data type mismatch".

Ví dụ: 1. Thay thế họ tên của nhân viên trong file nhanvien bằng chữ in

Replace all hoten with upper(hoten) 

2. Nâng lương của những nhân viên nữ lênh thêm 50000 đồng

Replace luong with luong+50000 for !gioitinh 

2.3.7 Xoá bản ghi

Việc xoá một bản ghi trong bảng dữ liệu được thực hiện theo hai bước:

Bước 1: Đánh dấu bản ghi muốn xoá:

Cú pháp: DELETE [<phạm vi>] [For<Bthức logic>] [While<bthức logic>]

Tác dụng: Lệnh này đánh dấu tất cả các bản ghi thoả mãn điều kiện được nêu, mặc định là bản ghi hiện thời.

Khi thực hiện lệnh này các bản ghi được chỉ định đánh dấu xoá sẽ xuất hiện dấu * ở trước các bản ghi. Lúc này ta có thể phục hồi lại các bản ghi đó được.

Ví dụ: Đánh dấu xoá những nhân viên có năm làm việc trước 1951.

delete for namlv <1950

Bước 2. Xoá các bản ghi. Các bản ghi sau khi đã được đánh dấu xoá nếu quyết định thật sự muốn xoá nó thì thực hiện lệnh PACK, ngược lại nếu không muốn xoá nó thì thực hiện lệnh RECALL.

a. Lệnh xoá các bản ghi bị đánh dấu xóa (PACK)

Cú pháp: PACK

Tác dụng: Xoá các bản ghi trong bảng dữ liệu đã được đánh dấu xoá bằng lệnh Delete.

b. Lệnh phục hồi các bản ghi đã được đánh dấu xoá (RECALL):

Cú pháp: RECALL [<phạm vi>] [For<Bthức logic>] [While<bthức logic>]

Tác dụng: Phục hồi lại các bản ghi mà trước đó đã được đánh dấu xoá bởi lệnh DELETE. Phạm vi mặc định của lệnh này là bản ghi hiện thời.

c. Lệnh xóa dữ liệu trên file DBF.

Cú pháp: ZAP

Tác dụng: xóa tất cả các bản ghi trong một file DBF đang mở.

2.3.8 Lọc dữ liệu

Để hạn chế số lượng các bản ghi tham gia vào quá trình xử lý, ta có thể lọc các bản ghi trong bàng dữ liệu thoả mãn điều kiện cho trước.

Cú pháp: SET FILTER TO <Bthức logic>

Sau khi thực hiện lệnh lọc thì các lệnh tiếp theo sau lệnh này chỉ có tác dụng đối với các bản ghi thoả mãn điều kiện lọc.

Muốn huỷ bỏ việc lọc dữ liệu ta thực hiện lệnh: SET FILTER TO 

Ví dụ:

1. Chỉ hiển thị những nhân viên nữ:

set filter to !gioitinh

List

.....

2. Chí xét những nhân viên có quê quán là Huế

set filter to quequan=="Hue" 

List

.........

2.3.9 THAO TÁC VỚI CẤU TRÚC BẢNG:

a. Xem cấu trúc bảng (List|Display structure)

Cú pháp: List | Display structure

Tác dụng: Hiển thị cấu trúc của bảng dữ liệu đang được mở, bao gồm: tên trường, kiểu và độ rộng của trường.

Ví dụ:

use nhanvien

List structure

b. Sửa đổi cấu trúc bảng dữ liệu

Cú pháp: MODIFY STRUCTURE

Tác dụng: Hiển thị và cho phép sửa đổi cấu trúc bảng dữ liệu, kết thúc lệnh này nhấn tổ hợp phím Ctrl+W.

Ví dụ: use nhanvien

modify structure

c. Sao lưu cấu trúc bảng dữ liệu

Cú pháp: copy structure to <ten file.dbf> [fields<danh sách trường>]

Tác dụng: Để sao chép cấu trúc của bảng dữ liệu đang được mở sang một bảng mới có tên được chỉ ra trong <ten file.dbf> với các trường được chỉ ra trong mục [field<danh sách trường>]. Mặc định của lệnh này là tất cả các trường có trong bảng dữ liệu đang được mở.

Ví dụ: Sao lưu cấu trúc của nhanvien thành file có tên là luu.dbf nhưng chỉ gồm các trường: hote, gioitinh, nămlv.

use nhanvien

copy structure to luu fields hoten, gioitinh, namlv

Chú ý: Bảng mới được tạo ra chỉ có cấu trúc, không có nội dung.

2.3.10 Sao chép bảng

Cú pháp: copy to <tên bảng đích> [<phạm vi>] [fields <danh sách

trường>] [for<bthức logic>] [While<Bthức logic>]

Tác dụng: Lệnh dùng để tạo bảng mới có tên được chỉ ra <tên bảng đích> với nội dung được lấy từ bảng dữ liệu đang được mở. Mặc định lệnh này là tất cả các bản ghi đều được sao chép, nếu có phạm vi và các biểu thức logic thì những bản ghi thoả mãn điều kiện mới đwocj sao chép. Dang sách trường để chỉ định các trường được sao chép.

Ví dụ: Tạo bảng dữ liệu có tên là nu.dbf từ file nhanvien.dbf gồm các trường hoten, ngaysinh, namlv.

use nhanvien

copy to NU fields hoten, ngaysinh, namlv for !gioitinh

use nu &&mở để xem kết quả

list

2.4. MỘT SỐ HÀM THÔNG DỤNG

2.4.1. Các hàm về ngày tháng

a. Hàm Date(): Cho ngày, tháng, năm hiện tại của hệ thống. Thứ tự ngày, tháng, năm của lệnh này phụ thuộc vào lệnh Set date.

Ví dụ:

Nếu ta thực hiện lệnh: SET DATE FRENCH

rồi thực hiện lệnh DATE() thì ngày hiện hành của hệ thống sẽ được hiện ra theo thứ tự là ngày, tháng, năm.

b. Hàm Year(<bthức date>): Cho năm (có 4 chữ số) của <bthức date>.

Ví dụ: Year(date())  cho năm hiện tại của ngày hệ thống.

c. Hàm Month(<bthức date>): Cho tháng hiện tại của biểu thức ngày

Ví dụ: Month(date()) cho tháng của ngày hệ thống.

d. Hàm DAY(<bthức date>): Cho ngày của biểu thức ngày.

Ví dụ: DAY(date())  cho ngày hiện tại.

2.4.2. Các hàm về chuỗi

a. Hàm len(<Bthức C>): Cho chiều dài của biểu thức, tính bằng byte của <Bthức C>, chuỗi rỗng có chiều dài là 1.

b. Hàm LEFT(<bthức C>, <n>): Trích ra một chuỗi từ <bthức C> gồm <n> ký tự tính từ bên trái sang.

Ví dụ: ?left("nguyen van an", 6)  cho kết quả là "nguyen".

c. Hàm RIGHT(<bthức C>, <n>): Trích ra một chuỗi từ <bthức C> gồm <n> ký tự tính từ bên phải sang.

d. Hàm SUBSTR (<Bthức C>, <n1>, <n2>):Trích ra một chuỗi con của <Bthức C> từ vị trí <n1> và gồm <n2>) ký tự.

Ví dụ: ? SUBSTR ("nguyen van an", 8, 3" kết quả cho chuỗi "van".

e. Hàm ALLTRIM (<Bthức C>): cho kết quả là một chuỗi sau khi đã loại bỏ các ký tự trắng ở hai bên (nếu có) của<Bthức C>.

Ví dụ: ?alltrim("Nguyen van an ")  "nguyen van an"

f. Hàm UPPER(<BthứcC>): cho kết quả là chuỗi in hoa của <Bthức C>.

Ví dụ: ?UPPER ("nguyen van an")  "NGUYEN VAN AN"

g. Hàm Lower <Bthức C>: Ngược lại của hàm UPPER.

2.4.3. Các hàm số học

a. ASB(x): Cho giá trị tuyệt đối của x.

b. INT(x): cho phần nguyên của x.

c. ROUND(x,<N>): Làm tròn x với N số lẽ.

e. Sin(x): Cho giá trị Sin x

f. COS (x): Cho giá trị cos x.

Bạn đang đọc truyện trên: Truyen2U.Pro