Lý thuyết môn Visual FoxPro


Chương 1
THAO TÁC TRÊN BẢNG DỮ LIỆU

Tóm tắt lý thuyết

1. MỘT SỐ KHÁI NIỆM CƠ BẢN
    1.1. Kiểu dữ liệu ( Data Type)
       a. Kiểu Character
       b. Kiểu Numeric
       c. Kiểu Float
       d. Kiểu Date và Datetime
       e. Kiểu Currency
       f. Kiểu Memo
       g. Kiểu Logical
       h. Kiểu General
    1.2. Hằng (Constant)
       a. Hằng ký tự (Hằng chuỗi): Được đặt trong cặp dấu '..', "....", [...]
       b. Hằng kiểu ngày: Đặt trong {.........}
       c. Hằng kiểu số
       d. Hằng logic
    1.3. Biến ( Variable)
       a. Biến nhớ
       b. Biến trường
       c. Biến hệ thống
    1.4. Hàm (Function)
       Hàm do người định nghĩa phải theo cú pháp sau:
                   FUNCTION  <Tên hàm>
                                         <Các lệnh>
                   RETURN <Giá trị>
    1.5. Biểu thức (Expression)
       Biểu thức được tạo bới các biến, hằng, hàm và một số phép toán. Kết quả của biểu thức thuộc về các kiểu dữ liệu Character, Numeric, Date, Datetime, Logical.
2. CÁC PHÉP TOÁN
    2.1. Phép gán: Ký hiệu =
    2.2. Phép toán chuỗi ký tự
       a. Phép +
       b. Phép -
       c. Phép $
    2.3. Phép toán trên kiểu ngày





       Phép toán Kết quả
       <Ngày> +  Số <Ngày>
       Số + <Ngày> <Ngày>
       <Ngày> - Số <Ngày>
       <Ngày> - <Ngày> Số
       <Ngày giờ> +  Số <Ngày giờ>
       Số + <Ngày giờ> <Ngày giờ>
       <Ngày giờ> - Số <Ngày giờ>
       <Ngày giờ> - <Ngày giờ> Số
    2.4. Phép toán quan hệ: =, <, >, >=, <=, != ( <>)
    2.5. Phép toán logic: NOT ( hoặc !), AND, OR
    2.6. Phép toán số học: +, -, *, /, ** ( Hoặc ^), % (Chia lấy phần dư)
    2.7. Thứ tự ưu tiên của các phép toán
       Thứ tự ưu tiên của phép toán trên cùng một hàng thì cùng mức ưu tiên, nếu các phép toán cùng mức ưu tiên thì tính từ trái sang phải.
       a. Các phép tính số học:     Dấu âm, dương
                                                 Luỹ thừa
                                                 Nhân, chia
                                                 Phần dư
                                                 Cộng, trừ
       b. Các phép toán cộng chuỗi: +, -
       c. Các phép toán quan hệ: =, <, >, >=, <=
       d. Các phép tính logic: NOT, OR, AND
3. LỆNH VÀ CẤU TẠO LỆNH
    3.1. Lệnh
       Lệnh là một chỉ thị của người sử dụng yêu cầu VisualFox làm một việc gì đó. Lệnh có thể đưa vào từ cửa sổ lệnh hoặc menu hệ thống
    3.2. Cấu tạo lệnh
       <Lệnh> [phạm vi] [FIELDS <dsách trường>] [FOR <bthức logic1>] [WHILE <biểu thức logic2>]    [FROM <tên file> / ARRAY <tên mảng>] [TO print/tên file/dsách biến]
4. MỘT SỐ LỆNH CƠ BẢN
    4.1 Định vị con trỏ đến một bản ghi
       a. Định vị tuyệt đối
           Cú pháp: GO <N>|[TOP]|[BOTTOM]
       b. Định vị tương đối
           Cú pháp: Skip [+|-] [<n>]
    4.2. Lấy dữ liệu từ bảng
       a. Lệnh Display
           Cú pháp:   Display [<phạm vi>] [fields<danh sách trường>] [For<bthức logic>] [While<bthức logic>] [on|off ]
       b. Lệnh LIST
           Cú pháp:       List   [<phạm vi>] [fields<danh sách trường>] [For<bthức logic>] [While<bthức logic>] [on|off]
       c. Lệnh ?|??
           Cú pháp:      ?|?? <danh sách biểu thức>
    4.3. Chèn, bổ sung bản ghi
       a. Chèn bản ghi
           Cú pháp: INSERT [BEFORE][BLANK]
       b. Bổ sung bản ghi
           Cú pháp: APPEND [BLANK]
    4.4. Sửa chữa nội dung bản ghi
       a. Lệnh BROWSE
           Cú pháp: BROWSE [field<dsách trường>] [Freeze<dsách trường>][nodelete] [NOEDIT] [FOR<Bthức logic>]
       b. Lệnh Edit
           Cú pháp: Edit [<phạm vi>] [field<dsáchtrường>][ Noappend][nodelete] [noedit]  [for<Bthức logic>] [While<Bthức logic>]
       c. Lệnh REPLACE
           Cú pháp: REPLACE [<phạmvi>]<trường 1>WITH<Bthức 1>[,<trường 2> WITH  <Bthức 2> .......[for<Bthức logic>] [While<Bthức logic>]
    4.5. Xoá và khôi phục bản ghi
       a. Đánh dấu xoá
           Cú pháp: DELETE [<phạm vi>] [For<Bthức logic>] [While<bthứcLOGIC>]
       b. Xoá
           Cú pháp: PACK
       c. Khôi phục bản ghi đã bị đánh dấu xoá
           Cú pháp:  RECALL [<phạm vi>] [For<Bthức logic>] [While<bthức logic>]
    4.6. Lọc dữ liệu
           Cú pháp: SET FILTER TO <Bthức logic>
    4.7. Thao tác với cấu trúc bảng
       a. Xem cấu trúc bảng (List|Display structure)
           Cú pháp: List | Display structure
       b. Sửa đổi cấu trúc bảng dữ liệu
           Cú pháp: MODIFY STRUCTURE
       c. Sao lưu cấu trúc bảng dữ liệu
           Cú pháp: Copy structure to <Tên Bảng> [fields<danh sách trường>]
       d. Sao chép bảng
           Cú pháp: Copy to <Tên bảng đích> [<phạm vi>] [fields <danh sách trường>] [For<Bthức logic>] [While<Bthức logic>]
5. SẮP XẾP, TÌM KIẾM VÀ THỐNG KÊ
    5.1. Sắp xếp theo chỉ mục
       a. 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]
       b. 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.
          SET INDEX TO: Dùng để đóng file chỉ mục.
          REINDEX: Dùng để cập nhật lại file chỉ mục sau khi có sự sửa đổi trên bảng dữ liệu.
    5.2. Tìm kiếm
       a. Tìm kiếm tuần tự
           Cú pháp:  LOCATE [<phạm vi>] FOR<bthức logic> [WHILE<bthức logic>]
       b. Lệnh continue
           Cú pháp : CONTINUE
       c. Tìm kiếm sau khi đã lập chỉ mục
           Cú pháp : SEEK <biểu thức>
    5.3. Thống kế
       a. Đếm số lượng bản ghi
           Cú pháp:COUNT [<phạm vi>][FOR<Bthức Logic>] [WHILE<Bthức Logic>] [TO<biến nhớ>]
       b. 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 <Bthức logic>] [WHILE <Bthức logic>]
       c. 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 <Bthức logic>]
       d. 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.DBF>[<Phạm vi>]
[FIELD <dstrường>][FOR <Bthức Logic>][WHILE < Bthức Logic>]



Chương 2
BIỂU MẪU VÀ BÁO CÁO
Tóm tắt lý thuyết
1. KHÁI NIỆM VỀ FORM
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ũ, lập trình theo hướng thủ tục. ở đây, thay vì nghĩ đến các chức năng của chương trình ta chỉ cần nghĩ đến các đối tượng đang tạo: là các thành phần độc lập của một ứng dụng với chức năng riêng của nó. Mỗi một đối tượng đều có một bộ thuộc tính mô tả đối tượng; các phương thức là những đoạn trình chứa trong điều khiển, cho điều khiển biết cách thức để thực hiện một công việc nào đó; và tập hợp những sự kiện đó là những phản ứng của đối tượng.
Trong Visual Foxpro, các form và control là các đối tượng được dùng để xây dựng các ứng dụng.
            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>
Khi đó ta được màn hình thiết kế form như sau:
            a. Quản lý form
            Lưu Form: Từ menu file, chọn save để lưu vào <tên form>, mặc định phần mở rộng là scx.
Chạy form: Từ cửa sổ lệnh, thực hiện lệnh sau:
DO FORM <tên form>
Đóng form (giải phóng khỏi bộ nhớ)
RELEASE <tên form>
            1.1. Thuộc tính của đối tượng (Properties)
            Để chỉ đến một thuộc tính của đối tượng nào ta dùng cú pháp sau:
<tên đối tượng>.<thuộc tính>
            1.2. Phương thức của đối tượng (Methods)
            Để gọi đến phương thức của một đối tượng, ta dùng cú pháp:
<tên đối tượng>.<phương thức>
Một số phương thức thường dùng
 Refresh: Làm tươi lại đối tượng.
 Show: Hiện đối tượng.
 Hide: ẩn đối tượng.
 Release: Giải phóng đối tượng.
SetFocus: Thiết lập “tầm ngắm” cho đối tượng.
            1.3. Sự kiện của đối tượng
Để chỉ đến sự kiện của đối tượng, ta dùng cú pháp sau:
<tên đối tượng>.<sự kiện>
Một số sự kiện thường dùng
            Click: Được gọi khi kích chuột vào đối tượng.
            DbClick: Được gọi khi kích đúp chuột vào đối tượng.
MouseMove: Được gọi khi di chuyển chuột trên bề mặt của đối tượng.
            KeyPress: Được gọi khi nhấn một phím kích chuột vào đối tượng.
            Got focus: Được gọi khi đưa đối tượng vào tầm ngắm.
            Lostfocus: Được gọi khi đưa đối tượng ra khỏi tầm ngắm
            Change: Được gọi khi có sự thay đổi nội dung dữ liệu kiểu chuỗi của đối tượng.
                  1.4. Tuy cập đến các đối tượng trên form
            Muốn chỉ đến một đối tượng nào trên form, ta dùng:
            <tên form>. <đối tượng>: nếu <đối tượng> không cùng với form đang thao tác.
<this form>.<đối tượng>: nếu đối tượng nằm trên form đang thao tác.
            Muốn thay đổi giá trị các thuộc tính trên form, ta dùng:
            <tên form>.<thuộc tính>= <giá trị>: nếu muốn thay đổi  thuộc tính của form không phải là form hiện hành.
<This form>.<thuộc tính>=<giá trị>: nếu muốn thay đổi các thuộc tính của form hiện hành.
 Các thuộc tính, phương thức, sự kiện thường dùng trên form.
Thuộc tính:
            BackColor     : Màu nền
            BorderStyle   : Dạng đường viền
            Caption          : Tiêu đề của form
            FillColor        : Màu để tô đối tượng
            Fontname       : Font chữ cho các đối tượng chứa văn bản
            Fontsize         : Kính thước fontname
            Moveable      : Cho phép di chuyển hay không
            .................

Tình huống:
            MoveMouse  : Đáp ứng khi di chuyển chuột trên bề mặt form
            Destroy          : Đáp ứng khi giải phóng form
            Load               : Đáp ứng khi nạp form vào bộ nhớ
            1.5. Thanh công cụ Control Toolbar
            Muốn đưa đối tượng trên thanh Control vào form: 4 bước
             Kích chuột vào đối tượng cần đưa
             Vẽ nó trên form để xác định vị trí
             Thiết lập các thuộc tính thích hợp
            Viết mã lệnh cho các tình huống tương ứng
       Quy ước đặt tên cho các đối tượng

Loại đối tượng
Tên
Form
Bắt đầu bởi Frm
Command
Bắt đầu bởi cmd
Edit box
Bắt đầu bởi Edb
Grid
Bắt đầu bởi Grd
Image
Bắt đầu bởi Img
Label
Bắt đầu bởi Lbl
Textbox
Bắt đầu bởi Txt
Timer
Bắt đầu bởi Tmr

2. MỘT SỐ ĐỐI TƯỢNG TRÊN CONTROL
            Label : Dùng để thể hiện các chuỗi trên form.
Các thuộc tính thường dùng:
Caption: Chuỗi thể hiện
Autosize: Giá trị logic, cho phép kích thước của Label có tự động chỉnh sửa theo độ dài của caption hay không.
            Command Bottom: Dùng để thể hiện các nút lệnh trên form.
Các thuộc tính thường dùng:
 Caption: tên xuất hiện trên nút lệnh
 Picture: Hình xuất hiện trên nút lệnh
 Enable: giá trị Logic, cho phép chọn nút lệnh hay không
Các Sự kiện thường dùng:
 Click: Khi kích chuột vào nút lệnh thì sự kiện này được gọi.
      TextBox: Dùng để xem, chỉnh sửa dữ liệu từ các trường trong bảng dữ liệu không phải kiểu memo.
Các thuộc tính thường dùng.
ControlSource: Tên của trường hay biến mà giá trị của nó được hiện trong textbox
Value: Giá trị hiện thời của textbox.
Sự kiện thường dùng
 Change: Khi có sự thay đổi của thuộc tính value
 KeyPress: Khi có phím bất kỳ được ấn.
            Editbox: Tương tự như textbox, được dùng để chỉnh sửa dữ liệu từ các trường memo.
Các thuộc tính thường dùng
            Control Source: Tên của trường mà giá trị của nó được thể hiện trong editbox.
 ScrollBars: Có hiện thanh cuộn trong khung editbox hay không.
 ReadOnly: Cho phép có được chỉnh sửa nội dung hay không
Sự kiện thường dùng
 Change: Khi có sự thay đổi của thuộc tính value.
 Keypress: Khi có phím bất kỳ được ấn.
            Images:  Dùng để đưa các hình ảnh trên form.
Các thuộc tính thường dùng
 Picture: Xác định file hình ảnh
 Stretch: Xác định cách thức thể hiện hình ảnh (phóng to, thu nhỏ, nguyên mẫu).
Timer: Dùng để thiết lập các công việc thực hiện đều đặn sau một khoảng thời gian.
Các thuộc tính thường dùng.
 Enabled: Xác định xem Timer có hiệu lực hay không
 Interval: Quy định khoảng thời gian xác định cho tình huống timer.
Sự kiện thường dùng
             Timer: Được kích hoạt đều đặn sau một khoảng thời gian xác định ở thuộc tính Interval.
            Grid: Dùng để thể hiện dữ liệu theo dạng bảng.
Các thuộc tính thường dùng.
 Row Source: Xác định bảng dữ liệu cần thể hiện.
 ColumnCount: Xác định số cột của Grid.
3. KHÁI NIỆM BÁO CÁO
Reports là công cụ để trình bày và tóm tắt dữ liệu trong một văn bản khi in. Report có hai thành phần cơ bản cấu thành: dữ liệu nguồn, thông thường là các bảng dữ liệu và hình thức trình bày là dạng thức của report sẽ định dạng cách kết xuất dữ liệu.

Màn hình thiết kế Report

            3.1. Các bước  thiết kế Report
Ta có thể thiết kế report để thể hiện dữ liệu ở nhiều dạng thức khác nhau trên giấy khi in. Quá trình thiết kế gồm 4 bước chính như sau:
1. Xác định loại Report cần tạo: Tức là quyết định chọn dạng thức mà report hiển thị kết quả.
2. Tạo Report layout: Có thể sử dụng report wizard hay report designer. Report layout được lưu trên đĩa với phần mở rộng của file là FRX: Lưu trử chi tiết của report.
3. Sửa đổi layout của report.
4. Xem và in report.
            3.2. Tạo Report bằng Wizard
Từ menu Tools, chọn Wizard, chọn Report sau đó làm theo các bước hướng dẫn.

Bước 1: Chọn bảng dữ liệu và các trường cần thể hiện


Bước 2: Tạo nhóm dữ liệu kết xuất

Bước 3:  Chọn kiểu Report thể hiện
Bước 4: Chọn cách trình bày trên giấy in

Bước 5:  Chọn trường Sắp xếp
Bước 6: Đặt tựa đề, kết thúc
3.3. Tạo Report sử dụng công cụ Report DESIGNER
            a. Quản lý Report
            Tạo mới Report: CREATE REPORT <tên Report>
Ví dụ: create report  TEST

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

            b. Các thành phần trên Report

Title: Dùng để in trên mỗi report: Từ menu report, chọn title summary
Page Header: Để in trên mỗi header của mỗi trang in.
Column header: Để in tên header của mỗi cột. Để chọn, từ menu file chọn page setup, chọn giá trị cho column number lớn hơn 1.
Group header: Xuất hiện mỗi khi bắt đầu nhóm mới. Để chọn, từ menu report chọn data grouping.
Detail: phần chi tiết trên mỗi record (ứng với từng record trên bảng dữ liệu).
Group footer: In phần Footer của mỗi nhóm. Để chọn, từ menu report chọn data grouping.
Column footer: In phần Footer của mỗi cột. Để chọn, từ menu file, chọn page setup, chọn giá trị cho column nimber lớn hơn 1.
Page Footer: In phần Footer của mỗi trang.
Sumary: Phần tốm tắt của mỗi report.
            c. Các control trên Report
            Thanh công cụ Report Control
Chức năng của các control:
Field trong bàng dữ liệu, biến và các biểuthức toán
Field
Text thuần tuý
Label
Đường kẻ
Line
Hộp và đồng khung
Rectangle
Hình tròn, elip
Rounded Rectangle
Hình ảnh hoặc field General
Picture
            d. Đưa các control vào report
Thực hiện các bước sau:
 Chọn control thích hợp
 Kéo rê chuột trên report để xác định vị trí của nó trên report
 Hiệu chỉnh các control
Đưa field vào report:
                         Kích chuột vào
Trong hộp  report Expression, chọn nút lệnh sau hộp Expression.
Trong hộp field, hcọn tên trường hay biến thích hợp.
Chọn OK.
Đưa label vào report:
                         Chọn          



 Gỏ nội dung của label 
Đưa Picture bound  control vào report:
 Chọn picture bound control
              Xuất hiện hộp hội thoại report picture, chọn file, nếu muốn chèn hình ảnh từ file, chọn field nếu muốn chọn trường General.
 Chọn Ok.


Chương 3
LẬP TRÌNH TRÊN VISUALFOX

Tóm tắt lý thuyết
1. CHƯƠNG TRÌNH
            1.1. Khái niệm
Là một dãy lệnh liên tiếp được tổ chức vào 1 file chương trình, file chương trình mặc định có phần mở rộng là *. PRG.
            1.2. Các bước tiến hành khi lập trình
            Khi bắt đầu lập trình, thông thường phải thực hiện các bước sau:
            Hiểu rõ vấn đề bạn sắp viết chương trình.
            Chia nhỏ vấn đề cần giải quyết thành các mục nhỏ hơn.
            Xác định các dạng dữ liệu nhập, xuất.
            Chương trình hoá các mục này.
            Kiểm tra và chỉnh sửa các mục.
            Kết nối các mục lại với nhau thành một chương trình.
            1.3. Cấu trúc chung của một chương trình
            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 CURENCY ON : đặt năm có 4 chữ số
SET TALK OFF/ON : ẩn hiện các kết quả thực hiện lệnh
SET DEFAULT TO <đường dẫn> : đặt đường dẫn hiện thời
CLEAR: xoá màn hình hiển thị kết quả
CLOSE ALL: đóng các bảng dữ liệu, các file cơ sở dữ liệu,...
            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
Xử lý, tính toán
Kết xuất thông tin
            c. Kết thúc chương trình
Đóng các tập tin CSDL, các bảng dữ liệu đang sử dụng.
Giải phóng biến nhớ .
Trả lại các chế độ cho hệ thống.
            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, 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
            Một lệnh có thể được viết trên nhiều dòng, nhưng cuối mỗi dòng phải có dấu chấm phẩy trừ dòng cuối cùng.

2. CÁC CÂU LỆNH NHẬP, XUẤT DỮ LIỆU
            2.1. Nhập dữ liệu
            Cú pháp: @<x,y> Say.........get..........read
            2.2. Xuất dữ liệu
            Cú pháp: @<x,y> Say <Biểu thức>
3. CÁC CẤU TRÚC ĐIỀU KHIỂN
            3.1. Cấu trúc tuần tự: Chương trình được thực hiện từ trên xuống.

            3.2. Cấu trúc rẽ nhánh
Bthức L

.F.

Các lệnh

.T.
Cấu trúc rẽ nhánh có hai dạng: dạng khuyết và dạng đầy đủ:
a. Dạng khuyết
                        Cú pháp:
IF <Bthức Logic>
<các lệnh>
ENDIF

Bthức L

.F.

.T.

Các lệnh 1

Các lệnh 2
b. Dạng đầy đủ
            Cú pháp:
             IF <Bthức Logic>
            <các lệnh 1>
            ELSE
            <các lệnh 2>
            ENDIF
            c. Lựa chọn một trong nhiều trường hợp
            Cú phá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
            3.3. Cấu trúc lặp
            a. Cấu trúc DO WHILE
Cú pháp:
DO WHILE <Bthức Logic>
<Các lệnh>
[LOOP]
[EXIT]
ENDDO
            b. Cấu trúc SCAN
Cú pháp:
SCAN [<phạm vi>] [FOR<Bthức Logic>] [WHILE<bthức Logic>]
<Các lệnh>
[LOOP]
[EXIT]
END SCAN
            c. Cấu trúc FOR
Cú pháp:
FOR <Biến>=<Giá trị đầu> TO <Giá trị cuối> [Step <n>]
<Các lệnh>
END FOR

Post a Comment