Giáo trình Visual Foxpro

Khởi ñộng Visual Foxpro.

Sau khi ñã cài ñặt Visual FoxPro, ta có thể khởi ñộng nó bằng cách thực hiện file

FoxProw.exe hoặc file vfp.exe ñối với Visual Foxpro theo các cách sau:

+ Kích chuột vào biểu tượng của FoxPro hoặc Visual Foxpro trên Desktop

+ Chọn menu Start/Program, chọn Microsoft Visual Foxpro và kích chuột vào ñó.

Màn hình Visual Foxpro sau khi khởi ñộng:

Visual FoxPro có 2 chế ñộ làm việc; chế ñộ tương tác (interactive) và chế ñộ chương trình

(program).

Chế ñộ tương tác: Là chế ñộ trả lời từng câu lệnh một của người sử dụng, trong chế ñộ này có 2

hình thức ñưa câu lệnh:

* ðưa câu lệnh qua menu hệ thống (system menu).

* ðưa câu lệnh từ cửa sổ lệnh (command window).

Chế ñộ chương trình: Các câu lệnh trong cửa sổ lệnh có thể tập trung thành một file và lưu trên

ñĩa (gọi là file chương trình nguồn). Khi muốn thực hiện các lệnh trong chương trình nầy, tại

cửa sổ lệnh ñưa vào các câu lệnh: DO < tên="" chương="" trình="">

ðể thoát khỏi Visual FoxPro, tại cửa sổ lệnh sử dụng lệnh QUIT

pdf 70 trang kimcuc 9380
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Visual Foxpro", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Visual Foxpro

Giáo trình Visual Foxpro
 Mục lục 
CHƯƠNG 1: GIỚI THIỆU VỀ HỆ QUẢN TRỊ CSDL VISUAL FOXPRO 
CHƯƠNG 2: THAO TÁC VỚI BẢNG DỮ LIỆU 
CHƯƠNG 3: SẮP XẾP-TÌM KIẾM-THỐNG KÊ 
CHƯƠNG 4: LẬP TRÌNH TRÊN VISUAL FOXRO 
CHƯƠNG 5: FORMS 
CHƯƠNG 6: REPORTS 
CHƯƠNG 7: TẠO MENU VÀ QUẢN LÝ ðỀ ÁN 
 www.Updatesofts.com 2006 
Chương 1: 
GIỚI THIỆU VỀ HỆ QUẢN TRỊ CSDL VISUAL FOXPRO 
1.1 Tổng quan về FoxPro và Visual FoxPro 
1.1.1 Giới thiệu 
Foxpro là hệ quản trị cơ sở dữ liệu dùng ñể giải quyết các bài toán trong các lĩnh vực quản lý. 
FoxPro ñược thừa kế và phát triển trên phần mềm DBASE III PLUS và DBASE IV, những sản 
phẩm nổi tiếng của hãng ASTON-TATE. Khi các công cụ lập trình và các ứng dụng trên môi 
trường Windows ngày nhiều thì Microsoft cho ra ñời các phiên bản FoxPro 2.6, chạy ñược trên 
hai môi trường DOS và Windows. Visual Foxpro là sản phẩm của hãng Microsoft, nó ñược kế 
thừa từ Foxpro for Windows, là một trong những công cụ tiện lợi ñể giải quyết các bài toán 
trong lĩnh vực quản lý cho những người chuyên nghiệp và không chuyên nghiệp. Từ khi phát 
triển ñến nay, Hảng Microsoft ñã cho ra ñời nhiều phiên bản Visual Foxpro 3.0, 4.0, 5.0, 6.0. 
1.1.2 Khởi ñộng Visual Foxpro. 
Sau khi ñã cài ñặt Visual FoxPro, ta có thể khởi ñộng nó bằng cách thực hiện file 
FoxProw.exe hoặc file vfp.exe ñối với Visual Foxpro theo các cách sau: 
+ Kích chuột vào biểu tượng của FoxPro hoặc Visual Foxpro trên Desktop 
+ Chọn menu Start/Program, chọn Microsoft Visual Foxpro và kích chuột vào ñó. 
Màn hình Visual Foxpro sau khi khởi ñộng: 
 Màn hình Visual FoxPro sau khi khởi ñộng: 
1.1.3 Các chế ñộ làm việc 
Thanh Menu 
Cửa sổ lệnh 
Thanh tiêu ñề Thanh công 
Visual FoxPro có 2 chế ñộ làm việc; chế ñộ tương tác (interactive) và chế ñộ chương trình 
(program). 
Chế ñộ tương tác: Là chế ñộ trả lời từng câu lệnh một của người sử dụng, trong chế ñộ này có 2 
hình thức ñưa câu lệnh: 
* ðưa câu lệnh qua menu hệ thống (system menu). 
* ðưa câu lệnh từ cửa sổ lệnh (command window). 
Chế ñộ chương trình: Các câu lệnh trong cửa sổ lệnh có thể tập trung thành một file và lưu trên 
ñĩa (gọi là file chương trình nguồn). Khi muốn thực hiện các lệnh trong chương trình nầy, tại 
cửa sổ lệnh ñưa vào các câu lệnh: DO 
ðể thoát khỏi Visual FoxPro, tại cửa sổ lệnh sử dụng lệnh QUIT 
1.2 Các khái niệm cơ bản 
1.2.1 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, 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 số 
(numberic), kiểu chuỗi (character), kiểu ngày tháng (date), kiểu lý luận (logical), kiểu bộ nhớ 
(memo), kiểu hình ảnh (picture). 
a. Kiểu số - Numeric (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. 
b. Kiểu số - Float (F): Dùng ñể biểu diễn số là các số có dấu chấm ñộng như: 2.03e5 (2.03 x 
105), 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, ... 
c. Kiểu chuỗi - Charater (C): Chứa các số liệu là tổ hợp một số bất kỳ các ký tự ASCII 
như 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ớ). 
d. Kiểu ngày tháng - Data (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ự. 
e. Kiểu 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ự. 
f. Kiểu ghi nhớ - 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). 
g. Kiểu tổng quát - General (G): Dùng ñể chứa dữ liệu như bảng tính, âm thanh,... 
h. Kiểu hình ảnh - Ficture (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ư sự", "nhận dạng",... 
1.2.2 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: 
 Phép toán Ý nghĩa Ví dụ 
 -, + dấu âm và dương +5, -7 
 ** hay ^ luỹ thừa 5**2,5^2 
 , / nhân, chia 25, 5/7 
 % phần dư (modulo) 25%5 
 +, - cộng, trừ 10-2, 45+4 
ðộ ư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. 
 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. 
 Ví dụ: 'Trung tâm ' - ' Tin 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. 
 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. 
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 : ñể ấn ñịnh ký tự phân cách ngày tháng, năm là <bthức 
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 
Phép toán Ý nghĩa Phép toán Ý nghĩa 
 , ! khác 
 > lớn hơn <= nhỏ hơn hay bằng 
 = bằng => lớn hơn hay bằng 
 = = bằng chính xác 
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' .T. '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à: 
Nếu SET EXACT ON thì 'AB' = 'AB ' -----------> .F. 
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 ! : 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. 
1.2.3 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. 
1.2.4 Hằng 
Là ñại lượng có giá trị không ñổi trong thời gian chương trình thực hiện. Trừ kiểu dữ liệu 
memo thì mỗi kiểu dữ liệu ñều có hằng của 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. 
1.2.5 Biến 
Biến là ñại lượng dùng ñể lưu trữ dữ liệu trong quá trình tính toán. Biến có hai ñặc trưng 
chính: tên biến và giá trị của biến. Tên biến ñược ñặt theo nguyên tắc: dài không quá 10 kí tự, 
bắt ñầu phải là chữ cái hoặc dấu _ phần còn lại là tổ hợp của bất kỳ các chữ cái, chữ số hoặc dấu 
_. Tên biến không nên ñặt trùng tên các từ khoá của Visual FoxPro, tên biến có thể viết bằng 
chữ in hoa hay chữ thường. 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. 
Visual FoxPro chia biến làm 3 loại: 
a. 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. 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. 
c. 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. 
Nếu tồn hại hai biến trường và biến bộ nhớ trùng tên nhau, ñể truy nhập ñến chúng mà không 
sợ nhầm lẫn, bạn sử dụng quy cách sau cho biến bộ nhớ: 
M. hay M -> 
1.2.6 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. Chúng ta 
sẽ nghiên cứu vấn ñề nầy kỹ hơn ở chương sau. 
1.2.7 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 
sau: 
 * Trong ( ) tính trước, ngoài ( ) tính sau, 
 * Phép toán ưu tiên cao tính trước. 
 * Bên trái tính trước, bên phải tính sau. 
1.2.8 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ừ ñộ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. 
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 
1.2.9 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 . 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 thực hành chương 1 
 1. Giả sử có tập tin HSNV.DBF (có cấu trúc như ñã mô tả ở bài 1, thực hành hai) trong 
ñó có ít nhất 15 mẫu tin. 
 a. Dùng lệnh SORT ñể sắp xếp lại tập tin HSNV.DBF sang một tập tin mới 
HSNVSX.DBF theo chỉ tiêu: Các mẫu tin ñược sắp xếp theo từng ñơn vị (giảm dần), trong mỗi 
ñơn vị thứ tự tên, họ ñược sắp xếp tăng dần. 
 b. Mở tập tin HSNVSX.DBF 
 • Sử dụng lệnh LIST liệt kê các trường HOLOT, TEN, NGSINH, M_LUONG, MADV. 
 • Sử dụng lệnh USE ñể ñóng tập tin lại. 
 c. Lập 3 tập tin chỉ mục: FMASO.IDX theo trường MASONV, FDONVI.IDX theo 
trường MADV, FLUONG.IDX theo trường M_LUONG giảm dần. 
 - Bằng cách thay thế tập tin chỉ mục chủ, hãy liệt kê các mẫu tin theo MASONV tăng 
dần, theo MADV tăng dần, theo M_LUONG giảm dần. 
 2. Trong tập tin HSNV.DBF 
 a. Dùng lệnh LOCATE: 
 - Tìm người có họ tên là ‘LE VAN NAM’ (giả sử có họ tên này trong tập tin 
HSNV.DBF). Dùng lệnh DISPLAY cho hiện nội dung của mẫu tin này, rồi dùng lệnh EDIT ñể 
sửa lại. 
 - Tìm những người ở phòng Hành chính (MADV=’HC’), cho hiện ñầy ñủ thông tin của 
những người này. 
 - Tìm những người có mức lương > 310. 
b. Dùng lệnh SEEK ñể tìm kiếm người có MASONV=’TCH01’ (giả sử mã này có trong 
tập tin HSNV.DBF). Cho hiện nội dung của mẫu tin này. 
c. Cho biết ñịa chỉ của người có Họ tên là ‘HO VAN HAO’, sinh ngày 10/11/58 (bằng hai cách: 
LOCATE và SEEK). 
  
-------------------------------------------------------------------------- 
1. CHƯƠNG 2: THAO TÁC VỚI BẢNG DỮ LIỆU 
1.1. 2.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ỗ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. 
Ví dụ: bảng nhân viên (nhanvien.dbf) có cấu trúc sau: 
Fieldname Type Width Decimal 
Hoten Character 30 
Gioitinh Logic 1 
Ngaysinh Date 8 
NamLV Numberic 4 
Lylich Memo 10 
 Nội dung của NHANVIEN.DBF 
Hoten Gioitinh Ngaysinh NamLV Lylich 
Nguyen van A .T. 10/15/75 1999 Memo 
Le thi Nhan .F. 06/15/70 1995 Memo 
................ ........ .......... ......... ......... 
1.2. 2.2 FILE VÀ KIỂU FILE TRONG VISUAL FOXPRO 
2.2.1 Các kiểu file chính của Foxpro 
FoxPro có các kiểu file sau: 
*.dbf: File dữ liệu 
*.idx: File chỉ mục 
*.prg: File chương trình 
*.dbc: File cơ sở dữ liệu 
*.dll: File thư viện liến kết ñộng 
*.pjx: File dự án 
*.scx: File Form 
*.vcx: File thư viện 
2.2.2. Cách tổ chức một file dữ liệu 
a. 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 quản lý thông qua các 
thuộc tính của nó. 
b. Bản ghi (Record): Là một bộ giá trị các thuộc tính phản ánh về một ñối tượng quản lý. 
c. Tr ... i phong cách lập trình cũ, 
lập trình hướng thủ tục.Ở ñây thay vì nghĩ ñến các chức năng của chương trình ta chỉ cần nghĩ 
ñến các ñối tượng ñang tạo: là các thành phần ñộc lập của một ứng dụng cới chức năng riêng 
của nó. Mỗi một ñối tuợng ñều có một bộ thuộc tính mô tả ñối tượng; các phương thức là những 
ñoạn trình chứa trong ñiều khiển, cho ñiều khiển biết cách thức ñể thực hiện một ñoạn công việc 
nào ñó; và tập hợp những sự kiện ñó là những phản ứng của ñối tượng. 
Trong Visual Foxpro, các form và control là các ñối tượng ñược dùng ñể xây dựng các 
ứng dụng 
5.1.1. Thuộc tính của ñối tượng (Properties) 
ðể chỉ ñến một thuộc tính của ñối tượng nào ta dùng cú pháp sau: 
. 
Ví dụ: Myform.caption= “Chương trình ứng dụng” 
Các thuộc tính thông dụng: 
- Left: Vị trí cạnh trái của ñối tượng so với vật chứa nó. 
- Top: Vị trí trên của ñối tượng so với vật chứa nó. 
- Height: Chiều cao của ñối tượng. 
- Width: Chiều rộng của ñối tượng. 
- Name: Tên ñể chỉ ñối tượng. 
- Enable: Giá trị logic: 
True: có quyền làm việc. 
False: Không có quyền làm việc. 
- Visible: Giá trị logic: 
True: Thấy ñược ñối tượng; 
False: Không thấy ñược ñối tượng. 
5.1.2. Phương thức của ñối tượng (Methods) 
ðể gọi ñến phương thức của một ñối tượng, ta dùng cú pháp: 
. 
Ví dụ: Myform.show 
Một số phương thức thường dùng: 
- Refresh: Làm tươi lại ñối tượng. 
- Show: Hiện ñối tượng. 
- Hide: ẩn ñối tượng. 
- Release: Giải phóng ñối tượng. 
- SetFocus: Thiết lập “tầm ngắm” cho ñối tượng. 
5.1.3. Sự kiện của ñối tượng 
ðể chỉ ñến sự kiện của ñối tượng, ta dùng cú pháp sau: 
. 
Một số sự kiện thường dùng: 
- Click: ðược gọi khi kích chuột vào ñối tượng. 
- DbClick: ðược gọi khi kích ñúp chuột vào ñối tượng. 
- MouseMove: ðược gọi khi di chuyển chuột trên bề mặt của ñối tượng. 
- KeyPress: ðược gọi khi nhấn một phím kích chuột vào ñối tượng. 
- Got focus: ðược gọi khi ñưa ñối tượng vào tầm ngắm. 
- Lostfocus: ðược gọi khi ñưa ñối tượng ra khỏi tầm ngắm 
- Change: ðược gọi khi có sự thay ñổi nội dung dữ liệu kiểu chuỗi của ñối tượng. 
11.2. 5.2. FORM 
5.2.1. Giới thiệu 
Form ñược dùng ñể làm 
giao diện nhập, hiển thị thông 
tin, nó cung cấp một tập hợp 
các ñối tượng ñể ñáp lại những 
thao tác của người dùng làm 
cho ứng dụng ra dáng chuyên 
nghiệp. 
 Ví dụ: Giao diện của một Form nhập dữ liệu 
5.2.2. Tạo form thông qua Wizard 
Từ menu Tools, chọn wizard, chọn form, xuất hiện giao diện wizard selection, rồi thông 
qua hướng dẫn. 
5.2.3. Tạo form thông qua thiết kế 
ðể tạo form thông qua thiết kế, từ 
cửa sổ lệnh ta thực hiện lệnh sau: 
CREATE FORM 
Khi ñó ta ñược màn hình thiết kế 
form như sau: 
 a. Quản lý form 
 Lưu Form: Từ menu file, 
chọn save ñể lưu vào , mặc ñịnh phần mở rộng là scx. 
 Chạy form: Từ cửa sổ lệnh, thực hiện lệnh sau: 
DO FORM 
 ðóng form (giải phóng khỏi bộ nhớ) 
RELEASE 
 b. Tuy cập ñến các ñối tượng trên form 
+ Muốn chỉ ñến một ñối tượng nào trên form, ta dùng: 
. : nếu không cùng với form ñang thao tác. 
.: nếu ñối tượng nằm trên form ñang thao tác. 
+ Muốn thay ñổi giá trị các thuộc tính trên form, ta dùng: 
.= : nếu muốn thay ñổi 
thuộc tính của form không phải là form hiện hành. 
.=: nếu muốn thay ñổi 
các thuộc tính của form hiện hành. 
c. Các thuộc tính, phương thức, sự kiện thường dùng 
trên form. 
 Thuộc tính: 
- BackColor: Màu nền 
- BorderStyle: Dạng ñường viền 
- Caption: Tiêu ñề của form 
- FillColor: Màu ñể tô ñối tượng 
- Fontname: Font chữ cho các ñối tượng chứa văn bản 
- Fontsize: Kính thước fontname 
- Moveable: Cho phép di chuyển hay không 
................. 
 Tình huống 
- MoveMouse: ðáp ứng khi di chuyển chuột trên bề mặt form 
- Destroy: ðáp ứng khi giải phóng form 
- Load: ðáp ứng khi nạp form vào bộ nhớ 
5.3. Thanh công cụ Control Toolbar 
 Muốn ñưa ñối tượng trên thanh Control vào form: 4 bước 
- Kích chuột vào ñối tượng cần ñưa 
- Vẽ nó trên form ñể xác ñịnh vị trí 
- Thiết lập các thuộc tính thích hợp 
- Viết mã lệnh cho các tình huống tương ứng 
 Quy ước ñặt tên cho các ñối tượng 
Loại ñối tượng Tên 
Form Bắt ñầu bởi Frm 
Command Bắt ñầu bởi cmd 
Edit box Bắt ñầu bởi Edb 
Grid Bắt ñầu bởi Grd 
Image Bắt ñầu bởi Img 
Label Bắt ñầu bởi Lbl 
Textbox Bắt ñầu bởi Txt 
Timer Bắt ñầu bởi Tmr 
5.3.2. Một số ñối tượng trên Controls 
a. Label : Dùng ñể thể hiện các chuỗi trên form. 
Các thuộc tính thường dùng: 
- Caption: Chuỗi thể hiện 
- Autosize: Giá trị logic, cho phép kích thước của Label có tự ñộng chỉnh sửa theo 
ñộ dài của caption hay không. 
b. Command Bottom: Dùng ñể thể hiện các nút lệnh trên form. 
Các thuộc tính thường dùng: 
- Caption: tên xuất hiện trên nút lệnh 
- Picture: Hình xuất hiện trên nút lệnh 
- Enable: giá trị Logic, cho phép chọn nút lệnh hay không 
Các Sự kiện thường dùng: 
- Click: Khi kích chuột vào nút lệnh thì sự kiện này ñược gọi. 
c. TextBox: Dùng ñể xem, chỉnh sửa dữ liệu từ các trường trong bảng dữ liệu không phải 
kiểu memo. 
Các thuộc tính thường dùng. 
- ControlSource: Tên của trường hay biến mà giá trị của nó ñược hiện trong 
textbox 
- Value: Giá trị hiện thời của textbox. 
Sự kiện thường dùng: 
- Change: Khi có sự thay ñổi của thuộc tính value 
- KeyPress: Khi có phím bất kỳ ñược ấn. 
d. Editbox: Tương tự như textbox, ñược dùng ñể chỉnh sửa dữ liệu từ các trường memo. 
Các thuộc tính thường dùng. 
- Control Source: Tên của trường mà giá trị của nó ñược thể hiện trong editbox. 
- ScrollBars: Có hiện thanh cuộn trong khung editbox hay không. 
- ReadOnly: Cho phép có ñược chỉnh sửa nội dung hay không 
Sự kiện thường dùng: 
- Change: Khi có sự thay ñổi của thuộc tính value. 
- Keypress: Khi có phím bất kỳ ñược ấn. 
e. Images: Dùng ñể ñưa các hình ảnh trên form. 
Các thuộc tính thường dùng. 
- Picture: Xác ñịnh file hình ảnh 
- Stretch: Xác ñịnh cách thức thể hiện hình ảnh (phóng to, thu nhỏ, nguyên mẫu). 
f. Timer: Dùng ñể thiết lập các công việc thực hiện ñều ñặn sau một khoảng thời gian. 
Các thuộc tính thường dùng. 
- Enabled: Xác ñịnh xem Timer có hiệu lực hay không 
- Interval: Quy ñịnh khoảng thời gian xác ñịnh cho tình huống timer. 
Sự kiện thường dùng: 
- Timer: ðược kích hoạt ñều ñặn sau một khoảng thời gian xác ñịnh ở thuộc tính 
Interval. 
g. Grid: Dùng ñể thể hiện dữ liệu theo dạng bảng. 
Các thuộc tính thường dùng. 
- Row Source: Xác ñịnh bảng dữ liệu cần thể hiện. 
- ColumnCount: Xác ñịnh số cột của Grid. 
Chú ý: 
Nếu Row Source không ñược chỉ ra thì lấy bảng dữ liệu hiện hành. 
Nếu Column count không chỉ ra thì mặc ñịnh là tất cả các trường trong bảng 
dữ liệu (Column count=-1). 
Control Source: ðược xác ñịnh cho từng cột, dùng ñể khai báo nguốn dữ liệu 
cho cột ñó. 
- Allow Addnew: Cho phép thêm các bản ghi mới hay không. 
Chú ý: 
Muốn thay ñổi các thuộc tính trên Grid thì chuyển Grid sang dạng edit bằng cách nhấn phím 
phải chuột lên Rrid, chọn Properties. Grid ñang ở chế ñộ Edit có một ñường viền bao quanh. 
12. 5.4. Ví dụ 
Giả sử có bảng dữ liệu với cấu trúc: 
 MANV C 5 
 HOTEN C 30 
Hãy thiết kế form ñẻ xem bảng dữ liệu trên. 
Ta thiết kế form như sau 
13. Các thuộc tính chính : 
14. + TxtMANV các thuộc tính ControlSource là MANV 
15. + TxtHOTEN các thuộc tính ControlSource là HOTEN 
16. Mã lệnh của các ñối tượng trên Form là: 
 + FrmXem.load 
 use hoso 
 + CmdDau.Click 
 go top 
TxtMAN
V 
TxtHOTE
N 
CmdDa
u 
CmdTruo
c 
CmdSau CmdCuoi 
CmdThoa
t 
FrmXem 
 thisform.refresh 
+ CmdCuoi.Click 
 go bottom 
 thisform.refresh 
 + CmdTruoc.Click 
if not bof() 
 skip -1 
endif 
thisform.refresh 
+ CmdSau.Click 
if not eof() 
 skip 
endif 
thisform.refresh 
 + CmdThoat.Click 
 use 
 thisform.release 
  
17. CHƯƠNG 6 REPORTS 
17.1. 6.1. KHÁI NIM 
Reports là công cụ ñể trình bày và tóm tắt dữ liệu trong một văn bản khi in. Report có hai 
thành phần cơ bản cấu thành: dữ liệu nguồn, thông thường là các bảng dữ liệu và hình thức trình 
bày là dạng thức của report sẽ ñịnh dạng cách kết xuất dữ liệu. 
Màn hình thiết kế Report 
17.2. 6.2. CÁC BC ð( T)O REPORT 
Ta có thể thiết kế report ñể thể hiện dữ liệu ở nhiều dạng thức khác nhau trên giấy khi in. 
Quá trình thiết kế gồm 4 bước chính như sau: 
1. Xác ñịnh loại Report cần tạo: Tức là quyết ñịnh chọn dạng thức mà report hiển thị kết 
quả. 
2. Tạo Report layout: Có thể sử dụng report wizard hay report designer. Report layout 
ñược lưu trên ñĩa với phần mở rộng của file là FRX: Lưu trử chi tiết của report. 
3. Sửa ñổi layout của report. 
4. Xem và in report. 
17.3. 6.3. T)O REPORT B+NG WIZARD. 
Từ menu Tools, chọn Wizard, chọn Report sau ñó làm theo các bước hướng dẫn. 
Bước 1: Chọn bảng dữ liệu và các trường cần thể hiện 
Bước 2: Tạo nhóm dữ liệu kết xuất 
Bước 3: Chọn kiểu Report thể hiện 
Bước 4: Chọn cách trình bày trên giấy in 
Bước 5: Chọn trường Sắp xếp 
Bước 6: ðặt tựa ñề, kết thúc 
17.4. 6.4. TẠO REPORT BẰNG REPORT DESIGNER 
6.4.1. Quản lý Report 
 Tạo mới Report: CREATE REPORT 
Ví dụ: create report THU 
Lúc này màn hình xuất hiện hộp thoại report 
 Mở một report sẵn có: MODIFY 
 Xem trước khi in: REPORT FORM PREVIEW 
 Xem trước khi in có ñiều kiện: 
REPORT FORM PREVIEW 
 In report: REPORT FORM TO PRINTER 
6.4.2. Các thành phần trên Report 
 Title: Dùng ñể in trên mỗi report: Từ menu report, chọn title summary 
 Page Header: ðể in trên mỗi header của mỗi trang in. 
 Column header: ðể in tên header của mỗi cột. ðể chọn, từ menu file chọn page setup, 
chọn giá trị cho column number lớn hơn 1. 
 Group header: Xuất hiện mỗi khi bắt ñầu nhóm mới. ðể chọn, từ menu report chọn data 
grouping. 
 Detail: phần chi tiết trên mỗi record (ứng với từng record trên bảng dữ liệu). 
 Group footer: In phần Footer của mỗi nhóm. ðể chọn, từ menu report chọn data 
grouping. 
abl
 Column footer: In phần Footer của mỗi cột. ðể chọn, từ menu file, chọn page setup, chọn 
giá trị cho column nimber lớn hơn 1. 
 Page Footer: In phần Footer của mỗi trang. 
 Sumary: Phần tốm tắt của mỗi report. 
6.4.3. Các control trên Report 
 Thanh công cụ Report Control 
Chức năng của các control: 
Field trong bàng dữ liệu, biến và các biểuthức toán Field 
Text thuần tuý Label 
ðường kẻ Line 
Hộp và ñồng khung Rectangle 
Hình tròn, elip Rounded Rectangle 
Hình ảnh hoặc field General Picture 
6.4.4. ðưa các control vào report 
Thực hiện các bước sau: 
+ Chọn control thích hợp 
+ Kéo rê chuột trên report ñể xác ñịnh vị trí của nó trên report 
+ Hiệu chỉnh các control 
a. ðưa field vào report: 
 + Kích chuột vào 
+ Trong hộp report Expression, chọn nút lệnh sau hộp Expression. 
+ Trong hộp field, hcọn tên trường hay biến thích hợp. 
+ Chọn OK. 
A
b. ðưa label vào report: 
 + Chọn 
+ Gỏ nội dung của label 
c. ðưa Picture bound control vào report: 
+ Chọn picture bound control 
+ Xuất hiện hộp hội thoại report picture, chọn file, nếu muốn chèn hình ảnh từ file, 
chọn field nếu muốn chọn trường General. 
+ Chọn Ok 
6.5. Ví dụ Thiết kế Report như sau (dựa vào Bảng CANBO.DBF ở bài tập 2): 
  
iif(GIOI_TINH=".T.", "nam" iif(COGIADINH=".F.", 
18. CHƯƠNG 7. TẠO MENU VÀ QUẢN LÝ ðỀ ÁN 
18.1. 7.1. TẠO MENU 
18.2. 7.1.1. GIỚI THIỆU 
Menu cung cấp một phương thức có cấu trúc và giao diện với người dùng ñể tác ñộng lên 
những câu lệnh trong ứng dụng. 
Việc sắp xếp và thiết kế menu thích hợp sẽ giúp cho người dùng ñược thuận lợi khi sử 
dụng hệ thống menu của bạn. 
18.3. 7.1.2. CÁC BƯỚC TẠI MỘT MENU HỆ THỐNG 
1. Sắp xếp và thiết kế: Quyết ñịnh menu nào bạn cần chúng xuất hiện ở vị trí nào trên 
màn hình, cần những menu con nào? 
2. Sử dụng menu designer, tạo menu và các Submenu. 
3. Gắn các câu lệnh tương ứng với công việc. 
4. Biên dịch menu 
5. Tiến hành chạy thử, kiểm tra. 
18.4. 7.1.3. TẠO MENU HỆ THỐNG 
7.1.3.1. Quản lý menu hệ thống 
 Menu hệ thống ñược lưu trử tên ñĩa với file có phần mở rộng là *.MNX 
 Tạo menu bằng công cụ Designer Menu: Thực hiện lệnh: 
CREATE MENU ↵ 
 Mở menu ñã có: MODIFY MENU 
 Dịch file Menu: ðể dịch file menu, từ màn hình Menu Designer chọn lệnh Generate. 
File menu sau khi dịch sẽ có phần mở rộng là MPR. 
7.1.3.2. Tạo menu hệ thống thông qua Menu Designer 
 Sau khi thực hiện lệnh Create menu, ta ñược màn hình giao diện Menu: Designer như 
sau: 
+ Trong hộp Prompt, ta ñưa vào tên cần hiển thị trên giao diện. 
+ Trong hộp Result, chọn: 
- Submenu nếu muốn tạo menu con. 
- Procedure nếu muốn thi hành thủ tục 
- Command nu mun thc hin mt lnh. 
+ Kết thúc, ấn Ctrl_W. 
18.5. 7.2.QUẢN LÝ ðỀ ÁN 
18.6. 7.2.1. KHÁI NIỆM ðỀ ÁN 
ðề án là tên gọi ñể chỉ ñến ứng dụng mà bạn ñang xây dựng. Thông thường các thành 
phần của một ñề án bao gồm: 
+ Các bảng dữ liệu (table). 
+ Các file cơ sở dữ liệu (database) 
+ Các form 
+ Các report 
+ Các query 
+ Các file khác như âm thanh, hình ảnh, tài liệu, hình ảnh con trỏ,... 
18.7. 7.2.2. QUẢN LÝ ðỀ ÁN 
Một ñề án trong Visual Foxpro ñược lưu trử trên file có phần mở rộng mặc ñịnh là *.PRJ. 
7.2.2.1. Tạo mới các ñề án 
Thực hiện lệnh: CREATE PROJECT 
Lúc này xuất hiện cửa sổ quản lý ñề án Project Manager như ở trên. 
+ 
Database: Bao gồm các: 
Table: Các bảng dữ liệu có liên kết với nhau hay các bảng tự do. 
Query: Là cấu trúc ñể lấy thông tin từ các bảng table. 
View: Là các Query chuyên dụng mà ta có thể truy xuất dữ liệu cục bộ và từ xa 
cho phép cập nhật các nguồn dữ liệu bằng cách làm thay ñổ Report bởi 
quyre. 
+ Documents: Chứa các tài liệu sử dụng cho ñề án; bao gồm các form và report. 
+ Class: Liệt kê các thư viện ñược sử dụng. 
+ Code: và những file khác: Liệt kê các file chương trình và các file khác ñược sử dụng 
trong chương trình. 
ðể chỉnh sửa bất kỳ một thành phần nào trong ñề án ta chọn nó rồi chọn nút Modify. 
ðể thêm bất kỳ một file nào cho ñề án ta kích nút add (nếu chọn file ñã có) hoặc nút new 
(nếu tạo mới). 
Muốn loại bỏ bất kỳ một thành phần nào của ñề án ta chọn nó rồi chọn nút remove. 
7.2.2.2. Mở một ñề án ñã có 
Thực hiện lệnh: MODIFY PROJECT 
7.2.2.3. Dịch ñề án 
+ Dịch sang APP: Khi này, ñể chọn ñề án phải có một bản sao của Visual Foxpro. 
Dùng lệnh BUILD 
+ Dịch sang file có phần mở rộng là exe: Khi này, người dùng không cần có Visual 
Foxpro nhưng phải cung cấp hai file: vfp6r.dll và vfp6renu.dll ñược cài ñặt trong ñường dẫn 
hoặc trong cùng thư mục với ứng dụng. 
Dùng lệnh: BUILD EXE 
7.2.2.4. Chạy ñề án 
 Sau khi ñã dịch, ta có thể chạy ñề án thông qua lệnh: DO 
18.8. 7.2.3. ðẶT STARTING POINT CHO ðỀ ÁN 
Khi ứng dụng ñược thi hành, có một ñiểm bắt ñầu, ñó là Starting point. 
ðể chọn một thành phần của dự án là Starting point: 
+ Chọn thành phần ñược ñặt là Starting point. 
+ Từ Menu Project, chọn Set main. 
Thông thường, Starting point là một chương trình khởi ñộng chứa các thành phần: 
Do setup.prg 
Do mainmenu.mpr 
Read Events 
Do cleanup.prg 
a. Do Setup.prg: L thc hin chng trình  thit lp môi trng cho h thng. 
b. Do mainmenu.mpr: Chạy file menu chính ñể thiết lập giao diện cho hệ thống. 
c. Read Events: Bắt ñầu thực hiện vòng lặp ñể thực hiện công việc. 
d. Do cleanup.prg: Chạy chương trình dọn dẹp môi trường, trả lại môi trường cho hệ thống và 
thoát khỏi hệ thống. ổ ñây, phải có lệnh Clear Events ñể thoát khỏi vòng lặp ñã ñược thiết lập 
bới lệnh Read Events. 
  

File đính kèm:

  • pdfgiao_trinh_visual_foxpro.pdf