BÀI GIẢNG VISUAL FOX Đại học Kinh doanh và Công nghệ Hà Nội. Khoa Công nghệ thông tin. 8.2014 NỘI DUNG Chương 1 • Tổng quan về Visual Fox. Chương 2 • Hằng, biến, các hàm dữ liệu trong Visual Fox Chương 3 • Database và Table. Chương 4 • Truy vấn dữ liệu Query. Chương 5 • Form và Report. Chương 6 • Tạo Menu và quản lý dự án. Chương 1. Tổng quan về Visual Fox 1.1 • Khái niệm hệ QTCSDL Visual Fox. 1.2 • Khởi động, thoát và giới thiệu môi trường làm việc. 1.3 • Các đối tượng trong Visual Fox. 1.4 • Làm việc với Project. 1.5 • Các kiểu dữ liệu trong Visual Fox. 1.6 • Tạo một bảng độc lập Free Table. 1.1. Khái niệm hệ QTCSDL Visual Fox. Là hệ QTCSDL và là ngôn ngữ lập trình nhằm giải quyết các bài toán quản lý, bài toán kinh tế có tính chuyên nghiệp như: Quản lý nhân sự, quản lý lương, bán hàng, vật tư… Nằm trong bộ Visual Studio 6.0 của Microsoft trên môi trường Window. 1.2. Khởi động và thoát khỏi Visual Fox Khởi động: Start/ Progam/ Microsoft Studio/ Microsoft Visual Foxpro. Thoát: Menu File/ chọn Exit. Trong cửa sổ Command gõ Quit <-/ 1.2. Giao diện Visual Fox. Hệ thống Menu Các Tab Cửa sổ Project Cửa sổ Command 1.3. Các đối tượng trong Visual Fox. Dự án (Project): Là một tập hợp gồm nhiều thành phần: CSDL, chương trình, giao diện (Form), Thực đơn (Menu), báo biểu (Report) … đặt trong tệp tin có phần mở rộng là . PJX Cơ sở dữ liệu (CSDL – Database): Là một hệ thống thông tin được lưu trữ trong các bảng dữ liệu có mối quan hệ nhằm mục đích nào đó, đặt trong tệp tin có phần mở rộng là .DBC 1.3. Các đối tượng trong Visual Fox. Bảng dữ liệu (Table): Là nơi chứa dữ liệu về một đối tượng thông tin nào đó có dạng bảng, … đặt trong tệp tin có phần mở rộng là . DBF Truy vấn (Query): Là tệp tin có phần mở rộng là . QPR được dùng để xử lí các thông tin trong các tệp tin DBF. 1.3. Các đối tượng trong Visual Fox. Biểu mẫu (Form): Là tệp tin có phần mở rộng .SCX được thiết kế để đảm nhiệm chức năng giao tiếp giữa chương trình và người sử dụng. Báo cáo (Report): Là tệp tin có phần mở rộng là . FRX được dùng để tổ chức dữ liệu cho việc in ấn. 1.3. Các đối tượng trong Visual Fox. Thực đơn (Menu): Là tập hợp các mục chọn ghi các chức năng của chương trình, có phần mở rộng là .MNX Chương trình (Program): Là tập hợp các câu lệnh của VF 6.0 mô tả thuật toán giải quyết một bài toán nào đó được ghi trong một tệp có phần mở rộng là .PRG 1.4. Làm việc với Project. 1.4.1. Tạo mới một Project. Sử dụng Menu: Mở Menu File/ New. Chọn Project/ New File. Xác định thư mục, tên tệp, chọn Save. Sử dụng cửa sổ lệnh Command: Gõ Create Project <Tên tệp. PJX> <-/ 1.4. Làm việc với Project. 1.4.2. Giới thiệu các Tab trong cửa sổ Project Manager: Tab Data: gồm. Databases ( Các CSDL). Queries (Các truy vấn). Free Tables (Các bảng tự do). Tab Documents: gồm. Forms (Giao diện). Reports (Báo biểu). Lable (Các Nhãn). 1.4. Làm việc với Project. 1.4.2. Giới thiệu các Tab trong cửa sổ Project Manager: Tab Classes: Danh sách các lớp dùng trong Project. Tab Code: Mã chương trình, thủ tục. Other: Các thực đơn và tệp tin văn bản. 1.4. Làm việc với Project. 1.4.3. Các nút chức năng trên 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 Tạo một thành phần mới trong Project Modify Sửa cấu trúc của một thành phần trong Project Browse Xem và sửa dữ liệu của các bảng hay truy vấn Remove Loại bỏ một thành phần trong Project 1.4. Làm việc với Project. 1.4.4. Tạo File mới trong một thành phần của Project Manager: Chọn một Tab (VD: Tab Data) Chọn một thành phần trong cửa sổ Project (VD: Free Table). Nhấp chuột chọn New, chọn thư mục và gõ tên tệp tin. 1.5. Các kiểu dữ liệu trong Visual Fox. Kiểu số - Numeric (N): Dùng để biểu diễn các số liệu mang giá trị số học và có nhu cầu tính toán như trong kế toán, quản lý …gồm số nguyên, số thập phân. Một vài kiểu số xác định: Integer, Float, Double. Kiểu chuỗi – Character (C): Là một tổ hợp bao gồm cả ký tự chữ cái và số, độ dài tối đa là 255 ký tự. 1.5. Các kiểu dữ liệu trong Visual Fox. Kiểu ngày tháng – Date (D): Dùng cho những số liệu dạng ngày tháng. Độ dài cố định là 8 ký tự. Kiểu logic - Logical (L): Dùng cho những dữ liệu chỉ có một trong hai trường hợp Đúng (.T.) hoặc Sai (.F.). Độ dài cố định là 1. 1.5. Các kiểu dữ liệu trong Visual Fox. Kiểu tổng quát - General (G): Dùng để chứa dữ liệu như bảng tính, âm thanh .... Kiểu ghi nhớ - Memo (M): Là một đoạn văn bản có độ dài lớn hơn 255 ký tự. Chúng được lưu trữ trong một tập tin khác có cùng tên nhưng có phần mở rộng là .FPT (Foxpro Text). Để gõ kiểu này nhấn phím (Ctrl + Page Up hoặc Ctrl + Page Down) 1.6. Tạo một bảng độc lập Free Table. 1.6.1. Tạo cấu trúc bảng Free Table. Tại Tab Data chọn Free Table. Chọn New, chọn thư mục và gõ tên, chọn Save. Tại Tab Fields: Name: gõ tên trường. Type: chọn kiểu dữ liệu. Width: gõ độ rộng của dữ liệu. Decimal: chọn số chữ số phần thập phân. Chọn Ok. 1.6. Tạo một bảng độc lập Free Table. 1.6.2. Nhập dữ liệu cho bảng Free Table. Sau khi tạo xong cấu trúc bảng, phần Input data records now, chọn Yes. Nhập dữ liệu cho từng bản ghi. Chương 2. Tổng quan về Visual Fox 2.1 2.2 2.3 2.4 • Hằng (Const). • Biến (Variable). • Các phép toán. • Các hàm thông dụng trong Visual Fox. 2.1. Hằng (Const) Hằng: Là một đại lượng không thay đổi. Gồm: Hằng nguyên: Gồm các số nguyên. Hằng thực: Gồm các số thực. Hằng văn bản: Là các chuỗi đặt trong dấu “…”, ‘…’, (…). Hằng logic: là giá trị True (.T.) và giá trị False (.F.) Hằng ngày tháng: là giá trị kiểu ngày tháng, đặt trong dấu {…} theo nguyên tắc: {^yyyy/ mm/ dd}. 2.2. Biến (Variable) Biến: Là một vùng bộ nhớ lưu trữ dữ liệu tạm thời, có thể thay đổi trong quá trình tính toán. Gồm: Biến ký ức (biến bộ nhớ): vùng bộ nhớ lưu trữ DL tạm thời do người dùng khai báo. Biến hệ thống: Biến của VF bắt đầu bằng dấu gạch dưới (_) Biến vùng: Là vùng nhớ chứa tệp CSDL mở. 2.2. Biến (Varialbe) Đặt tên biến: là một chuỗi ký tự bắt đầu là chữ cái, không chứa dấu cách, không trùng với từ khóa của VF, tối đa 255 kí tự. Gán giá trị cho biến: Tên biến = biểu thức. Hoặc Store biểu thức To danh sách biến. VD: a = 5, d = {^1998/10/26} … 2.3. Các phép toán. 2.3.1. Phép toán với kiểu chuỗi ký tự: Phép toán ghép nối (+): dùng để ghép hai chuỗi cạnh nhau. VD: a = “Trung tâm” b = “Tin học” c = a + b = “Trung tâmTin học”. d = a + “_“ + b => “Trung tâm_Tin học”. 2.3. Các phép toán. 2.3.1. Phép toán với kiểu chuỗi ký tự: Phép toán ghép nối (-): dùng để ghép hai chuỗi cạnh nhau, và di chuyển dấu cách ở cuối chuỗi thứ nhất (nếu có) ra cuối chuỗi thứ hai. VD: a = “_ _Trung tâm_ _” b = “Tin học” c = a - b => “_ _Trung tâmTin học_ _”. 2.3. Các phép toán. 2.3.1. Phép toán với kiểu chuỗi ký tự: Phép thuộc ($): kiểm tra chuỗi bên trái có nằm trong chuỗi bên phải hay không. Kết quả trả về có kiểu logic (T, F). VD: a = “kd” b = “Đại học Kinh doanh và Công nghệ Hà Nội” c = “Đại học kd & cn Hà Nội” d = a $ b => .F. d = a $ c => .T. 2.3. Các phép toán. 2.3.2. Phép toán quan hệ So sánh hai giá trị của hai biểu thức cùng kiểu. VD: 5<6 => .T. 5>6 => .F. 2.3. Các phép toán. 2.3.3. Phép toán với kiểu logic: Phép Not hay !: phép phủ định của toán hạng theo sau: VD: ?Not(5>6) => .T. ?!(5<6) => .F. And và Or: X Y X And Y X Or Y .T. .T. .T. .T. .T. .F. .F. .T. .F. .F. .F. .F. 2.3. Các phép toán. 2.3.4. Phép toán ngày: Trừ ngày cho ngày: VD: a ={^2014/10/14} b= {^2014/10/23} c = b – a => 9 Ngày cộng hoặc trừ cho một đại lượng: VD: a ={^2014/10/14} ? a + 10 => 10/24/2014. ? a – 10 => 10/4/ 2014. 2.3. Các phép toán. 2.3.4. Phép toán ngày: Thiết lập kiểu ngày sử dụng lệnh: Set Date French (dd/mm/yyyy) VD: a ={^2014/10/14} Set Date French ?a => 14/10/2014 Set Date America (mm/dd/yyyy) VD: a ={^2014/10/14} Set Date America ?a => 10/14/2014 2.4. Các hàm thông dụng trong VF. 2.4.1. Hàm về chuỗi kí tự: Hàm Left(X,n): Lấy n ký tự trong chuỗi X tính từ bên trái. VD: Left (“Đại học Kinh doanh & Công nghệ Hà Nội”,7) = “Đại học” Hàm Right(X,n): Lấy n ký tự trong chuỗi X tính từ bên phải. VD:Right(“Đại học Kinh doanh & Công nghệ Hà Nội”,6) = “Hà Nội” Hàm Substr(X,m,n): Lấy n ký tự, bắt đầu từ ký tự m trong chuỗi X. VD:Mid(“Đại học KD & CN Hà Nội”,9,7) = “KD & CN” 2.4. Các hàm thông dụng trong VF. 2.4.1. Hàm về chuỗi kí tự: Hàm UPPER(X): Chuyển chuỗi X thành VIẾT HOA. VD: UPPER (“This is A table”) = “THIS IS A TABLE” Hàm low er(X): Chuyển chuỗi X thành viết thường. VD: low er (“This is A table”) = “this is a table” Hàm Proper(X): Chuyển ký tự đầu của mỗi từ trong chuỗi X thành Hoa. VD: Proper (“This is A table”) = “This Is A Table” 2.4. Các hàm thông dụng trong VF. 2.4.1. Hàm về chuỗi kí tự: Hàm LTrim(X): Bỏ khoảng trắng bên trái chuỗi X. VD: LTrim (“_ _This is a table_ _”) = “This is a table_ _” Hàm RTrim(X): Bỏ khoảng trắng bên phải chuỗi X. VD: RTrim (“_ _This is a table_ _”) = “_ _This is a table” Hàm AllTrim(X): Bỏ khoảng trắng ở hai đầu chuỗi X. VD: AllTrim (“_ _This is a table_ _”) = “This is a table” 2.4. Các hàm thông dụng trong VF. 2.4.1. Hàm về chuỗi kí tự: Hàm Len(X): Lấy độ dài chuỗi X. VD: Len (“This is a table”) = 15. Hàm Str(số): Chuyển từ số thành chuỗi. VD: Str(123) = “123”. Hàm Val(chuỗi): Chuyển từ chuỗi thành số. VD: Val(Left(“123AH7”,2)) = 12 2.4. Các hàm thông dụng trong VF. 2.4.2. Hàm về ngày tháng: Hàm Date(): Trả về ngày tháng năm hiện tại. VD: a = Date() ?a => 08/22/14 Hàm Day(): Lấy ngày trong biểu thức Date. Hàm Month(): Lấy tháng trong biểu thức Date. Hàm Year(): Lấy năm trong biểu thức Date. VD: Day(a) = 22. Month(a) = 8. Year(a) = 2014. 2.4. Các hàm thông dụng trong VF. 2.4.2. Hàm về ngày tháng: Hàm DtoC(): Chuyển ngày tháng sang chuỗi. VD: a = {^2014/10/22} ?DtoC(a) => “10/22/14“ Hàm CtoD(): Chuyển chuỗi ngày tháng sang ngày tháng. VD: a = “10/22/14” ?CtoD(a) => 10/22/14 2.4. Các hàm thông dụng trong VF. 2.4.2. Hàm về ngày tháng: Hàm Cdow(): Cho biết tên thứ trong tuần. VD: a = {^2014/10/22} ?Cdow(a) => Wednesday. Hàm CMonth(): Cho biết tên tháng trong năm. VD: a = “10/22/14” ?Cmonth(a) => October. 2.4. Các hàm thông dụng trong VF. 2.4.3. Hàm về số: Hàm Max(các giá trị): Trả về số lớn nhất. VD: a = 4, b = 5, c = 6 ?Max(a,b,c) => 6 Hàm Min(các giá trị): Trả về số bé nhất. VD: ?Min(a,b,c) => 4 2.4. Các hàm thông dụng trong VF. 2.4.3. Hàm về số: Hàm Int(số): Lấy số nguyên. VD: a = 5, b = 3 ?Int(a/b) => 1 Hàm Mod(bt1,bt2): Trả về số dư trong phép chia của bt1 cho bt2. VD: ?Mod(a,b) => 2 2.4. Các hàm thông dụng trong VF. 2.4.3. Hàm về số: Hàm ABS(số): Lấy trị tuyệt đối của số. VD: a = 5, b = 3 ?ABS(b - a) => 2 Hàm SQRT(số): Lấy căn bậc hai của số. VD: ?SQRT(4) => 2 2.4. Các hàm thông dụng trong VF. 2.4.3. Hàm về số: Hàm Round(số,n): Làm tròn số với n chữ số cần làm tròn. VD: Round(125.125,2) = 125.13 Round(125.125,0) = 125 Round(125.125,-1) = 130 2.4. Các hàm thông dụng trong VF. 2.4.4. Hàm IIF(): Sử dụng trong các biểu thức có nhiều giá trị để lựa chọn mà ta chỉ được chọn 1 giá trị thỏa mãn điều kiện. Cú pháp: IIF(Biểu thức logic, BT True, BT False) Biểu thức logic, trả về một trong hai kết quả True hoặc False. BT True, BT False: có thể là một giá trị, biểu thức tính toán, chuỗi. Trường hợp có n lựa chọn ta phải sử dụng n – 1 vòng IIF. IIF(BT Logic1, True1, IIF(BT Logic2, True2 ...). 2.4. Các hàm thông dụng trong VF. 2.4.4. Hàm IIF(): VD: Kiểm tra xem một số là số không, số chẵn hay số lẻ: a = 3 ?IIF(a = 0, “Số không”, IIF(Mod(a,2) = 0, “Số chẵn”, “Số lẻ”)) => KQ trả về “Số lẻ” Chương 3: Database và Table 3.1 3.2 3.3 3.4 • Khái niệm Database và các thành phần liên quan. • Làm việc với Database. • Làm việc với Table và dữ liệu trong Table. • Các lệnh làm việc với bảng trên cửa sổ Command. 3.1 Khái niệm Database và các thành phần liên quan Khái niệm Database : Là hệ thống thông tin được lưu trữ trong các bảng dữ liệu có mối quan hệ (các bảng tham chiếu) nhằm mục đích nào đó và các thành phần liên quan như: chỉ mục, hàm cửa sổ được đặt trong tệp tin có phần mở rộng là .DBC 3.1. Khái niệm Database và các thành phần liên quan Các thành phần trong Database gồm: -các bảng dữ liệu (table) -các trường trong bảng và các kiểu dữ liệu -các bản ghi dữ liệu trong bảng -các mối quan hệ - quan hệ 1-1 ( Inner Join) - quan hệ toàn vẹn (full join) - quan hệ 1-n ( Left Join) - quan hệ n-1 (Right Join) - quan hệ toàn vẹn (Full Join) - Chỉ mục (index) : dùng để sắp xếp dữ liệu của trường khoá của bảng thực hiện mối quan hệ với bảng khác trong csdl gồm khoá chính, khoá phụ… - Hàm cửa sổ (View) : Là một bảng ảo lấy dữ lệu từ nhiều bảng tham chiếu trong csdl dựa trên các mối quan hệ 3.2. Làm việc với Database 3.2.1. Tạo mới một Database Cách 1: Thực hiện từ cửa sổ Project + Chọn Tab Database chọn nút New chọn New database + Chọn vị trí lưu nhập tên Database chọn Save Cách 2: Tạo Database từ cửa sổ lệnh CREATE DATABASE <Tên tệp.DBC> 3.2.2 Loại bỏ 1 Database khỏi Pjorect Cách 1 : Thực hiện từ cửa sổ Project -> Chọn Database trong trang Data, chọn tên tệp CSDL -> Kích nút Remove, chọn Remove hoặc Delete. Cách 2 : Thực hiện từ cửa sổ lệnh DELETE DATABASE <Tên CSDL.DBC> 3.2.3-Thêm một csdl đã có vào Project -> Chọn Database trong trang Data -> Kích nút Add -> Chọn thư mục và tên csdl chọn OK 3.2. Làm việc với Database 3.2.4. Các thao tác trên Database Desinger - Mở database ở chế độ Modify - Thực hiện các nút trên thanh công cụ Database Designer New table Add table Remove table 3.2. Làm việc với Database 3.2.5. Các lệnh làm việc với Database trong cửa sổ Command a. Mở một Database Open database tên database.dbc a. Xem và sửa cấu trúc một Database Modify database tên Database.dbc 3.2. Làm việc với Database 3.2.6. Mở một Database đã có: C1. Tại cửa sổ Project manger + Chọn tab Data Database tên Database Modify C2: Tại cửa sổ Command Gõ lệnh: Modify database tên database.dbc 3.3. Làm việc với Table và dữ liệu trong Table 3.3.1. Tạo bảng trong CSDL Cách 1: Thực hiện từ cửa sổ Database Designer Bước 1:Tạo cấu trúc tệp DBF - Mở hoặc tạo 1 CSDL mới - Kích phải chuột lên cửa sổ Database Designer, chọn new table -> chọn New table -> đặt tên tệp DBF -> OK 3.3. Làm việc với Table và dữ liệu trong Table - Định nghĩa cấu trúc bảng trong cửa sổ Table Designer + Gõ tên trường tại Name + Chọn kiểu trường tại TYPE + XĐ độ dài trường tại Width + Chọn cách sắp xếp DL(Ascending, Descending) tại Index 3.3. Làm việc với Table và dữ liệu trong Table - Xác định các tính chất của trường : Tính chất Y nghĩa Caption Tên tiêu đề của trường Input Mask Khuôn dạng nhập liệu Format Định dạng dữ liệu khi nhập Rule Đặt quy tắc khi nhập dữ liệu Message Đưa ra thông báo khi nhập dữ liệu sai quy tắc Default Value Đặt gía trị mặc định cho trường - Ấn Ok Bước 2: Ấn nút Yes Nhập dữ liệu cho bảng 3.3. Làm việc với Table và dữ liệu trong Table Cách 2: Thực hiện từ cửa sổ lệnh Command Bước 1: tạo cấu trúc tệp DBF -> Mở hoặc tạo mới 1 CSDL -> Cú pháp : CREATE <Tên bảng.DBF> <-/ -> Định nghĩa cấu trúc bảng trong cửa sổ Table Designer tương tự cách 1. -> OK Bước 2: Chọn Yes, Nhập DL vào tệp DBF Cách 3: Thực hiện từ Menu File -> Mở Menu File, chọn new -> Chọn Table, chọn New file -> Đặt tên bảng chọn OK 3.3. Làm việc với Table và dữ liệu trong Table Các kiểu dữ liệu của trường - Character: kiểu văn bản có độ dài tối đa là 256 ký tự. - Number: kiểu số gồm các kiểu con sau: - Byte: kiểu số nguyên có giá trị từ 0 đến 255. - Integer: kiểu nguyên -327666 32767 - LongInteger: kiểu nguyên kép. - Single: kiểu số thực đơn. - Double: kiểu số thực kép ... 3.3. Làm việc với Table và dữ liệu trong Table Một số kí hiệu trong Input Mask + X: Cho phép nhập một ký tự bất kỳ + 9:Cho phép nhập một dấu (+) hoặc trừ (-) hoặc chữ số + #:Cho phép nhập một dấu (+) hoặc trừ (-) hoặc chữ số hoặc dấu cách + A: Cho phép nhập một chữ cái + N: Cho phép nhập chữ cái hoăc chữ số + ! : Khi chữ cái nhập sẽ biến thành chữ hoa + Dấu chấm: xác định vị trí dấu chấm thập phân trong dữ liệu kiếu số +Dấu phẩy: : xác định vị trí phân nhóm trong dữ liệu kiếu số 3.3. Làm việc với Table và dữ liệu trong Table 3.3.2. Thêm bảng độc lập vào Database. Cách 1: Thực hiện từ cửa sổ Database Designer -> Kích chuột phải lên cửa sổ Database Designer chọn ADD Table -> Chọn thư mục và tên bảng cần lấy, kích OK Cách 2: Thực hiện từ cửa sổ lệnh -> Cú pháp : ADD TABLE <Tên bảng.DBF> <-/ -> Chọn thư mục và tên bảng cần lấy, kích OK 3.3. Làm việc với Table và dữ liệu trong Table 3.3.3. Loại bỏ các tệp DBF ra khỏi CSDL. Cách 1: Thực hiện từ cửa sổ Database Designer - Chọn tên bảng -> Kích nút Remove -> Chọn Remove hoặc Delete Cách 2: Thực hiện từ cửa sổ lệnh REMOVE TABLE <Tên bảng.DBF> <-/ 3.3. Làm việc với Table và dữ liệu trong Table 3.3.4. Sửa cấu trúc các tệp dbf Cách 1: Thực hiện từ cửa sổ Project Manager -> Chọn Tab Data -> chọn Database -> chọn tên CSDL -> chọn tệp DBF -> Kích nút Modify -> Sửa tên, kiểu, độ dài, Thêm, bớt trường và các tính chất trong cửa sổ Table Designer -> OK Cách 2: Thực hiện từ cửa sổ lệnh - Mở tệp DBF : USE <Tên bảng> <-/ - Gõ lệnh : MODIFY STRUCTURE < -/ 3.3. Làm việc với Table và dữ liệu trong Table 3.3.5. Tạo và hủy mối liên kết giữa các bảng a. Tạo mối quan hệ -> Tạo chỉ mục Index cho các trường trung gian của các bảng -> Mở cửa sổ Database Designer chứa các bảng -> Kích kéo chuột đưa trường trung gian của bảng này thả vào bảng kia. -> +Ghi lại b. Huỷ bỏ mối quan hệ -> Mở cửa sổ Database Designer -> Chọn đường nối giữa 2 bảng -> ấn phím Delete 3.3. Làm việc với Table và dữ liệu trong Table 3.3.6. Nhập và sửa dữ liệu giữa các bảng - Mở bảng: Chọn tab Data -> Database -> Tên CSDL -> Tên bảng -> ấn nút Browse - Nhập dữ liệu: Chọn View trên thanh Menu -> Append mode ( hoặc ấn tổ hợp phím Ctrl + Y) 3.3.7. Sửa dữ liệu bảng - Mở bảng -> sửa trực tiếp dữ liệu trên từng trường 3.4. Các lệnh làm việc với bảng trên cửa sổ Command 3.4.1. Lệnh xem và sửa cấu trúc bảng Use Tên bảng Modify structure Tên bảng 3.4.2. Nhóm lệnh xem và sửa nội dung các bản ghi a. Lệnh Browse: xem và sửa toàn bộ dữ liệu dưới dạng bảng + Cú pháp: Browse [font <name,size>][fields<dstrường>][freeze<trường >] [lock<n>][for< đk>] Trong đó: - font <name,size>: font chữ và kích thước của trường cần hiện - [fields<dstrường>]: liệt kê danh sách trường cần hiện - [freeze<trường>]:chỉ cho phép sửa trường này mà không sửa trường khác - [lock<n>]: giữ lại n trường bên trái - [for<dk>]: điều kiện để hiện trường. 3.4. Các lệnh làm việc với bảng trên cửa sổ Command b. Lệnh Edit: xem và sửa dữ liệu với từng bản ghi + Cú pháp: EDIT <Phạm vi>[<ds trường>] [FOR <ĐK> ] <-/ + Ví dụ: Hiển thị Masv, hoten, ngaysinh của các sinh viên sinh năm 1995 Edit field Masv, hoten, ngaysinh for year(ngaysinh) = 1995 c. Lệnh List: xem dữ liệu toàn bảng LIST [<phạm vi>] [FIELDS <ds trường>] [FOR <ĐK>] 3.4. Các lệnh làm việc với bảng trên cửa sổ Command 3.4.3. Chèn và bổ sung các bản ghi a. bổ sung các bản ghi mới +. Nối thêm các bản ghi mới: APPEND <-/ + Nối các bản ghi từ một bảng khác APPEND FORM <Bảng DL nguồn><-/ + Nối thêm bản ghi trắng vào cuối tệp APPEND BLANK <-/ 3.4. Các lệnh làm việc với bảng trên cửa sổ Command b. Chèn các bản ghi mới + Chèn trước hoặc sau một bản ghi thứ n Cú pháp: Go n Insert before [after] 3.4. Các lệnh làm việc với bảng trên cửa sổ Command 3.4.4. Con trỏ bản ghi và di chuyển con trỏ bản ghi + GO <n>: Chuyển tới bản ghi thứ n. + GO TOP: Chuyển tới bản ghi đầu tiên. + GO BOTTOM: Chuyển tới bản ghi cuối cùng. + SKIP: Dịch chuyển theo chiều tiến 1 bản ghi. + SKIP <n>: Dịch chuyển n bản ghi. Nếu n>0: dịch chuyển theo chiều tiến Nếu n<0: dịch chuyển theo chiều lùi + Nhóm hàm về con trỏ bản ghi - Hàm RECNO( ) : Trả Về bản ghi hiện thời - Hàm EOF( ): cho kq là .T. khi con trỏ ở bản ghi cuối - Hàm BOF( ) : cho kq là .T. khi con trỏ ở bản ghi đầu - Hàm Recount( ) : đếm tổng số bản ghi trong tệp DBF 3.4. Các lệnh làm việc với bảng trên cửa sổ Command : 3.4.5. Xem và sửa nội dung bản ghi dùng để thay thế nội dung field1 thành nội dung <bt1>,… Cú pháp: Replace [<phamvi>][field1] with<biểu thức1 > [,<field2> with <biểu thức>….] [for <ĐK>] Ví dụ: Thay thế tất cả nội dung trường hoten thành in hoa Repl all hoten with uppe(hoten) 3.4. Các lệnh làm việc với bảng trên cửa sổ Command : 3.4.6. Xóa và khôi phục bản ghi đã đánh dâu xóa gồm a.đánh dấu xoá Delete [<pham vi>][for <điều kiện>] Trong đó: <phạm vi> gồm : - all : làm việc với tất cả các bản ghi - record<n>: làm việc với bản ghi thứ n - next<n>: làm việc với n bản ghi - rest: làm việc từ bản ghi hiện hành đến cuối tệp Ví dụ: Xóa các sinh viên nữ Delete all for gioitinnh= “no”” 3.4. Các lệnh làm việc với bảng trên cửa sổ Command b. xoá bản ghi thứ n go n Delete pack *. Xoá k bản ghi từ bản ghi n go n delete next k pack *. Xoá từ bản ghi n đến cuối tệp go n delete rest pack 3.4. Các lệnh làm việc với bảng trên cửa sổ Command c. Khôi phục các bản Ghi bị đánh dấu RECALL <Phạm vi> [FOR <ĐK>] < -/ d. Xoá các bản Ghi đã đánh dấu PACK <-/ e. Xoá toàn bộ các bản Ghi dữ liệu ZAP <-/ 3.4. Các lệnh làm việc với bảng trên cửa sổ Command : 3.4.7. Xem và sửa nội dung bản ghi dùng để thay thế nội dung field1 thành nội dung <bt1>,… Cú pháp: Replace [<phamvi>][field1] with<biểu thức1 > [,<field2> with <biểu thức>….] [for <ĐK>] Ví dụ: Thay thế tất cả nội dung trường hoten thành in hoa Repl all hoten with uppe(hoten) 3.4. Các lệnh làm việc với bảng trên cửa sổ Command 3.4.8. Nhóm lênh sắp xếp Sort và Index a. Lệnh Sort: + Cú pháp:Sort on <tên trường>/a/d to <tên biến> + Ví dụ: sắp xép sbd trật tự tăng dần Sort on sbd/a to sx Use sx Brow b. Lệnh Index: + Cú pháp: index on <tên trường> to <tên biến>(tăng dần) Hoặc index on - <tên trường> to <tên biến>(giảm dần) Brow 3.4. Các lệnh làm việc với bảng trên cửa sổ Command 3.4.9. Nhóm lệnh thống kê a. đếm có đIều kiện : + Cú pháp:Count <phạm vi> for <ĐK> to <tên biến> + Ví dụ : đếm tất cả các mặt hàng bán với sốlượng >100 Count all for soluongban>=100 to dem ?dem b. Tính tổng + Cú pháp: Sum <tên trường> to <tên biến> for <ĐK> + Ví dụ: tính tổng lương tất cả nhân viên sinh năm 1976 Sum luong to tongtien for year(ns)=1976 ?tongtien c. Tính trung bình cộng + Cú pháp: Average <tên trường> to <tên biến> for <ĐK> 3.4. Các lệnh làm việc với bảng trên cửa sổ Command d. Tính tổng hợp theo nhóm TOTAL TO <tên tệp.DBF> ON <Biểu thức khóa> [<Phạm vi>] [FIELDS <Ds trường>][FOR <ĐK>] e. Tìm giá trị max, min + Cú pháp: Calc max( tên trưòng )) + Ví dụ: Tìm max của tổng Calc max(tong) Tương tự Calc min(tên trường): tìm min Chương 4: Truy vấn dữ liệu (QUERY) 4.1 4.2 4.3 4.4 • Khái niệm Query. • Các bước tạo Query. • Tạo Query có điều kiện. • Tạo Query có sử dụng hàm thống kê. 4.1. KHÁI NIỆM QUERY Truy vấn Query là công cụ để xử lý dữ liệu trong các tệp tin *.dbf như: + Lấy ra các trường cần thiết, các bản ghi thoả mãn điều kiện từ một hay nhiều bảng + Sắp xếp lại thứ tự các bản ghi + Tính toán và thống kê dữ liệu từ một hoặc nhiều bảng khác, … 4.2. CÁCH TẠO QUERY 4.2.1. Giới thiệu các thành phần trong cửa sổ Query Designer 4.2. CÁCH TẠO QUERY a. Tab Fields: đưa các trường tham gia vào truy vấn gồm: - Hộp Functions and Expressions :Dùng để tạo biểu thức tính kết quả trong truy vấn - Các nút chức năng: + Add: Thêm lần lượt từng trường vào truy vấn + Add All: Đưa tất cả các trường vào truy vấn + Remove: Loại bỏ các trường đã chọn + Remove All: Loại bỏ tất cả các trường đã chọn 4.2. CÁCH TẠO QUERY Tab Joint: chỉ mối liên kết giữa các bảng Trong VF co 4 loại kết nối + 1-1(Inner joint): một bản ghi của bảng A quan hệ duy nhất với một bản ghi của bảng B + 1-n (Left join): mỗi bản ghi nằm trong bảng bên trái sẽ xuất hiện nhiều lần trong kết quả + n-1 (Right join): các bản ghi nằm trong bảng bên phải sẽ xuất hiện trong kết quả cho dù chúng có so khớp hay không + Toàn vẹn(full jont): n bản ghi của A liên kết n bản ghi của B 4.2. CÁCH TẠO QUERY c. Tab Filter: Xác định điều kiện lọc trong truy vấn + Field name: tên trường Làm đk lọc + Criteria: phép so sánh (=, like, >, <, …) + Example: giá trị điều kiện + Logical: các phép toán logic (and, or, …) 4.2. CÁCH TẠO QUERY d. Tab Order by: dùng để chỉ định thứ tự sắp xếp các bản ghi cho bảng kết quả truy vấn + Ascending: sắp xếp tang dần + Desending: sắp xếp giảm dần e. Tab Group by: dùng để chỉ định cách thức phân nhóm các bản ghi kết quả f. Tab Miscellaneous:một số chức năng khác (không có bản ghi nào trùng nhau, số bản ghi cần hiện…) 4.2. CÁCH TẠO QUERY 4.2.2. Các bước tạo Query bằng Design View B1:Lấy các bảng vào truy vấn: - Tab Data/ Query/ New/ New Query/ chọn tên bảng/ Add - Tại Tab Field: Chọn các trường tham gia truy vấn/ Add: Thực hiện các hàm cần lấy ở Function and Expression B2: Xác định mối liên kết giữa các bảng Tab Join B3: xác định điều kiện lọc ở Tab Filter B4: thực hiện chạy truy vấn + C1:Chọn biểu tượng run trên thanh công cụ + C2: dùng lệnh : do <ten truy vấn>.qpr B5: Lưu truy vấn File /save. 4.2. CÁCH TẠO QUERY 4.2.3. Tạo truy vấn Wizard: + Chọn Tab Data/ Query/ New/ Query wizard/ chọn 1 trong 3 cách tạo Wizard sau: - Cross – Tab Wizard: truy vấn dữ liệu chéo theo bảng - Graph Wizard: truy vấn dữ liệu dạng sơ đồ - Query Wizard: truy vấn theo các bước mặc định sẵn của máy tính gồm Step 1: Select Field Step 2: Relate Table Step 3: Filter Record Step 4: Sort Record Step 5: Finish 4.2. CÁCH TẠO QUERY 4.2.3. Tạo truy vấn Wizard: + Chọn Tab Data/ Query/ New/ Query wizard/ chọn 1 trong 3 cách tạo Wizard sau: - Cross – Tab Wizard: truy vấn dữ liệu chéo theo bảng - Graph Wizard: truy vấn dữ liệu dạng sơ đồ - Query Wizard: truy vấn theo các bước mặc định sẵn của máy tính gồm Step 1: Select Field Step 2: Relate Table Step 3: Filter Record Step 4: Sort Record Step 5: Finish 4.3. TẠO QUERY CÓ ĐIỀU KIỆN + Trên cửa sổ Project chọn Tab Data/ Query/ New/ New Query/ chọn tên bảng/ Add + Trên cửa sổ Query Designer Tab Field: chọn các trường cần lấy Tab Join: xác định mối liên kết giữa các bảng Tab Filter: xác định điều kiện lọc gồm Field name:xác định trường cần lọc Criteria: phép so sánh(=, like, >, <, …) Example: gõ giá trị lọc 4.4. TẠO QUERY CÓ SỬ DỤNG HÀM THỐNG KÊ a. Các hàm thống kê cơ bản - Hàm sum(<bt số>): tính tổng theo nhóm - Hàm Avg(<bt số>): tính giá trị trung bình cộng - Hàm Max(<bt số>): tìm giá trị lớn nhất - Hàm Min(<bt số>): tìm giá trị nhỏ nhất - Hàm logic IIF(<điều kiện >,<giá trị đúng>,<gia tri sai>) Ví dụ: xếp loại sinh viên, nếu dtb>5: đạt, dtb<5: không đạt IIF(dtb<5, “không đạt”, “đạt”) 4.4. TẠO QUERY CÓ SỬ DỤNG HÀM THỐNG KÊ b. Cách tạo: - Tab Field: chọn trường cần lấy vào truy vấn -> Add Funtion and Expression: gõ biểu thức hàm thống kê -> Add - Tab Group by: chọn trường cần nhóm dữ liệu -> Add Chương 5. Form và Report 5.1 5.2 •Biểu mẫu – Form. •Báo biểu – Report. 5.1. Biểu mẫu – Form. 5.1.1. Form là gì? Form là một công cụ(hay cũng có thể gọi là một cửa sổ) nhờ nó ta có thể thiết kế các ý tưởng sau: Thiết kế giao điện để hiển thị thông tin. Thiết kế giao diện để nhập dữ liệu vào CSDL. Đặt các đối tượng lên Form(nhãn Label, hộp văn bản Textbox, nút lênh Command,...) để đáp ứng lại các thao tác của người dùng... 5.1. Biểu mẫu – Form 5.1.2. Thiết kế Form Wizard ứng với 1 bảng Wizard là một công cụ (đã lập trình sẵn) giúp chúng ta dễ dàng xây dựng một dạng Form theo một số chuẩn nào đó. Các bước tiến hành như sau: Tại cửa sổ Project Manager(PM) ta chọn: Document, chọn Forms, chọn New, trên hộp thoại New Form chọn Form Wizard, hộp thoại Wizard Selection xuất hiện chọn Form Wizard. Ta có hộp thoại: 5.1. Biểu mẫu – Form 5.1.2. Thiết kế Form Wizard ứng với 1 bảng BƯỚC CSDL Bước 1: Chọn CSDL, chọn bảng và các trường cần thiết sau đó nhấp Next. TABLES CÁC FIELDS NGUỒN CÁC FIELDS ĐƯỢC CHỌN 5.1. Biểu mẫu – Form 5.1.2. Thiết kế Form Wizard ứng với 1 bảng Bước 2: Chọn dạng(Style) của Form và dạng các nút lệnh(Button type) sau đó nhấp Next. 5.1. Biểu mẫu – Form 5.1.2. Thiết kế Form Wizard ứng với 1 bảng Bước 3: Chọn cách sắp xếp thứ tự các bản ghi sau đó nhấp Next. 5.1. Biểu mẫu – Form 5.1.2. Thiết kế Form Wizard ứng với 1 bảng Bước 4: Kết thúc Save form for later use: lưu Form vừa tạo không chạy. Save and run form: lưu Form và chạy thử. Save form and modify it in the Form Designer: lưu Form và chỉnh sửa Form trong Form Designer. 5.1. Biểu mẫu – Form 5.1.3. Thiết kế Form Wizard ứng với nhiều bảng Trưng diện PM, chọn Document, chọn Form, chọn New, chọn Form Wizard, sau đó ta có hộp thoại: Chọn One-to-Many Form Wizard/ OK 5.1. Biểu mẫu – Form 5.1.3. Thiết kế Form Wizard ứng với nhiều bảng Bước 1: Chọn CSDL, chọn bảng chính(cha) và các trường cần thiết sau đó nhấp Next. 5.1. Biểu mẫu – Form 5.1.3. Thiết kế Form Wizard ứng với nhiều bảng Bước 2: Chọn bảng phụ(con) có quan hệ với bảng cha và các trường cần thiết sau đó nhấp Next. 5.1. Biểu mẫu – Form 5.1.3. Thiết kế Form Wizard ứng với nhiều bảng Bước 3: Xác định mối quan hệ giữa 2 bảng sau đó nhấp Next. Các bước 4, 5, 6 tương tự như các bước 2, 3, 4 trong phần 5.1.2 5.1.4. Thiết kế Form Designer(Sinh viên tự tìm hiểu) 5.1. Biểu mẫu – Form 5.1.5. Giới thiệu thanh công cụ Form Control. 1. Select Object: Chọn đối tượng 2. Label: Nhãn 3. Edit box: Hộp văn bản 4. Command Group : Nhóm các nút lệnh 5. Chech box: Hộp kiểm tra 6. List box: Hộp danh sách 7. Grid: Bảng lưới 8. Timer: Thời gian 1 2 3 4 5 6 7 12. Hyperlink: Kết nối 8 9 10 11 12 13. Builder Lock: Xây dựng khóa bảo vệ 13 9. OLE: Tạo nhúng kết 10. Line: Đường thẳng 11. Container: chứa các đối tượng 14 15 16 17 18 19 20 21 22 23 24 25 5.1. Biểu mẫu – Form 5.1.5. Giới thiệu thanh công cụ Form Control. 14. View Classes: Khung nhìn lớp Class 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 15. Textbox: Hộp văn bản 16. Command Button: Nút lệnh 17. Option Group: Nhóm nút chọn 19. Combo box: Hộp chọn 20. Spinner: Thanh cuộn 21. Image: chứa ảnh 22. Page Frame: Khung trang 23. OLE: Hiển thị nhúng kết 24. Shape: Các đối tượng đồ hoạ 25: Button Lock: Nút khoá. 25 5.1. Biểu mẫu – Form 5.1.6. Bổ sung đối tượng, thuộc tính trên Form Một số đối tượng thường dùng: Label: Dùng để thể hiện các chuỗi trên Form. Command Bottom: Dùng để đặt các nút lệnh lên Form. TextBox, Editbox: Dùng để xem, chỉnh sửa dữ liệu từ các trường trong bảng dữ liệu không phải kiểu memo. 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. Listbox, Checkbox, Combobox,... 5.1. Biểu mẫu – Form 5.1.6. Bổ sung đối tượng, thuộc tính trên Form Quy ước đặt tên cho các đối tượng: Loại đối tượng Tên Bắt đầu bởi frm Form Command Bắt đầu bởi cmd Edit box Bắt đầu bởi edb Grid Bắt đầu bởi grd Image Bắt đầu bởi img Label Bắt đầu bởi lbl Textbox Bắt đầu bởi txt Timer Bắt đầu bởi tmr Muốn đưa đối tượng trên thanh Control vào Form ta làm theo 4 bước: Kích chuột vào đối tượng cần đưa. Vẽ nó trên Form để xác định vị trí. Thiết lập các thuộc tính thích hợp. Viết mã lệnh cho các tình huống tương ứng. 5.1. Biểu mẫu – Form 5.1.6. Bổ sung đối tượng, thuộc tính trên Form Các thuộc tính, sự kiện thường dùng trên Form: Thuộc tính: Sự kiện: Tên sự kiện MoveMouse Destroy Load ............... Tên thuộc tính Ý nghĩa Màu nền Cách thực hiên BorderStyle Dạng đường viền Đáp ứng khi di chuyển chuột trên bề mặt Form Caption Tiêu đề Form Đáp ứng khi giả phóng Form FillColor Màu để tô các đối tượng Đắp ứng khi nập Form vào bộ nhớ FontName Font chữ BackColor FontSize ......... Kích thước chữ 5.2. Báo biểu – Report 5.2.1. Khái niệm Report Report cung cấp cho chúng ta một công cụ mềm dẻo để trình bày và tóm tắt dữ liệu trong một văn bản khi in ra giấy. Cấu trúc của Report thường được thiết kế theo một trong các dạng sau: 5.2. Báo biểu – Report 5.2.2. Các dạng của Report Dạng cột(Column Report) Mỗi Field là một cột và mỗi Record nằm trên 1 dòng. Ví dụ: 5.2. Báo biểu – Report 5.2.2. Các dạng của Report Dạng dòng(Row Report) Mỗi Field là một hàng, các Record sẽ liên tiếp nhau. Ví dụ: 5.2. Báo biểu – Report 5.2.2. Các dạng của Report Dạng một – nhiều(One – To – Many Report) Dữ liệu được lấy từ hai bảng, 1 bảng cha và một bảng con (có quan hệ One-Many với nhau). Cứ mỗi record cha sẽ có các record con phía dưới. Ví dụ: 5.2. Báo biểu – Report 5.2.2. Các dạng của Report Dạng nhiều – một(Multi - Column Report) Dạng cột và dòng như trên là dạng 1 “cột”, tuy nhiên có thể tạo các report trên thành dạng nhiều “cột”. Ví dụ: 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Tại cửa sổ Project Manager(PM) ta chọn: Document, chọn Report, chọn New, trên hộp thoại New Report chọn Report Wizard, xuất hiện hộp thoại Wizard Selection: Chọn Report Wizard, chọn OK và làm theo các bước sau: 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Bước 1: Chọn CSDL, chọn bảng và các trường cần thiết sau đó nhấp Next. 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Bước 2: Chọn trường để nhóm dữ liệu, có thể tạo ra nhiều cấp nhóm(xem hình) sau đó nhấp Next. 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Bước 3: Chọn kiểu Report(Style) sau đó nhấp Next. 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Bước 4: Thiết lập cấu trúc Report: Number of Columns: số “cột” Field Layout Columns: các trường ở dạng cột(dạng 1). Filed Layout Row: các trường ở dạng dòng(dạng 2). Orientation Portrait: hướng giấy dọc. Orientation Portrait: hướng giấy ngang. Sau đó nhấp Next. 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Bước 5: Chọn cách sắp xếp các bản ghi sau đó nhấp Next. 5.2. Báo biểu – Report 5.2.3. Tạo Report bằng Wizard ứng với 1 bảng Bước 6: Kết thúc, chọn Finish rồi nhập vào tên file cần ghi để kết thúc. 5.2.4. Tạo Report bằng Wizard ứng với nhiều bảng(sinh viên tự tìm hiểu) 5.2. Báo biểu – Report 5.2.5. Tạo Report bằng Report Designer Tại cửa sổ Project Manager(PM) ta chọn: Document, chọn Report, chọn New, chọn New Report, khi đó giao diện Report Designer xuất hiện như hình sau:: Đưa các đối tượng lên Report và chỉnh sửa theo mục đích người dùng. 5.2. Báo biểu – Report 5.2.5. Tạo Report bằng Report Designer Cấu trúc của một Report Designer: gồm 5 phần Page Header: Những thiết kế trong phần này sẽ in lặp lại ở đầu mỗi trang Detail: Những thiết kế trong phần này sẽ in tương ứng với mỗi bản ghi của vùng làm việc hiện thời. Page Footer: Những thiết kế trong phần này sẽ in lặp lại ở cuối mỗi trang Title: Những thiết kế trong phần này sẽ in một lần duy nhất ở đầu của Report. Summary: Những thiết kế trong phần này sẽ in một lần duy nhất ở cuối của Report. 5.2. Báo biểu – Report 5.2.5. Tạo Report bằng Report Designer Thanh công cụ Report Controls: Các công cụ chính: Label: Tạo nhãn, ví dụ như tiêu đề cột ... Field: Đưa dữ liệu từ các trường vào Report. Line: Vẽ các đoạn thẳng. Rectangle: Vẽ hình chữ nhật. Picture/Ole bound control: Đưa ảnh (hoặc đối tượng Ole khác) vào report. ....... 5.2. Báo biểu – Report 5.2.5. Tạo Report bằng Report Designer Nhóm dữ liệu (Data Grouping): tùy chọn này cho phép “nhóm” dữ liệu theo một tiêu chuẩn nào đó. Cách thực hiện: Kích phải chuột vào Report (trong cửa sổ Report Designer) Chọn mục Data Grouping, khi đó giao diện Data Grouping xuất hiện như sau: Chọn Add để thêm vào các tiêu chuẩn nhóm, có thể nhóm nhiều cấp. Group Header: Những thiết kế trong phần này sẽ in lặp lại ở đầu mỗi nhóm Group Footer: Những thiết kế trong phần này sẽ in lặp lại ở cuối mỗi nhóm 5.2. Báo biểu – Report 5.2.5. Tạo Report bằng Report Designer Data Environment: Thiết lập môi trường dữ liệu cho Report. Cách thực hiện: Kích phải chuột vào Report (trong cửa sổ Report Designer) Chọn mục Data Environment. Kích chuột phải vào nền giao diện DataEnvironment chọn Add và thêm để thêm Table, View vào DataEnvironment. 5.2. Báo biểu – Report 5.2.6. Cài đặt trang in báo cáo Mở Menu File, chọn Page Setup: xuất hiện hộp thoại Page Setup, ta đặt các tùy chọn sau: Number: số cột in trong Report Width: độ rộng của cột Spacing: khoảng cách giữa các cột Left Margin: khoảng cách của lề trái ....Chọn OK Chương 6. Form và Report 6.1 •Tạo Menu. 6.2 •Quản lý dự án. 6.1. Tạo Menu. 6.1.1. Menu là gì? Menu cung cấp một phương thức có cấu trúc và giao diện với người dùng để tác động lên những câu lênh trong ứng dụng. Việc sắp xếp và thiết kế Menu thích hợp sẽ giúp người dùng được thuận lợi khi sử dụng hệ thống Menu của bạn. 6.1. Tạo Menu. 6.1.2. Các loại Menu Menu, ví dụ menu của Visual Foxpro (hình sau), được dùng để tổ chức các chức năng của Visual Foxpro. Trong đó: Thanh nganh (chứa các mục File, Edit ...) gọi là Menu Bar Các mục như File, Edit ... trên Menu Bar gọi là PAD Khi kích hoạt mỗi PAD (ví dụ như PAD Program trong hình trên)-> Xuất hiện một POPUP menu. Mỗi mục trên POPUP menu (như Do, Cancel ... trong hình trên) được gọi là một BAR. 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Các bước tạo Menu hệ thống Sắp xếp và thiết kế: chọn Menu cha, Menu con và vị trí xuất hiện của chúng trong hệ thống? Sử dụng Menu Designer, tạo Menu và các SubMenu. Gắn các câu lệnh tương ứng với các công việc. Biên dịch Menu. Tiến hành chạy thử và kiểm tra. 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Tạo Menu hệ thống thông qua Menu Designer Tại cửa sổ PM chọn Tab Other, chọn Menus, chọn New, chọn Menu, xuất hiện giao diện Menu Designer: 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Giao diện Menu Designer Menu level: Chỉ ra Menu đang thiết kế là Menu gì, có thể là Menu Bar hoặc các SubMenu... Mỗi dòng trong khung thiết kế là một Menu level. Prompt: là tên của các Menu. VD: “Cập nhật dữ liệu”,... Result: là hành động xảy ra khi một Menu được chọn. Tham số này có thể nhận giá trị:. Command, PAD name, Submenu và Procedure, tùy thuộc vào Result mà việc thiết lập các tham số khác của một mục là khác nhau: 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Giao diện Menu Designer Tham số Result: o Command: nhập vào 1 lệnh của Fox. o PAD Name: tên một PAD Menu. o Submenu (Menu con): sử dụng lệnh Create (hoặc Edit) để sửa đổi Menu con. o Procedure: sử dụng lệnh Create (hoặc Edit) để viết thủ tục o BAR #: tên một Bar. 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Giao diện Menu Designer Insert: Chèn thêm 1 mục vào menu level Delete: Xóa 1 mục khỏi menu level Move Item: Di chuyển các mục Preview: Xem thử menu đang thiết kế 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Prompt Options: dùng để thiết lập thêm các lựa chọn cho Menu như phím nóng, hình ảnh,...để thiết lập ta chọn Option cho Menu muốn tạo, xuất hiện hình sau: 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Prompt Options: Key Label: “Phím nóng” (ví dụ như Ctrl+C của Word). Key Text: Text thể hiện của “phím nóng” (nên đặt trùng với Key Label). Negotiate: Chỉ áp dụng đối với các PAD, và chỉ có hiệu ứng khi chạy ở chế độ OLE edit. Skip for: Cho phép nhập vào 1 biểu thức logic, nếu biểu thức này có giá trị FALSE thì mục này sẽ Disabled. Message: Thông báo ở Status Bar khi di chuyển con trỏ đến mục này. Picture - File: đường dẫn + File ảnh Picture - Resource: Chọn ảnh theo các thiết kế sẵn của Visual Foxpro Comment: Giải thích, ghi chú. 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Gắn một Menu vào Form Thiết lập thuộc tính Top - Level Form cho menu: Trong Menu Designer vào Menu View/General Option khi đó giao diện chương trình có dạng: Đánh dấu (check) ô Top-Level Form/ OK. Nếu không chọn Top-Level Form thì menu được tạo sẽ xuất hiện thay thế menu hệ thống. Đối với Form: o Thiết lập thuộc tính ShowWindow là 2 - As Top-Level Form. o Trong sự kiện Init (Form.Init) viết dòng lệnh sau: DO menu\<MenuName> WITH THIS, .T. 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống Thực thi (chạy) một Menu: chỉ thực hiẹn với các Menu không phải là Top-Level Form. Các bước thực hiện: Tại cửa sổ PM, chọn Tab Other, chọn Menus, chọn Menu cần thực hiện, chọn Run hoặc thực hiện lệnh: DO <MenuName> Lưu ý: Thực hiện lệnh SET SYSMENU TO DEFAULT để trả lại menu hệ thống của Visual Foxpro . 6.1. Tạo Menu. 6.1.3. Qui trình tạo Menu hệ thống 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à *.MNX Tạo Menu bằng công cụ Designer Menu sử dụng lệnh: CREATE MENU <tên Menu>. Mở Menu đã có: MODFY MENU <tên Menu>. Dịch File Menu: để dich File Menu, từ màn hình Menu Designer chọn lệnh Generate. Sau khi dich File Menu có phần mở rộng là MPR. 6.2. Quản lý dự án. 6.2.1. Các thành phần trong dự án VF Dự án là tên gọi để chỉ đến ứng dụng mà ta đang xây dựng. Các thành phần của dự án bao gồm: Các bảng dữ liệu (TABLES) Các File CSDL (DATABASE) Các Form Các Report Các Query Các File khác như âm thanh, hình ảnh, tài liệu,... 6.2. Quản lý dự án. 6.2.2. Dịch các dự án sang File chạy Dịch sang APP: cần có một bản sao của VF, sau đó sử dụng lệnh BUILD <tên dự án> Dịch sang File có phần mở rộng là exe: không cần phải có VF nhưng cần phải cung cấp hai File: vfp6r.dll và vfp6renu.dll được cài đặt trong cùng thư mục với ứng dụng. Dùng lệnh: BUILD EXE <tên dự án> 6.2. Quản lý dự án. 6.2.2. Dịch các dự án sang File chạy Đặt Starting Point cho dự án: khi ứng dụng được thi hành, có một điểm bắt đầu đó là Starting Point. Để chọn một thành phần của dự án là Staring Point: Chọn thành phần được đặt là Starting Point. Từ Menu Project, chọn Set Main 6.2. Quản lý dự án. 6.2.2. Dịch các dự án sang File chạy Starting Point chứa các thành phần: Do Setup .prg: lệnh thực hiện chương trình để thiết lập môi trường cho hệ thống. Do MainMenu .mpr: chạy File Menu chính để thiết lập giao diện 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. Do CleanUp .prg: Dọn dẹp ôi trường, trả lại môi trường cho hệ thống và thoát khỏi hệ thống. Clear Events.