Bài giảng Visual FoxPro

MỤC LỤC
MỤC LỤC...........................................................................................................................................1 CHƯƠNG I: GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU VS FOXPRO...................................4 BÀI 1: GIỚI THIỆU...........................................................................................................................4 I. Hệ quản trị csdl............................................................................................................................4 II. Mô hình dữ liệu quan hệ.............................................................................................................4 III. Bài toán quản lý........................................................................................................................4 BÀI 2: TỔNG QUAN VỀ FOXPRO VÀ VISUAL FOXPRO...........................................................6 I. Giới thiệu.....................................................................................................................................6 II. Khởi động Visual Foxpro...........................................................................................................6 III. Thoát khỏi VS FoxPro:.............................................................................................................6 CHƯƠNG II: XÂY DỰNG PROJECT VÀ CƠ SỞ DỮ LIỆU..........................................................8 BÀI 1: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ..............................................................8 I. Từ khóa, kí hiệu, Lệnh.................................................................................................................8 II. Từ khóa (Key Word): ................................................................................................................8 III. Kí hiệu comment: .....................................................................................................................8 IV. Lệnh của Visual Foxpro............................................................................................................8 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. 8 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.................................................................................................................................................8 V. Một số lệnh trực tiếp của Visual Foxpro ...................................................................................8 VI. Kiểu dữ liệu...............................................................................................................................9 VII. Charater (C):............................................................................................................................9 VIII. Date and DateTime................................................................................................................9 IX. Currency..................................................................................................................................10 X. Logic........................................................................................................................................10 XI. Numeric..................................................................................................................................10 XII. Memo.....................................................................................................................................10 XIII. General.................................................................................................................................10 XIV. Các phép toán.......................................................................................................................10 XV. Toán hạng..............................................................................................................................13 XVI. Hằng.....................................................................................................................................13 XVII. Biến.....................................................................................................................................13 XVIII. Hàm...................................................................................................................................14 XIX. Biểu thức..............................................................................................................................16 XX. Từ khoá..................................................................................................................................16 XXI. Lệnh và chương trình..........................................................................................................17 BÀI 2: XÂY DỰNG PROJECT........................................................................................................18 I. Tạo mới một Project..................................................................................................................18 XXII. Cửa sổ Project (Project Manager).......................................................................................18 BÀI 3: XÂY DỰNG DATABASE VÀ CÁC TABLES...................................................................20 I. Giới thiệu...................................................................................................................................20 XXIII. Tạo Database.....................................................................................................................20 XXIV. Bảng dữ liệu (Table).........................................................................................................22 XXV. Tạo bảng.............................................................................................................................24 XXVI. CÁC LỆNH CƠ BẢN TRÊN FILE DBF.........................................................................30 Bộ môn Tin học – ĐHTN 1

Bài giảng Visual FoxPro XXVII. Thao tác với cấu trúc bảng...............................................................................................37 Xem cấu trúc bảng......................................................................................................................37 Sửa cấu trúc bảng:........................................................................................................................37 Sao chép bảng..............................................................................................................................38 CHƯƠNG III: SẮP XẾP, TÌM KIẾM, THỐNG KÊ........................................................................39 I. Sắp xếp.......................................................................................................................................39 1. Sắp xếp theo chỉ mục................................................................................................................39 2. Lập chỉ mục IDX cho bảng dữ liệu...........................................................................................40 3. Một số lệnh liên quan................................................................................................................41 XXVIII. Tìm kiếm........................................................................................................................41 Tìm kiếm tuần tự..........................................................................................................................41 Tìm kiếm sau khi đã lập chỉ mục.................................................................................................41 XXIX. THỐNG KÊ.....................................................................................................................42 Đếm số lượng bản ghi..................................................................................................................42 Tính tổng giá trị các trường kiểu số.............................................................................................42 Tính trung bình cộng các trường kiểu số.....................................................................................43 Tính tổng các trường số theo nhóm.............................................................................................43 XXX. Sắp xếp...............................................................................................................................44 XXXI. Lọc....................................................................................................................................45 XXXII. Làm việc với nhiều bảng.................................................................................................46 Vùng làm việc..............................................................................................................................46 Liên kết giữa các bảng.................................................................................................................46 Một số hàm và lệnh khác.............................................................................................................47 Một số hàm...................................................................................................................................47 Một số lệnh khác..........................................................................................................................47 Một số hàm thông dụng...............................................................................................................47 CHƯƠNG IV: QUERIES VÀ VIEWS.............................................................................................49 I. Thiết lập quan hệ giữa các bảng................................................................................................49 XXXIII. Tạo các queries...............................................................................................................53 CHƯƠNG V: LẬP TRÌNH TRÊN VISUAL FOXPRO...................................................................62 I. Chương trình..............................................................................................................................62 II. Soạn thảo chương trình.............................................................................................................62 XXXIV. Các thủ tục và hàm do người sử dụng tự tạo..................................................................63 XXXV. Biến nhớ..........................................................................................................................64 XXXVI. Các cấu trúc điều khiển chương trình............................................................................65 I. Khái niệm lập trình hướng đối tượng........................................................................................73 XXXVII. Lập trình trên Windows................................................................................................73 XXXVIII. FORM..........................................................................................................................74 1. Quản lý form.............................................................................................................................74 2. Truy cập đến các đối tượng trên form.......................................................................................74 3. Thuộc tính của đối tượng (Properties)......................................................................................75 4. Phương thức của đối tượng (Methods)....................................................................................75 5. Sự kiện của đối tượng...............................................................................................................76 6. Tạo form thông qua Wizard......................................................................................................76 7. Tạo form thông qua thiết kế......................................................................................................79 8. Một số thuộc tính của FORM...................................................................................................80 9. Một số sự kiện (Event) thường sử dụng của Form....................................................................82 10. Một số phương thức (Methods) thường sử dụng của Form....................................................84 XXXIX. Data Environment..........................................................................................................84 Bộ môn Tin học – ĐHTN 2

Bài giảng Visual FoxPro XL. Tạo giao diện Single – Multiple Document...........................................................................86 XLI. Form set................................................................................................................................86 XLII. Sử dụng Control..................................................................................................................86 CHƯƠNG VII: REPORT..................................................................................................................97 XLIII. Khái niệm...........................................................................................................................97 XLIV. Tạo Report bằng Wizard...................................................................................................97 XLV. Tạo Report bằng REPORT DESIGNER............................................................................98 XLVI. Các control trên Report...................................................................................................100 I. TẠO MENU............................................................................................................................102 XLVII. Tạo menu hệ thống.........................................................................................................102 XLVIII. Tạo menu hệ thống thông qua Menu Designer.............................................................102 XLIX. Quản lý đề án...................................................................................................................103

Bộ môn Tin học – ĐHTN

3

tổ chức. Đảm bảo tính an toàn. • Oracle: Phát triển bởi Oracle. được sử dụng chủ yếu cho các ứng dụng Web. là hệ CSDL dùng cho các tổ chức. Các Hệ quản trị csdl thường dùng hiện nay: • SQL Server: Phát triển bởi Microsoft. III. là hệ CSDL dùng cho các tổ chức. • Quan hệ giữa các bảng (Relationship): Là cách thức mô tả một đối tượng lớn hơn từ những đối tượng nhỏ.trường (Field) và các dòng . doanh nghiệp vừa và nhỏ. Access: Phát triển bởi Microsoft. bảo mật. môn học .) thông qua các bảng (Table). mỗi bảng lại được mô tả qua các trường dữ liệu. an toàn là không cao. khai thác dữ liệu. Những bài toán quản lý có thể kể đến như: Bộ môn Tin học – ĐHTN 4 . quản lý dữ liệu. thậm chí với cả một số cá nhân. • Bản ghi (Record): Tập các giá trị cụ thể của các trường của cùng 1 đối tượng. tính bảo mật.Bài giảng Visual FoxPro CHƯƠNG I: GIỚI THIỆU HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU VS FOXPRO BÀI 1: GIỚI THIỆU I. doanh nghiệp lớn. (Được đánh giá là mạnh hơn SQL verver và thực tế giá phần mền này cũng đắt hơn SQL Server). Hệ quản trị csdl Hệ quản trị cơ sở dữ liệu (Database Management System) là một hệ thống phần mềm máy tính được thiết kế chuyên biệt cho bài toán quản lý. Hệ quản trị CSDL cung cấp 2 tính năng chính sau: • • Lưu trữ. Công cụ truy cập.. • Bảng (Table): Mô tả qua các cột . bảo mật. có khả năng triển khai trên mạng. II. hàng hóa.. Khả năng đáp ứng trên mạng cao.Bản ghi (Record) (ví dụ) (Mỗi bảng có thể hiểu như một [quan hệ]) • Trường (Field): Mô tả 1 thuộc tính nào đó của đối tượng thông qua tên trường (Field name). là hệ CSDL dùng cho các tổ chức. Mô hình dữ liệu quan hệ Trong mô hình này người ta mô tả các [đối tượng] (như con người. kiểu (Type) và độ rộng (Width). • MySQL: Hệ CSDL mã nguồn mở. Bài toán quản lý Bài toán quản lý có ở hầu hết mọi đơn vị. Mô hình dữ liệu của các hệ quản trị csdl là mô hình quan hệ. Khả năng đáp ứng trên mạng cao. • Foxpro. doanh nghiệp lớn. Đảm bảo tính an toàn.

Đặc điểm chung của những bài toán này: • Không cần sử dụng những thuật toán phức tạp mà yêu cầu chủ yếu là: Thống kê.. tìm kiếm.. Quản lý kế toán.. Quản lý sinh viên. Quản lý lương. điểm. • Khối lượng dữ liệu thường là rất lớn.Bài giảng Visual FoxPro • • • • • • Quản lý nhân sự. Quản lý hàng hóa. lọc thông tin. Quản lý sách. lọc -> mất rất nhiều thời gian và không chính xác) Bộ môn Tin học – ĐHTN 5 . Đặc điểm này thực sự là một thách thức lớn nếu chúng ta phải quản lý thủ công (việc tìm kiếm. thống kê. • .

Hãng Microsoft đã cho ra đời nhiều phiên bản Visual Foxpro 3.Bài giảng Visual FoxPro BÀI 2: TỔNG QUAN VỀ FOXPRO VÀ VISUAL FOXPRO I. Bộ môn Tin học – ĐHTN 6 . 5. 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. nó được kế thừa từ Foxpro for Windows. 6. Thoát khỏi VS FoxPro: . Visual Foxpro là sản phẩm của hãng Microsoft. ta có thể khởi động nó bằng cách thực hiện: • • C1: Start/Progam/Microsoft studio/ Microsoft Visual Foxpro C2: Click chuột vào biểu tượng của FoxPro hoặc Visual Foxpro trên Desktop Màn hình Visual Foxpro sau khi khởi động: III. Khởi động Visual Foxpro. II.C1: Từ cửa sổ Command. Sau khi đã cài đặt Visual FoxPro.0. Từ khi phát triển đến nay.6.0.0. chạy được trên hai môi trường DOS và Windows. FoxPro được thừa kế và phát triển trên phần mềm DBASE III PLUS và DBASE IV.0. 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ý. 4. những sản phẩm nổi tiếng của hãng ASTON-TATE.C2: Menu File/ Quit. gõ lệnh: Quit . 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.

• Công cụ trực quan cho phép thiết kế giao diện được nhanh chóng.Project manager đem lại một cách nhìn tổng quan. • Công cụ Report Designer tiện dụng. hiệu quả trong việc phát triển một ứng dụng nào đó.Bài giảng Visual FoxPro III. Những nét đặc trưng cơ bản • Công cụ quản lý ứng dụng . cho phép tạo ra nhiều report đa dạng. đẹp. • Công cụ tool tip trong Visual Foxpro 7.0 trợ giúp nhanh và hữu hiệu với việc lập trình. Bộ môn Tin học – ĐHTN 7 .

III. Lệnh II. Tham khảo tài liệu về tất cả các khóa của Visual Foxpro. Một số lệnh trực tiếp của Visual Foxpro 1. 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á đó. chữ thường). kí hiệu. 3. Các lệnh trực tiếp cũng thực hiện được trong chương trình. Bộ môn Tin học – ĐHTN 8 . Và người dùng không được phép đặt tên trùng với từ khóa.Bài giảng Visual FoxPro CHƯƠNG II: XÂY DỰNG PROJECT VÀ CƠ SỞ DỮ LIỆU BÀI 1: CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ I. ?? -> In kết quả lên màn hình QUIT -> Thoát khỏi foxpro CLEAR -> Xoá màn hình SET DEFAULT TO <Path> -> Thiết lập đường dẫn mặc định SET DATE <FRENCH | AMERICA> -> Thiết lập ngày tháng V. • Các lệnh chỉ thực hiện trong chương trình. ví dụ từ khoá CREATE có thể chỉ cần viết Crea (Visual Foxpro không phân biệt chữ hoa.Các tham số trong lệnh của fox có thể có. Cấu trúc lệnh trực tiếp của Foxpro có dạng: Trong đó: <Động từ> [Các tham số] ↵ <Động từ> . 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 && IV. Lệnh ?. 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. 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) . Từ khóa (Key Word): Là các từ mà Visual Foxpro đã sử dụng cho một mục đích nào đó. hoặc có thể có nhiều.Động từ tiếng anh (tương ứng với công việc cần làm). Từ khóa. 2. 4. 5.gọi là Lệnh trực tiếp. có thể không. [Tham số] .

. Độ dài cố định của dữ liệu kiểu ngày là 8 ký tự. • Hằng Date và DateTime: {^yyyy-mm-dd [hh[:mm[:ss]][alp]]}. ngược lại ->FALSE) VIII. Kiểu dữ liệu Đối tượng xử lý của V. họ hoặc là số nhưng không có nhu cầu tính toán như số chứng minh. giờ dùng 8 bytes để lưu trữ. = …. số phòng. {^2005-12-10 10:20:25} • Các phép toán: • Ngày + Số • Số + Ngày • Ngày . A->Z. các kiểu chỉ dùng cho các trường của bảng gồm có: Memo (Văn bản).ảnh). Date và DateTime (Ngày. • Date and DateTime Date (D): Dùng cho những số liệu dạng ngày tháng như ngày sinh.-. VII. ngày đến.. V.. Currency (Tiền tệ). Các kiểu dữ liệu trong Visual Foxpro gồm có: Character (Xâu kí tự). địa chỉ. /.. ‘Việt nam’ hoặc [Visual Fox] Các phép toán: • +: Nối chuỗi 2 vào chuổi 1. tuỳ theo tính chất. để quản lý và khai thác tốt các dữ liệu này. • Kiểu ngày. Logic. Hằng xâu kí tự: Đặt trong dấu “”.… 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ớ). Ví dụ: tên.Số • Ngày . tuỳ theo yêu cầu của người lập trình. 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. ví dụ “Hà nội”. • -: Nối 2 chuỗi nhưng huỷ bỏ các khoảng trắng trước và sau mỗi 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.. 0 ->9 và một số các ký tự khác như +.Bài giảng Visual FoxPro VI. đó 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. hoặc []. ‘’..FOXPRO phải chia dữ liệu thành nhiều kiểu dữ liệu khác nhau. Là xâu ký tự a->z.*.Ngày Tương tự cho ngày giờ = Ngày = Ngày = Ngày = Số Bộ môn Tin học – ĐHTN 9 . FOXPRO là dữ liệu. • $: Chứa ở trong (st1$st2 – st1 có trong st2 ->TRUE. Numeric (Số). giờ). ví dụ: {^2005-1210}. General (Tổng hợp .. dd-mm-yyyy.

. ..F... tập giá trị là Đúng hoặc Sai • Hằng Logic: .FPT (FoxPro Text). ->TRUE đúng (hoặc .7 . 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ự. • Kiểu số. X.. • 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.. . • Numeric 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.. thường được dùng trong các chương trình "quản lý nhân sự". Độ dài khai báo là 10 nhưng nội dung thực sự của kiểu ghi nhớ là tuỳ ý. ^ (mũ). Phép toán số học: được thực hiện trên các dữ liệu kiểu số. • Hằng số: 10. 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.Ficture (P): Dữ liệu lưu dưới dạng hình ảnh .03e5 (2.f.T. 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ố đó.t. • Các phép toán: +... • Float (F): Dùng để biểu diễn số là các số có dấu chấm động như: 2. dùng tối đa 20 byte. lý kịch.) • Các phép toán: NOT. Kiểu này cho phép lưu 1 đối tượng bất kỳ như file văn bản. ->FALSE sai (hoặc . % (chia lấy phần dư) XII.03 x105). General • Kiểu kí ức.. AND. 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à . XIV. gồm các phép toán: Bộ môn Tin học – ĐHTN 10 . file word. XIII..Độ dài cố định của dữ liệu kiểu lý luận là 1 ký tự. file ảnh và thường được sử dụng để lưu trữ file ảnh.BMP. "nhận dạng". /.. ... file excel. Mỗi dữ liệu kiểu số chiếm tối đa 20 chữ số gồm cả phần nguyên. XI. dùng 4 byte để ánh xạ đến 1 file khác có phần mở rộng là fpt.. . • Kiểu hình ảnh . 20. phần thập phân và dấu chấm thập phân.. quản lý. 15. Các phép toán a. . OR. • Kiểu logíc.). quá trình công tác. Kiểu này thường ít được sử dụng. như khen thưởng.Bài giảng Visual FoxPro IX. *. đối tượng ưu tiên.

Ví dụ: {01/08/2003}+ 10 -------> {11/08/2003} {01/08/2003}. kết quả của phép toán là một dữ liệu kiểu chuỗi. b.{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.{05/09/2003} -------> . Phép toán ghép nối (+): dùng để ghép 2 chuỗi cạnh nhau. 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} .T.F. o Ví dụ: 'Trung tâm ' . Kết quả của phép toán có kiểu logic. o Ví dụ: 'ab' $ "ABab" cho giá trị . Phép toán chuỗi: Dùng để xử lý các dữ liệu kiểu chuỗi.' 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.20 -------> {12/07/2003} Chú ý: Hai dữ liệu kiểu ngày không thể cộng (+) cho nhau. Bộ môn Tin học – ĐHTN 11 . nhưng 'ab $ "AaBb" cho giá trị . • c.35 {01/08/2003} . 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. Một số không thể trừ (-) với một dữ liệu kiểu ngày. 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.Bài giảng Visual FoxPro Độ ưu tiên các phép toán theo thứ tự đã nêu ở trên.

d. Phép toán logic: Visual FoxPro có 3 phép toán logic: NOT. AND. (3) Lệnh SET MARK TO <bthức C>: để ấn định ký tự phân cách ngày tháng. Visual FoxPro quy ước: .T. • • 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ố. Trong kiểu logic. tháng (M). • 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 SET CENTURY ON thì năm được biểu diễn theo dạng bốn con số.T. • Trường hợp hai chuỗi có độ dài khác nhau. Ví dụ: 'ABCD' < 'ABCE' -----------> .F. thì việc so sánh dựa vào việc thiết lập môi trường SET EXACT ON/OFF. 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. Bộ môn Tin học – ĐHTN 12 . (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ố.<. 'a' < 'A' ------------> . 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. (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. 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. nghĩa là: o Nếu SET EXACT ON thì 'AB' = 'AB ' -----------> . nếu bằng nhau thì so sánh tiếp.F.Bài giảng Visual FoxPro Việc diễn tả thứ tự ngày (D). 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.F. OR NOT hay ! phủ định của toán hạng theo sau. : e.T. o Nếu SET EXACT OFF thì 'ABCD' = 'AB' -----------> . nếu SET CENTURY OFF (dạng mặc định) thì năm được biểu diễn theo dạng hai con số.

• OR : cho giá trị .4.. Ví dụ: "abc".F. Có tên bắt đầu bằng dấu gạch nối ( _ ) thường được sử dụng trong vấn đề in o Bộ môn Tin học – ĐHTN 13 .T. Khai báo hằng: Visual Foxpro dùng từ khoá #DEFINE <Tênhằng> <Giá trị> để khai báo hằng..' hoặc [. Trừ kiểu dữ liệu memo thì mỗi kiểu dữ liệu đều có hằng của nó.} Ví dụ: {01/01/96}. Biến • Là đại lượng lưu trữ dữ liệu trong bộ nhớ. khi không sử dụng nữa có thể giải phóng để tiết kiệm bộ nhớ. 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.T.5.. kiểu và phạn vi tác động của nó. Ví dụ: hsl = 3.. XVII.c là các toán hạng.. được xác định qua tên biến. '123'. Toán hạng Toán hạng là các dữ liệu tham gia vào các phép toán..F. • • Hằng kiểu ngày: phải được đặt trong cặp dấu {.. XV. o Visual FoxPro chia biến làm 3 loại: o Biến bộ nhớ: Gọi chung là biến. 100. do người sử dụng tạo ra trong bộ nhớ. nếu cả hai toán hạng đều ." hoặc '. 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. và .... có độ dài tối đa không quá 253 kí tự.4*a*c thì b. chữ số. Visual FoxPro hiểu kiểu của biến là kiểu của giá trị mà nó đang mang. XVI. Hằng cũng được xác định qua tên. Hằng logic: chỉ có 2 giá trị . Hằng kiểu số: như -2.F. Kiểu của biến trong Visual Foxpro có thể thay đổi.. Số lượng tối đa của biến được phép sử dụng là 2048 biến. o Kiểu: Các kiểu dữ liệu kể trên trừ kiểu General.a.].. 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ự. nếu cả hai toán hạng đều .14 Hằng kiểu chuỗi: hằng loại nầy phải để trong hai dấu ". {}: ngày rỗng. có thể dùng các chữ cáI. 4.. Ví dụ: del=b^2 ...12 ngaysinh = {01/01/88} Biến hệ thống: Được tạo ra ngay từ khi khởi động Visual FoxPro.2. 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á).T. tổng hợp'.Bài giảng Visual FoxPro • AND : cho giá trị .

Ví dụ RELEASE a. chương trình con 1 và chương trình con 2. 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. Visual Foxpro dùng lệnh RELEASE <tenbien> để xoá bỏ các biến. nó chỉ có ý nghĩa khi tập tin chứa nó được mở ra để sử dụng. người sử dụng không thể giải phóng biến loại này. 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 đó. o Biến trường: Tên các trường trong tập tin CSDL . Biến B có tác động trong chương trình con 1. 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ớ. Bộ môn Tin học – ĐHTN 14 . • Phạm vi tác động của biến phụ thuộc vào vị trí mà nó được khai báo. • 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. kiểu là số -> Tạo ra biến monhoc. 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).Bài giảng Visual FoxPro ấn. Biến C chỉ có tác động trong chương trình con 2. 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. RELEASE monhoc. Ví dụ o a=150 o STORE ”Visual Foxpro“ TO monhoc -> Tạo ra biến có tên là a. XVIII. 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.

4. 1. 3. 2. Hàm xâu kí tự 1. 3. LTRIM(st). 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. RAT(st1. 4. UPPER(st) ASC(ch).n).Bài giảng Visual FoxPro Các hàm này thường cho ra một giá trị. 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ố.p. ABS(ex) INT(ex) ROUND(ex. LEN(st) 8. 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. ALLTRIM(st). Sqrt(x): căn bậc 2 của x. 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ả. Hàm Date và DateTime 1. 3. 7. STR(ex) 2.2). RTRIM(st) LEFT(st.n) VAL(st) Bộ môn Tin học – ĐHTN 15 . Hàm số 1.n). 2. SUBSTRING(st. DTOC(d) 7. Ví dụ: Date ( ): cho biết ngày tháng năm hệ thống. CHR(n) 6. 5. 2. Trong phần này sẽ giới thiệu một số hàm do Visual Foxpro cung cấp. RIGHT(st. 4.n) LOWER(st).n) AT(st1. 5. DATE() DATETIME() TIME() CTOD(st) DAY(d) MONTH(d) YEAR(d) 3.st2. các đối số này đặt cách nhau bởi dấu phẩy.st2. Về hình thức. 6.

<. bên phải tính sau.. Từ khoá Từ khoá là những từ được Visual FoxPro sử dụng vào một mục đích riêng.<=. Một biểu thức có thể rất phức tạp. dương Luỹ thừa Nhân. 3.Bài giảng Visual FoxPro 4.>=. D. 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. phép toán. Các phép số học: o o o o o Dấu âm. Bộ môn Tin học – ĐHTN 16 . 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ố>] . biến. trừ 2.<> 4. L. Thông thường từ khoá là những động từ của lệnh thực hiện... hàm. 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 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 XIX. Sau khi tính toán biểu thức sẽ cho một trị duy nhất. XX. C. chía Phần dư Cộng. Các phép quan hệ: =. Bên trái tính trước. 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. 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. Các phép chuỗi: +. người sử dụng không được đặt tên trùng với các từ khoá này.>. dấu ngoặc tròn. AND. Các phép logic: NOT. Trị của biểu thức thuộc về một trong 4 kiểu: N.

?. Dùng menu: Lệnh được ban hành bằng cách kích hoạt menu tương ứng. Bộ môn Tin học – ĐHTN 17 . Dùng cửa sổ lệnh: Lệnh được đưa vào cửa sổ lệnh.. Để thực hiện chương trình này. sau khi ấn Enter lệnh được thi hành ngay. 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ự. 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. 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. 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.PRG XXI. sau khi thi hành xong câu lệnh cũng được lưu lại trên cửa sổ lệnh.PRG có 2 từ khoá là MODIFY và COMMAND có thể viết gọn là: MODI COMM LUONG. 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ư: !.. Trong Visual FoxPro có 3 cách để ban hành lệnh: a.PRG>. Cách này chỉ hạn chế trong một số lệnh thông thường trên tập tin CSDL. tại cửa sổ lệnh đưa câu lệnh DO <tên file. b. 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. c. . 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 đó. 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.Bài giảng Visual FoxPro Ví dụ: Câu lệnh MODIFY COMMAND LUONG.

• Kết thúc việc tạo mới. 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. Text file. Reports.Bài giảng Visual FoxPro BÀI 2: XÂY DỰNG PROJECT I. Queries Documents: Forms. cửa sổ Project Manager xuất hiện (xem phần tiếp theo) cho phép quản lý. tiếp chọn chọn Save. Other file Bộ môn Tin học – ĐHTN 18 . Chọn Wizard để tạo một Project theo một trong các mẫu thiết kế sẵn của Microsoft. XXII. Free Tables. khi đó giao diện New của VS Foxpro xuất hiện • • • Tiếp đến chọn File type = Project (Mặc định). Class Code: Program. • 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. Labels. 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. Applications Other: Menu. làm việc với Project này. API Libraries. 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. Chọn New file để tạo một Project trống.

Bài giảng Visual FoxPro 2-Các nút chức năng trong cửa sổ Project Manager TÊN NÚT CHỨC NĂNG ADD THÊM CÁC THÀNH PHẦN VÀO PROJECT NEW MODIFY BROWSE REMOVE TẠO MỘT THÀNH PHẦN MỚI TRONG PROJECT SỬA CẤU TRÚC CỦA MỘT THÀNH PHẦN TRONG PROJECT XEM VÀ SỬA DỮ LIỆU CỦA CÁC BẢNG HAY TRUY VẤN LOẠI BỎ MỘT THÀNH PHẦN TRONG PROJECT Bộ môn Tin học – ĐHTN 19 .

rồi chọn Save để ghi lại. • Chọn New Database để tạo một database trống. 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 đó. • Visual Foxpro sẽ yêu cầu nhập vào tên Database (file có phần mở rộng là DBC).. 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. khi đó giao diện New database xuất hiện như hình 1. Tạo Database 1. XXIII. đòi hỏi phải có kiến thức và kinh nghiệm trong lĩnh vực cụ thể đó. đáp ứng các yêu cầu đặt ra là một công việc khá phức tạp.. 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. mỗi quan hệ giữa các bảng . Xuất phát từ việc phân tích yêu cầu. • Giao diện Database Designer cho phép xem một cách tổng thể các thành phần (bảng. Khi đó giao diện Database designer xuất hiện như hình 2. 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ý.Bài giảng Visual FoxPro BÀI 3: XÂY DỰNG DATABASE VÀ CÁC TABLES I.Hộp thoại New database Bộ môn Tin học – ĐHTN 20 .) trong csdl. view. 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. Hình 1 .

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) .Bài giảng Visual FoxPro 2. 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. 3. • 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. • Chọn lệnh Add. chọn Tab Data. chọn Tab Data. tiếp đến chọn mục Database.Hộp thoại Open file (Select Database) Bộ môn Tin học – ĐHTN 21 . Sửa đổi Database • Trong Project Manager. Hình 3 . 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. • Trong Project Manager. khi đó cửa sổ Database designer xuất hiện.

Khái niệm Bảng dữ liệu chứa dữ liệu theo dạng dòng và cột. tiếp đến chọn mục Database và mở rộng đối tượng này. • Chọn Database cần bỏ.. Chọn khóa. 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ảng dữ liệu (Table) 1. chọn Cancel khi muốn huỷ bỏ thao tác này. giá trị mặc định cho từng field. chọn Tab Data. chọn Delete nếu muốn xoá hẳn Database này. tạo tiêu đề diễn giải. mỗi trường được xác định bởi tên trường. chúng ta có thể loại bỏ Database đó khỏi Project như sau: • Trong Project Manager. Loại bỏ một Database khỏi Project Khi không cần dùng một Database nào đó. Tạo bẫy lỗi. mỗi dòng được gọi là một mẫu tin (record). Bộ môn Tin học – ĐHTN 22 . Một số công việc cần làm khi làm việc các tables: • • • • • • 2. Hình 4 . Loại dữ liệu. mỗi cột được gọi là một trường (field) của bảng. khi đó xuất hiện hộp thoại như hình 4. Thiết lập các mối quan hệ giữa các Tables.Bài giảng Visual FoxPro 4. tiếp đến chọn lệnh Remove. XXIV.Hộp thoại Remove Database • Chọn Remove (khỏi Project) nếu không muốn xoá hẳn Database này. • Xác định các Field cần thiết có trong table. kiểu trường và kích thước trường. • Trường (Field): Là một thuộc tính trong file dữ liệu. Tạo chỉ mục. • 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..

chữ số. • 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. mỗi file dữ liệu chỉ có một cấu trúc cụ thể. 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. Ví dụ: bảng nhân viên (nhanvien. ký tự đầu tiên của tên trường phải là chữ cái.Bài giảng Visual FoxPro • Tên trường (Field name): Tên trường dài tối đa 10 ký tự bao gồm chữ cái. 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.dbf) có cấu trúc sau: Bộ môn Tin học – ĐHTN 23 . mỗi bảng dữ liệu có hai phần: cấu trúc và nội dung của bảng. ký tự gạch dưới. 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ỳ ý.

Tên trường 1. tiếp đến chọn Tables rồi chọn New. Ví dụ: CREATE TABLE Hososv(masv C(10). Tạo mới Tables Cách 1: Sử dụng câu lệnh Trong Visual Foxpro. . Table được tạo ra là một Table độc lập.Bài giảng Visual FoxPro Nội dung của NHANVIEN. Câu lệnh: Trong đó: • CREATE TABLE <TableName>(FieldName1 Ftype1(width1) [..tên bảng (không chứa dấu cách).Kiểu trường 1 (dùng các chữ cái đầu của kiểu trong fox để mô tả) • With1 .]) TableName .. 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). Tạo bảng 1.độ rộng của trường. Khi đó giao diện New table có dạng như hình 5.New table 24 . • FieldName1 . Bộ môn Tin học – ĐHTN Hình 5 . • Ftype1 .DBF XXV. • Chọn New Tbale để tạo một Table trống. 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. Hoten C(30)) Cách 2: Sử dụng Project Manager • Trong Project Manager chọn Tab Data. • 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). Tương tự như vậy cho trường thứ 2.

rồi chọn Save để ghi lại. Giao diện Table Designer: Bộ môn Tin học – ĐHTN 25 .Bài giảng Visual FoxPro • Nhập vào tên Table (file có phần mở rộng là dbf).

Bài giảng Visual FoxPro •

Tab Field: Phần khai báo chính cho 1 trường của bảng Tên trường. Kiểu dữ liệu của trường. Độ rộng của trường.

Trong đó: Name: Type: Width:

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) Null Format Checked or Unchecked: cho phép hoặc không cho phép giá trị null Đị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)

Hình 6 - Table Designer 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ự D Ngày T Ngày giờ N Số Format Code: ! Force text to uppercase. B Left justify . J Right justify. I Center justify. L Leading zeros. Z ( C X $ Blank if zero.

F I B Y Description

Float Integer Double Tiền tệ

L M G

Logic Memo General Applies to data of type: Character only All types All types All types Numeric only Numeric, Date, and DateTime Numeric only Numeric only Numeric only Numeric only
26

Surround negative numbers with (). Appends " CR" to positive, non-zero numbers. Appends " DB" to negative, non-zero numbers. Uses currency notation.

Bộ môn Tin học – ĐHTN

Bài giảng Visual FoxPro

D E YL YS R

Use current SET DATE setting. All types Display as if SET DATE BRITISH was in effect. All types Display using system Long Date format. Date Display using system Short Date format. Date Prevents non-formatting characters in the template string from replacing the corresponding character of the field expression Character value. When @R is used, the template string interleaves instead of Numeric overlaying.

and

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 ! # $ $$ , . 9 A H L N U W X Y

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 (.)) Permits entry of digits and signs. Permits alphabetic characters only. Prevents entry of non-hexadecimal symbols in the specified position. Permits logical data only. Permits letters and digits only. Permits alphabetic characters only and converts them to uppercase (A - Z). Permits alphabetic characters only and converts them to lowercase (a - z). Permits any character. 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.
Bộ môn Tin học – ĐHTN 27

Bài giảng Visual FoxPro 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 Primary Description Number allowed Được tạo trên 1 field đảm bảo chỉ một giá trị duy nhất được đưa 1/ 1 table vào, thường sử dụng cho việc tạo khóa chính. Candidate Tương tự Primary key. Có thể tạo cho free table và database table Nhiều/1 table Cho phép trùng nhau về mặt dữ liệu. Được sử dụng cho việc tạo Regular Nhiều/1 table khóa ngoại. Binary Indexes records based on a valid and non-null logical expression. Nhiều/1 table Nếu có nhiều record trùng nhau trên cùng field thì chỉ xuất hiện Unique Nhiều/1 table record đầu tiên.. • 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ộ môn Tin học – ĐHTN

28

Update. nếu con trỏ mẫu tin cuối file DBF đang mở.T. Số thứ tự của mẫu tin (record number . ngược lại hàm cho giá trị .T. • • • Hàm RECOUNT( ) dùng để biết số mẫu tin của một tập tin DBF đang mở. • Trong Project Manager/Database Designer. Database: Thuộc vào Database nào. Hàm RECNO( ) cho biết số thứ tự của mẫu tin hiện thời. ngược lại hàm cho giá trị .F. mỗi file DBF đang mở sẽ có một mẫu tin hiện hành. Trong khi làm việc. Số thứ tự này do FoxPro qui định một cách tuần tự. Bộ môn Tin học – ĐHTN 29 . • Để xóa Table kèm với khóa. Các quy tắc này đều ở mức Table. Delete với các record. 2. Chọn mục Delete. nếu con trỏ mẫu tin cuối file DBF đang mở. Để 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ị . Mẫu tin hiện hành được trỏ đến bởi con trỏ mẫu tin (record pointer). Xóa bảng dữ liệu. Chọn nút Remove. Hàm RECSIZE( ) dùng để biết được kích thước của một mẫu tin. chiều dài tối đa là 128 kí tự.F. Rule: Quy tắc kiểm tra dữ liệu ở mức Record. 3. Mỗi mẫu tin đang mở có 2 vị trí đặc biệt chú ý: đầu file và cuối file. 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. Message: Thông báo lỗi khi Rule không thoả mãn. mẫu tin hiện hành là mẫu tin có thể truy nhập vào thời điểm đó.recno): mô tả số thứ tự vật lý của mẫu tin trong tập tin cơ sở dữ liệu DBF. 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. được đánh số từ 1 đến mẫu tin cuối cùng.Bài giảng Visual FoxPro Hình 7 • • • • • Name: Tên bảng. • Hàm EOF( ) (end of file) cho giá trị . Ở mỗi thời điểm bất kỳ. 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. 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>. Kích thước của các mẫu tin của một file DBF đều bằng nhau. chỉ xuất hiện trong Project Manager. • Chọn Table cần xóa.

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. Ví dụ: • • • • • • • • • 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.) cho đến khi gặp một bản ghi không thoả mãn biểu thức logic (có giá trị . WHILE <btL2>: chừng nào <btL2> còn đúng thì lệnh còn hiệu lực. 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. 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 đó. • Đối với dữ liệu kiểu số nếu có phần thập Bộ môn Tin học – ĐHTN 30 . 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à . không được trùng với từ khoá. • Lệnh: một từ khoá. 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. HSLUONG DISP FIEL HOTEN. cho biết mục đích của công việc. CÁC LỆNH CƠ BẢN TRÊN FILE DBF 1. DISPLAY FIELDS HOTEN.T. 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.Bài giảng Visual FoxPro XXVI. Nghĩa là. 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>. Nếu điều kiện sai thì lệnh được dừng ngay. FOR <btL1>: mẫu tin nào thoả mãn <btL1> mới bị tác động bởi lệnh. Chú ý: • Các tên trường không được trùng nhau.) hoặc đến hết file dữ liệu. 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ự. 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.F. 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). 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ể. 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ở.

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ị. a. • Để kết thúc việc nhập cấu trúc ta ấn đồng thời phím Ctrl+W. Khi đó file dữ liệu sẽ có dạng <tên file>. 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. Sau khi kết thúc việc nhập dữ liệu cho nó. • Lúc này: trả lời <No> thì sẽ quay lại cửa sổ lệnh. 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. b. Đị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. lúc này sẽ nhận được hộp thoại. Định vị con trỏ đến một bản ghi 2. • • GO TOP: Dùng để chuyển con trỏ bản ghi về đầu file dữ liệu.Bài giảng Visual FoxPro 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ị. ta đưa con trỏ đến hộp memo rồi nhấn tổ hợp phím Ctrl_PgUp. 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.DBF. lúc đó sẽ xuất hiện cửa sổ nhập dữ liệu cho trường này. • Để nhập dữ liệu cho trường MEMO. GO BOTTOM: Dùng để chuyển con trỏ bản ghi về cuối file dữ liệu. Bộ môn Tin học – ĐHTN 31 . Khi kết thúc việc nhập dữ liệu. Đị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. nhấn tổ hợp <Ctrl+W> để lưu file dữ liệu lên đĩa. ta nhấn tổ hợp Ctrl+W để ghi lại.

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=. b. 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. Lệnh : COUNTINUE Khi sử dụng lệnh LOCATE. 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. ta có thể dùng lệnh COUNTINUE để tìm bản ghi tiếp theo thoả mãn <BieuThuc>. Lấy dữ liệu từ bảng a. ngược lại trả về FALSE.) Lưu ý: Khi tìm thấy thì hàm FOUND() sẽ trả về giá trị TRUE. nếu có mệnh đề FOR thì phạm vi mặc định là ALL. Đị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. 3. Lệnh LIST Cú pháp: List [<phạm vi>] [fields<danh sách trường>] 32 Bộ môn Tin học – ĐHTN . Theo mặc định thì tất cả các trường trong bảng dữ liệu sẽ được hiển thị.F.Bài giảng Visual FoxPro c. 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] 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ó. <phạm vi> mặc định là bản ghi hiện hành.

Ví dụ: cho biết họ tên. 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. Ví dụ: chèn một bản ghi vào sau bản ghi thứ 3: Go 3 ↵ Bộ môn Tin học – ĐHTN 33 .’nam lam viec:’. Chèn.hoten.Bài giảng Visual FoxPro [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. Chèn bản ghi Cú pháp: INSERT [BEFORE][BLANK] Chức năng: Chèn một bản ghi ngay sau bản ghi hiện thời (nếu có [Before]) với nội dung được nhập vào. năm làm việc của người có số hiệu là 2: Go 2 ↵ ?’ho ten:’. Nếu có [BLANK] thì sẽ chèn một bản ghi trắng.”.namlv↵ 4. 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 ↵ Chú ý: danh sách biểu thức trong Fox được viết cách nhau bởi dấu phẩy “. bổ sung bản ghi a. Lệnh ? trước khi in dữ liệu thì xuống dưới 1 dòng. còn lệnh ?? thì không.

”TEST”) Bổ sung bản ghi Cú pháp: APPEND [BLANK] Chức năng: Để chèn 1 bản ghi vào cuối bảng dữ liệu (giá trị được nhập vào). 5. Sửa chữa nội dung bản ghi a. mỗi bản ghi được thể hiện trong một hàng (dòng).hoten) VALUE(“00001”. bản ghi này sang bản ghi khác và có thể sửa đổi nội dung của từng mẫu tin trong bản ghi. Lệnh BROWSE: Cú pháp: BROWSE [FIELD<dsach trường>] [FREEZE<dsach trường>] [NODELETE] [NOEDIT] [FOR<bthức LOGIC>] Chức năng: Hiển thị nội dung của bảng d ữ liệu.Bài giảng Visual FoxPro Insert INSERT INTO <TableName>(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 đó. ta có thể xem và di chuyển hộp sáng từ trường này qua trường khác. Bộ môn Tin học – ĐHTN 34 . nếu có tham số [BLANK] thì sẽ bổ sung một bản ghi trắng. Ví dụ: USE HOSOSV INSERT INTO HOSOSV(masv.

NAMLV FREEZE NAMLV [FOR<Bthức LOGIC>]: Chỉ cho phép những biểu thức thoả mãn điều kiện của biểu thức LOGIC mới được hiển thị. • [NODELETE]: không cho phép xoá • [NOEDIT]: không cho phép sửa đổi. nếu không có tham s ố này thì tất cả các t rường trong bảng d ữ liệu sẽ được hiển thị.. .Bài giảng Visual FoxPro Ví dụ: USE NHANVIEN BROWSE • [FIELD<dsách Trường>]: cho phép các t rường trong danh sách này được hiển thị trên màn hình. • [FREEZE<dsách Trường>]: cho phép các t rường trong danh sách này luôn đ ư ợ c hiển thị trên màn hình. Ví dụ: Hiển thị nội dung của các t rường HOTEN.. FieldName2 với giá trị của BieuThuc2 .. b. Tham số Scope xác định phạm vi tác động của lệnh. có thể là:     ALL NEXT n RECOR n REST :Tất cả các bản ghi : n bản ghi tính từ bản ghi hiện thời : Bản ghi thứ n : Từ bản ghi hiện thời đến cuối 35 Bộ môn Tin học – ĐHTN .. c. Lệnh REPLACE Cú pháp: REPLACE [<Phạmvi>]<Trường 1>WI TH<Bthức 1>[ADDITIVE] [.<Trường 2> WITH <Bthức 2> [ADDITIVE]. BROWSE FIELD HOTEN.][FOR<Bthức LOG IC>] [WHILE<Bthức LOGIC>] Chức năng: Dùng để thay thế nội dung các trường được chỉ ra của bản ghi nằm trong <phạm vi> và thỏa mãn điều kiện của <Bthức> Lệnh này cho phép cập nhật giá trị của FieldName1 với giá trị của BieuThuc1. Lệnh EDIT Cú pháp: EDIT [<Phạm vi>] [FIELD<Dsáchtrường>][ NOAPPEND] [NODELETE] [NOEDIT][FOR<Bthức LOGIC>] [WHILE<Bt hức LOG IC>] Chức năng: Tương t ự lệnh BROWSE nhưng các b ản ghi được xuất hiện như ở lệnh APPEND. NAMLV đ ể tiến hành sửa đổi.

CÚ PHÁP: DELETE [<PHạM VI>] [FOR<BTHứC LOGIC>] [WHILE<BTHứC LOGIC>] Sau khi thực hiện lệnh này thì các bản ghi được chỉ định đánh dấu xóa sẽ xuất hiện dấu * . Lệnh: PACK Chức năng: Xóa các bản ghi đã được đánh dấu bằng lệnh DELETE.Bài giảng Visual FoxPro  Trường hợp mặc định là bản ghi hiện hành. nếu không thì FOX sẽ thông báo lỗi “Data Type Mismatch”. Ví dụ: Đánh dấu xóa những nhân viên có năm làm việc trước 1951. 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” Chú ý: Kiểu dữ liệu của <Bthuc> và của <trường> tương ứng phải tương đương nhau. Bộ môn Tin học – ĐHTN 36 . Xoá bản ghi Việc xóa bản ghi trong bảng dữ liệu được thưc hiện thông qua 2 bước: B1: Đánh dấu bản ghi luốn xóa. DELETE FOR NAMLV < 1 950↵ B2: Xóa chính thức các bản ghi. 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ụ 1: Thay thế Họ Tên của nhân viên trong file NHANVIEN bằng chữ in hoa: REPLACE ALL HOTEN WITH UPPER(HOTEN) ↵ Ví dụ 2: Nâng lương của nhân viên nữ lên thêm 50000 REPLACE LUONG WITH LUONG+50000 FOR !GIOITINH ↵ 6.

Ví dụ: Sao lưu cấu trúc của NHANVIEN thành file có tên luu. Mặc định là tất cả các trường có trong bảng dữ liệu đang mở. Thao tác với cấu trúc bảng. GIOITINH. bao gồm: tên trường. Ví dụ: USE NHANVIEN↵ LIST STRUCTURE Sửa cấu trúc bảng: CÚ PHÁP: MODIFY STRUCTURE↵ Chức năng: Hiển thị và cho phép sửa đổi cấu trúc bảng dữ liệu. Xem cấu trúc bảng CÚ PHÁP: LIST | DISPLAY STRUCTURE↵ Chức năng: Hiển thị cấu trúc bảng dữ liệu đang được mở. CALL [<PHạM VI>] [FOR<BTHứC LOGIC>] [WHI LE<BTHứC L OGIC>] Lệnh xóa dữ liệu trên file DBF.DBF> [FIELDS<ds trường >]↵ Chức năng: Sao chép cấu trúc của bảng đang được mở sang một bảng mới có tên được chỉ ra trong <ten file.Bài giảng Visual FoxPro Phục hồi các bản ghi đã được đánh dấu xóa.dbf nhưng chỉ gồm các trường: HOTEN. kiểu và độ rộng của trường. NAMLV Bộ môn Tin học – ĐHTN 37 . Ví dụ: USE NHANVIEN MODIFY STRUCTURE Sao lưu cấu trúc bảng CÚ PHÁP: COPY STRUCTURE TO <TEN FILE. dbf> với các trường trong mục <ds trường>. CÚ PHÁP: 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) XXVII.

tất cả các bản ghi được sao chép. Sao chép bảng CÚ PHÁP: COPY TO <tên bảng đích> [<phạm vi>] [FIELDS <ds trường>] [FOR<BTHứC LOGIC>] [WHILE<BTHứC LOGIC>]↵ Chức năng: Dùng để tạo bảng mới có tên được chỉ ra <tên bảng đích> với nội dung được lấy từ bảng dữ liệu đang mở.Bài giảng Visual FoxPro USE NHANVIEN↵ COPY STRUCTURE TO LUU FIELDS HOTEN. Mặc định. • Ds trường để chỉ định các trường được sao chép. NGAYSINH.Dbf từ file NHANVIEN. • Nếu có phạm vu và các biểu thức logic thì chỉ những bản ghi nào thỏa mãn điều kiện mới được sao chép. Ví dụ: Tạo bảng dữ liệu NU.DBF gồm các trường HOTEN. NGAYSINH. NAMLV↵ Chú ý: Chỉ sao chép cấu trúc chứ không sao chép nội dung. GIOITINH. USE NHANVIEN COPY TO NU FIELDS HOTEN. NAMLV. NAMLV FOR !GIOITINH USE NU &&Mở Để XEM KếT QUả LIST Bộ môn Tin học – ĐHTN 38 .

DBF có dạng sau: Khi xử lý thông tin trong bảng dữ liệu. Sắp xếp theo chỉ mục a. THỐNG KÊ I. các mẫu tin có thể được truy xuất theo số hiệu. Dữ liệu trong một bảng có thể được sắp xếp theo một tiêu chuẩn nào đó. Khái niệm về chỉ mục Ta đã biết mỗi bảng dữ liệu chứa các bản ghi và mỗi bản ghi đều được đánh số hiệu theo số thứ tự từ 1 đến n.Bài giảng Visual FoxPro CHƯƠNG III: SẮP XẾP. TÌM KIẾM. Sắp xếp. Ví dụ: bảng NHANVIEN. phục vụ cho việc khai thác thông tin. 1. Ví dụ: use NHANVIEN ↵ list ↵ Kết quả in ra sẽ như sau: Bộ môn Tin học – ĐHTN 39 .

thứ tự của các bản ghi là thứ tự được quy định trong file chỉ mục này. use NHANVIEN index on date()-NGAYSINH to CMNSINHG list Bộ môn Tin học – ĐHTN 40 . Nếu có từ khoá [UNIQUE] thì các bản ghi nào có <Bthức khoá> trùng nhau sẽ bị bỏ qua trên file chỉ mục. khi truy xuất dữ liệu của bảng. use NHANVIEN↵ index on NAMLV to CMNAMLV list Chú ý: Lệnh luôn sắp xếp theo thứ tự tăng dần của <bthức khoá>. Lập chỉ mục IDX cho bảng dữ liệu Cú pháp: INDEX ON <bthức khoá> TO <tên file idx>[FOR<bthức logic>] [UNIQUE] C hức nă ng : Lệnh sắp xếp file dữ liệu theo chiều tăng dần của <Bthức khoá> của các bản ghi thoả mãn <Bthức logic> sau FOR. Ví dụ 1: Hiển thị theo thứ tự tăng dần của namlv của các nhân viên. Ví dụ 1: Hiển thị theo thứ tự giảm dần của namlv của các nhân viên. Thứ tự của bản ghi ở đây là thứ tự sắp xếp. mặc định là tất cả các bản ghi. do vậy khi lựa chọn <bthức khoá> thì phải chọn cho phù hợp. 2.IDX) chỉ có hai trường: trường khoá sắp xếp và trường số hiệu bản ghi.Bài giảng Visual FoxPro Sắp xếp bảng dữ liệu theo chỉ mục là tạo ra một file mới (có phần mở rộng mặc định là . Ví dụ: File chỉ mục của bảng nhanvien theo thứ tự của năm làm việc: Lúc này. use NHANVIEN↵ index on -NAMLV to CMNAMLVG list Ví dụ 2: Hiển thị theo thứ tự giảm dần của ngaysinh.

XXVIII. hàm EOF() có giá trị .T. Ví dụ: Tìm nhân viên đầu tiên trong bảng dữ liệu sinh năm 1970 trong bảng nhanvien use NHANVIEN Locate for year(NGAYSINH) = 1970 Display b. Nếu tìm được.Bài giảng Visual FoxPro 3. dùng để tìm bản ghi kế tiếp sau thỏa mãn điều kiện đã nêu. Lệnh Locate: Cú pháp: LOCATE [<phạm vi>] FOR<bthức logic> [WHILE<bthức logic>] C hức năn g: Lệnh sẽ duyệt tuần tự các bàn ghi trong bảng dữ liệu và tìm đến bản ghi đầu tiên trong <phạm vi> thoả mãn điều kiện của <bthức logic>. • REINDEX: D ù n g đ ể c ậ p n h ậ t f i l e c h ỉ m ụ c . Lệnh continue Cú pháp : CONTINUE Chức năng : Theo sau lệnh LOCATE. • SET INDEX TO: Dùng để đóng file chỉ mục. nếu tìm thấy thì Bộ môn Tin học – ĐHTN 41 . Tìm kiếm Tìm kiếm tuần tự a.F. • Một số lệnh liên quan SET INDEX TO <file chỉ mục>: Dùng để mở file chỉ mục sau khi đã mở một bảng dữ liệu.. Ví dụ: Tìm 2 nhân viên đầu tiên sinh năm 1970 use NHANVIEN locate for year ( NGAY SINH) = 1970 display continue display Tìm kiếm sau khi đã lập chỉ mục Cú pháp : SEEK <biểu thức> Chức năng : sau khi đã lập chỉ mục theo <bthức khóa> đề tìm bản ghi nào thỏa mãn một điều kiện dựa vào <bthức khóa> Ta sử dụng lệnh SEEK theo sau là <giá trị> của biểu điều kiện cần tìm. hàm FOUND() sẽ cho giá trị .

Nếu không có <ds biểu thức> thì các trường kiểu số đều được lấy tổng. ‘ làm việc năm 1980’ Tính tổng giá trị các trường kiểu số Cú pháp: SUM [<phạm vi>] [<dsách bt>] [TO <ds biến>] [FOR <bt logic>] [WHILE <btlogic>] Chức năng : Lệnh sẽ lấy tổng theo các biểu thức được xây dựng dựa trên các trường kiểu số. tìm nhân viên có tên “Nguyen Van AN”. nếu có TO <dsbiến> thì kết quả của các <biểu thức> sẽ được đưa vào các <biến> tương ứng. kết quả được đưa ra màn hình.T. Sắp xếp theo thứ tự tăng dần của Họ Tên. songuoi.F. nằm trong <phạm vi> và thỏa mãn điều kiện của các <bthức logic>. Ví dụ: 1. THỐNG KÊ Đếm số lượng bản ghi Cú pháp: COUNT [<phạm vi>][FOR<btlogic>] [WHILE<btlogic>] [TO<biến nhớ>] Chức năng :lệnh dùng để đếm số mẫu tin trong bảng dữ liệu hiện hành thỏa mãn điều kiện các <bthức logic> nằm trong phạm vi được chỉ ra. tìm nhân viên có năm làm việc 1981. Sắp xếp theo thứ tự giảm dần của NAMLV.NAMLV to CMNAMLVG list seek -1981 disp XXIX. Mặc định. Bộ môn Tin học – ĐHTN 42 . Kết quả được đưa ra màn hình hay đưa vào <biến nhớ> nếu có TO. của các bản ghi trong bảng dữ liệu. và hàm EOF () có giá trị . use NHANVIEN index on upper(HOTEN) to CMHOTEN seek “Nguyen Van An” disp 2.Bài giảng Visual FoxPro hàm FOUND() có giá trị . Ví dụ: Cho biết có bao nhiêu nhân viên có NAMLV là 1980 use NHANVIEN count for NAMLV = 1980 to songuoi ?’ có songuoi: ‘. use NHANVIEN index on .

cho biết tổng LUONG phải trả và tổng PHUCAP là bao nhiêu. PHUCAP to tbluong. use NHANVIEN sum LUONG. Lệnh chỉ tác động đến các bàn ghi nằm trong (phạm vi) và thoả mãn điều kiện đi sau các mệnh đề FOR.Bài giảng Visual FoxPro Chú ý : Phải tương ứng 1-1 giữa <ds biểu thức> và <ds biến>. use VATTV index on MAXN + MAVT to CMTK total on MAXN + MAVT to THONGKE fields SOLUONG use THONGKE ? ‘chi tiet la :’ Bộ môn Tin học – ĐHTN 43 . bảng dữ liệu phải định sắp xếp theo khoá. nếu có FIELDS <danh sách trường> thì chỉ có các trường liệt kê mới được cộng. use NHANVIEN average LUONG. Mặc định thì tất cả các trường kiểu số đều được cộng dồn. Ví dụ: dựa vào bảng NHANVIEN. tbphucap Tính tổng các trường số theo nhóm CÚ PHÁP: TOTAL ON <BT KHÓA> TO <TÊN BảNG MớI. Ví dụ: Dựa vào bảng VATTV. cho biết trung bình mỗi nhân viên nhận được bao nhiêu LUONG. lệnh sẽ lấy giá trị đó đem chia cho tổng số bản ghi tham gia vào câu lệnh. PHUCAP to tongluong.DBF>. tongpc Tính trung bình cộng các trường kiểu số Cú pháp: AVERAGE [<phạm vi>] [<ds biểu thức>] [TO <ds biến >] [FOR <bt logic>][WHILE <bt logic>] Chức năng : giống như lệnh SUM ở trên nhưng sau khi lấy tổng. tong luong ?’ tong phu cap la:’ . hãy thống kê xem mỗi mặt hàng đã xuất hay nhập một số lượng là bao nhiêu. tongpc ?’ tong luong la:’ . tbphucap ?’ trung binh luong:’ . Ví dụ: Dựa vào bảng NHANVIEN. WHILE.DBF>[<PHạM VI>] [FIELD <dstrường>][FOR <biêủ thức L>][WHILE < biêủ thức L>] Chức năng: Lệnh sẽ cộng dồn các trường kiểu số theo từng nhóm bản ghi có <bt khóa> giống nhau và đưa vào bảng mới có tên được chỉ ra ở <tên bảng . Chú ý: Trước khi dùng lệnh này. PHU CAP. tbluong ?’ trung bình phu cap:’ .

Sắp xếp Lệnh INDEX ON <BieuThuc> <TO IDXFile | TAG TagName> [ASCENDING | DESCENDING] • Với các bảng dữ liệu.DBF là: XXX. 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). Ví dụ USE HOSOSV INDEX ON masv TO masvidx BROW Bộ môn Tin học – ĐHTN 44 . Lệnh INDEX cho phép tạo ra các tiêu chuẩn sắp xếp (chỉ mục . SOLUONG. • Tùy chọn TO IDXFile cho phép tạo ra file chỉ mục dạng IDX. • 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. tham số <BieuThuc> chính là tiêu chuẩn sắp xếp.Bài giảng Visual FoxPro list MAXN.index) đối với bảng. DONGIA Giả sử bảng VATTU sau khi sắp xếp là: Kết quả của bảng THONGKE. MAVT. và phần mở rộng là CDX). có thể sắp xếp các bản ghi theo một thứ tự (tiêu chuẩn nào đó) nào đó.

thỏa mãn điều kiện cho trước. Trong đó BieuThucLogic là tiêu chuẩn để lọc. Để hạn chế số lượng các bản ghi tham gia vào quá trình xử lý.Bài giảng Visual FoxPro 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. Ví dụ USE HOSOSV SET ORDER TO Masv BROW SET ORDER TO Hoten2 BROW SET ORDER TO masvidx SET ORDER TO XXXI. TagName .tên file dạng IDX (đã tạo bằng lệnh INDEX trước đó).Tên chỉ mục trong file kết hợp (file dạng CDX). Ví dụ USE HOSOSV SET FILTER TO malop=”3A-01” BROWSE SET FILTER TO ngaysinh=date() BROWS TITLE “Sinh nhat: ”+ DTOC(date()) Sau lệnh lọc thì các lệnh tiếp sau chỉ có tác dụng với các bản ghi đã được lọc. Trong đó: IDXFile . Lọc Lệnh SET FILTER TO <BieuThucLogic> (không tham số) dùng để bỏ việc sắp xếp (trở lại thứ tự nhập). các bản ghi được lọc từ bảng dữ liệu. Hủy bỏ việc lọc dữ liệu: SET FILTER TO ↵ Ví dụ: Chỉ hiển thị những nhân viên nữ: SET FILTER TO !GIOITINH↵ LIST↵ Bộ môn Tin học – ĐHTN 45 .

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. TableName là tên bảng hoặc aliasname. Visual Foxpro cho phép mở tối đa là 255 vùng làm việc đồng thời. Lệnh SELECT <n | TableName| AliasName > Lệnh này cho phép chọn vùng làm việc. Vùng 2 (hoặc vùng B hoặc SINHVIEN). • Menu Window/Data sesion. Ví dụ SELECT A USE DMLOP ALIAS LOP SELECT B USE HOSOSV ALIAS SINHVIEN SELECT 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). Lệnh SET RELATION TO <BieuThuc> INTO <n| TableName | AliasName> 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). Lưu ý: Khi chọn n=0 thì Visual Foxpro sẽ tự động chọn vùng cao nhất còn trống. Ví dụ: SELECT A USE DMLOP ALIAS LOP Bộ môn Tin học – ĐHTN 46 . trong đó BieuThuc là tiêu chuẩn đế đặt quan hệ. mỗi vùng được xác định qua tên hoặc số hiệu vùng. trong đó: n là số thứ tự của vùng cần chuyển đến. mỗi bảng trên một vùng làm việc (WorkArea) nhất định. Lưu ý: Bảng được mở trong vùng AliasName phải được index theo BieuThuc này rồi. Có thể xem danh sách các tables đã được mở: Menu Window/Data session 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. Vùng 3 (hoặc DIEM). • Chọn các tables -> Click vào Relations.Bài giảng Visual FoxPro XXXII.

min(expr). năm hiện tại của hệ thống. SET DATE FRENCH DATE() Ngày hiện hành của hệ thống sẽ được hiển thị theo thứ tự ngày. aver(expN) • COPY TO <FileName> [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] • COPY STRUCTURE TO <FileName> [EXTENDED] • APPEND FROM <FileName> [ FOR <ExpL>] Một số hàm thông dụng Các hàm về ngày tháng DATE(): trả về ngày. BOF() Trả về số hiệu bản ghi hiện thời Trả về số bản ghi hiện có của bảng Định danh của vùng hiện thời Tên file DBF 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 <FieldName List>] [FOR <BieuthucLogic>] • COUNT [ TO VarName ] [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] • AVERAGE expN TO VarName [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] • SUM <Danh sách biểu thức> TO <Danh sỏch biến số> • FOR expL1 ] [ While expL2 ] [ Phạm vi ] • CALC <Danh sách biểu thức> TO <Danh sỏch biến số> • [ FOR expL1 ] [ While expL2 ] [ Phạm vi ] • max(expr). 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. năm. Một số hàm và lệnh khác Một số hàm Hàm RECNO() Hàm RECCOUNT() Hàm ALIAS() Hàm DBF() Hàm EOF(). Thứ tự kết quả hiển thị của lệnh này phụ thuộc vào lệnh SET DATE. tháng. tháng. Bộ môn Tin học – ĐHTN 47 .Bài giảng Visual FoxPro 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.

Ví dụ : ?UPPER ("Nguyen Van AN") → "NGUYEN VAN AN" LOWER <BTHứC C>: kết quả là chuỗi in thường của <BTHứC C>. Ví dụ : ?ALLTRIM("NGUYEN VAN AN ") → "NGUYEN VAN AN" UPPER(<BTHứC C>): kết quả là chuỗi in hoa của <BTHứC C>. Các hàm về chuỗi LEN(<BTHứC C>): trả về chiều dài của <Bthuc C>. LEFT(<BTHứC C>.Bài giảng Visual FoxPro YEAR(<BTHứC DATE>): trả về năm của <BTHứC DATE>. tính bằng Byte. <N>): trích ra một chuỗi gồm n kí tự của <BTHứC C>. RIGHT(<BTHứC C>. ALLTRIM (<BTHứC C>): cho kết quả là một chuỗi sau khi đã loại bỏ các kí tự trắng ở hai bên của <BTHứC C>. tính từ bên trái sang. Bộ môn Tin học – ĐHTN 48 . 3" KếT QUả CHO CHUỗI "VAN". <N2>): trích ra chuỗi con của <BTHứC C>. <N1>. <N>): trích ra một chuỗi gồm n kí tự của <BTHứC C>. Ví dụ : ? SUBSTR ("NGUYEN VAN AN". MONTH(<BTHứC DATE>): trả về năm của <BTHứC DATE>. 8. Chuỗi rỗng có chiều dài là 1. Các hàm số học ASB(X): Trị tuyệt đối của X. SUBSTR (<BTHứC C>. tính từ bên phải sang. Ví dụ: YEAR(DATE()) → trả về năm hiện hành của hệ thống. INT(X): trả về phần nguyên của X. 6) → CHO KếT QUả LÀ "NGUYEN". SIN(X): cho giá trị SIN X COS (X): cho giá trị COS X. ROUND(X. Ví dụ : ?LEFT("NGUYEN VAN AN". từ vị trí <N1> và gồm <N2> kí tự.<N>): Làm tròn X với N số lẻ.

1.mối quan hệ tạm thời . Bộ môn Tin học – ĐHTN 49 . • Được thể hiện trong Data Environment. các bảng của CSDL thường có quan hệ nào đó với nhau. khi đó giao diện Database Designer xuất hiện. Mối quan hệ giữa các bảng có thể thiết lập qua lệnh (Lệnh SET RELATION ) . mối quan hệ bền vững không không cần phải tạo lại mỗi khi sử dụng đến các bảng dữ liệu. Các bước thiết lập quan hệ bền vững • • • Mở Project / Chọn Tab Data Chọn mục Database và mở rộng (expand). • • Tạo index trong Table Designe. và được lưu lại trong file csdl (DBC) và có những đặc điểm sau: • Được tự động sử dụng như các kết nối mặc nhiên (khi tạo Queries và Views) • Được thể hiện bằng các đường nối trong Database Designer. Không giống như các mối quan hệ tạm thời được tạo bằng lệnh SET RELATION.mối quan hệ bền vững. Chọn mục Modify. Tuy nhiên bởi mối quan hệ bền vững không điều khiển các con trỏ bản ghi giữa các bảng dữ liệu nên mối quan hệ tạm thời vẫn rất cần thiết khi phát triển ứng dụng. Chọn Database cần làm việc. Chú ý: Tạo Index cho các trường trước khi thiết lập quan hệ giữa các bảng. Để đặt quan hệ giữa các bảng thì việc đầu tiên cần làm đó là xác định các Index cho bảng. Việc xác định các Index cho bảng có thể thực hiện qua lệnh (lệnh INDEX) hoặc có thể xác định khi thiết kế bảng trong giao diện Table Designer. Thiết lập quan hệ giữa các bảng Trên thực tế. Sau khi thiết lập xong quan hệ giữa các bảng ta có giao diện Database Designer có dạng như hình 6. • Dùng để lưu thông tin về mối quan hệ toàn vẹn. Mối quan hệ bền vững được tạo trong quá trình thiết kế CSDL. Thiết lập quan hệ bền vững giữa các bảng trong CSDL.Bài giảng Visual FoxPro CHƯƠNG IV: QUERIES VÀ VIEWS I. hoặc trong quá trình thiết kế cơ sở dữ liệu . Lần lượt thêm các tables vào. • Trong giao diện Database Designer để tạo quan hệ giữa 2 bảng chỉ cần kéo-thả trường Index (Primary) từ bảng cha đến trường Index (Regular) của bảng con.

Thêm (Insert). D_Click vào đường liên kết bất kỳ giữa 2 bảng.2. có thể hiệu chỉnh mối quan hệ giữa các tables ở bước này. Xoá (Delete) sao cho vẫn đảm bảo mối quan hệ giữa các bảng này không bị vi phạm. • Thiết lập quan hệ toàn vẹn giữa các bảng Thực chất là xác định các qui tắc ứng xử giữa các bảng có quan hệ với nhau.Bài giảng Visual FoxPro Hình 6.2 Bộ môn Tin học – ĐHTN 50 . Hình 6.1 Quan hệ giữa các bảng trong CSDL Đường nối thể hiện quan hệ giữa các bảng. tiếp đến chọn lệnh Referential Integrity như hình 6. Để thiết lập quan hệ toàn vẹn giữa các bảng. Các qui tắc đó sẽ kiểm soát các việc như thay đổi (Update).

Các qui tắc ứng xử ở đây là: o Ignore: Cho phép xoá các bản ghi liên quan trên bảng con một cách độc lập (không phụ thuộc vào bảng cha).Bài giảng Visual FoxPro Khi chọn Referential Integrity giao diện này xuất hiện như hình 6. các thông tin của một quan hệ gồm có: Bảng cha (Parent Table). o Cascade: Sửa tất cả những bản ghi có quan hệ trong bảng con với giá trị khoá mới tương ứng của bảng cha. Bộ môn Tin học – ĐHTN 51 . Rules For Updating Trong đó: • Dòng (trong grid phía dưới): Thể hiện các quan hệ hiện có của CSDL.3 Hình 6. Các qui tắc ứng xử ở đây là: o Ignore: Cho phép sửa các bản ghi liên quan trên bảng con một cách độc lập (không phụ thuộc vào bảng cha). Trường/Biểu thức quan hệ trên bảng con (Child Tag). Trường/Biểu thức quan hệ trên bảng cha (Parent Tag). Bảng con (Child Table). o Restrict: Không cho phép sửa đổi các bản ghi trong bảng cha nếu tồn tại những bản ghi liên quan trong bảng con. đây là giá trị mặc định. • Tab Rules for Deleting: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi xoá. • Tab Rules for Updating: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi sửa đổi. đây là giá trị mặc định. o Restrict: Không cho phép xoá các bản ghi trong bảng cha nếu tồn tại những bản ghi liên quan trong bảng con. o Cascade: Xoá tất cả những bản ghi có quan hệ trong bảng con tương ứng với bản ghi bị xoá của bảng cha.3 Giao diện Referential Integrity.

đây là giá trị mặc định. Các qui tắc ứng xử ở đây là: Hình 6.4 Rules For Deleting • Tab Rules for Inserting: cho phép thiết lập qui tắc ứng xử giữa 2 bảng cha/con của một quan hệ nào đó (phía dưới) khi thêm mới.4 Rules For Inserting o Ignore: Cho phép thêm các bản ghi vào bảng con một cách độc lập (không phụ thuộc vào bảng cha). Ví dụ Bộ môn Tin học – ĐHTN 52 . Ví dụ o Restrict: Không cho phép thêm các bản ghi vào bảng con nếu không tồn tại một bản ghi tương ứng trong bảng cha.Bài giảng Visual FoxPro Hình 6.

.....… o Chạy và kiểm tra Query. .. 1. . • Có thể tạo ra query đáp ứng các tiêu chuẩn nhằm: để tổ chức thông tin cho Report. biểu đồ... .. .. Report...Sắp xếp và nhóm các record khi cần thiết... với bảng DIEM.. .. Tạo các queries Query: Công cụ truy vấn dữ liệu.. • Quá trình thiết kế Query: o Bắt đầu tạo Query với một Wizard Query hoặc Query Designer.. kiểu sắp xếp. Trong Project Manager chọn Tab Data 2. .. • Ví dụ. o Chọn kiểu kết xuất: Table.. . Bộ môn Tin học – ĐHTN MH1 4 3 . điều kiện của các record muốn hiển thị. để trả lời nhanh một câu hỏi . .. khi biết mã sinh viên và cần xem sinh viên đó có tên là gì? Bảng điểm của một môn học nào đó..Bài giảng Visual FoxPro XXXIII. Graph và Query. Browse. . . o Chọn Table hoặc View chứa thông tin.. Chọn Queries/Chọn New/Chọn Query Wizard 3. ........ 53 MHn . .. ... . o Xác định kết quả Query bằng cách chọn các field cần thiết.. Ví dụ 1: Tạo một Cross Tab Query Giả sử cần xác định xem số lượng thí sinh thi trượt lần 1 các môn học theo lớp có số lượng là như thế nào? Số liệu cần đưa ra dạng sau: Lớp /môn 3A-04 3B-04 . MH2 7 5 .. .. Chọn kiểu Query Wizard cần tạo... có các kiểu là Cross-Tab.. o Tôt chức các kết quả bằng cách nhóm và sắp xếp. Tạo mới một Query sử dụng Wizard 1. ..

Tables và Fields (Sử dụng lệnh >. Step 2 .Define Layout: Bộ môn Tin học – ĐHTN 54 . chọn OK. >> để chọn các trường cần thiết). 1.Bài giảng Visual FoxPro Khi đó cần sử dụng một Cross-Tab. chọn Next để qua bước 3. 3. Step 1 . 2. Khi đã chọn xong các trường. Chọn Cross-Tab Wizard.Select Fields: Chọn Database.

Column. Khi đó sử dụng Graph Wizard như sau: 1. Tuỳ chọn Subtotal cho phép thêm vào cột cuối để tính subtotal cho mỗi dòng. 2. chọn OK. Column (Mamon) và Data (Diem1) bàng cách nhấp-thả (Drag) các trường vào các ô (Row. Min.Add summary Information: Chọn các hàm thống kê đối với đối tượng Data. Data) tương ứng. Ví dụ 2: Tạo một Graph Form bằng Graph Wizard Giả sử cần thể hiện số lượng sản phẩm của các mặt hàng hiện có trong kho dạng biểu đồ. Step 3 .Define Layout: Bộ môn Tin học – ĐHTN 55 . trong ví dụ này thì Summary chọn là Count. Chọn Next để tiếp tục 4.Select Fields: Như ví dụ trên 3. Step 1 . Max. Countm Average.Bài giảng Visual FoxPro Bước này cần định nghĩa 3 đối tượng cho Cross-Tab đó là: Row (trong ví dụ này là Malop). Chọn Graph Wizard.> Được kết quả thể hiển của Query.Finish). Tiếp đến chọn Finish và nhập vào tên file Query để hoàn tất công việc (hoặc chọn Next sẽ chuyển đến bước 4 Step 4 . Trong cửa sổ Project Manager chọn Query vừa tạo rồi chọn lệnh Run . các hàm này có thể là: Sum. Step 2 .

Trường số (trong ví dụ này là Soluong) và Axis . Chọn Next để tiếp tục (lưu ý là Next và Finish chỉ cho phép khi đã chọn đủ Data series và Axis). Step 3 .Select Graph Style Bộ môn Tin học – ĐHTN 56 . 4.Trong ví dụ này là Ma.Bài giảng Visual FoxPro Bước này cần định nghĩa 2 đối tượng cho là: Data series .

3. Trong Project Manager chọn Tab Data Chọn Queries Chọn New Chọn New Query 5. Chọn Next để tiếp tục 5. Trong ví dụ này chọn Table Diem (rồi Add) và Hososv (rồi Add). Với ví dụ 2 ta có form DMHANG dạng biểu đồ như hình sau: 2. Chọn Close để đóng cửa sổ Add Table or View Bộ môn Tin học – ĐHTN 57 . Ngaysinh và điểm. Với yêu cầu này có thể sủ dụng Query để lấy thông tin theo các bước sau: 1. trong ví dụ này chọn biểu đồ cột (thứ 6).Finish: Chọn Finish rồi nhập vào tên form cần lưu (Kết quả của Wizard này là một Form). Step 4 . Hoten. Chọn Table hoặc View làm nguồn cho Query như hình sau. bảng điểm bao gồm Masv. 2.> Được kết quả thể hiển của Query. Trong cửa sổ Project Manager chọn Form vừa tạo rồi chọn lệnh Run . 4. Tạo mới một Query sử dụng Queries Designer Giả sử cần xem bảng điểm một môn học của một lớp nào đó.Bài giảng Visual FoxPro Bước này cho phép chọn kiểu biểu đồ.

Hình 6. o Run Query: Thực hiện (chạy) query này o View SQL: Xem query ở dạng SQL o Remove Table: Loại bỏ bảng đã chọn khỏi Query (khi chọn vào bảng) o Add Table: Show giao diện Add Table or View o Output Setting: Tuỳ chọn đầu ra cho query (xem sau). Bộ môn Tin học – ĐHTN 58 .Query Designer Đường nối thể hiện quan hệ giữa các bảng.6 • Phía trên: Thể hiện các bảng (hoặc View) sử dụng trong Query.Bài giảng Visual FoxPro 6.6 . Tiếp đến giao diện Query xuất hiện như hình 6.

các bản ghi này không có trong Hoađon. Selected Fields: Các trường đã chọn. đơn giá là bao nhiêu? Để giái quyết vấn đề này chúng ta sẽ xét các Joint sau đây. Mục Functions and Expressions: Khai báo 1 biểu thức và có thể thêm (Add) biểu thức này vào Selected fields (và nó có vai trò như 1 trường. Tab Joint: Thiết lập các thuộc tính về kết nối giữa 2 bảng. Lệnh Add All: Thêm tất cả các trường từ Available Fields vào Selected Fields.Bài giảng Visual FoxPro • Phía dưới: Các tuỳ chọn cho thiết kế Query Tab Fields: Chọn các trường cho query. dùng khai báo AS <TenTruong> để đặt tên cho biểu thức này). kiểu liên kết (Joint Type) có vai trò quan trọng trong việc ứng xử giữa các bảng. Ví dụ có 2 bảng Dmhang và Hoadon được dùng trong 1 query và có số liệu như hình sau: Bảng Dmhang có chứa các bản ghi H4.        Available Fields: Các filed có thể chọn cho query. H5 có số hóa đơn là bao nhiêu? Hóa đơn 7 mặt hàng H10 thì tên hàng là gì. Bộ môn Tin học – ĐHTN 59 . Lệnh Remove: Loại bỏ 1 trường đã chọn trong Selected Fields. Khi truy xuất dữ liệu. Lệnh Remove All: Loại bỏ tất cả các trường đã chọn trong Selected Fields. H5. Các bảng dùng cho 1 query thường có quan hệ với nhau. và ngược lại trong Hoadon có mặt hàng H10 là loại hàng chưa có trong Dmhang. Như vậy khi ghép 2 bảng này mặt hang H4. Lệnh Add: Thêm trường đã chọn từ Available Fields vào Selected Fields.

Sắp xếp các kết quả Query. 3. Sắp xếp thứ tự các field kết xuất: trong phần selected fields. o Case: không phân biệt chữ hoa hay chữ thường. o Nhập tiêu chuẩn so sánh trong hộp Example. • Thẻ Group By: chọn field hoặc biểu thức làm tiêu chuẩn nhóm. Nhóm kết quả của Query Là tập hợp những record cùng loại. Trong tab Order By: o Đặt tiêu chuẩn sắp xếp: tại Selected Fields. • Right Outer joint: tương tự Left Outer Joint nhưng tất cả các record nằm trong table bên phải sẽ xuất hiện trong kết quả • Full Joint: là loại kết nối giữa Left Outer Joint và Right Outer Joint. Hiển thị tên riêng cho 1 field: trong hộp Functions and expression gõ: <tên-field> AS <tên-riêng>. cần đặt điều kiện lọc dữ liệu cho kết quả Query trong tab Filter. o Chọn một field làm chuẩn để chọn các record. H5 và H7 trong cả 2 bảng sẽ không được trả về) • Left Outer Joint: là mối kết nối giữa hai tables mà các record nằm trong table bên trái sẽ xuất hiện trong kết quả của Query cho dù nó có so khớp với bảng kia hay không. Có thể giới hạn kết quả tìm kiếm bằng cách kết hợp với các toán tử ở mục logical. o Loại bỏ tiêu chuẩn sắp xếp: chọn field muốn loại bỏ -> Remove. Có thể thực hiện việc tính toán trên nhóm các records. chọn biểu thức so sánh. kéo ô vuông tương ứng với field và thả vào vị trí thích hợp. o Chọn nút Add để đặt biểu thức này vào hộp Selected Fields. o Thứ tự các field trong Ordering criteria xác định tầm quan trọng của kết quả sắp xếp. chọn tên field -> Add.Bài giảng Visual FoxPro • Left Table: Bảng phía trái (bảng cha) • Right Table: Bảng phía phải (bảng con) • Joint Type: Có thể 1 trong các loại sau: • Inner joint: Chỉ trả về các bản ghi có thể so khớp được với nhau trên 2 bảng (khi đó các bản ghi H4. o Từ danh sách Criteria. • Xây dựng biểu thức tính toán kết quả nhóm: o Trong thẻ Field. Vì vậy. Chọn các record cho kết quả: thông thường các kết quả trả về phải thỏa mãn một tiêu chuẩn nào đó. • • • • • • • Chọn các field cần xuất: tại available fields chọn tên field -> Click nút Add. 4. hộp Functions and expressions: gõ biểu thức tính toán. Xác định các kết quả. Loại bỏ field: tại selected field chọn field cần bỏ -> click nút Remove. • Có thể giới hạn kết quả hiển thị: 60 Bộ môn Tin học – ĐHTN .

Có thể gửi kết quả của Query đến các nơi khác nhau. kết quả của Query sẽ được hiển thị trong cửa sổ Browse. Hướng kết xuất của Query.  Chọn biểu thức so sánh. • Từ thanh công cụ Query Design. chọn Having. Gửi kết xuất vào file Report (. 5. chọn Query Destination.  Example: Nhập giá trị tiêu chuẩn. chọn nơi kết xuất: Nút lệnh Browse Cursor Table Graph Screen Report Label Nơi kết xuất Hiển thị kết quả trong cửa sổ Browse Lưu kết quả của Query trong table để đọc tạm Lưu kết quả Query như một Table. hoặc trong cửa sổ tích cực hiện hành.Bài giảng Visual FoxPro o Trong Group By. Kết quả Query có thể sử dụng với Microsoft Graph . o Hộp thoại Having:  Field name: chọn tên field hoặc biểu thức tính toán. Mặc định.ứng dụng độc lập với Visual FoxPro.lbx) Bộ môn Tin học – ĐHTN 61 . • Trong hộp thoại Query Destination. Hiển thị kết quả Query trong cửa sổ Visual FoxPro chính.frx) Gửi đầu xuất vào file Label (.

• Từ cửa sổ chương trình. các bảng dữ liệu đang sử dụng. Chương trình Là một dãy lệnh liên tiếp được tổ chức vào 1 file chương trình. từ cửa sổ lệnh đưa vào lệnh. Trong một chương trình. Xử lý. b) Phần thân chương trình: Thực hiện các công việc mà chương trình yêu cầu như : • • • Cập nhập dữ liệu. Bộ môn Tin học – ĐHTN 62 . c) Kết thúc chương trình • • • Đóng các tập tin CSDL. tính toán. các file cơ sở dữ liệu.. CLEAR: xoá màn hình hiển thị kết quả. . • • MODIFY COMAND < tên file chương trình > Lúc này xuất hiện cửa sổ chương trình để ta có thể đưa các lệnh vào cho nó. Kết xuất thông tin. Giải phóng biến nhớ. Soạn thảo chương trình. II. SET TALK OFF/ON : ẩn hiện các kết quả thực hiện lệnh. • Nếu hộp thoại Save xuất hiện.. a) Tạo môi trường làm việc: thường chứa các lệnh sau: • • • • • • SET DATE FRENCH: đặt ngày tháng năm theo dạng DD-MM-YY SET CURRENCY ON : đặt năm có 4 chữ số. Để soạn thảo chương trình. Một chương trình foxpro thường có 3 phần.Bài giảng Visual FoxPro CHƯƠNG V: LẬP TRÌNH TRÊN VISUAL FOXPRO I.. CLOSE ALL: đóng các bảng dữ liệu. file chương trình mặc định có phần mở rộng là *. SET DEFAULT TO <đường dẫn> : đặt đường dẫn hiện thời. gõ Ctrl + E. chọn OK. Trả lại các chế độ cho hệ thống. mỗi lệnh được viết trên một hàng và mỗi hàng chỉ chứa một lệnh tại một cột bất kỳ. PRG.

Ví dụ: DATE(): trả về ngày hiện hành của hệ thống. 4. Các thủ tục và hàm do người sử dụng tự tạo.Bài giảng Visual FoxPro d) Chú thích trong chương trình Là các giải thích được thêm vào để làm rõ cho chương trình. Cú pháp: DO <tên-chương-trình-con> Cách 2: chỉ ra tên hàm và cung cấp các tham số cho hàm. 6. Bộ môn Tin học – ĐHTN 63 . Cách gọi Cách 1: sử dụng câu lệnh DO. Thông thường. • Tham trị: Chỉ rõ một biến sẽ được truyền tới hàm bằng giá trị. 7.. Thủ tục và hàm cho phép giữ đoạn chương trình ở một nơi và có thể gọi thi hành nó khắp nơi trong ứng dụng. tuy nhiên có thể trả về bất kì giá trị nào bằng câu lệnh RETURN. ?myfunc() Xuất giá trị của hàm ra cửa sổ hiện hành. MAX(1.9): trả về giá trị 9.6. Nhận giá trị trả về từ hàm. Cấu tạo PROCEDURE <tên-chương-trình-con> <Các câu lệnh> ENDPROCEDURE FUNCTION <tên-hàm>[tham số] <Các câu lệnh> RETURN 5. Ví dụ: Hàm dưới đây trả về một ngày sau khi cộng thêm 14 ngày. mọi hàm đều trả về giá trị .3. Truyền tham biến hay tham trị. FUNCTION ngayto PARAMETERS dDate RETURN dDate + 14 ENDFUNC Các cách có thể lưu trữ giá trị trả về từ hàm: Lệnh Diễn giải var = myfunc() Lưu giá trị trả về từ hàm vào một biến. phải được bắt đầu bởi dấu * hay && • *: Bắt đầu một dòng • && : Viết sau một lệnh XXXIV. • Tham biến: Tương tự tham trị nhưng nếu ta thay đổi giá trị của biến đó trong thủ tục hoặc hàm thì giá trị gốc của nó cũng thay đổi theo.T. khi đó giá trị của biến này có thể bị thay đổi trong phạm vi thủ tục hoặc hàm nhưng giá trị gốc của nó không thay đổi.

Ví dụ: ACCEPT ‘nhap ho ten’ to bhoten ? ‘Ho ten vua nhap'. c Nhập giá trị cho biến từ bàn phím.Bài giảng Visual FoxPro XXXV. Lệnh INPUT Cú pháp: INPUT <Bthức chuỗi> to <biến> Chức năng: Tương tự lệnh trên nhưng có thể nhận dữ liệu theo từng kiểu: • • • • Kiểu Charater: Phải được đặt trong cặp dấu ' . Kiểu Date: Phải được để trong dấu {}.T. bhoten <Bthức chuỗi> là một câu nhắc nhở người sử dụng. hay . Ví dụ: STORE 0 To a. ' hay ". kết thúc bởi phím Enter.. "... b. nếu đã có thì thay thế bởi giá trị mới. b. a) Lệnh ACCEPT Cú pháp ACCEPT <bthức chuỗi> to <biến chuỗi> Chức năng: Dùng để nhập một chuỗi từ bàn phím.. Biến nhớ Khai báo biến a) Lệnh gán = Cú pháp: Ví dụ: b) Lệnh STORE Cú pháp: STORE <bthức> to <ds biến> <biến> = <biểu thức> a= 5 ngay = Date() Chức năng: Gán giá trị <bthức> cho <ds biến> . 64 Bộ môn Tin học – ĐHTN . Kiểu Logic: Nhập giá trị . giá trị nhận được sẽ đưa cho <biến>.F. Kiểu Numberic: Nhập dữ liệu kiểu số. nếu <biến> chưa tồn tại nó sẽ khai báo.

Quy ước: Chương trình được thực hiện từ trên xuống dưới. Các cấu trúc điều khiển chương trình 1. nếu biến chưa có thì nó sẽ tự khai báo.T. nếu đã có thì nó sẽ thay giá trị của biến bởi giá trị vừa nhập.Bài giảng Visual FoxPro Ví dụ: • • INPUT 'Nhap ngay sinh' TO bngaysinh INPUT 'Nhap diem" TO bdiem Chú ý: Trong hai lệnh trên. thì <các lệnh> sẽ được thực hiện. XXXVI. 2. Còn được gọi là cấu trúc chọn lựa. Bộ môn Tin học – ĐHTN 65 . thông báo số lớn nhất. Cấu trúc tuần tự. Cấu trúc rẽ nhánh. ngược lại thực hiện các lệnh tiếp theo sau lệnh ENDIF. <Bthức L> sẽ được tính. nếu có giá trị . Ví dụ : Viết chương trình nhập vào 2 số. Dạng khuyết: Cú pháp: IF <Bthức L> <các lệnh> ENDIF Chức năng : Khi gặp cấu trúc này. Có hai dạng: a.

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

Dạng đầy đủ: Cú pháp: Chức năng: Khi gặp cấu trúc này. thì <các lệnh1> sẽ được thực hiện.T. ngược lại (có giá trị . . Nếu có giá trị .b.) thì sẽ thực hiện <các lệnh 2>.F. nếu đúng thì thông báo năm sinh và năm làm việc. ngược lại thì thông báo là không phải nhân viên của công ty. tìm xem có đúng là nhân viên của công ty hay không. Sau đó tiếp tục thực hiện các lênh tiếp theo trong chương trình. <Bthức L> sẽ được tính. Ví dụ: Dựa vào bảng nhanvien. hãy nhập vào một họ tên nhân viên.

3. Lựa chọn một trong nhiều trường hợp DO CASE CASE <Bthức L1> <các lệnh 1> CASE <Bthức L2> <các lệnh 2> ………….. CASE <Bthức Ln> <các lệnh n> [OTHERWISE <Các lệnh n+1>] ENDCASE Chức năng: Khi gặp cấu trúc DO CASE, các <Bthức L> điều kiện sẽ được tính. Nếu <Bthức L> điều kiện nào đó có giá trị .T. thì nhóm lệnh tương ứng sẽ được thực hiện và kết thúc cấu trúc này, rồi tiếp tục thực hiện các lênh sau ENDCASE. Trong trường hợp không có <bthức L> nào từ 1 đến n có giá trị .T. thì <nhóm lệnh n+1> (nếu có) sẽ được thực hiện. Ví dụ: Viết chương trình nhập vào một năm (có 4 chữ số), sau đó nhập thêm một tháng, cho biết tháng này có bao nhiêu ngày.

4. Cấu trúc lặp. Cấu trúc DO WHILE

Chức năng: Khi gặp cấu trúc này thì <Bthức L> sẽ được tính, nếu có giá trị .F. thì sẽ dừng và thực hiện các lệnh sau ENDDO. Nếu có giá trị .T. thì các lệnh trong thân vòng lặp sẽ được thực hiện và lại quay về kiểm tra điều kiện trong <bthức L> và cứ thế tiếp tục.

[LOOP]: Khi gặp lệnh này, Foxpro sẽ quay về kiểm tra điều kiện logic mà bỏ qua các lệnh phía sau [LOOP]. • [EXIT]: Khi gặp lệnh này thĩ sẽ thoát ra khỏi chương trình. Ví dụ: Cho biết dang sáchhọ tên của các nhân viên trong công ty.

Chú ý: Khi sử dụng cấu trúc này, các lệnh trong thân vòng lặp phải thay đổi được giá trị của <Bthức L> để đảm bảo tính kết thúc. Ví dụ: Nhập vào một năm, hãy thông báo danh sách họ tên, ngày sinh của những nhân viên làm việc trong năm đó, nếu không có thì thông báo là không có.

Cấu trúc FOR Cú pháp: FOR <biến>=<trị-đầu> TO <trị-cuối> <Các câu lệnh> ENDFOR Chức năng: Tương tự DO WHILE nhưng chỉ sử dụng khi số vòng lặp đã biết trước. hiển thị nữ nhân viên sinh năm đó.Cấu trúc SCAN sẽ dừng khi nào duyệt đến bản ghi cuối cùng của bảng dữ liệu đang xét. ngược lại vòng lặp sẽ dừng. Ví dụ: Viết chương trình nhập năm (bằng chữ số). Cấu trúc SCAN Cú pháp: SCAN [<phạm vi>] [FOR<Bthức L>] [WHILE<bthức L>] <các lệnh> [LOOP] [EXIT] END SCAN Chức năng: Dùng để duyệt lần lượt các bản ghi trong bảng dữ liệu hiện hành nằm trong <phạm vi> được chỉ ra và thoả mãn điều kiện của các <Bthức L> sau FOR hoặc WHILE. Tương ứng với một bản ghi tìm được. Chú ý: <trị-đầu> phải nhỏ hơn <trị cuối>. . <các lệnh> sẽ được thực hiện.

.

Double Click ..Ở đâ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 v ới chức năng riêng của nó. Logic chương trình diễn ra theo sự kiện . các phương thức là những đoạn trình chứa trong điều khiển. Đối tượng (điều khiển . .Control): Các cụng cụ lập trình trên Windows thường cung cấp sẵn các đối tượng điều kiển như: Cửa sổ (FORM). đối tượng Text box có khả năng đáp ứng sự kiện Click. Ví dụ: đối tượng Command Button cú khả năng đáp ứng sự kiện Click. Ví dụ với FORM có thể sử dụng phương thức Cls để xóa Form. Lập trình trên Windows • • • • • Lập trình trên Windows có nhiều khác biệt so với lập trình trên DOS (như lập trình bằng PASCAL). lập trình hướng thủ tục. các form và control là các đối tượng được dùng để xây dựng các ứng dụng. Thiết kế và lập trình hướng đối tượng là một sự thay đổi đối với phong cách lập trình cũ.. định danh của đối tượng như: Name .. Mỗi một đối tuợng đều có một bộ thuộc tính mô tả đối tượng.. với đối tượng TextBox sử dụng phương thức Refresh để làm tươi dữ liệu. các thuộc tính này qui định tính chất hiển thị. Khái niệm lập trình hướng đối tượng. Thuộc tính (Properties): Mỗi đối tượng điều khiển được mô tả qua một số thuộc tính nào đó. Ho (Textbox). và nhiều đối tượng điều khiển khác thường dùng cho việc thiết kế giao diện.CHƯƠNG VI: FORMS I. Sự kiện (Events): Mỗi đối tượng điều khiển có khả năng đáp ứng một số sự kiện nào đó. nút lệnh (Command Button). Width .chiều cao .độ rộng. Trong Visual Foxpro. Các sự kiện này do người sử dụng tạo ra.Font chữ. XXXVII. Change . Các sự kiện do người lập trình viết nhằm thực thi một công việc nào đó. Lưới (GRID) .... phương thức Line để vẽ một đoạn thẳng... Các thuộc tính của đối tượng do người lập trình xác lập. và tập hợp những sự kiện đó là những phản ứng của đối tượng.. các điểm khác biệt chính là: Sử dụng nhiều đối tượng trực quan trong thiết kế giao diệ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 đó.Tên đối tượng... Các phương thức được thiết lập sẵn nhằm thực thi một công việc cụ thể. Phương thức (Methods): Mỗi đối tượng điều khiển thường có một vài phương thức tương ứng với một “hành động” nào đó. phương thức Move để di chuyển vị trí . Height . Font .

thực hiện lệnh sau: Thực thi một Form bằng 1 trong hai cách: o Cách 1: Từ cửa sổ Project Manager. • Chạy form: Từ cửa sổ lệnh. ta dùng: <tên form>. chọn save để lưu vào <tên form>. o Cách 2: Thực hiện qua lệnh Do FORM như sau: DO FORM <Tên Form> • Đóng form (giải phóng khỏi bộ nhớ): RELEASE <tên form> 2. chọn Form rồi chọn Form cần thi hành rồi nhấn Run. <đối tượng>: nếu <đối tượng> không cùng với form đang thao tác.<đối tượng>: nếu đối tượng nằm trên form đang thao tác. FORM Form được dùng để làm giao diện nhập. • Quản lý form Lưu Form: Từ menu file. hiển thị thông tin.XXXVIII. Truy 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. Ví dụ: Giao diện của một Form nhập dữ liệu 1. 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 sử dụng làm cho ứng dụng ra dáng chuyên nghiệp. mặc định phần mở rộng là scx. <this form>. nếu muốn thay đổi thuộc tính của form . chọn Documents. Muốn thay đổi giá trị các thuộc tính trên form.

ta sử dụng <tên form>. • Visible: Giá trị logic: o True: Thấy được đối tượng.<thuộc tính>= <giá trị>.show Một số phương thức thường dùng: • • • • • Refresh: Làm tươi lại đối tượng. 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: <tên đối tượng>. Phương thức của đối tượng (Methods) Để gọi đến phương thức của một đối tượng.<phương thức> Ví dụ: Myform. . Top: Vị trí trên của đối tượng so với vật chứa nó. Release: Giải phóng đối tượng. Name: Tên để chỉ đối tượng. Show: Hiện đối tượng. Nếu muốn thay đổi các thuộc tính của form hiện hành: <Thisform>.<t_tính>=<giá trị>. 4. SetFocus: Thiết lập “tầm ngắm” cho đối tượng. Height: Chiều cao của đối tượng. Hide: ẩn đối tượng. Width: Chiều rộng của đối tượng. o False: Không có quyền làm việc. Enable: Giá trị logic: o True: có quyền làm việc.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ó. ta dùng cú pháp: <tên đối tượng>.không phải là form hiện hành.<thuộc tính> Ví dụ: Myform. 3. o False: Không thấy được đối tượng.

chọn form.  One-To-Many Form Wizard Tạo Form từ 2 bảng có quan hệ (1-nhiều) với nhau. ta dùng cú pháp sau: <tên đối tượng>.5. KeyPress: Được gọi khi nhấn một phím kích chuột vào đối tượng. Từ menu Tools. MouseMove: Được gọi khi di chuyển chuột trên bề mặt của đối tượng. 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. . xuất hiện giao diện wizard selection. Tạo mới một FORM sử dụng Wizard Các bước thực hiện: • • • Mở Project cần thực hiện.<sự kiện> Một số sự kiện thường sử dụng: • • • • • • • Click: Được gọi khi kích chuột vào đối tượng. Tạo form thông qua Wizard 6. trong Project Manager chọn Tab Documents Chọn Form / Chọn New Chọn Form Wizard. DbClick: Được gọi khi kích đúp chuột vào đối tượng. Sự kiện của đối tượng Để chỉ đến sự kiện của đối tượng.Tạo Form từ một bảng đơn. khi đó giao diện chọn kiểu Form Wizard xuất hiện: • Chọn kiểu Form Wizard:  Form Wizard . rồi thông qua hướng dẫn. Got focus: Được gọi khi đưa đối tượng vào tầm ngắm. chọn wizard.

Choose Form Style: Chọn kiểu form. Step 1 . Trong ví dụ này chọn bảng DMKHOA. Chọn Form Wizard.Ví dụ 1: Tạo Form từ bảng đơn . Tables và Fields (Sử dụng lệnh >. Step 2 . kiểu nút lệnh . >> để chọn các trường cần thiết). Khi đó chọn xong các trường. chọn Next để qua bước 2. 3. chọn tất cả các trường. chọn OK 2.Select Fields: Chọn Database.Form cập nhật danh mục khoa (DMKHOA) 1.

Sort Records Sắp xếp: Chọn 1 trong các trường để sắp xếp hoặc có thể bỏ qua. • Custom .Không có button. • • • Text . • Nên chọn là Text hoặc Picture. Step 3 . 5.Nút lệnh dạng ảnh.Style: Khi chọn một kiểu form thì dạng form tương ứng sẽ hiển thị phần bên trái. No button .Nút lệnh dạng chữ (Text). 4.Tuỳ chọn. Step 4 – Finish Nhập vào tiêu đề cho form rồi chọn Finish. Picture . Button type: Kiểu nút lệnh. . Tiếp đến nhập vào tên form rồi chọn Save để ghi lại.

• • • Thanh công cụ Color Palette (Tự tìm hiểu) Thanh công cụ Layout (Tự tìm hiểu) Thanh công cụ Toolbar (Tự tìm hiểu) . Mở Project cần thực hiện. Chọn New Form.7. trong Project Manager chọn Tab Documents. Chọn New 4. Bên phải là thanh toolbar Form Controls. Giao diện Form Designer xuất hiện: Trong đó: • • Phía trên là thanh toolbar Form Designer. 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 <tên form> Các bước thực hiện: 1. Các thành phần liên quan đến công cụ Form Design. 2. Chọn Form 3.

Hiển thị cửa sổ Properties: R_Click vào phần nền của Form đang thiết kế => Pop-up menu xuất hiện và ta chọn chức năng Properties. cũng như các đối tượng khác.8. Một số thuộc tính của FORM Form là đối tượng quan trọng trong thiết kế giao diện trên Windows. Có hai cách để thiết lập các thuộc tính của form: sử dụng cửa sổ Properties và sử dụng lệnh để thiết lập (có những thuộc tính chỉ cho phép thiết lập ở chế độ lệnh). Form có các thuộc tính riêng của nó. .

Enabled: Cho phép có hiệu lực hay vô hiệu khả năng đáp ứng sự kiện của các control trên form (và cả form).F.T. Nếu các biểu thức hoặc Form có lỗi thì Form sẽ không khởi động được. o 2 . Name: Tên (định danh) Form.Fixed Dialog: Theo dạng cửa sổ hộp thoại.. AutoCenter: vị trí xuất hiện của Form là giữa màn hình. . o 1 . MinButton: Hiển thị hay không các nút lệnh Maximize. BackColor: Mầu nền của Form. Trong chương trình thuộc tính này nhận xâu text thể hiện tên của font chữ nào đó. Có thể nhận 1 trong các giá trị: o 0 . o 2 .. Visible: chỉ rõ đối tượng xuất hiện hay ẩn.Fixed Single: Dạng đơn. hoặc . Có thể nhận 1 trong hai giá trị: . thì vị trí của Form phụ thuộc vào thuộc tính Top. Caption: Tiêu đề của Form. ví dụ “. .T.T.F.T.F. FontSize: Kích thước font chữ. Thuộc tính này nhận các giá trị: . Thuộc tính này nhận các giá trị: . . Khi thiết kế có thể dùng hộp thoại chọn font để chọn các font chữ hiện có trong máy tính.No Border: Không có đường viền. Thuộc tính này nhận các giá trị: . Left (mặc định)). ControlBox: Hiển thị hoặc không hộp Control menu box góc trên bên trái form. Tên form là xâu kí tự không chứa dấu cách.F.Thu thành biểu tượng trên task bar (Minimize). Maxbutton. (Nếu . Nếu thiết lập bằng hàm hoặc các biểu thức thì chúng sẽ được tính tóa trước khi chạy form. o 1 . Closable: Cho phép sử dụng lệnh Close trong hộp Control . Thuộc tính này nhận giá trị là một xâu kí tự. Thuộc tính có thể thay đổi hoặc thiết lập bằng một biểu thức. FontName: Xác định font chữ dùng để hiển thị các đối tượng text trên form.F.Phóng to hết cỡ màn hình (Maximize). Có thể nhận 1 trong hai giá trị: . Thuộc tính này nhận các giá trị: . tức là vị trí.menu hoặc nút Close góc trên.T. hoặc .Một số thuộc tính thường sử dụng của Form. mặc định caption là tên form. kích thước của form như thiết kế (mặc định). và kí tự đặc biệt. hoặc .T. Minimize. o 3 – Sizable: Có thể thay đổi kích thước (Mặc định). Giới hạn nội dung của Caption là 256 kí tự. cố định. Showtips: cho phép hay không việc xuất hiện toolTip của các đối tượng. bên phải form.F. Thuộc tính này có thể nhận các giá trị: o 0 . hoặc .F. WindowState: Xác định trạng thái form. BorderStyle: Dạng đường viền của Form. • • • • • • • • • • • • • • • AlwaysOnTop: Form luôn nằm trên các đối tượng khác.Bình thường (Normal). “Times New Roman”.vnTime”. khi chạy.

Kích chuột trái vào mũi tên xuống (bên cạnh) để chọn tình huống nếu cần.butTONSET1. • Chọn mục Form và mở rộng. Kích chuột trái vào mũi tên xuống (bên cạnh) để chọn Object nếu cần. Một số sự kiện (Event) thường sử dụng của Form 1.cmdEnd.click . trong ví dụ này tình huống cần chọn là Activate. khi đó giao diện Form Designer xuất hiện Trong Form Designer D_Click chuột trái vào nền Form. • Procedure: Hiển thị tình huống (event) có thể đáp ứng của đối tượng (Object) đó. Activate: Tình huống này xảy ra khi form được “kích hoạt” (active). Ví dụ: Khi kích hoạt form DMKHOA (tạo bằng Form Wizard trước đó) cần đưa về bản ghi cuối cùng. Trong ví dụ này chúng ta cần đưa về bản ghi cuối rồi nhập vào lệnh: thisform. Cách thực hiện: • Trong cửa sổ Project Manager chọn mục Documents.9.Tên của form DMHANG). • Chọn form DMKHOA • Chọn Modify. • Viết lệnh: Khi đó chọn đúng đối tượng và tình huống cần thiết thì cửa sổ bên dưới cho phép soạn thảo lệnh nhằm đáp ứng tình huống đặt ra. khi đó giao diện lập trình trong form xuất hiện như sau: • Object: hiển thị tên đối tượng (trong tình huống này là Form1 .

cmdEnd: Tên nút lệnh Bottom. Deactivate: Tình huống xảy ra khi form bị thôi kích hoạt (ngược vơi kích hoạt). Thực hiện tương tự như trên nhưng chọn Event là Destroy và viết lệnh: MESSAGEBOX("Destroy!") 6. butTONSET1: Tên lớp chứa các nút lệnh. Click: Tình huống xảy ra khi người sử dụng click phím trái chuột trên đối tượng Ví dụ: khi click chuột trái lên form DMKHOA -> Hiển thị thông báo “Ban vua click chuot trai len form!”. 2. Click: Tình huống click của đối tượng cmdEnd. Thực hiện tương tự như trên nhưng chọn Event là click và viết lệnh: MESSAGEBOX("Ban vua click chuot trai tren form!") 3. . Thực hiện tương tự như trên nhưng chọn Event là Dbclick và viết lệnh: MESSAGEBOX("Ban vua Double click chuot trai tren form!") 4. 5.Trong đó: • • • • Thisform: là tên thay thế của form hiện hành. Destroy: Tình huống này xảy ra khi form được hủy bỏ (destroy). Ví dụ: Hiển thị thông báo “Init” khi tình huống này xảy ra. Init: Tình huống này xảy ra khi form được khởi tạo. Ví dụ: Hiển thị thông báo “Destroy” khi tình huống này xảy ra. Ví dụ: khi Dbclick chuột trái lên form DMKHOA -> Hiển thị thông báo “Ban vua Double click chuot trai len form!”. Ví dụ: hiển thị một thông báo khi thôi kích hoạt 1 form. Dbclick: Tình huống này xảy ra khi người sử dụng D_Click chuột trái trên form. đó hoặc thay đổi giá trị của một đối tượng nào đó hoặc trên khoảng trống của form.

y): Vẽ điểm x. cClass): thêm mới một đối tượng. • Vào menu View/Data environment.y. DATA ENVIRONMENT tự động mở các bảng và View khi Form được khởi động và cũng tự đóng chúng khi kết thúc làm việc với Form. • Circle(r. • Cls: Xóa sạch nền form. Ví dụ: Hiển thị thông báo “Load” khi tình huống này xảy ra. • Show: Hiển thị form.y2): Vẽ đoạn thẳng từ x1. Thực hiện tương tự như trên nhưng chọn Event là Destroy và viết lệnh: MESSAGEBOX("Load!") 10.x2.y): Cho phép vẽ lên form 1 vòng tròn bán kính r. XXXIX. • Hide: ẩn form • Line(x1. tâm tại x.y1 đến x2.y2 • Print(cText): In một dòng text ra màn hình • Pset(x. Load: Tình huống này xảy ra trước khi các đối tượng được khởi tạo.Thực hiện tương tự như trên nhưng chọn Event là Init và viết lệnh: MESSAGEBOX("Init!") 7.y1. Thiết lập DATA ENVIRONMENT: • Mở Form cần làm việc ở chế độ Form Design. xuất hiện giao diện: . Data Environment Là đối tượng dùng để chứa các bảng dữ liệu hay View cùng với các quan hệ của chúng mà Form cần sử dụng. Một số phương thức (Methods) thường sử dụng của Form • AddObject(cName. x.y • Release: Xóa form hiện thời.

Một số đối tượng trên Controls • Các đối tượng điều khiển (Control) được sử dụng trong việc thiết kế giao diện trên Form. Ví dụ giao diện sau được thiết kế từ FORM và các control.tương tự như FORM).. o Vẽ nó trên form để xác định vị trí. Mỗi loại đối tượng thường được thiết kế cho một mục đích nhất định.R_Click lên vùng trống trong Data Environment ->click Add để thêm các bảng. o Viết mã lệnh cho các tình huống tương ứng. . • Các Control được xác định qua các Properties (thuộc tính). Label. Methods (Phương thức) và Events (sự kiện .. đối tượng Command Button để thể hiện các nút lệnh. • Có thể hiển thị/ẩn Form Control bằng cách trong menu View chọn Form Control Toolbar. o Thiết lập các thuộc tính thích hợp. • • Muốn đưa đối tượng trên thanh Control vào form: 4 bước o Kích chuột vào đối tượng cần đưa. Tuy nhiên có thể sử dụng với mục đích khác. • Thanh công cụ Form Controls: Khi đang mở Form ở chế độ thiết kế (Form Designer). đối tượng TextBox được dùng để cho phép nhập liệu. View. Visual Foxpro hiển thị thanh công cụ Form Controls như hình bên. Report. Ví dụ đối tượng Label (nhãn) được dùng để hiển thị một chú thích.

o Thuộc tính ShowWindow: 2 – As Top Level Form. có thể di chuyển khắp màn hình nhưng không thể di chuyển ra sau cửa sổ cha. Các loại chức năng muốn xây dựng trên Form: • Cung cấp cho người sử dụng các giá trị có thể chọn.  1 – In Top-Level Form: cửa sổ con xuất hiện bên trong một cửa sổ dạng Top-Level. o Thuộc tính ShowWindow: chọn một trong hai giá trị:  0 – Inscreen: Form cha sẽ trở thành cửa sổ chính của Visual Foxpro. Form set XLII. chọn nút Control cần dùng: . • Control không gắn liền với dữ liệu. • Top-level Form: Là form độc lập. không ảnh hưởng đến form cha. • Floating form: Là form thuộc về một form cha. mỗi một cửa sổ đều xuất hiện trên màn hình nền của Window. được dùng trong một ứng dụng MDI. • Cho phép người sử dụng một giá trị nằm trong một khoảng nhất định.XL. XLI. Single Document Interface (SDI): Là ứng dụng chứa một hay nhiều cửa sổ độc lập. Sử dụng Control Control dùng để thao tác với cơ sở dữ liệu. • Thể hiện thông tin. Form con không thêt di chuyển ra khỏi form cha. nó được dùng để tạo ứng dụng dạng SDI hay làm form cha cho các form con khác trong ứng dụng MDI. Khi bị thu nhỏ. • Yêu cầu của một form con: o Dùng form design tạo mới hoặc chỉnh sửa một form. Thêm một control vào form: • Trên thanh công cụ Form Control. • Cho phép người sử dụng nhập các giá trị không thể định trước. nó nằm dưới cửa sổ form cha. có thể dùng để gõ nội dung vào. • Yêu cầu của một Top-level form: o Dùng form design tạo mới hoặc chỉnh sửa một form. Có hai loại Control: • Control gắn liền với dữ liệu: giá trị gõ vào hoặc được chọn sẽ được lưu vào trong dữ liệu nguồn thông qua việc thiết lập thuộc tính ControlSource hoặc RecordSource. Visual Foxpro cho phép tạo nhiều loại form: • Child form: Là form nằm trong một form khác. Tạo giao diện Single – Multiple Document Multiple Document Interface (MDI): Là ứng dụng chứa một cửa sổ chính và các cửa sổ khác của ứng dụng được chứa trong hay nằm trên cửa sổ chính. click và di chuyển chúng khắp trên Form.

Transparent xác định tính chất trong suốt của nền (có thể nhìn thấy mọi đối tượng “phía sau”). Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định. BackStyle: Thiết lập tính chất nền. • 1 . Label cũng có nhiều Methods và Events. 2. Height: Chiều cao Left: Vị trí cạnh trái Name: Tên của đối tượng (dùng để sử dụng trong chương trình) Top: Vị trí cạnh trên Visible: Thiết lập tính chất Hiện/ẩn. Thuộc tính này nhận 2 giá trị: . tuy nhiên vì mục đích của đối tượng này là hiển thị một đoạn text nên trong phần này không giới thiệu các methods và events này. Autosize: Tự động thay đổi kích thước phù hợp cho việc hiển thị thuộc tính Caption của nó. Caption: Text hiển thị như một nhãn. ForeColor: Đặt mầu chữ. hoặc . Các Properties thường sử dụng: • • • • • • • • • • • • • • Alignment: Canh lề phần text hiển thị của label.T.Opaque không cho quan sát các đối tượng phía sau. Width: Độ rộng của label. Thuộc tính này nhận chuỗi text bất kỳ. • 2 .o Drag nút Control này lên Form. FontName: Đặt Font chữ. Thuộc tính này có thể nhận các giá trị: • 0 – Left • 1-Right Canh phải. Các Properties thường sử dụng: . TextBox Cho phép người sử dụng nhập dữ liệu không định trước hoặc chỉnh sửa dữ liệu trong các field không thuộc kiểu memo. o Hoặc Click lên trên Form.Center canh giữa. BackColor: Đặt mầu nền của Label. Thuộc tính này có thể nhận một trong các giá trị: • 0 . • Khai báo nguồn dữ liệu thông qua thuộc tính ControlSource hoặc RecordSource 1. Trong khi thiết kế có thể dùng hộp mầu để chọn hoặc khi chạy chương trình có thể sử dụng hàm RBG() để xác định mầu.F. Label: Sử dụng cho: hiển thị nhãn. BorderStyle: Thiết lập thuộc tính đường viên của đối tượng. chú thích.

nhập chữ số) cho phép nhập 3 chữ số hoặc 999.• • • • • • • • • ControlSource: Cho phép “gắn kết” (bound) textbox với 1 trường hoặc biến nào đó (thông thường với 1 trường). Ví dụ. Thuộc tính này nhận các giá trị: .T. Ví dụ.có hiệu lực. chẳng hạn: dấu * MaxLength: Số ký tự tối đa có thể nhập (nếu MaxLength=0 thì số ký tự là bất kỳ. Visual Foxpro qui định kí hiệu sử dụng cho Format của textbox.. Không cho phép..Chỉ nhập các ký tự) InputMask: Định dạng dữ liệu nhập.F. • SetFocus (method): Đưa con trỏ đến đối tượng này. o Nội dung text box hiển thị dưới dạng Password: thuộc tính PasswordChar được khai báo bằng kí tự hiển thị thay thế. Value: Giá trị là xâu text hiển thị trên đối tượng này.Hiển thị chữ hoa.Vô hiệu lực Format: Định dạng dữ liệu hiển thị. .F. A . đây là giá trị mặc định). Việc “Gắn kết” ở đây được hiểu là nếu text trên textbox thay đổi thì trường hoặc biến “gắn kết” với nó cũng thay đổi theo. Visual Foxpro qui định kí hiệu sử dụng cho InputMask của textbox.) sẽ tự động xuất hiện trong vùng nhập. . Ví dụ đặt Format là !A (! .) và dấu chấm (. .999. o Ví dụ đặt InputMask là ### (# . Nhật.T. đặt thuộc tính ControlSource = text1 (text1 là 1 biến). . Enabled: Cho phép có hiệu lực hay vô hiệu khả năng đáp ứng sự kiện của textbox. .Cho phép chế độ đánh dấu. SelectOnEntry: Thiết lập chế độ đánh dấu text khi đối tượng này nhận quyền điều khiển. . thêm 1 textbox vào form và đặt thuộc tính controlSource=”Hososv. dấu phẩy (.hoten” ->Run Form. khi đó cần thực hiện Refresh để làm tươi lại dữ liệu trên Text.99 để giới hạn giá trị số nhập vào chỉ được nhỏ hơn 1000000 và chỉ có 2 số lẻ. Đức. Thuộc tính này nhận các giá trị: . nếu không thì chỉ được sử dụng chuột để chọn textbox. sau đó gán cho text1 =”Visual Foxpro”. TabIndex: Thứ tự theo Index của đối tượng (khi sử dụng phím Tab con trỏ sẽ di chuyển theo thứ tự Index từ thấp đến cao) TabStop: cho phép hay không việc sử dụng phím tắt để điều khiển. StrictDateEntry Cho phép gõ dạng ngày khác với mặc định là 99/99/99 • Các Methods và Event thường sử dụng: • Refresh (method): “Làm tươi” lại dữ liệu hiển thị trên textbox. Nhập dữ liệu dạng ngày: thiết lập các thuộc tính Property Diễn giải Century Cho phép hay không xuất hiện 2 kí tự số dầu tiên của năm Dateformat Định dạng ngày nhập theo 15 dạng quy ước theo Mỹ.

xét ô text khóa.value IF !hk$"1.Caption="" .Caption=dmkhoa. Ta thấy các khóa nhập vào ở đây phải nằm trong DMKHOA thì mới có nghĩa -> Viết sự kiện valid để kiểm tra tính hợp lệ này của ô text khóa.Value SELECT dmkhoa LOCATE FOR (ma=khoahoc) IF FOUND() THEN thisform.lblTenKhoa. nếu không hợp lệ thì có thể yêu cầu người sử dụng nhập lại.valid được viết như sau: khoahoc=this.ten ELSE IF !EMPTY(khoahoc) THEN WAIT WINDOW "Ma khoa khong dung!!" NOWAIT RETURN 0 ELSE thisform.2" then WAIT WINDOW "Gia tri khong dung! Hoc ky = 1 hoac 2" NOWAIT RETURN 0 ENDIF Ví dụ 2: Trong hình 1. Ví dụ 1: Trong hình 1. Ta có học kỳ chỉ nhận 2 giá trị là 1 hoặc 2.valid được viết như sau: hk=this. xét ô text học kỳ.lblTenKhoa. Giá thiết textbox được thiết lập các thuộc tính: Name = Khoa Maxlength=10 Khi đó sự kiện Khoa. Giá thiết textbox được thiết lập các thuộc tính Name = hocky Maxlength=1 Khi đó sự kiện hocky. để đảm bảo yêu cầu này chúng ta sẽ viết đoạn lệnh đáp ứng sự kiện valid để kiểm.• Valid (Event): Sự kiện này xảy ra trước khi chuyển quyền điều khiển tới đối tượng khác. Vì lý do như vậy nên sự kiện này thường dùng để kiểm tra tính hợp lệ của dữ liệu.

thường là 1 field của table Cho phép chèn Tab vào trong Edit box. Edit box có chế độ tự động Word-Wrapping. KeyboardHighValue Giá trị lớn nhất mà người sử dụng có thể nhập vào. Property ControlSource AllowTabs ReadOnly ScrollBars 4. Có hiển thị thanh cuộn trong khung Edit box hay không. Các Properties thường sử dụng: Property Caption DisabledPicture DownPicture Enabled Picture ToolTipText Diễn giải Text hiển thị như tên (khác với name) của nút lệnh Hình sẽ hiển thị khi nút này không có tác dụng. Spinner Thường được dùng chọn hoặc nhập vùng giá trị kiểu số. SpinnerLowValue Giá trị nhỏ nhất mà spinner hiển thị khi click vào mũi tên lên.ENDIF ENDIF • Đối tượng EditBox tương đối giống TextBox (khác biệt chủ yếu là cho phép soạn text trên nhiều dòng). Page Up. SpinnerHighValue Giá trị lớn nhất mà spinner hiển thị khi click vào mũi tên lên. KeyboardLowValue Giá trị nhỏ nhất mà người sử dụng có thể nhập vào. dùng các phím chức năng. Nếu cho phép điều này thì người sử dụng phải sử dụng Ctrl+Tab để di chuyển đến các control khác trên Form. Hình sẽ hiển thị khi nút này được nhấn. Command Button và Command Button Group Diễn giải Khai báo nguồn dữ liệu gắn với Edit box. Đặt dòng text (tooltip) khi đưa con trỏ tới nút lệnh . Cho phép chỉnh sửa nội dung hay không. Sử dụng cho: Tạo các nút lệnh. Page Down và thanh cuộn để di chuyển trong cửa sổ Edit box. Các thuộc tính thông dụng: Property Interval Diễn giải Độ tăng hay giảm mỗi khi người sử dụng click mũi tên lên/ xuống. 3. 5. Cho phép đưa một ảnh vào nút lệnh. EditBox Cho phép chỉnh sửa dữ liệu cho một field kí tự hay memo. Nút này có thể chọn được hay không.

Option button Group Sử dụng cho: Cho phép người sử dụng chỉ chọn một giá trị đưa ra...). . Ví dụ 1: Thêm vào form nút lệnh “Thoát” để đóng form. . Mặc định là 2 và option button đầu tiên được chọn. Các Properties thường sử dụng: • • ControlSource: Nguồn dữ liệu gắn với option group.F.4+32)=6 THEN thisform. • Value: Giá tị trả về của option. ControlSource thường là field số (0 hay 1) hoặc kiểu logic (.Value=1 <Thực hiện thủ tục đối với nút 1> CASE THIS. tiếp đến chon Builder. thiết lập các thuộc tính: Caption=Thoát Name=cmdThoat Khi đó dự kiện cmdThoat.T.Release ENDIF Đáp ứng thao tác Click trong nhóm các nút lệnh.Click được viết như sau: IF MESSAGEBOX("Dong form nay lai?". có thể thay đổi một số thuộc tính khác của OptionGroup bằng cách click chuột phải vào đối tượng. 6. BackStyle Nền của nhóm nút sẽ trong suốt (transparent) hay mờ đục. ButtonCount: Số option button.Value=2 <Thực hiện thủ tục đối với nút 2> CASE THIS. có thể dùng thủ tục chung: DO CASE CASE THIS. giá trị này là số thứ tự mục chọn.• Click (Event): Sự kiện này xảy ra khi người sử dụng click chuột trái vào nút lệnh (nút lệnh được thiết kế chính để đáp ứng sự kiện này).Value=3 <Thực hiện thủ tục đối với nút 3> END CASE Các thuộc tính thông dụng của Command Button Group Property Diễn giải ButtonCount Số lượng nút trong nhóm. ControlSource của từng Option button không thể là kiểu kí tự. Khi thiết kế.

F.). Bốn trạng thái của checkbox: 0 (. bật hay tắt. Unchecked . Các Properties thường dùng: • • Caption: Thể hiện phần text của đối tượng Value: Checked .T. Ví dụ: Giả sử dùng check box để hiển thị thông tin về giới tính với qui ước checked Nam. List box và Drop-down List box Cung cấp cho người sử dụng một danh sách cuốn. Trong List box. 1 (. Các Methods và Events thường dùng: Không có methods. không chọn nếu là .T. chứa một số thông tin để chọn. R_Click vào đối tượng/ Edit và chọn phần tử để thiết lập các thay đổi.F. CheckBox Sử dụng cho: Lựa chọn một trong 2 khả năng: đúng hay sai. NULL (Ctrl+O) Nếu ControlSource của checkbox là một field logic thì giá trị của record tương ứng sẽ được hiển thị: chọn nếu là . Đối với Drop-down list box.Vì đây là một dạng container nên để thay đổi các thuộc tính của từng phần tử .Caption="N÷" ENDIF 8. Khi đó sự kiện click được viết như sau: IF this.Giá trị 0 hoặc .).Value THEN this.Caption="Nam" ELSE this..F. 7. và Unchecked là nữ. Drop-down list box chỉ có một mục được thể hiện nhưng có mũi tên xuống để thể hiện danh sách các mục. 2.Giá trị 1 hoặc .T. hoặc event nào đặt biệt. hoặc ngược lại. mở hay đóng. Các Methods và Events thường dùng: • Click (Event): Xảy ra khi người sử dụng click chuột trái vào check box. nhiều mục được thể hiện một lúc. thuộc tính Style: .

Các thuộc tính của Combo box Property ControlSource DisplayControl InputMask Diễn giải Chỉ rõ field trong table. nơi dùng để lưu giá trị được chọn hay gõ vào từ danh sách. 1: Value Phải chỉ rõ giá trị trong thuộc tính RowSource. 3: SQL statement Thêm câu lệnh SQL vào thuộc tính RowSource. Có thể thể hiện thông tin từ nhiều Table. Khai báo tên của query trong RowSource. 6: Fields Chỉ rõ field hay danh sách field cần thể hiện.T. Có thể sử dụng method AddItem và RemoveItem. Chỉ rõ loại dữ liệu có thể gõ vào trong combo box . Thuộc tính ColumnCount cho phép khai báo các field đầu tiên cần thể hiện. Dùng dấu phẩy để phân cách giữa các field trong RowSource. • 2 (Drop-down List): chỉ cho phép chọn mục từ danh sách. vừa có thể gõ giá trị cần tìm để di chuyển nhanh đến một mục. 2: Alias Nguồn giá trị từ một hay nhiều field của Table.• 0 (Drop-down Combo): vừa cho phép chọn một mục trong danh sách. Các thuộc tính và Method thông dụng: Method AddItem Diễn giải Thêm một mục vào danh sách với điều kiện giá trị thuộc tính RowSource là 0 RemoveItem Gỡ bỏ một mục ra khỏi danh sách với điều kiện giá trị thuộc tính RowSource là 0 Requery Cập nhật danh sách nếu giá trị trong RowSource bị thay đổi. Điền giá trị: Thông tin cho List box và Combo box có thể từ nhiều nguồn khác nhau thông qua việc thiết lập các thuộc tính RowSourceType và RowSource RowSourceType Nguồn dữ liệu cho các mục của danh sách 0: None Người sử dụng phải tự thêm các mục vào danh sách. Chỉ rõ số lượng mục được hiển thị trong danh sách. 5: Array Nguồn dữ liệu là từ các phần tử của mảng. 7: Files Nội dung thể hiện là danh sách các file có trong thư mục hiện hành Chọn nhiều mục một lúc trong ListBox: khai báo thuộc tính MultiSelect = . 4: Query Nội dung của danh sách là kết quả của một Query được thiết kế trong Query Designer. Sử dụng thuộc tính ColumnWidths để quy định độ rộng của các cột.

IncrementalSearch Có so khớp mục đầu tiên trong danh sách khi người sử dụng gõ từng kí tự hay không. Grid Dùng để thể hiện dữ liệu theo dạng bảng. Các thuộc tính thường sử dụng. 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. • • Row Source: Xác định bảng dữ liệu cần thể hiện. • 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). Chú ý: • Nếu Row Source không được chỉ ra thì lấy bảng dữ liệu hiện hành. • Allow Addnew: Cho phép thêm các bản ghi mới hay không. Image Dùng để đưa các hình ảnh trên form. • • 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. thu nhỏ. 10. dùng để khai báo nguồn dữ liệu cho cột đó. nguyên mẫu). 11. . Các thuộc tính thường dùng. • Control Source: Được xác định cho từng cột. 9. Grid đang ở chế độ Edit có một đường viền bao quanh. Các thuộc tính thường sử 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. chọn Properties. 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 Grid. RowSource Chỉ rõ nguồn dữ liệu của các mục trong danh sách. ColumnCount: Xác định số cột của Grid.

Ví dụ: Các thuộc tính chính : • • TxtMANV các thuộc tính ControlSource là MANV TxtHOTEN các thuộc tính ControlSource là HOTEN .Sự kiện thường sử 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.

Clic k if not bof() skip -1 endif thisform.refresh CmdThoat.Click go bottom thisform.Click if not eof() skip endif thisform.Clic k use thisform.refresh CmdSau.refres h CmdCuoi.refresh CmdTruoc.release .loa d use hoso CmdDau.FrmXem.Click go top thisform.

Quá trình thiết kế gồm 4 bước chính như sau: 1. 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. chọn Wizard. Sửa đổi layout của report. Xem và in report.CHƯƠNG VII: REPORT XLIII. Report có hai thành phần cơ bản cấu thành: dữ liệu nguồn. Tạo Report bằng Wizard Từ menu Tools. 2. Tạo Report layout: Có thể sử dụng report wizard hay report designer. 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ả. 4. chọn Report sau đó làm theo các bước hướng dẫn. XLIV. 3. Khái niệm 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. Màn hình thiết kế Report Các bước 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. 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. .

Tạo Report bằng REPORT DESIGNER Quản lý Report Tạo mới Report: CREATE REPORT <tên Report> . Bước 6: Đặt tựa đề. XLV. kết thúc.• • • • 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.

chọn title summary Page Header: Để in trên mỗi header của mỗi trang in. .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 <tên report> Xem trước khi in: REPORT FORM <tên report> PREVIEW Xem trước khi in có điều kiện: REPORT FORM <tên report> PREVIEW <điều kiện> • In report: REPORT FORM <tên report> TO PRINTER Các thành phần trên Report • • Title: Dùng để in trên mỗi report: Từ menu report.

Group header: Xuất hiện mỗi khi bắt đầu nhóm mới. từ menu report chọn data grouping. chọn page setup. XLVI. Để chọn. từ menu report chọn data grouping. Sumary: Phần tóm tắt của mỗi report. . chọn giá trị cho column number lớn hơn 1. Để chọn. Để chọn. Detail: phần chi tiết trên mỗi record (ứng với từng record trên bảng dữ liệu). Page Footer: In phần Footer của mỗi trang. từ menu file. Để chọn. Kéo rê chuột trên report để xác định vị trí của nó trên report. Group footer: In phần Footer của mỗi nhóm. Column footer: In phần Footer của mỗi cột.• • • • • • • Column header: Để in tên header của mỗi cột. Hiệu chỉnh các control. từ menu file chọn page setup. chọn giá trị cho column number lớn hơn 1. Các control trên Report Thanh công cụ Report Control Chức năng của các control: Đưa các control vào report Thực hiện các bước sau: • • • Chọn control thích hợp.

Đưa label vào report: • • Chọn Gõ nội dung của label c. Đưa field vào report: • • • • Kích chuột vào Trong hộp report Expression. hcọn tên trường hay biến thích hợp.DBF ở bài tập 2). Xuất hiện hộp hội thoại report picture. Ví dụ : Thiết kế Report như sau (dựa vào Bảng CANBO. . nếu muốn chèn hình ảnh từ file. • Chọn Ok. chọn nút lệnh sau hộp Expression. Chọn OK. chọn field nếu muốn chọn trường General. Đưa Picture bound control vào report: • • Chọn picture bound control. Trong hộp field. chọn file. b.a.

Biên dịch menu Tiến hành chạy thử. File menu sau khi dịch sẽ có phần mở rộng là MPR. Gắn các câu lệnh tương ứng với công việc. ta được màn hình giao diện Menu: Designer như sau: . cần những menu con nào? Sử dụng menu designer. Các bước tạo một menu hệ thống • • • • • 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. 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. XLVII. Quản lý menu hệ thống Menu hệ thống được lưu trữ trên đĩa với file có phần mở rộng là *. từ màn hình Menu Designer chọn lệnh Generate. TẠO MENU 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. XLVIII.CHƯƠNG VIII: TẠO MENU VÀ QUẢN LÝ ĐỀ ÁN I. tạo menu và các Submenu. Tạo menu hệ thống.MNX Tạo menu bằng công cụ Designer Menu: Thực hiện lệnh: CREATE MENU <tên menu> Mở menu đã có: MODIFY MENU <tên menu> Dịch file Menu: Để dịch file menu. Tạo menu hệ thống thông qua Menu Designer Sau khi thực hiện lệnh Create menu. kiểm tra.

• Kết thúc. 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). XLIX.. Một đề án trong Visual Foxpro được lưu trữ trên file có phần mở rộng mặc định là *. ấn Ctrl_W.PRJ. 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. Quản lý đề án Đề án là tên gọi để chỉ đến ứng dụng mà bạn đang xây dựng. hình ảnh con trỏ. o Procedure nếu muốn thi hành thủ tục o Command nHu muHn thHc hiHn mHt lHnh. ta đưa vào tên cần hiển thị trên giao diện.. tài liệu. Trong hộp Result. chọn: o Submenu nếu muốn tạo menu con. . hình ảnh.• • Trong hộp Prompt..

o Query: Là cấu trúc để lấy thông tin từ các bảng table.Tạo mới các đề án Thực hiện lệnh: CREATE PROJECT <tên đề án> Lúc này xuất hiện cửa sổ quản lý đề án Project Manager: • Database: Bao gồm các: o Table: Các bảng dữ liệu có liên kết với nhau hay các bảng tự do. Để 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. • Class: Liệt kê các thư viện được sử dụng. o 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. • 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. • Documents: Chứa các tài liệu sử dụng cho đề án. bao gồm các form và report. 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. . Để 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).

prg: là thực hiện chương trình thiết lập môi trường cho hệ thống. Read Events: Bắt đầu thực hiện vòng lặp để thực hiện công việc.Mở một đề án đã có Thực hiện lệnh: MODIFY PROJECT <tên đề án> Dịch đề án • Dịch sang APP: Khi này. đó 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. Starting point là một chương trình khởi động chứa các thành phần: Do setup.dll và vfp6renu. Do cleanup. Do mainmenu. ta có thể chạy đề án thông qua lệnh: DO <tên ứng dụng> Đặt Starting Point cho đề án Khi ứng dụng được thi hành.prg • • • • Do Setup. 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.mpr Read Events Do cleanup.dll được cài đặt trong đường dẫn hoặc trong cùng thư mục với ứng dụng. chọn Set main. có một điểm bắt đầu. Dùng lệnh BUILD <tên đề án> • Dịch sang file có phần mở rộng là exe: Khi này. để chọn đề án phải có một bản sao của Visual Foxpro. Thông thường. Ở đây.prg: Chạy chương trình dọn dẹp môi trường. người dùng không cần có Visual Foxpro nhưng phải cung cấp hai file: vfp6r. . Từ Menu Project.prg Do mainmenu.mpr: Chạy file menu chính để thiết lập giao diện cho hệ thống. • Dùng lệnh: BUILD EXE <tên đề án> Chạy đề án Sau khi đã dịch. trả lại môi trường cho hệ thống và thoát khỏi hệ thống.

Sign up to vote on this title
UsefulNot useful