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
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:
- Visual Foxpro - Bài 5 Làm việc với bảng và bản ghi.doc