You are on page 1of 75

HỆ QUẢN TRỊ CƠ SỞ

DỮ LIỆU FOXPRO
Số tiết: 45 tiết
Giảng viên: Trần Thị Hà
Email: Thuha23tran@gmail.com
Điện thoại: 0985.306.844

12/16/09 1
Chương I : Các khái niệm cơ bản

Tài liệu tham khảo:


1/Giáo trình Lý thuyết và bài tập Foxpro
Tác giả: Nguyễn Đình Tê, Hoàng Đức Hải
2/

3/

12/16/09 2
Chương I : Các khái niệm cơ bản
1. Bộ ký tự
a/ Các chữ cái:
- Chữ cài tiếng Anh A, B, …, Z; a, b, …, z
Trong mã ASCII 65,66,…,90;97,98,…122
- Các chữ cái tạo nên các từ khóa, các tên chuẩn, tên tự tạo,
các chuỗi kí tự và kí tự.
- Các chữ cái tạo nên phương tiện, ngôn ngữ giữa người và
Máy

12/16/09 3
Chương I : Các khái niệm cơ bản
b/ Các chữ số: 0…9
48..57
Kiểu số nguyên(Numeric) (N)
Kiểu số thực (Float) (F)
Kiểu ngày tháng (Date) (D)
c/ Các kí hiệu:
& ‘( ) * + ; - . / : < = > \ { }

12/16/09 4
Chương I : Các khái niệm cơ bản
2. Từ khóa
Mỗi ngôn ngữ lập trình đều có một bộ từ khóa riêng, đó là bộ
từ vững giao tiếp giữa người và máy theo ngôn ngữ tự nhiên
.
Foxpro cho phép viết tắt chỉ cần 4 ký tự của một từ khóa dài.
Ví dụ: Modify command -> modi comm
* Các tên chuẩn: Là bộ từ vững của Foxpro dùng để giao tiếp
giữa người và máy trong chế độ trực tiếp hoặc gián tiếp.
Ví dụ: go/ goto; input; list; …

12/16/09 5
Chương I : Các khái niệm cơ bản
+ Tên tự đặt: Dùng để chỉ các hằng, các biến, các hàm, các
thủ tục các tên chương trình, các trường trong các Record.
Tên có thể đặt tùy ý nhưng phải tuân theo nguyên tắc sau:
- Phải bắt đầu bằng một kí tự, tiếp theo sau có thể dùng kí số
và dấu gạch dưới.
- Không được trùng với các từ chuẩn và phải viết liền nhau.
Tối đa là 10 kí tự.

12/16/09 6
Chương I : Các khái niệm cơ bản
3. Kiểu dữ liệu
a/ Kiểu số (Numeric) số nguyên: có thể biểu diễn 20 kí số
gồm phần nguyên, phần thập phân và dấu chấm.
Ví dụ: 12358.368
b/ Kiểu số thực (Float): Sử dụng trong ngành toán học, vật
lý và hóa học.
Ví dụ: 1.2E+3= 1200
1.2E-3=0.0012

12/16/09 7
Chương I : Các khái niệm cơ bản
c/ Kiểu chuỗi (Character): Tập hợp các ký tự trong bảng mã
ASCII có kích thước tối đa là 254 bytes và được đặt trong
cặp dấu nháy ‘ ‘, hoặc dấu nháy kép “ “.
d/ Kiểu ngày (Date): Kích thước cố định 8 bytes
Mặc định ngày của Mỹ: {mm/dd/yy}
Cài đặt kiểu ngày của French: Set date french -> {dd/mm/yy}
Ví dụ: {30/04/99}

12/16/09 8
Chương I : Các khái niệm cơ bản
e/ Kiểu logic (Logical):Kiểu luận lý chỉ có hai giá trị đúng (.T.)
hoặc sai (.F.).
Kí hiệu: Đúng: .T.
Sai: .F.
f/ Kiểu ghi nhớ (Memo): dùng cho những phần văn bản có
kích thước lớn hơn 254 bytes. Dữ liệu kiểu Memo được lưu
trữ trong tập tin cùng tên với tập tin CSDL nhưng có phần
mở rộng .FPT

12/16/09 9
Chương I : Các khái niệm cơ bản
4. Biến bộ nhớ
Foxpro có nhiều loại biến: Biến nhớ, biến trường, biến hệ
thống, biến chung, biến riêng, biến mảng và biến màn hình.
Biến nhớ (gọi tắt là biến) là tên được đặt cho các vùng
nhớ của RAM dành để chứa các giá trị có thể thay đổi mỗi
lúc một khác nhau khi ta sử dụng chúng trong chế độ trực
tiếp hoặc gián tiếp.

12/16/09 10
Chương I : Các khái niệm cơ bản
5. Cơ sở dữ liệu
Muốn có một CSDL thì trước hết phải tạo lập cấu trúc.
Cũng giống như muốn xây nhà thì phải đổ móng và đúc
khung nhà.(sử dụng lệnh Creat). Xem cấu trúc (sử dụng lệnh
List Structure) hoặc sửa (sử dụng lệnh Modify Structure) cấu
trúc mà bạn tạo lập.

12/16/09 11
Chương I : Các khái niệm cơ bản
Sau khi đã có cấu trúc CSDL bạn có thể nhập dữ liệu và tập
tin CSDL cũng giống như sau khi có nền móng và khung
nhà, người ta bắt đầu xây dựng những chi tiết của tòa nhà
(sử dụng lệnh Append).

12/16/09 12
Chương I : Các khái niệm cơ bản
*Định nghĩa về CSDL
Cột: Mỗi cột mô tả một thuộc tính gọi là Fields( trường)
Dòng: Mỗi dòng mô tả đầy đủ một đơn vị của CSDL gọi là
Record (mẫu tin). Như vậy mỗi Record là tập hợp các Fields
để được một đối tượng nào đó.
*Các đặc trưng của Fields (trường)
+ Tên trường (field name)
+ Kiểu của trường (field type)
+ Kích thước của trường (field width)

12/16/09 13
Chương I : Các khái niệm cơ bản
*Các đặc trưng của Record (Mẫu tin):
+ Số thứ tự của Record
+ Kích thước của Record
+ Con trỏ Record
*Cơ chế hoạt động:
+ Chọn vùng làm việc + Mở tập tin

+ Các vị trí trong tập tin + Bắt đầu tập tin BOF
+ Kết thúc tập tin EOF + Record thứ N

+ Xử lý nội dung tập tin + Đóng tập tin CSDL

12/16/09 14
Chương I : Các khái niệm cơ bản
6. Hằng:
Hằng là loại dữ liệu thuộc một trong các kiểu dữ liệu của
Foxpro có trị không thay đổi trong suốt quá trình thực hiện
chương trình.
+ Hằng số: 0; 1.5; -23.76; 12E+3
+ Hằng chuỗi: “” hoặc ‘’
Ví dụ: ‘ABDFSDT’
“Chào bạn”
+ Hằng ngày tháng: {}
Ví dụ: {30/04/82}
{} hằng rỗng

12/16/09 15
Chương I : Các khái niệm cơ bản
7. Các phép toán số học:
a/ Các phép toán số học
+Toán tử đảo dấu: -
Ví dụ: 10 đảo dấu -10
+ Toán tử lũy thừa: * hoặc ^
Ví dụ: R2= R*R= R^2
+Toán tử lớp nhân: Nhân *, chia /
+Toán tử lớp cộng: + hoặc –
+Toán tử chia lấy dư: %
Ví dụ: 11%3 = 2

12/16/09 16
Chương I : Các khái niệm cơ bản
b/ Các phép toán chuỗi kí tự:
+Phép cộng: +
Ví dụ: A=‘ABC’, B=‘DEF’, A+B= ABCDEF
+ Phép trừ: -
Dùng để nối 2 kí tự, ký tự trống cuối chuỗi thứ nhất sẽ chuyển
về cuối chuỗi thứ hai của chuỗi mới tạo.
Ví dụ: A=‘ABC’, B=‘DEF’, A+B= ABCDEF

12/16/09 17
Chương I : Các khái niệm cơ bản
c/ Các phép toán so sánh:
<
>
=
<>, !=, #: toán hạng trái không bằng toán hạng phải.
<=
>=
==: hoàn toàn bằng
Các toán tử quan hệ tác động lên hai toán hạng cùng kiểu
(Mumeric, character, date, logic) cho kết quả đúng (.T.) hoặc
sai (.F.)

12/16/09 18
Chương I : Các khái niệm cơ bản
d/ Các phép toán logic: Not, And, Or
+ Not kí hiệu: !
+ And giao hay và: .T. , .F.
+ Or hoặc : .T. , .F.

12/16/09 19
Chương I : Các khái niệm cơ bản
8. Biểu thức (Expression)
a/ Biểu thức số (Numeric) là biểu thức có trị là các số.
b/ Biểu thức character( btc) là biểu thức có các toán hạng là
các chuỗi kí tự, kết quả cũng là chuỗi.
Ví dụ:
Holot= ‘Nguyễn Văn’
Ten=‘Nam’
? Holot + ’ ‘ + Ten= ‘Nguyễn Văn Nam’

12/16/09 20
Chương I : Các khái niệm cơ bản
c/ Biểu thức logic (btL) là biểu thức mà các toán hạng kết hợp
với các toán tử logic, kết quả là trị logic (.T. hoặc .F.)
d/ Biểu thức date (btD) là biểu thức có các toán hạng có trị là
ngày, chuỗi ngày và số nguyên kết hợp với các toán hạng
cộng (+) hoặc toán hạng trừ (-)
Ví dụ:
A= {31/05/99}
B= {01/05/99}
? A-B= 30
?B+10=11/05/99

12/16/09 21
Chương I : Các khái niệm cơ bản
9. Mảng (Array)
a/ Định nghĩa: Mảng là một vùng bộ nhớ dùng để ghi nhớ một
tập hợp các dữ liệu. Tên mảng được xác định như tên biến.

12/16/09 22
Chương I : Các khái niệm cơ bản
b/ Cách khai báo mảng:
Cú pháp: Dimension / Declare <tên mảng>[<btn1>[<btn2>]]
Trong đó:
<Tên mảng>: tuân theo quy tắc đặt tên biến nhớ.
<btn1>: độ lớn của mảng 1 chiều hay độ lớn của chiều thứ
nhất (dòng) đối với mảng hai chiều.
<btn2>: độ lớn của chiều thứ 2 (cột) đối với mảng 2 chiều.
Ví dụ: dimension A[5]
dimension B[5,3]
c/ Cách truy nhâp. Tương tự trong Pascal.

12/16/09 23
Chương II : Tạo lập – Hiệu chỉnh CSDL
1.Cấu trúc chung nhiều lệnh.
a/ Định nghĩa: Lệnh là một chỉ thị bắt máy phải thi hành. Khi ra
lệnh cho máy, nếu ở chế độ trực tiếp, bạn gõ lệnh từ cựa sổ
lệnh và ấn phím enter ( ).
Nếu ở chế độ gián tiếp thì phải viết câu lệnh trong văn bản
chương trình và chỉ thị nào bạn chạy chương trình bằng lệnh
DO thì câu lệnh trong chương trình mới có hiệu lực dù gõ
lệnh ở chế độ trực tiếp hay viết lệnh ở chế độ gián tiếp thì
bạn cũng phải viết đúng lệnh.

12/16/09 24
Chương II : Tạo lập – Hiệu chỉnh CSDL
b/ Cấu tạo lệnh:
Dạng tổng quát của một câu lệnh:
Lệnh [phạm vi] [for / while <điều kiện>] [like <mẫu>];
[[field] <danh sách các trường];
[from <tên tập tin> / array <tên mảng>];
[to printer / to file <tên tập tin> / <danh sách biến>]{off}

12/16/09 25
Chương II : Tạo lập – Hiệu chỉnh CSDL
Trong đó:
+ Lệnh: là một từ khóa của Foxpro.
+ Phạm vi:
All tất cả.
Next <btn>: n bản ghi kể từ bản ghi hiện hành.
Record <btn>: chỉ tác động đến bản ghi thứ <btn>.
Rest: từ bản ghi hiện hành cho đến hết tập tin.

12/16/09 26
Chương II : Tạo lập – Hiệu chỉnh CSDL
+For / while <điều kiện>: điều kiện lôgic
+For: tác động lên toàn bộ tập tin.
+While: tác động từ bản ghi hiện hành đến hết tập tin.
+Field <danh sách các trường>: liệt kê danh sách các trường
cần tác động trong câu lệnh.
+From <tên tập tin> / Array <mảng>: Tên của tập tin hay tên
của mảng mà tử đó lệnh này sẽ lấy số hiệu để sử dụng cho
tập tin .DBF đang mở.

12/16/09 27
Chương II : Tạo lập – Hiệu chỉnh CSDL
+Like <mẫu>: chỉ tác động những thành phần giống như mẫu
chỉ định.
+To printer / to file <tên tập tin> / <danh sách biến>: xuất kết
quả ra máy in hoặc tập tin. Tùy chọn này chỉ có vài lệnh sử
dụng được
+Off: Tắt số thứ tự của Record.

12/16/09 28
Chương II : Tạo lập – Hiệu chỉnh CSDL
c/ Phân loại lệnh:
+ Có 2 loại lệnh:
+ Lệnh trực tiếp: - Lệnh gõ trực tiếp từ cựa sổ lệnh.
- Các lệnh thực hiện thông qua hệ thống
Menu.
+ Lệnh gián tiếp: DO < tên chương trình>

12/16/09 29
Chương II : Tạo lập – Hiệu chỉnh CSDL
2.Tạo lập – Xem – Sửa – Ghép cấu trúc CSDL.
a/ Tạo cấu trúc bằng lệnh Creat từ cựa sổ lệnh:
*Cú pháp: Creat [<Tên tập tin CSDL>] 
Tạo cấu trúc dữ liệu cho tập tin được chỉ định.
<Tên tập tin CSDL>: Là tên do bạn tự đặt. Foxpro ngầm định
phần mở rộng là .BDF
Sau khi gõ lệnh xong Poxro yêu cầu ta khai báo cấu trúc của
tệp.

12/16/09 30
Chương II : Tạo lập – Hiệu chỉnh CSDL
Cụ thể là:
+ khai báo - tên trường (field name)
- kiểu trường (field type)
- độ rộng của trường (field width)
- chữ số thập phân nếu là kiểu số
Sau khi khai báo xong ta ấn Ctrl+W để lưu cấu trúc này lên
đĩa.
Chọn Yes để nhập dữ liệu không nhập chọn No

12/16/09 31
Chương II : Tạo lập – Hiệu chỉnh CSDL
Ví dụ: Tạo tập dữ liệu TS.DBF để quản lý học sinh thi chuyển
cấp có cấu trúc như sau:
Hoten (c, 30); ngaysinh (d, 8); gioitinh(L,1) .T. là Nam, .F. là
Nu, Sbd (n, 3); truong( c,15) ghi tên trường mà học sinh tốt
nghiệp; diemtoan(n,5,2); diemvan(n,5,2); ưutien(n,5,2);
tongdiem(n,5,2): ghi tổng số
điểm(diemtoan+diemvan+ưutien)
Sau đó nhập dữ liệu vào khoảng 10 mẫu tin rồi lưu lên đĩa.
Bài giải:
Creat ts 
Khai báo cấu trúc cho tệp. Khai báo xong chương trình ấn
Ctrl + W để lưu lúc này trên màn hình xuất hiện “In put data
record now ?” để nhập dữ liệu vào chúng ta chọn “Yes” nhập
xong 10 dữ liệu ta ấn Ctrl + W để lưu.

12/16/09 32
Chương II : Tạo lập – Hiệu chỉnh CSDL
b/ Xem cấu trúc bằng lệnh Display structure hay List structure
Cú pháp:
+ Display/List structure [to print] [to file]<tên tập tin> [off] 
Trong đó:
- display structure: hiển thị cấu trúc theo từng trang màn hình.
- list structure: hiển thị cấu trúc theo kiểu cuốn màn hình
- to print: In cấu trúc ra giấy.
- to file<tên tập tin>: ghi cấu trúc vào tệp văn bản.
Ví dụ: ta sử dụng tệp CSDL ts.BDF đã tạo từ ví dụ trước:
uses ts 
Display structure 
List structure to print

12/16/09 33
Chương II : Tạo lập – Hiệu chỉnh CSDL
c/ Xem cấu trúc bằng lệnh Display structure hay List structure
Cú pháp:
+ Display / List [phạm vi] [danh sách các trường] [for <đk1>];
[while<đk2>] [to print] [off] 
Trong đó:
- display : hiển thị nội dung của các record theo từng trang màn
hình.
- list : hiển thị nội dung của các record theo kiểu cuốn màn hình
- to print: In nội dung của các record ra giấy.
- [for <đk1>] và [while<đk2>]: điều kiện để hạn chế hiển thị record
- [off]: khi không muốn hiển thị số thứ tự của các record.

12/16/09 34
Chương II : Tạo lập – Hiệu chỉnh CSDL
Chú ý:
1. Để xem thông tin theo từng trang của màn hình thì dùng
lệnh display, trong trường hợp in ra giấy in thì dùng lệnh list.
2. Đối với lệnh list không ghi phạm vi thì máy ngầm định là
all. Còn đối với lệnh display nếu không ghi phạm vi thì ngầm
định là một mẫu tin hiện hành.
3.Trong trường hợp lệnh quá dài ta có thể ghi chúng trên
nhiều hàng nhưng trước khi xuống hàng ta phải ghi dấu
chấm phẩy (;)
4. Chúng ta có thể dùng phím tắt F5

12/16/09 35
Chương II : Tạo lập – Hiệu chỉnh CSDL
Ví dụ: ta sử dụng tệp CSDL ts.BDF đã tạo từ ví dụ trước:
uses ts 
Display all holten, ngaysinh, gioitinh, diemtoan, diemvan off

use 

12/16/09 36
Chương II : Tạo lập – Hiệu chỉnh CSDL
d/ Sửa cấu trúc.
Modify structure 
Sau khi gõ lệnh này xong trên màn hình diễn ra cấu trúc của
tệp dữ liệu.
Nếu chỉ xem mà không sửa thì xem xong ấn phím Esc để
thoát ra.

12/16/09 37
Chương II : Tạo lập – Hiệu chỉnh CSDL
Nếu có sửa thì tiến hành:
+ Đưa con trỏ đến cột trước cột cần chèn rồi ấn Ctrl + I để chèn
thêm cột vào.
+ Đưa con trỏ đến cột trước cột cần xóa rồi ấn Ctrl + D để xóa cột.
+ Đưa con trỏ đến cột trước cột cần di chuyển rồi ấn Ctrl + Page Up
hoặc Ctrl + Page Down để di chuyển cột này về phía trước hoặc
phía sau.
+ Sửa trực tiếp về kiểu dữ liệu, độ rộng. Sau khi sửa xong ấn Ctrl +
W để lưu rồi chọn mục Yes.
Chú ý: Muốn xóa màn hình trong Foxpro thì bạn gõ lệnh Clear
Ví dụ: ta sử dụng tệp CSDL ts.BDF đã tạo từ ví dụ trước:
use ts 
modi stru 
12/16/09
use  38
Chương II : Tạo lập – Hiệu chỉnh CSDL
e. Sao chép cấu trúc từ tệp csdl đã có.
Cú pháp:
Copy structure to <tên csdl mới>[fields<các trường>] 
Trong đó:
- to <tên csdl mới>: sao chép cấu trúc của tập tin .DBF đang mở vào
một tập tin mới. Tập tin này chỉ có cấu trúc, không có dữ liệu.
Ví dụ: ta sử dụng tệp CSDL ts.BDF đã tạo từ ví dụ trước:
Use ts 
Copy stru to tsm1 fiel holot, ten, ngaysinh, gioitinh 
use tsm1 
disp stru 
use 
12/16/09 39
Chương II : Tạo lập – Hiệu chỉnh CSDL
f/Tạo tập tin cấu trúc mới từ một tập tin cấu trúc csdl.
Cú pháp:
Creat <tên tập tin mới> From <Tên tập tin cấu trúc CSDL> 
Lệnh này cũng tạo ra tập tin cấu trúc giống như thực hiện lệnh
Copy structure nhưng không phải mở tập tin nguồn.
Ví dụ: ta sử dụng tệp CSDL ts.BDF đã tạo từ ví dụ trước:
creat tsm2 from ts 
use tsm2 
disp stru 
use 

12/16/09 40
Chương II : Tạo lập – Hiệu chỉnh CSDL
3.Nhập và sửa dữ liệu.
a/ Lệnh Append bổ sung mẫu tin.
Cú pháp: Append 
Sau khi nhập xong dữ liệu thì ấn ctrl +W để lưu.
Ví dụ: use ts 
append 
use 

12/16/09 41
Chương II : Tạo lập – Hiệu chỉnh CSDL
b/ Điều chỉnh dữ liệu bằng lệnh @ … say … get …
Cú pháp:
@ <tọa độ> Say ‘thông báo’ Get <biến nhớ>;
[valid <đk>] [range a[, b]] 
Ví dụ: tl= space(1)
@ 20,15 say ‘Ban co lam nua khong (C/K)?’ get tl
read

12/16/09 42
Chương II : Tạo lập – Hiệu chỉnh CSDL
Cú pháp:
@ <tọa độ> Say ‘thông báo’ 
Ví dụ:
@ 20,15 say ‘Dien tich tam giac:’ + str (s)

12/16/09 43
Chương II : Tạo lập – Hiệu chỉnh CSDL
Chú ý:
1.Các biến nhớ trong câu lệnh này phải được khai báo trước cụ
thể:
Nếu là biến kiểu số thì khai báo: biến = 0
Nếu là biến kiểu chữ thì khai báo: biến = space(m) (m là kí
tự)
Nếu là biến kiểu ngày thì khai báo: biến = {}
Nếu là biến kiểu logic thì khai báo: biến = .T. hoặc .F.
2.Nếu có ghi Valid<đk>: hợp lệ
Invalid: không hợp lệ

12/16/09 44
Chương II : Tạo lập – Hiệu chỉnh CSDL
Ví dụ:
Tl= space(1)
@ 20,15 say ‘Ban co lam nua khong C/K ?’get tl valid tl $ ‘CcKk’
Read

12/16/09 45
Chương II : Tạo lập – Hiệu chỉnh CSDL
*Lệnh nhập xuất dữ liệu cơ bản:
Dang 1: Input ‘Thông báo’ to <biến nhớ> 
Ví dụ: Input ‘Ban cho biet ten ? ‘ to t 
Input ‘Cho biet ngay sinh của bạn ?’ to ns 
Dang 2: Accept ‘Thông báo’ to <biến nhớ>  (nhận lấy)
Ví dụ: Accept ‘cho biet ho ten cua ban ?’ to x
Lệnh này chỉ cho phép nhập dữ liệu kiểu character

12/16/09 46
Chương II : Tạo lập – Hiệu chỉnh CSDL
c/Lệnh thay thế dữ liệu các trường trong tệp
Cú pháp:
Replace [phạm vi] <trường i> with <giá trị i> [for <đk1>] ; [while<đk2>]
Trong đó: - [for<đk1>]: Tác động cho toàn bộ tập tin theo điều kiện được
chỉ định.
-[while<đk2>]: Tác động từ record hiện hành cho đến hết tập tin
theo điều kiện được chỉ định.
Ví dụ: ta sử dụng tệp CSDL ts.BDF đã tạo từ ví dụ trước:
tinh tongdiem trong tệp này (tongdiem=diemtoan+diemvan+uutien)
Use ts 
repl all tongdiem with (diemtoan+diemvan+uutien) 
brow 
use 

12/16/09 47
Chương II : Tạo lập – Hiệu chỉnh CSDL
d/Lệnh xem và sửa dữ liệu trong tệp dữ liệu.
Cú pháp:
Browse [phạm vi] [fields <d/s các trường>] [for<đk>] 
Lệnh browse là lệnh mạnh nhất của foxpro dùng để hiệu
chỉnh dữ liệu bao gồm: Xem, sửa, thêm, tìm kiếm, đánh dấu
xóa một hoặc nhiều record.
Ví dụ: Giả sử cần xem và sửa lại 4 mẫu tin đầu tiên của tệp
ts.DBF.
Use ts 
Browse next 4 
Use 

12/16/09 48
Chương II : Tạo lập – Hiệu chỉnh CSDL
e/Lệnh sửa đổi nội dung của mẫu tin trong tệp dữ liệu
Có 2 dạng:
Cú pháp:
Dạng 1:
Edit [phạm vi] [fields <d/s các trường>] [for/while<đk>] 
Dạng 2:
Change [phạm vi] [fields <d/s các trường>] [for/while<đk>] 

Ví dụ: Giả sử cần sửa lại điểm môn toán cho thí sinh có SBD 15
trong tệp ts.DBF.
Use ts 
Edit all field diemtoan for sbd= ’15’ 
Sửa lại điểm toan xong ấn Ctrl + W để lưu.
Use 
12/16/09 49
Chương II : Tạo lập – Hiệu chỉnh CSDL
f/Một số lệnh cài đặt
i. Lệnh đặt lại kiểu ngày
Cú pháp: Set date <tên kiểu ngày>
Kiểu ngày gồm: American: mm/dd/yy
French: dd/mm/yy
Japan: yy/mm/dd
Ví dụ: set day french 
ii. Lệnh cho phép biểu diễn năm 4 chữ số hoặc 2 chữ số.
Set century on  4 chữ số
Set century off  2 chữ số

12/16/09 50
Chương II : Tạo lập – Hiệu chỉnh CSDL
iii. Lệnh cài đặt số chữ số thập phân
Cú pháp: set decimal to <n> (n là số nguyên)
Ví dụ: set decimal to 4
iv. Lệnh cài đặt chính xác trong quá trình so sánh
set exact on  chính xác
set exact off  không chính xác
Ngầm định là off
v. Lệnh mở tệp dữ liệu (đã có)
Use <tên tệp dữ liệu> 
Use  có tác dụng đóng tập tin CSDL và các tập tin chỉ mục
liên quan.
Ví dụ: use ts  Mở tệp ts
use  Đóng tệp ts

12/16/09 51
Chương II : Tạo lập – Hiệu chỉnh CSDL
vi. Lệnh xuất dữ liệu ra màn hình
Dạng 1: ? ‘ thông báo’ , bt1, bt2  (Writeln)
Xuất dữ liệu theo từng dòng.
Ví dụ: ? ‘Dien tich hinh vuong la: ‘, s
Dạng 2: ?? ‘ thông báo’ , bt1, bt2  (Write)
Xuất dữ liệu trên cùng một dòng.
Ví dụ: ?? ‘Dien tich hinh vuong la: ‘, s

12/16/09 52
Chương II : Tạo lập – Hiệu chỉnh CSDL
Hỏi bài cũ
Câu 1. Tạo tập dữ liệu ts.DBF để quản lý học sinh cấp 2 thi
chuyển cấp lên cấp 3 có cấu trúc như sau:
Hoten (c, 30); ngaysinh (d, 8); gioitinh(L,1) .T. là Nam, .F. là
Nu, Sbd (n, 3); truong( c,15): ghi tên trường mà học sinh tốt
nghiệp; diemtoan(n,5,2); diemvan(n,5,2); ưutien(n,5,2): tốt
nghiệp loại gioi +2 điểm, loại khá +1.5 điểm, con liệt sỹ +1điểm;
tongdiem(n,5,2): ghi tổng số điểm (diemtoan + diemvan +
ưutien )
Câu 2. Lưu csdl ts.DBF.
Câu 3. Tính trường tongdiem.
Câu 4. Xem toàn bộ csdl của tập dữ liệu ts

12/16/09 53
Chương II : Tạo lập – Hiệu chỉnh CSDL
Trả lời bài cũ
Câu 1: Creat ts 
Câu 2: Ấn Ctrl + W để lưu
Câu 3: Replace all tongdiem with (diemtoan+diemvan+uutien)

Câu 4: Browse 
use 

12/16/09 54
Chương III : Các lệnh xử lý trên một CSDL

1.Go/ Goto (Dịch chuyển con trỏ tệp).


Cú pháp: (định vị tuyệt đối)
Go <n> 
Goto <n> 
Đưa con trỏ tới mẫu tin thứ n trong tệp (n>=1 và n<=số thư tự
của record cuối cùng).
Chú ý: Go top  đưa con trỏ về mẫu tin đầu tiên.
Go bottom  đưa con trỏ về mẫu tin cuối cùng.
Xác định số record hiện hành dùng hàm Recno()
Ví dụ:
Use ts  Use ts 
go 4  goto 4 
brow  brow 
use  use 
12/16/09 55
Chương III : Các lệnh xử lý trên một CSDL
2.Skip (Dịch chuyển con trỏ tệp).
Cú pháp: (định vị tương đối)
Skip <n> 
Đưa con trỏ qua n mẫu tin kể từ mẫu tin hiện hành.
Trong đó: n>0 con trỏ dời về phía cuối tập tin.
n<0 con trỏ dời về phía đầu tập tin
nếu không có n thì mặc định là dời xuống dưới 1 record
nếu di chuyển con trỏ quá vị trí BOF hoặc EOF thì sẽ xuất hiện
thông bão lỗi.
Chú ý: Trong lập trình ta thường sử dụng lệnh Skip tức là dịch chuyển
xuống 1 mẫu tin kế tiếp.
Ví dụ: use ts 
skip 4 
Brow
use 
12/16/09 56
Chương III : Các lệnh xử lý trên một CSDL

3.Insert (chèn thêm mẫu tin).


Lệnh Insert cho phép chèn thêm record trống vào bất kỳ vị
trí nào trong tập tin CSDL đang mở.
Cú pháp:
Insert [before][blank] 
Chú ý: -Nếu có ghi before: tức là chèn về phía trước mẫu tin hiện
hành.
-Nếu không ghi before: tức là chèn về phía sau mẫu tin
hiện hành.
- Nếu ghi blank tức là chèn thêm một mẫu tin trống nhưng
khồng hiện lên màn hình. Muốn nhập dữ liệu cho mẫu tin này
ta dùng lệnh Replace, Change, Edit, Browse hoặc bằng
chương trình.

12/16/09 57
Chương III : Các lệnh xử lý trên một CSDL

Ví dụ: Cần chèn vào danh sách ts.DBF một học sinh (giữa mẫu
tin 03 và 04)
Use ts  hoặc Use ts 
Go 03  Go 04 
Insert  Insert before  nhập dữ liệu cần chèn
ấn Ctrl+W để lưu.
Brow  Brow 
Use  Use 

12/16/09 58
Chương III : Các lệnh xử lý trên một CSDL

Bài tập:
Câu 1.Tạo cấu trúc cho tệp tin HSNV.DBF gồm các trường sau:
Holot(c,20); ten(c,10); gioitinh(c,3); ngaysinh(d,8);
bacluong(n,9,2); giadinh(L,1).
Sau đó nhập khoảng 10 mẫu tin.
Câu 2. Di chuyển con trỏ đến mẫu tin thứ 4
Câu 3. Di chuyển con trỏ về đầu tập tin.
Câu 4. Di chuyển con trỏ qua 4 mẫu tin kể từ mẫu tin hiện hành.
Câu 5. Chèn mẫu tin vào sau mẫu tin thứ 7
Câu 6. Chèn mẫu tin vào trước mẫu tin thứ 10

12/16/09 59
Chương III : Các lệnh xử lý trên một CSDL
Giải Bài tập:
Câu 1: Create HSNV 
khai báo cấu trúc tệp, xong ấn Ctrl+W lưu cấu trúc,
chọn Yes để nhập dữ liệu, nhập xong ấn Ctrl+W để lưu
Câu 2: Goto 4 
brow
Câu 3: Go top 
brow
Câu 4: Recno() 
skip 4 
brow

12/16/09 60
Chương III : Các lệnh xử lý trên một CSDL

Câu 5: go top 
go 7 
insert  nhập dữ liệu cần chèn ấn Ctrl+W để lưu.
brow
Câu 6: go top 
go 10 
insert befor  nhập dữ liệu cần chèn ấn Ctrl+W để lưu
brow
use 

12/16/09 61
Chương III : Các lệnh xử lý trên một CSDL

4. Delete (đánh dấu xóa các mẫu tin).


Cú pháp:
Delete [phạm vi] [for/while<đk> ]
Chú ý:1.Sau khi thực hiện lệnh xong những mẫu tin đánh đấu
để xóa sẽ có kí hiệu * ở đầu mỗi mẫu tin (Display/list) kí hiệu
bôi đen ở đầu mỗi mẫu tin(Browse).
2. Delete: Đánh dấu xóa record hiện hành.
Ví dụ: use ts 
delete all for diemtoan<5 
brow
use 

12/16/09 62
Chương III : Các lệnh xử lý trên một CSDL

5.Recall (Khôi phục các mẫu tin đã bị đánh dấu).


Cú pháp:
Recall [phạm vi] [for/while <đk> ]
Chú ý: Sau khi thực hiện lệnh xong những mẫu tin bị đánh đấu
để xóa sẽ được khôi phục lại.
Ví dụ: use ts 
Recall all for diemtoan<5 
brow
use 

12/16/09 63
Chương III : Các lệnh xử lý trên một CSDL

6.Pack (xóa các mẫu tin đã bị đánh dấu).


Cú pháp:
Pack [memo] [dbf]
Pack: xóa các record đã bị đánh dấu xóa từ vị trí con trỏ đến
hết tập tin.
Pack memo: chỉ xóa các khoảng trống không được sử dụng
trong trường memo của tập tin .FPT, không xóa các record
đã đánh đấu xóa trong tập tin CSDL
Pack DBF: Xóa các record đã bị đánh dấu xóa trong tập tin
CSDL.

12/16/09 64
Chương III : Các lệnh xử lý trên một CSDL

7. Zap (xóa tất cả mẫu tin trong CSDL).


Cú pháp:
Zap 
Lệnh Zap tương đương cặp lệnh
delete all
pack

12/16/09 65
Chương III : Các lệnh xử lý trên một CSDL

Bài Tập
Sử dụng tập tin HSNV.DBF bài tập trước thưc hiện một số
công việc sau:
Câu 1: Đánh đấu xóa toàn bộ các mẫu tin có gioitinh= ‘Nam’
Câu 2: Khôi phục lại toàn bộ các mẫu tin có gioitinh=‘Nam’ và
giadinh=.T.
Câu 3: Xóa những mẫu tin đã bị đánh dấu.

12/16/09 66
Chương III : Các lệnh xử lý trên một CSDL

Giải Bài Tập:


Câu 1: use HSNV 
dele all for gioitinh='Nam' 
brow
Câu 2: recal all for gioitinh=‘Nam’ .and. Giadinh=.T. 
brow
Câu 3: pack
brow
use 

12/16/09 67
Chương III : Các lệnh xử lý trên một CSDL

8.Count (đếm số mẫu tin).


Cú pháp:
Count [phạm vi] [for/while <đk>] [ to<biến nhớ>] 
Trong đó: [ to<biến nhớ>] : Đếm số record và lưu kết quả
vào một biến, nếu không có mệnh đề này thì kết quả
hiển thị ra màn hình.
Ví dụ: use ts 
count all for gioitinh=‘Nam’ to m 
?m
use 

12/16/09 68
Chương III : Các lệnh xử lý trên một CSDL

9. Sum (tính tổng giá trị các biểu thức số).


Cú pháp:
Sum [phạm vi] [d/s các trường] [for/while<đk>] [to<d/s
các biến nhớ>] 
*d/s các biến nhớ: nhằm để lưu kết quả sau khi tính tổng
và cho phép sử dụng thuận tiện về sau.
Ví dụ: use ts 
sum all toan, van, anh to t, v, a 
?t
?v
?a
use 

12/16/09 69
Chương III : Các lệnh xử lý trên một CSDL

10. Average (tính trung bình cộng các biểu thức số).
Cú pháp:
Average [phạm vi] [d/s các trường] [for/while<đk>] [ to<d/s
các biến nhớ>] 
*d/s các biến nhớ: nhằm để lưu kết quả sau khi tính trung bình
công và cho phép sử dụng thuận tiện về sau.
Ví dụ: use ts 
average all toan, van, anh to t 
?t
use 

12/16/09 70
Chương III : Các lệnh xử lý trên một CSDL

11. Sort (Sắp xếp mẫu tin).


Cú pháp:
Sort [phạm vi] on <trường> </chỉ tiêu SX>[for/while<đk>];
[ to<tệp mới>] 
Trong đó: [ to<tệp mới>]: Là tập tin dữ liệu (.DBF) lưu kết quả
sắp xếp của lệnh sort.
Ví dụ: Giả sử cần sắp xếp lại danh sách học sinh theo hoten theo
thứ tự từ điển.
use ts 
Sort all on hoten / AC to Kq  ta được tập tin Kq.DBF
use kq 
Display all 

12/16/09 71
Chương III : Các lệnh xử lý trên một CSDL

Chú ý: Chỉ tiêu sắp xếp gồm có:


- Ascending : Sắp xếp tăng dần (chỉ cần gõ /A).
- Descending: Sắp xếp giảm dần (chỉ cần gõ /A).
- Character: Không phân biệt chữ hoa hay chữ thường.

12/16/09 72
Chương III : Các lệnh xử lý trên một CSDL

12. Locate (Tìm kiếm mẫu tin).


Cú pháp:
Locate [phạm vi] [for/while<đk>] 
Chú ý:
1.Sau khi gõ lệnh này xong, để biết kết quả ta dùng lệnh sau đây:
? Found() 
Nếu xuất hiện: .T. (tìm thấy) .F. (không tim thấy)
Mẫu tin được tìm thấy sẽ là mẫu tin đầu tiên trong tệp dữ liệu.
2.Nếu muốn biết thêm trong tệp này có còn mẫu tin nào khác mà thỏa mãn
điều kiện tìm kiếm thì ta dùng lệnh.
? EOF() 
Nếu xuất hiện: .T. (hết tệp);.F. (chưa hết tệp)
gõ lệnh Continue tiếp tục tìm kiếm.

12/16/09 73
Chương III : Các lệnh xử lý trên một CSDL

Ví dụ: Tìm xem trong danh sách ts.DBF có học sinh nam nào có
điểm toán trên 8 không?
Use ts 
Locate all for (gioitinh=‘Nam’) .and. (toan>8) 
? Found() 
Nếu kết quả hiện ra là .T. => có
Muốn biết rõ về mẫu tin tìm thấy này ta gõ.
Display 
Muốn tìm kiếm tiếp tục ta gõ lệnh
?EOF() 
continue 
?found() 
Display 

12/16/09 74
Chương III : Các lệnh xử lý trên một CSDL

Bài tập cuối chương:

12/16/09 75

You might also like