Tải bản đầy đủ (.pdf) (31 trang)

Bài giảng Visual FoxPro - Chương 2 doc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (575.08 KB, 31 trang )

Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 7
C
C
H
H
Ư
Ư
Ơ
Ơ
N
N
G
G


I
I
I
I
:
:


X
X
Â
Â
Y
Y



D
D


N
N
G
G


P
P
R
R
O
O
J
J
E
E
C
C
T
T


V
V
À

À


C
C
Ơ
Ơ


S
S




D
D




L
L
I
I


U
U



BÀI 1: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ
I. Từ khóa, kí hiệu, Lệnh
1. Từ khóa (Key Word):
Là các từ mà Visual Foxpro đã sử dụng cho một mục đích nào đó. Và người dùng không
được phép đặt tên trùng với từ khóa. Tham khảo tài liệu về tất cả các khóa của Visual
Foxpro. Trong Foxpro từ khoá có thể không cần viết đầy đủ mà chỉ cần viêt 4 ký tự đầu của
từ khoá đó, ví dụ từ khoá CREATE có thể chỉ cần viết Crea (Visual Foxpro không phân
biệt chữ hoa, chữ thườ
ng).
2. Kí hiệu comment:
Đối với phần cuối 1 dòng dùng kí tự &&
Với cả dòng: dùng ký tự * hoặc &&
3. Lệnh của Visual Foxpro
Trong Visual Foxpro có hai loại câu lệnh:
• Các câu lệnh có thể thực hiện trực tiếp từ cửa sổ lệnh (Command Windows) - gọi
là Lệnh trực tiếp.
• Các lệnh chỉ thực hiện trong chương trình. Các lệnh trực tiếp cũng thực hiện được
trong chương trình.
C
ấu trúc lệnh trực tiếp của Foxpro có dạng: <Động từ> [Các tham số] ↵
Trong đó: <Động từ> - Động từ tiếng anh (tương ứng với công việc cần làm);
[Tham số] - Các tham số trong lệnh của fox có thể có, có thể không, hoặc có
thể có nhiều; trường hợp có nhiều tham số thì thứ tự các tham số này có thể không
quan trọng.
4. Một số lệnh trực tiếp của Visual Foxpro
1. L
ệnh ?, ?? -> In kết quả lên màn hình
2. QUIT -> Thoát khỏi foxpro
3. CLEAR -> Xoá màn hình

4. SET DEFAULT TO <Path> -> Thiết lập đường dẫn mặc định
5. SET DATE <FRENCH | AMERICA> -> Thiết lập ngày tháng
II. Kiểu dữ liệu
Đố
i
tượng xử lý của V. FOXPRO là dữ liệu, để quản lý và khai thác tốt các dữ liệu này,
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 8
tuỳ theo tính chất, V.FOXPRO phải chia dữ liệu thành nhiều kiểu dữ liệu khác
nhau.
Kiểu dữ liệu là thuộc tính gắn liền với biến hay trường trong các bảng. Các kiểu dữ liệu
trong Visual Foxpro gồm có: Character (Xâu kí tự), Date và DateTime (Ngày, giờ),
Currency (Tiền tệ), Logic, Numeric (Số); các kiểu chỉ dùng cho các trường của bảng gồm
có: Memo (Văn bản), General (Tổng hợp - ảnh).
1. Charater (C):
Chứa các số liệu là tổ hợp một s
ố bất kỳ các ký tự ASCII. Ví dụ: tên, họ hoặc là số
nhưng không có nhu cầu tính toán như số chứng minh, địa chỉ, số phòng,…
Mỗi dữ liệu kiểu chuỗi có độ dài tối đa 255 ký tự (mỗi ký tự chiếm 1 byte trong bộ nhớ).
Là xâu ký tự a->z, A->Z, 0 ->9 và một số các ký tự khác như + ,*, /, = ….
Hằng xâu kí tự: Đặt trong dấu “”, ‘’, hoặc []; ví dụ “Hà nội”, ‘Việt nam’ hoặc [Visual Fox]
Các phép toán:
• +: Nối chuỗi 2 vào chuổ
i 1.
• -: Nối 2 chuỗi nhưng huỷ bỏ các khoảng trắng trước và sau mỗi chuỗi.
• $: Chứa ở trong (st1$st2 – st1 có trong st2 ->TRUE, ngược lại ->FALSE)
2. Date and DateTime

Date
(D): Dùng cho những số liệu dạng ngày tháng như ngày sinh, ngày đến,

đ
ó
là những số nguyên dạng "yyyymmdd" khi hiển thị ra bên ngoài sẽ được chuyển
thành dạng ngày tháng bình thường như mm-dd-yy, dd-mm-yyyy, tuỳ theo yêu
cầu của người lập trình. Đ

dài cố định của dữ liệu kiểu ngày là 8 ký tự.
• Kiểu ngày, giờ dùng 8 bytes để lưu trữ.
• Hằng Date và DateTime: {^yyyy-mm-dd [hh[:mm[:ss]][alp]]}; ví dụ: {^2005-12-
10}, {^2005-12-10 10:20:25}
• Các phép toán:
• Ngày + Số = Ngày
• Số + Ngày = Ngày
• Ngày - Số = Ngày
• Ngày - Ngày = Số
Tương tự cho ngày giờ
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 9
3. Currency
Kiểu tiền tệ (thực chất là kiểu số và thêm kí tự tiền $ hoặc ký tự bất kỳ khác) vào số đó.
Kiểu này thường ít được sử dụng.
4. Logic
• Logical (L): Dùng cho những dữ liệu chỉ có một trong hai trường hợp hoặc đúng
(T) hoặc sai (F) như giới tính, đối tượng ưu tiên, Đ

dài cố định của dữ liệu kiểu
lý luận là 1 ký tự.
• Kiểu logíc, tập giá trị là Đúng hoặc Sai
• Hằng Logic: .T. ->TRUE đúng (hoặc .t.); .F. ->FALSE sai (hoặc .f.)
• Các phép toán: NOT, AND, OR.

5. Numeric

N
u
m
e
r
ic
(N): dùng để biểu diễn các số liệu mang giá trị số học và có nhu cầu
tính toán như trong kế toán, quản lý, Mỗi dữ liệu kiểu số chiếm tối đa 20 chữ số
gồm cả phần nguyên, phần thập phân và dấu chấm thập phân.

Float (F):
Dùng để biểu diễn số là các số có dấu chấm động như: 2.03e5 (2.03
x10
5
), thường được sử dụng trong các chương trình thuộc lĩnh vực khoa học kỹ
thuật,
• Kiểu số, dùng tối đa 20 byte.
• Hằng số: 10, 20, 15.7
• Các phép toán: +, - , *, /, ^ (mũ), % (chia lấy phần dư)
6. Memo
Memo
(M):
Dữ liệu kiểu ghi nhớ là một đoạn văn bản có độ dài lớn hơn 255 ký tự, như
khen thưởng, lý kịch, quá trình công tác, Đ

dài khai báo là 10 nhưng nội dung thực sự
của kiểu ghi nhớ là tuỳ ý, chúng được lưu trữ trong một tập tin khác có cùng tên nhưng
phần mở rộng là .FPT (FoxPro Text).

7. General
• Kiểu kí ức, dùng 4 byte để ánh xạ đến 1 file khác có phần mở rộng là fpt. Kiểu này
cho phép lưu 1 đối tượng bất kỳ như file văn bản, file word, file excel, file ảnh và
thường được sử dụng để lưu trữ file ảnh.
• Kiể
u hình ảnh -
F
ic
t
u
r
e
(P): Dữ liệu lưu dưới dạng hình ảnh .BMP, thường
được dùng trong các chương trình "quản lý nhân sự", "nhận dạng",
III. Các phép toán
a. Phép
toán
số học:
đ
ược
thực hiện trên các dữ liệu kiểu số, gồm các phép toán:

Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 10

Độ ưu tiên các phép toán theo thứ tự đã nêu ở trên, có thể thay đổi thứ tự tính toán bằng
cách đặt chúng trong 2 dấu ngoặc đơn ( ) như các quy tắc tính toán số học thông thường.
b. Phép
toán
chuỗi: Dùng để xử lý các dữ liệu kiểu chuỗi.


Phép toán ghép nối (+): dùng để ghép 2 chuỗi cạnh nhau, kết quả của phép toán là
một
dữ liệu kiểu chuỗi.
o Ví dụ: Trung tâm' + 'Tin học' > 'Trung tâm Tin học'
• Phép toán ghép nối (-): dùng để ghép 2 chuỗi cạnh nhau và di chuyển các dấu
cách ở chuỗi thứ nhất (nếu có) ra cuối chuỗi tạo thành.
o Ví dụ: ' T r u n g t â m ' - ' T i n h ọc' > 'Trung tâm Tin học '
• Phép toán $: kiểm tra chuỗi bên trái có nằm trong chuỗi bên phải không. Kết quả
của phép toán có kiểu logic.
o Ví dụ: 'ab' $ "ABab" cho giá trị .T. nhưng 'ab $ "AaBb" cho giá trị .F.
c. Phép
toán
ngày: Hai dữ liệu kiểu ngày có thể trừ (-) cho nhau để cho khoảng cách đại
số giữa 2 ngày.
Ví dụ:
• {01/08/2003} - {05/09/2003} > - 35
• {01/08/2003} - {05/07/2003} > 25
Một dữ liệu kiểu ngày có thể cộng (+) hay trừ (-) một số nguyên để cho kết quả là một
dữ liệu kiểu ngày.
Ví dụ: {01/08/2003}+ 10 > {11/08/2003}
{01/08/2003}- 20 > {12/07/2003}
Chú ý: Hai dữ liệu kiểu ngày không thể cộng (+) cho nhau.
Một số không thể trừ (-) với một dữ liệu kiểu ngày.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 11

Việc diễn tả thứ tự ngày (D), tháng (M), năm (Y) trong một dữ liệu kiểu ngày còn phụ
thuộc vào thời điểm hiện tại đang theo hệ thống ngày tháng nào.
(1) Lệnh SET DATE FRENCH |AMERICAN| JAPAN: Cho phép thiết lập dữ liệu

dạng ngày theo kiểu Pháp|Mỹ|Nhật.
(2) SET CENTURY ON|OFF: Quy ước năm có một dữ liệu dạng ngày được biểu diễn
theo dạng hai số (mặc định) hay dạng bốn số. Nếu SET CENTURY ON thì năm
được
biểu diễn theo dạng bốn con số, nếu SET CENTURY OFF (dạng mặc định) thì năm
được biểu diễn theo dạng hai con số.
(3) Lệnh SET MARK TO <bthức C>: để ấn định ký tự phân cách ngày tháng, năm là
<bthức
Dùng lệnh SET MARK TO để trở về ký tự phân cách ngày tháng mặc định.
d. Phép
toán
quan hệ: dùng để so sánh hai giá trị của hai biểu thức cùng kiểu.

• Hai dữ liệu kiểu số được so sánh dựa theo biểu diễn của chúng trên trục số.
• Hai dữ liệu kiểu ngày được so sánh dựa theo biểu diễn của chúng theo chiều của
thời gian. Trong kiểu logic, Visual FoxPro quy ước: .T.<.F.
• Hai dữ liệu kiểu chuỗi có độ dài bằng nhau được so sánh dựa theo nguyên tắc
sau: đầu tiên so sánh 2 mã ASCII của 2 ký tự đầu của hai chuỗi, nếu bằng nhau thì
so sánh tiếp.
Ví dụ: 'ABCD' < 'ABCE' > .T. 'a' < 'A' > .F.
• Trường hợp hai chuỗi có độ dài khác nhau, thì việc so sánh dựa vào việc thiết lập
môi trường SET EXACT ON/OFF, nghĩa là:
o Nếu SET EXACT ON thì 'AB' = 'AB ' > .F.
o Nếu SET EXACT OFF thì 'ABCD' = 'AB' > .T.
e. Phép
toán
logic: Visual FoxPro có 3 phép toán logic: NOT; AND; OR NOT hay ! :
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 12
phủ định của toán hạng theo sau.

• AND : cho giá trị .T. nếu cả hai toán hạng đều .T.
• OR : cho giá trị .F. nếu cả hai toán hạng đều .F.
IV. Toán hạng
Toán hạng là các dữ liệu tham gia vào các phép toán. Ví dụ: del=b^2 - 4*a*c thì b,2,4,a,c
là các toán hạng.
V. Hằng
• Là đối tượng dữ liệu mà giá trị của nó chỉ xác định 1 lần khi khai báo và không thay đổi
được. Hằng cũng được xác định qua tên, kiểu và phạn vi tác động của nó. Trừ kiể
u dữ liệu
memo thì mỗi kiểu dữ liệu đều có hằng của nó.
• Khai báo hằng: Visual Foxpro dùng từ khoá #DEFINE <Tênhằng> <Giá trị> để khai
báo hằng. Kiểu của hằng phụ thuộc vào kiểu của biểu thức <Giá trị>
• Phạm vi tác động của hằng được xác định tương tự với Biến.
• Hằng kiểu số: như -2.5, 100, 4.14
• Hằng kiểu chuỗi: hằng lo
ại nầy phải để trong hai dấu " " hoặc ' ' hoặc [ ], có độ
dài tối đa không quá 253 kí tự.
Ví dụ: "abc"; tổng hợp', '123',
• Hằng kiểu ngày: phải được đặt trong cặp dấu { } Ví dụ: {01/01/96}; {}: ngày rỗng.
• Hằng logic: chỉ có 2 giá trị .T. và .F.
VI. Biến
• Là đại lượng lưu trữ dữ liệu trong bộ nhớ, được xác định qua tên biến, kiểu và phạm vi
tác động của biế
n
o Tên biến: Dài không quá 254 kí tự, có thể dùng các chữ cáI, chữ số, dấu gạch
dưới (_) nhưng không được bắt đầu bằng chữ số (và không được trùng với từ
khoá).
o Kiểu: Các kiểu dữ liệu kể trên trừ kiểu General. Kiểu của biến trong Visual
Foxpro có thể thay đổi. Visual FoxPro hiểu kiểu của biến là kiểu của giá trị
mà nó đang mang. Số lượng tối đa của biến

được phép sử dụng là 2048 biến.
o Visual FoxPro chia biến làm 3 loại:
o Biến bộ nhớ: Gọi chung là biến, do người sử dụng tạo ra trong bộ nhớ, khi
không sử dụng nữa có thể giải phóng để tiết kiệm bộ nhớ.
Ví dụ: hsl = 3.12
ngaysinh =
{
01
/
01
/
88
}

Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 13
o Biến hệ thống:
Đ
ược
tạo ra ngay từ khi khởi động Visual FoxPro. Có tên
bắt đầu bằng dấu gạch nối ( _ ) thường được sử dụng trong vấn đề in ấn,
người sử dụng không thể giải phóng biến loại này.
o Biến
trường:
Tên các trường trong tập tin CSDL , nó chỉ có ý nghĩa khi tập
tin chứa nó được mở ra để sử dụng. Nếu có một biến đặt trùng với một biến
trường thì biến trường được ưu tiên thực hiện trước.
• Phạm vi tác động của biến phụ thuộc vào vị trí mà nó được khai báo. Ví dụ
Chương trình chính
Biến A

Chương trình Con 1
Biến B
Gọi chương trình con 2

Chương trình con 2
Biến C


Trong ví dụ trên: Biến A có tác động trong toán bộ chương trình chính, chương trình con 1
và chương trình con 2; Biến C chỉ có tác động trong chương trình con 2; Biến B có tác
động trong chương trình con 1, nếu trong chương trình con 1 có lời gọi chương trình con 2
thì biến B có thể tác động trong chương trình con 2 (nhưng nếu lời gọi chương trình con 2
tại vị trí khác mà ở đó không khai báo B thì lúc đó sẽ phát sinh lỗi).
• Khai báo biến: Trong Visual Foxpro thực ra không có khái niệm khai báo biến (như
trong PASCAL) mà các biến sẽ được sinh ra khi thực hiện lệnh gán (=) hoặ
c lệnh STORE.
Ví dụ
o a=150 -> Tạo ra biến có tên là a, kiểu là số
o STORE ”Visual Foxpro“ TO monhoc -> Tạo ra biến monhoc, kiểu xâu kí tự
• Xoá bỏ các biến: Khi không dùng nữa thì có thể xoá bỏ các biến để giảI phóng bộ nhớ.
Visual Foxpro dùng lệnh RELEASE <tenbien> để xoá bỏ các biến. Ví dụ RELEASE a;
RELEASE monhoc.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 14
Biến trường và biến hệ thống có phạm vi tác động trong toàn bộ chương trình.
VII. Hàm
Hàm là những đoạn chương trình được viết sẵn nhằm thực hiện một công việc nào đó.
Các hàm này thường cho ra một giá trị, nhưng cũng có hàm chỉ thi hành một việc nào đó
mà không cho ra một trị nào cả. Về hình thức, hàm được đặc trưng bởi tên hàm và theo
sau là cặp dấu ( ) dùng để bao các đối số, các đối số

này đặt cách nhau bởi dấu phẩy. Một
hàm có thể có nhiều đối số hoặc không có đối số nào cả nhưng phải có ( ) theo sau.
Ví dụ: Date ( ): cho biết ngày tháng năm hệ thống.
Sqrt(x): căn bậc 2 của x.
Có 2 loại hàm: Hàm có sẵn của Visual FoxPro và hàm tự tạo do người sử dụng tạo ra.
Trong phần này sẽ giới thiệu một số hàm do Visual Foxpro cung cấp.
1. Hàm xâu kí tự
1. ALLTRIM(st), LTRIM(st), RTRIM(st)
2. LEFT(st,n), RIGHT(st,2), SUBSTRING(st,p,n)
3. AT(st1,st2,n), RAT(st1,st2,n)
4.
LOWER(st), UPPER(st)
5. ASC(ch), CHR(n)
6. DTOC(d)
7. LEN(st)
8. STR(ex)
2. Hàm Date và DateTime
1. DATE()
2. DATETIME()
3. TIME()
4. CTOD(st)
5. DAY(d)
6. MONTH(d)
7. YEAR(d)
3. Hàm số
1. ABS(ex)
2. INT(ex)
3. ROUND(ex,n)
4. VAL(st)
Bài giảng Visual FoxPro

Bộ môn Tin học – ĐHTN 15
4. Hàm tự tạo của người sử dụng
Cú pháp
FUNCTION <Tenham> [PARAMETER <danh sách các tham số>]
(Các lệnh của fox)
RETURN <Biểu thức>
Trong đó TenHam: Tên hàm do người sử dụng tự định nghĩa
Parameter: Từ khoá cho phép truyền vào các tham số cho hàm
VIII. Biểu thức
Biểu thức là tập hợp của một hay nhiều thành phần như hằng, hàm, biến, phép toán, dấu
ngoặc tròn. Sau khi tính toán biểu thức sẽ cho một trị duy nhất. Trị củ
a biểu thức thuộc
về một trong 4 kiểu: N, C, D, L. Một biểu thức có thể rất phức tạp, trị của biểu thức
được tính theo nguyên tắc
• Thứ tự ưu tiên của các phép toán trong 1 biểu thức
1. Các phép số học:
o Dấu âm, dương
o Luỹ thừa
o Nhân, chía
o Phần dư
o Cộng, trừ
2. Các phép chuỗi: +, -
3. Các phép quan h
ệ: =,<,>,>=,<=,<>
4. Các phép logic: NOT, AND, OR
• Sử dụng cập dấu () trong biểu thức để tránh sai sót về thứ tự ưu tiên các phép toán.
Bên trái tính trước, bên phải tính sau.
IX. Từ khoá
Từ khoá là những từ được Visual FoxPro sử dụng vào một mục đích riêng, người sử dụng
không được đặt tên trùng với các từ khoá này. Thông thường từ khoá là những động từ

của lệnh thực hiện. Nếu từ khoá có nhiều hơ
n 4 ký tự thì khi sử dụng chỉ cần ghi 4 ký tự
đầu.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 16
Ví dụ: Câu lệnh MODIFY COMMAND LUONG.PRG có 2 từ khoá là
MODIFY và COMMAND có thể viết gọn là: MODI COMM LUONG.PRG
X. Lệnh và chương trình
Lệnh là những yêu cầu để thực hiện một nhiệm vụ nào đó. Lệnh trong Visual FoxPro
thường là một động từ, cũng có trường hợp là một kí hiệu như: !. ?, Tập hợp các
lệnh nhằm đạt được một mục tiêu đề ra gọi là chương trình.
Trong Visual FoxPro có 3 cách để ban hành lệnh:
a. Dùng cửa sổ lệnh:
L
ệnh được đưa vào cửa sổ lệnh, sau khi ấn Enter lệnh được thi hành ngay. Thi hành
xong một lệnh thì lệnh cũ được lưu lại trên cửa sổ lệnh có thể sử dụng cho lần sau. Cách
này thường dùng trong những tính toán đơn giản để kiểm tra kết quả của lệnh.
b. Dùng
menu:

Lệnh được ban hành bằng cách kích hoạt menu tương ứng, sau khi thi hành xong câu
lệnh cũng được lưu lại trên cửa sổ lệnh. Cách này chỉ hạn chế trong một số lệnh thông
thường trên tập tin CSDL.
c. Dùng chương trình: Soạn thảo trước một chương trình gồm nhiều lệnh thích
hợp. Chương trình được lưu trên đĩa dưới tên một tập tin có phần mở rộng PRG.
Đ

thực hiện chương trình này, tại cửa sổ lệnh đưa câu lệnh DO <tên file.PRG>. Sau
khi ấn Enter chương trình được nạp vào bộ nhớ và từng lệnh được thực hiện theo thứ tự.
Bài giảng Visual FoxPro

Bộ môn Tin học – ĐHTN 17
BÀI 2: XÂY DỰNG PROJECT
I. Tạo mới một Project
Việc phát triển một ứng dụng trong Visual Foxpro thường được tổ chức thành một Project -
Dự án.
Việc tạo mới một Project có thể được thực hiện bằng 1 trong hai cách sau:
• Cách 1: Trong cửa sổ lệnh gõ vào lệnh CREATE PROJECT <Tên Project>
• Cách 2: Vào menu File ->Chọn New, khi đó giao diện New của VS Foxpro xuất
hiện

• Tiếp đến chọn File type = Project (Mặc định).
• Chọn New file để
tạo một Project trống.
• Chọn Wizard để tạo một Project theo một trong các mẫu
thiết kế sẵn của Microsoft.
• Khi chọn New file hộp thoại Create hiển thị cho phép
nhập vào tên project cần tạo, tiếp chọn chọn Save.
• Kết thúc việc tạo mới, cửa sổ Project Manager xuất hiện
(xem phần tiếp theo) cho phép quản lý, làm việc với
Project này.

II. Cửa sổ Project (Project Manager)
[Ch
ạy Foxpro -> Project Manager]
Các thành phần chính trong Project Manager
1-Các tuỳ chọn (Tab) :
• Data: Database, Free Tables, Queries
• Documents: Forms, Reports, Labels.
• Class
• Code: Program, API Libraries, Applications

• Other: Menu, Text file, Other file
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 18
2-Các nút chức năng trong cửa sổ Project Manager
T
T
Ê
Ê
N
N


N
N
Ú
Ú
T
T


C
C
H
H


C
C



N
N
Ă
Ă
N
N
G
G


A
A
D
D
D
D


T
T
H
H
Ê
Ê
M
M


C
C

Á
Á
C
C


T
T
H
H
À
À
N
N
H
H




P
P
H
H


N
N



V
V
À
À
O
O


P
P
R
R
O
O
J
J
E
E
C
C
T
T


N
N
E
E
W
W



T
T


O
O


M
M


T
T


T
T
H
H
À
À
N
N
H
H



P
P
H
H


N
N


M
M


I
I


T
T
R
R
O
O
N
N
G
G
P
P

R
R
O
O
J
J
E
E
C
C
T
T
M
M
O
O
D
D
I
I
F
F
Y
Y


S
S



A
A


C
C


U
U


T
T
R
R
Ú
Ú
C
C


C
C


A
A



M
M


T
T


T
T
H
H
À
À
N
N
H
H


P
P
H
H


N
N
T
T

R
R
O
O
N
N
G
G
P
P
R
R
O
O
J
J
E
E
C
C
T
T
B
B
R
R
O
O
W
W

S
S
E
E


X
X
E
E
M
M


V
V
À
À


S
S


A
A


D
D





L
L
I
I


U
U


C
C


A
A


C
C
Á
Á
C
C



B
B


N
N
G
G


H
H
A
A
Y
Y
T
T
R
R
U
U
Y
Y
V
V


N
N

R
R
E
E
M
M
O
O
V
V
E
E


L
L
O
O


I
I


B
B





M
M


T
T


T
T
H
H
À
À
N
N
H
H


P
P
H
H


N
N



T
T
R
R
O
O
N
N
G
G
P
P
R
R
O
O
J
J
E
E
C
C
T
T

Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 19
BÀI 3: XÂY DỰNG DATABASE VÀ CÁC TABLES
I. Giới thiệu
Bảng dữ liệu (gọi tắt là bảng) là nơi lưu trữ dữ liệu và nó đóng một vai trò quan trọng trong

các bài toán quản lý. Xuất phát từ việc phân tích yêu cầu, các mẫu biểu của bài toán để từ
đó đưa ra cấu trúc các bảng sao cho phù hợp, đáp ứng các yêu cầu đặt ra là một công việc
khá phức tạp, đòi hỏi phải có kiến thức và kinh nghiệm trong lĩnh v
ực cụ thể đó.
II. Tạo Database
1. Tạo mới Database
Câch 1: Sử dụng câu lệnh
Bằng cách này chúng ta có thể tạo ta một Database, tuy nhiên database này là một Database
độc lập (không liên quan đến Project nào)
Câu lệnh: CREATE DATABASE <TenDatabase> ↵
Kết thúc lệnh này Visual Foxpro sẽ tạo ra file Database có tên là TenDatabase (phần mở
rộng là DBC)
Về sau có thể thêm Database này vào trong 1 Project nào đó.
Cách 2: Sử dụng Project Manager
Bằng cách này thì Database được tạo ra sẽ là một thành phần của Project
• Mở Project QLDIEM

Trong Tab Data, chọn mục Database rồi chọn New, khi đó giao diện New database xuất
hiện như hình 1.
• Chọn New Database để tạo một database trống.
• Visual Foxpro sẽ yêu cầu nhập vào tên Database
(file có phần mở rộng là DBC), rồi chọn Save để
ghi lại. Khi đó giao diện Database designer xuất
hiện như hình 2.
• Giao diện Database Designer cho phép xem một
cách tổng thể các thành phần (bảng, view, mỗi
quan hệ giữa các bảng ) trong csdl.


Hình 1 - Hộp thoại New database

Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 20
2. Sửa đổi Database
• Trong Project Manager, chọn Tab Data, tiếp đến chọn Database và mở rộng đối tượng
này (bằng cách kích vào dấu + phía trước) .
• Chọn Database cần sửa (vì trong một Project có thể có nhiều hơn một Database) rồi
chọn lệnh Modify, khi đó cửa sổ Database designer xuất hiện.
3. Thêm vào Project một Database đã có
Trường hợp Project sử dụng một Database đã có (đã thiết kế trước đó) thì chúng ta có thể
thêm (Add) Database đ
ó vào Project.
• Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database.
• Chọn lệnh Add, khi đó sẽ xuất hiện cửa số open file (hình 3) cho phép chúng ta chọn
csdl cần thêm vào.

Hình 3 - Hộp thoại Open file (Select Database)
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 21
4. Loại bỏ một Database khỏi Project
Khi không cần dùng một Database nào đó, chúng ta có thể loại bỏ Database đó khỏi Project
như sau:
• Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database và mở rộng đối
tượng này.
• Chọn Database cần bỏ, tiếp đến chọn lệnh Remove khi đó xuất hiện hộp thoại như
hình 4.
Hình 4 - Hộp thoại Remove Database
• Chọn Remove (khỏi Project) nếu không muốn xoá hẳn Database này; chọn Delete
nếu muốn xoá hẳn Database này; chọn Cancel khi muốn huỷ bỏ thao tác này.
III. Bảng dữ liệu (Table)
1. Khái niệm

Bảng dữ liệu chứa dữ liệu theo dạng dòng và cột, mỗi dòng được gọi là một mẫu tin
(record), mỗi cột được gọi là một trường (field) của bảng.
Một số công việc cần làm khi làm việc các tables:
• Xác định các Field cần thiết có trong table.
• Loại dữ liệ
u, tạo tiêu đề diễn giải, giá trị mặc định cho từng field.
• Chọn khóa.
• Tạo bẫy lỗi.
• Tạo chỉ mục.
• Thiết lập các mối quan hệ giữa các Tables.
2. Cách
tổ
chức
một
file dữ liệu
• File dữ liệu: Là tập hợp dữ liệu phản ánh về một tập hợp các đối tượng được quản
lý thông qua các thuộc tính của nó.
• Bản ghi
(
R
ec
or
d
)
:
Là một bộ giá trị các thuộc tính phản ánh về một đối tượng.

Tr
ư


n
g
(Field): Là một thuộc tính trong file dữ liệu, mỗi trường được xác
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 22
định bởi tên trường, kiểu trường và kích thước trường.
• Tên trường (Field name): Tên trường dài tối đa 10 ký tự bao gồm chữ cái, chữ
số, ký tự gạch dưới, ký tự đầu tiên của tên trường phải là chữ cái.

Kiểu trường (Field type): Kiểu trường có các dạng sau:

• Kích thước
trường
(Field Width): Là khoảng bộ nhớ cần thiết để lưu trữ các
giá trị của trường, kích thướ
c của trường phụ thuộc vào kiểu trường:
• Kiểu C: Tối đa 254 Byte
• Kiểu N: Tối đa 20 Byte kể cả dấu thập phân
• Kiểu L: Chiếm 1 Byte
• Kiểu D: Chiếm 8 Byte
• Kiểu M: độ dài tuỳ ý, chiếm 10 Byte khi khai báo
• Currency: Chiếm 8 byte
Mỗi bảng dữ liệu được lưu trữ trên đĩa với tên file có phần mở rộng mặc định là DBF,
mỗi b
ảng dữ liệu có hai phần: cấu trúc và nội dung của bảng.
Cấu trúc file: Mỗi tổ hợp trường sắp xếp theo thứ tự nhất định gọi là cấu trúc của file dữ
liệu, mỗi file dữ liệu chỉ có một cấu trúc cụ thể.
Ví dụ: bảng nhân viên (nhanvien.dbf) có cấu trúc sau:
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 23

Nội dung của NHANVIEN.DBF

IV. Tạo bảng
1. Tạo mới Tables
Cách 1: Sử dụng câu lệnh
Trong Visual Foxpro, một bảng dữ liệu có thể tồn tại ở một trong hai trạng thái: tự do (free)
hoặc thuộc một CSDL nào đó. Bằng cách này, Table được tạo ra là một Table độc lập.
Câu lệnh: CREATE TABLE <TableName>(FieldName1 Ftype1(width1) [, ])
Trong đó:
• TableName - tên bảng (không chứa dấu cách).
• FieldName1 - Tên trường 1.
• Ftype1 - Kiểu trường 1 (dùng các chữ cái
đầu của kiểu trong fox để mô tả)
• With1 - độ rộng của trường. Tương tự như vậy cho trường thứ 2.
Ví dụ: CREATE TABLE Hososv(masv C(10), Hoten C(30))
Cách 2: Sử dụng Project Manager
• Trong Project Manager chọn Tab Data, chọn mục
Database và mở rộng đối tượng này (bằng cách kích
vào dấu + phía trước).
• Chọn Database cần làm việc và mở rộng đối tượng này
(bằng cách click vào dấu + phía trước), tiếp đến chọn
Tables rồi chọ
n New. Khi đó giao diện New table có
dạng như hình 5.
• Chọn New Tbale để tạo một Table trống.
• Nhập vào tên Table (file có phần mở rộng là dbf), rồi
chọn Save để ghi lại. Giao diện Table Designer:
Hình 5 - New table
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 24

• Tab Field: Phần khai báo chính cho 1 trường của bảng
Trong đó:
N
ame: Tên trường.
Type: Kiểu dữ liệu của trường.
Width:
Độ
rộng của trường.
Decimal: Số chữ số lẻ sau phần dấu chấm thập phân, phần này chỉ sử dụng
cho dữ liệu kiểu số.
Index Sắp xếp (Ascending, Descending, None)

N
ull Checked or Unchecked: cho phép hoặc không cho phép giá trị null
Format Định dạng dữ liệu hiển thị (sử dụng các ký tự qui định cho format củ
a

Foxpro - xem bảng sau)
Các kiểu dữ liệu:
Kiểu dữ liệu Diễn giải Kiểu dữ liệu Diễn giải Kiểu dữ liệu Diễn giải
C Kí tự F Float L Logic
D Ngày I Integer M Memo
T Ngày giờ B Double G General
N Số Y Tiền tệ
Hình 6 - Table Designer
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 25
Format
Code:
Description

Applies to
data of type:
! Force text to uppercase. Character only
B Left justify . All types
J Right justify. All types
I Center justify. All types
L Leading zeros. Numeric only
Z Blank if zero.
Numeric, Date,
and DateTime
( Surround negative numbers with (). Numeric only
C Appends " CR" to positive, non-zero numbers. Numeric only
X Appends " DB" to negative, non-zero numbers. Numeric only
$ Uses currency notation. Numeric only
D Use current SET DATE setting. All types
E Display as if SET DATE BRITISH was in effect. All types
YL Display using system Long Date format. Date
YS Display using system Short Date format. Date
R
Prevents non-formatting characters in the template string from
replacing the corresponding character of the field expression
value. When @R is used, the template string interleaves instead o
f

overlaying.
Character and
Numeric
Input Mask: Định dạng dữ liệu nhập (sử dụng các ký tự qui định cho Input mask của Visual
Foxpro - xem bảng sau)
cMask Description

! Converts lowercase letters to uppercase letters.
# Permit entry of digits, spaces, and signs, such as the minus sign ( – ).
$
Displays the current currency symbol, as specified by the SET CURRENCY
command, in a fixed position.
$$
Displays floating currency symbol that always appears adjacent to the digits
in a spinner or text box.
,
Displays the current digit-grouping, or separator, symbol as set by the
Regional and Language Options setting in the Windows Control Panel.
.
Displays the current decimal point character as specified by the SET POINT
command setting. (Default is a period (.))
9 Permits entry of digits and signs.
A Permits alphabetic characters only.
H Prevents entry of non-hexadecimal symbols in the specified position.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 26
L Permits logical data only.
N Permits letters and digits only.
U Permits alphabetic characters only and converts them to uppercase (A - Z).
W Permits alphabetic characters only and converts them to lowercase (a - z).
X Permits any character.
Y
Permits the letters, Y, y, N, and n for the logical values True (.T.) and False
(.F.), respectively.
• Rule: Quy tắc kiểm tra tính đúng đắn của dữ liệu nhập vào field (dữ liệu nhập vào
cho trường này phải thoả mãn quy tắc đặt ra)
• Message: Thông báo khi dữ liệu nhập không thoả mãn luật qui định với trường ở

Rule.
• Default: Giá trị mặc định cho trường dữ liệu này khi thêm mới 1 bản ghi.
• Display library, Display class: Xác định lớp gắn với
ứng trường này (ví dụ nếu kiểu
của trường này là Character - > Lớp mặc định được dùng là Textbox, Là Logic -
>Lớp mặc định được dùng là Checkbox ), người sử dụng có thể tạo ra các lớp của
riêng mình và sử dụng ở đây.
o Tab Index: Phần khai báo các index (chỉ mục) cho bảng
• Order: Ascending, Đescening
• Name: Tag name
• Type: Kiểu
type Description
Number
allowed
Primary
Được tạo trên 1 field đảm bảo chỉ một giá trị duy nhất được đưa
vào, thường sử dụng cho việc tạo khóa chính.
1/ 1 table
Candidate
Tương tự Primary key. Có thể tạo cho free table và database table Nhiều/1 table
Regular
Cho phép trùng nhau về mặt dữ liệu. Được sử dụng cho việc tạo
khóa ngoại.
Nhiều/1 table
Binary
Indexes records based on a valid and non-null logical expression. Nhiều/1 table
Unique
Nếu có nhiều record trùng nhau trên cùng field thì chỉ xuất hiện
record đầu tiên
Nhiều/1 table

• Expression: xây dựng biểu thức cho các trường index.
• Filter: xây dựng biểu thức lọc trước khi tiến hành index.
o Tab Table: Tính chất chung của bảng
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 27

Hình 7
• Name: Tên bảng, chỉ xuất hiện trong Project Manager, chiều dài tối đa là 128 kí tự.
• Database: Thuộc vào Database nào.
• Rule: Quy tắc kiểm tra dữ liệu ở mức Record.
• Message: Thông báo lỗi khi Rule không thoả mãn.
• Insert Trigger: Cho phép nhập vào 1 biểu thức, biểu thức này sẽ được tính khi xảy ra
sự kiện Insert, Update, Delete với các record. Các quy tắc này đều ở mức Table.
2. Xóa bảng dữ liệu.
• Trong Project Manager/Database Designer.
• Chọn Table cần xóa. Ch
ọn nút Remove. Chọn mục Delete.
• Để xóa Table kèm với khóa, các giá trị mặc định và các quy tắc kiểm tra dữ liệu thì
dùng lệnh Drop Table.
3. Nguyên tắc hoạt động
Chúng ta chỉ có thể truy nhập đến các phần tử của một file DBF nếu file đó đã được mở
bằng lệnh USE <tên file DBF>.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 28
Ở mỗi thời điểm bất kỳ, mỗi file DBF đang mở sẽ có một mẫu tin hiện hành, mẫu tin hiện
hành là mẫu tin có thể truy nhập vào thời điểm đó. Mẫu tin hiện hành được trỏ đến bởi
con trỏ mẫu tin (record pointer). Mỗi mẫu tin đang mở có 2 vị trí đặc biệt chú ý: đầu
file và cuối file. Đ

biết được con trỏ mẫu tin ở đầu hay ở cuối file ta dùng các hàm logic

sau:
• Hàm BOF( ) (begin of file) cho giá trị .T. nếu con trỏ mẫu tin cuối file DBF đang
mở, ngược lại hàm cho giá trị .F.
• Hàm EOF( ) (end of file) cho giá trị .T. nếu con trỏ mẫu tin cuối file DBF đang
mở, ngược lại hàm cho giá trị .F.
Số thứ tự của mẫu tin (record number - recno): mô tả số thứ tự vật lý của mẫu tin trong
tập tin cơ sở dữ liệ
u DBF. Số thứ tự này do FoxPro qui định một cách tuần tự, được
đánh số từ 1 đến mẫu tin cuối cùng. Trong khi làm việc, nếu xoá một mẫu tin thì số thứ
tự này cũng tự động được cập nhật theo cho phù hợp.
• Hàm RECOUNT( ) dùng để biết số mẫu tin của một tập tin DBF đang mở.
• Hàm RECSIZE( ) dùng để biết được kích thước của một mẫu tin.
• Hàm RECNO( ) cho biết s
ố thứ tự của mẫu tin hiện thời.
Kích thước của các mẫu tin của một file DBF đều bằng nhau.
V. CÁC LỆNH

BẢN TRÊN
F
I
L
E
DBF
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 HOTE N, 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.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 29
• 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 nêu trong
<dsách rườ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.
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.
• Để 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 nhấn tổ hợp Ctrl+W để ghi lại.
2.
Định vị con trỏ đến một bản ghi
a. Đ

nh
vị
tuyệt
đối
Cú pháp: GO <N>|[TOP]|[BOTTOM]
Chức năng: Dùng để chuyển con trỏ bản ghi đến bản ghi có số hiệu <n> được chỉ định
trong câu lệnh.
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 30

• 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>]
Chức năng: Di chuyển con trỏ bản ghi về trước (-) hay sau (+) so với bản ghi hiện hành.
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 hành một đơn vị.
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.
c. Định vị con trỏ có điều kiện
Cú pháp: LOCATE FOR <BieuThuc>
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 <BieuThuc>.
3. 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]
Bài giảng Visual FoxPro
Bộ môn Tin học – ĐHTN 31
Chức nă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 hành.
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
Ví dụ 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]
Chức năng: Hiển thị nội dung của các bản ghi như lệnh Display nhưng mặc định 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
Ví dụ 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>
Chức nă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. 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


×