Visual Foxpro - Bài 5: Làm việc với bảng và bản ghi

MODIFY STRUCTURE

Lệnh này cho phép sửa đổi cấu trúc của bảng đang mở, giao diện này chính là giao diện CREATE TABLE (xem bài 4). Trường hợp chưa có bảng nào mở thì lệnh này sẽ mở hộp thoại Open file cho phép chọn file(bảng) cần mở và sau đó sẽ tiếp tục. Ví dụ .

Lệnh:

ALTER TABLE <TableName> <ADD|ALTER|DROP> [COLUMN] FiledName1 FType1(n) .

Lệnh này cho phép tự động sửa chữa cấu trúc của 1 bảng nào đó (thường sử dụng trong chương trình). Ví dụ

USE DIEM EXCLUSIVE

ALTER TABLE DIEM ADD COLUMN Test1 C(20) ->Thêm trường Test1 là C

ALTER TABLE DIEM ALTER COLUMN Test1 N(20) ->Sửa trường Test1 thành N

 ALTER TABLE DIEM DROP COLUMN Test1 ->Xóa trường Test1

 

doc20 trang | Chuyên mục: FoxPro | Chia sẻ: dkS00TYs | Lượt xem: 20059 | Lượt tải: 1download
Tóm tắt nội dung Visual Foxpro - Bài 5: Làm việc với bảng và bản ghi, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
 và bản ghi
I. Làm việc với bảng
Tạo bảng
Lệnh:
CREATE TABLE (FieldName1 Ftype1(width1) [, ...]) (xem bài 4)
CREATE [TableName] (Tương tự lệnh CREATE TABLE)
Mở một bảng đã có
Lệnh:
USE [ALIAS ] [EXCLUSIVE]
Trong đó TableName là tên bảng cần mở hoặc khi không nhớ có thể dùng dấu ? để mở hộp thoại Open File; tùy chọn ALIAS cho phép đặt tên “vùng” làm việc với tên là , khi không co tùy chọn này thì tên “vùng” của bảng được mở trùng với tên bảng; tùy chọn EXCLUSIVE không cho phép nhiều người cùng sử dụng (trên mạng), tham số này thường được dùng khi cần mở bảng để sửa chữa.
Ví dụ:
USE HOSOSV 	-> (tên vùng làm việc là HOSOSV)
hoặc 
USE HOSOSV ALIAS SINHVIEN 	-> (tên vùng làm việc là SINHVIEN)
hoặc 
	USE ? 	-> Tiếp đến chọn file (bảng) cần mở
Sửa cấu trúc của bảng
Lệnh:
MODIFY STRUCTURE
Lệnh này cho phép sửa đổi cấu trúc của bảng đang mở, giao diện này chính là giao diện CREATE TABLE (xem bài 4). Trường hợp chưa có bảng nào mở thì lệnh này sẽ mở hộp thoại Open file cho phép chọn file(bảng) cần mở và sau đó sẽ tiếp tục. Ví dụ ...
Lệnh:
ALTER TABLE [COLUMN] FiledName1 FType1(n) ...
Lệnh này cho phép tự động sửa chữa cấu trúc của 1 bảng nào đó (thường sử dụng trong chương trình). Ví dụ
USE DIEM EXCLUSIVE
ALTER TABLE DIEM ADD COLUMN Test1 C(20)	->Thêm trường Test1 là C
ALTER TABLE DIEM ALTER COLUMN Test1 N(20)	->Sửa trường Test1 thành N
	ALTER TABLE DIEM DROP COLUMN Test1	->Xóa trường Test1
Đóng bảng đã mở
Lệnh
USE && Không tham số sẽ đóng bảng hiện thời
USE IN 
Trong đó AliasName là tên vùng một bảng nào đó đang mở, ví dụ:
	USE IN DIEM
II. thêm, sửa, xoá các bản ghi
Con trỏ bản ghi
Con trỏ bản ghi trỏ đến bản ghi hiện thời của bảng đang mở. Khi mở bảng con trỏ bản ghi sẽ đặt ở bản ghi đầu tiên.
Lệnh:
GO TOP	-> Chuyển đến bản ghi đầu tiên
GO BOTTOM	-> Chuyển đến bản ghi cuối cùng
GO 	-> Chuyển đến bản ghi thứ n
Ví dụ
	USE DIEM
	GO TOP
	GO 10	
	GO BOTTOM
Lưu ý: Nếu n lớn hơn số bản ghi hiện có của bảng thì chương trình sẽ trả về thông báo Record is out of range.
Lệnh 
SKIP 
Dịch chuyển con trỏ bản ghi đi n bản ghi kể từ bản ghi hiện thời (n có thể >0 hoặc <0). Ví dụ:
	USE DIEM
	GO 10
	SKIP -5
	GO 20
	SKIP 5	(Sau lệnh này con trỏ ở bản ghi 30)
Lưu ý: Khi vượt quá phía đầu, phía cuối file (bảng) thì chương trình sẽ trả về thông báo: Beginning of file encountred hoặc End of file encountred.
Lệnh
LOCATE FOR 
Trong đó BieuThuc là một biểu thức Logic. Lệnh này sẽ đưa con trỏ bản ghi đên bản ghi đầu tiên thoả mãn BieuThuc nếu tìm thấy. Ví dụ:
USE HOSOSV
LOCATE FOR (Hoten=”Phan Văn Việt”) and (malop=”3A-04”)
LOCATE FOR (Hoten=”Phan Văn Việt”) and (gioi=.F.)
Lưu ý: Khi tìm thấy thì hàm FOUND() sẽ trả về giá trị TRUE, ngược lại trả về FALSE.
Lệnh 
COUNTINUE
Khi sử dụng lệnh LOCATE, ta có thể dùng lệnh COUNTINUE để tìm bản ghi tiếp theo thoả mãn .
Thêm mới bản ghi
Lệnh 
APPEND [BLANK]
Lệnh này cho phép thêm 1 bản ghi vào bảng và hiển thị giao diện cập nhật. Ví dụ
	USE HOSOSV	
	APPEN	Khi đó giao diện Appen xuất hiện như hình sau:
Lưư ý: Bản ghi này chỉ thực sự được thêm vào nếu có cập nhật thông tin vào 1 trong các trường của bản ghi đó. Trường hợp nếu muốn thêm một bản ghi trống thì có thể thêm vào tham số BLANK, khi sử dụng tham số này thì bản ghi sẽ thực sự được thêm vào CSDL cả khi không cập nhật 1 trường thông tin nào (thường sử dụng trong chương trình).
Lệnh 
BROWSE [FIELD ]
	 [ FOR ]
	 [FONT [, FontSize]] [STYLE cFontStyle]
	 [ TITLE ]
Browse là một lệnh đa năng cho phép thực hiện hầu hết các công việc với bản ghi như xem, sửa, xóa, thêm mới ... Trong cửa sổ BROWSE, sử dụng phím Ctrl+Y để thêm 1 bản ghi trống vào bảng. Ví dụ 
	BROW
Tùy chọn FIELD cho phép chỉ hiển thị các trường trong , ví dụ chỉ hiện thị tên và ngày sinh của HOSOSV: 
BROW FIELD Hoten,ngaysinh.
Tùy chọn FOR cho phép chỉ hiển thị các bản ghi mà BieuThucLogic =TRUE, ví dụ chỉ thiển thị những người thuộc lớp “3A-04”. 
BROW FOR malop=”3A-04”.
Tùy chọn FONT, STYLE cho phép chọn Font chữ dùng trong cửa sổ Brow, ví dụ sử dụng font “.vntime”: 
BROW FONT “.vntime”,12
Tùy chọn TITLE cho phép đặt tên cho cửa sổ Browse là TieuDe. ví dụ
	BROW FONT “.vntime”,12 TITLE “Ho so sinh vien”
Lệnh 
INSERT INTO (FieldName List) VALUE(Value List) 
 Thêm mới 1 bản ghi đồng thời xác định giá trị cho các trường của bản ghi đó.	Ví dụ
	USE HOSOSV
	INSERT INTO HOSOSV(masv,hoten) VALUE(“00001”,”TEST”)
Sửa bản ghi
Lệnh
EDIT	-> Sửa bản ghi - tương tự giao diện Append
BROWSE	-> Xem mục trên
Lệnh
REPLACE 
 	 [Scope] 
	 [FOR ]
Lệnh này cho phép cập nhật giá trị của FieldName1 với giá trị của BieuThuc1, FieldName2 với giá trị của BieuThuc2 .... Lệnh này thường được sử dụng trong chương trình.
Tham số Scope xác định phạm vi tác động của lệnh, có thể là:
	ALL	:Tất cả các bản ghi
	NEXT n	: n bản ghi tính từ bản ghi hiện thời
	RECOR n	: Bản ghi thứ n
	REST	: Từ bản ghi hiện thời đến cuối	
	 	Trường hợp mặc định là bản ghi hiện thời	
Tùy chọn FOR cho phép thực hiện lệnh với những bản ghi thỏa mãn BieuThucLogic. 
Ví dụ:
	USE HOSOSV
	REPLACE ALL ghichu with “Ghi chu ALL” 
	GO 5
REPLACE ghichu with “Ghi chu 5”
GO 15
REPLACE NEXT 10 ghichu with “Ghi chu Next 10”
REPLACE REST ghichu with “Ghi chu REST”
Xoá bản ghi
Lệnh
DELETE 	 [Scope]
	 [FOR ]
Đánh dấu xóa các bản ghi nằm trong Scope và thỏa mãn BieuThucLogic. Việc xóa các bản ghi trong các bảng được thực hiện theo 2 bước, bước 1: là đánh dấu xóa các bản ghi, bước 2: xóa các bản ghi đã đánh dấu khỏi bảng, lệnh DELETE thực hiện bước 1. 
Tùy chọn Scope và FOR như mục trên. 
Ví dụ
USE HOSOSV
DELELE ALL FOR empty(malop)
Lệnh
PACK
Lệnh PACK thực hiện bước thứ 2 là xóa các bản ghi đã đánh dấu xóa. ví dụ PACK
Lệnh
RECALL [Scope]
	 [FOR ]
Đối với các bản ghi đã bị đánh dấu xóa (bằng lệnh DELETE) khi cần có thể khôi phục lại bằng lệnh RECALL. Tùy chọn Scope và FOR tương tự mục trên.
Lệnh
ZAP
Trường hợp đã xác định rõ cần xóa toàn bộ các bản ghi khỏi bảng thì có thể sử dụng lệnh ZAP (ZAP = DELETE +PACK).
III. sắp xếp, lọc các bản ghi
Sắp xếp
Lệnh
INDEX ON 
 [ASCENDING | DESCENDING]
Với các bảng dữ liệu, có thể sắp xếp các bản ghi theo một thứ tự (tiêu chuẩn nào đó) nào đó. Lệnh INDEX cho phép tạo ra các tiêu chuẩn sắp xếp (chỉ mục - index) đối với bảng, tham số chính là tiêu chuẩn sắp xếp.
Tùy chọn TO IDXFile cho phép tạo ra file chỉ mục dạng IDX, với tên file là IDXFile và phần mở rộng là IDX (tạo chỉ mục dạng này sẽ không thể chọn được chiều DESCENDING và mỗi file chỉ xác định 1 tiêu chuẩn sắp xếp). 
Tùy chọn TAG TagName cho phép tao ra một chỉ mục có tên là TagName trong file chỉ mục kết hợp (file chỉ mục này có tên trùng với tên bảng, và phần mở rộng là CDX, tạo chỉ mục dạng này sẽ cho phép chọn ASCENDING hoặc DESCENDING và mỗi file có thể có chứa nhiều tiêu chuẩn sắp xếp).
Ví dụ
USE HOSOSV
INDEX ON masv TO masvidx
BROW
INDEX ON hoten TAG hoten2 DESCENDING
BROW
Lệnh
SET ORDER TO [IDXFile | TagName]
Lệnh này cho phép thay đổi tiêu chuẩn sắp xếp của bảng. Trong đó: IDXFile - tên file dạng IDX (đã tạo bằng lệnh INDEX trước đó); TagName - Tên chỉ mục trong file kết hợp (file dạng CDX). Ví dụ
	USE HOSOSV
	SET ORDER TO Masv 
	BROW
	SET ORDER TO Hoten2
	BROW
	SET ORDER TO masvidx
	SET ORDER TO	(không tham số) dùng để bỏ việc sắp xếp (trở lại thứ tự nhập).
Lọc
Lệnh
SET FILTER TO 
Trường hợp chỉ cần làm việc với một số các bản ghi nào đó (lọc - filter) thì chúng ta sử dụng lệnh này, trong đó BieuThucLogic là tiêu chuẩn để lọc. Ví du
	USE HOSOSV
SET FILTER TO malop=”3A-01” 
	BROWSE
	SET FILTER TO ngaysinh=date()
	BROWS TITLE “Sinh nhat: ”+ DTOC(date())
	SET FILTER TO	(không tham số) dùng để bỏ lọc.
IV. Làm việc với nhiều bảng
Vùng làm việc
Visual Foxpro cho phép mở nhiều bảng dữ liệu đồng thời, mỗi bảng trên một vùng làm việc (WorkArea) nhất định. Visual Foxpro cho phép mở tối đa là 255 vùng làm việc đồng thời, mỗi vùng được xác định qua tên hoặc số hiệu vùng. 
Lệnh
SELECT 
Lệnh này cho phép chọn vùng làm việc, trong đó: n là số thứ tự của vùng cần chuyển đén; TableName là tên bảng hoặc aliasname. Ví dụ
	SELECTE A
	USE DMLOP ALIAS LOP
	SELECTE B
	USE HOSOSV ALIAS SINHVIEN
	SELECTE 0
	USE DIEM 
Trong ví dụ trên đã tạo ra 3 vùng làm việc: Vùng 1 (hoằc vùng A hoặc LOP), Vùng 2 (hoặc vùng B hoặc SINHVIEN), Vùng 3 (hoặc DIEM).
Lưu ý: Khi chọn n=0 thì Visual Foxpro sẽ tự động chọn vùng cao nhất cong trống.
Liên kết giữa các bảng
Visual Foxpro cho phép đặt liên kết (mối “quan hệ”) giữa các bảng để có thể tạo ra một bảng to hơn từ các bảng con.
Lệnh
SET RELATION TO INTO 
Lệnh này cho phép đặt quan hệ từ bảng hiện thời vào bảng được mở ở vùng n (hoặc TableName hoặc AliasName), trong đó BieuThuc là tiêu chuẩn đế đặt quan hệ.
Lưu ý: Bảng được mở trong vùng AliasName phải được index theo BieuThuc này rồi.
Ví dụ:
	SELECTE A
	USE DMLOP ALIAS LOP
	INDE ON ma TO malopidx
	BROW
	SELECT B
	USE HOSOSV ALIAS SINHVIEN
	SET RELATION TO malop INTO LOP
	BROW
	(trong ví dụ này bảng DMLOP gọi là bảng cha, bảng HOSOSV gọi là bảng con)
Khi con trỏ di chuyển trong bảng con thì con trỏ trong bảng cha cũng thay đổi tương ứng.	
V. Một số hàm và lệnh khác
Một số hàm
Hàm RECNO()	- Trả về số hiệu bản ghi hiện thời
Hàm RECCOUNT()	- Trả về số bản ghi hiện có của bảng
Hàm ALIAS()	- Định danh của vùng hiện thời
Hàm DBF()	- Tên file DBF
Hàm EOF(), BOF()	- Trạng thái TRUE nếu con trỏ vượt quá Beginning và End
Một số lệnh khác
LIST [Scope] [Field ] [FOR ]
COUNT [ TO VarName ] [ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
AVERAGE expN TO VarName [ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
SUM TO 
FOR expL1 ] [ While expL2 ] [ Phạm vi ]
CALC TO 
[ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
max(expr), min(expr), aver(expN)
COPY TO [ FOR expL1 ] [ While expL2 ] [ Phạm vi ]
COPY STRUCTURE TO [EXTENDED]
APPEND FROM [ FOR ]
Bài tập
Cập nhật dữ liệu cho tất cả các bảng của Database DIEMDB (đã tạo trong bài 4, dữ liệu là danh sách lớp).
Thực hiện các ví dụ trong bài học.

File đính kèm:

  • docVisual Foxpro - Bài 5 Làm việc với bảng và bản ghi.doc