Cấu trúc lệnh trực tiếp của Foxpro có dạng: [Các tham số] ↵ Trong đó: - Động từ tiếng anh tương ứng với công việc cần làm; [Tham số] - Các tham số trong lệnh của fox có thể có, có thể
Trang 1CHƯƠNG I: 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 Từ khóa, kí hiệu, Lệnh
1 Từ khóa (Key Word):
Là các từ mà Visual Foxpro đã sử dụng cho một mục đích nào đó Và người dùng không
được phép đặt tên trùng với từ khóa Tham khảo tài liệu về tất cả các khóa của Visual
Foxpro Trong Foxpro từ khoá có thể không cần viết đầy đủ mà chỉ cần viêt 4 ký tự đầu của
từ khoá đó, ví dụ từ khoá CREATE có thể chỉ cần viết Crea (Visual Foxpro không phân
biệt chữ hoa, chữ thường)
2 Kí hiệu comment:
Đối với phần cuối 1 dòng dùng kí tự &&
Với cả dòng: dùng ký tự * hoặc &&
3 Lệnh của Visual Foxpro
Trong Visual Foxpro có hai loại câu lệnh:
• Các câu lệnh có thể thực hiện trực tiếp từ cửa sổ lệnh (Command Windows) - gọi
là Lệnh trực tiếp
• Các lệnh chỉ thực hiện trong chương trình Các lệnh trực tiếp cũng thực hiện được
trong chương trình
Cấu trúc lệnh trực tiếp của Foxpro có dạng: <Động từ> [Các tham số] ↵
Trong đó: <Động từ> - Động từ tiếng anh (tương ứng với công việc cần làm);
[Tham số] - Các tham số trong lệnh của fox có thể có, có thể không, hoặc có thể có nhiều; trường hợp có nhiều tham số thì thứ tự các tham số này có thể không
4 SET DEFAULT TO <Path> -> Thiết lập đường dẫn mặc định
5 SET DATE <FRENCH | AMERICA> -> Thiết lập ngày tháng
II Kiểu dữ liệu
Đối tượng xử lý của V FOXPRO là dữ liệu, để quản lý và khai thác tốt các dữ liệu này,
Trang 2tuỳ theo tính chất, V.FOXPRO phải chia dữ liệu thành nhiều kiểu dữ liệu khác
nhau
Kiểu dữ liệu là thuộc tính gắn liền với biến hay trường trong các bảng Các kiểu dữ liệu
trong Visual Foxpro gồm có: Character (Xâu kí tự), Date và DateTime (Ngày, giờ),
Currency (Tiền tệ), Logic, Numeric (Số); các kiểu chỉ dùng cho các trường của bảng gồm
có: Memo (Văn bản), General (Tổng hợp - ảnh)
1 Charater (C):
Chứa các số liệu là tổ hợp một số bất kỳ các ký tự ASCII Ví dụ: tên, họ hoặc là số
nhưng không có nhu cầu tính toán như số chứng minh, địa chỉ, số phòng,…
Mỗi dữ liệu kiểu chuỗi có độ dài tối đa 255 ký tự (mỗi ký tự chiếm 1 byte trong bộ nhớ)
Là xâu ký tự a->z, A->Z, 0 ->9 và một số các ký tự khác như +.-,*, /, = …
Hằng xâu kí tự: Đặt trong dấu “”, ‘’, hoặc []; ví dụ “Hà nội”, ‘Việt nam’ hoặc [Visual Fox]
Các phép toán:
• +: Nối chuỗi 2 vào chuổi 1
• -: Nối 2 chuỗi nhưng huỷ bỏ các khoảng trắng trước và sau mỗi chuỗi
• $: Chứa ở trong (st1$st2 – st1 có trong st2 ->TRUE, ngược lại ->FALSE)
2 Date and DateTime
• Date (D): Dùng cho những số liệu dạng ngày tháng như ngày sinh, ngày đến,
đó là những số nguyên dạng "yyyymmdd" khi hiển thị ra bên ngoài sẽ được chuyển
thành dạng ngày tháng bình thường như mm-dd-yy, dd-mm-yyyy, tuỳ theo yêu
cầu của người lập trình Độ dài cố định của dữ liệu kiểu ngày là 8 ký tự
• Kiểu ngày, giờ dùng 8 bytes để lưu trữ
• Hằng Date và DateTime: {^yyyy-mm-dd [hh[:mm[:ss]][alp]]}; ví dụ:
Trang 33 Currency
Kiểu tiền tệ (thực chất là kiểu số và thêm kí tự tiền $ hoặc ký tự bất kỳ khác) vào số đó
Kiểu này thường ít được sử dụng
4 Logic
• Logical (L): Dùng cho những dữ liệu chỉ có một trong hai trường hợp hoặc đúng
(T) hoặc sai (F) như giới tính, đối tượng ưu tiên, Độ dài cố định của dữ liệu kiểu
lý luận là 1 ký tự
• Kiểu logíc, tập giá trị là Đúng hoặc Sai
• Hằng Logic: T ->TRUE đúng (hoặc t.); F ->FALSE sai (hoặc f.)
• Các phép toán: NOT, AND, OR
5 Numeric
• Numeric (N): dùng để biểu diễn các số liệu mang giá trị số học và có nhu cầu
tính toán như trong kế toán, quản lý, Mỗi dữ liệu kiểu số chiếm tối đa 20 chữ số
gồm cả phần nguyên, phần thập phân và dấu chấm thập phân
• Float (F): Dùng để biểu diễn số là các số có dấu chấm động như: 2.03e5 (2.03
x105), thường được sử dụng trong các chương trình thuộc lĩnh vực khoa học kỹ
Memo (M): Dữ liệu kiểu ghi nhớ là một đoạn văn bản có độ dài lớn hơn 255 ký tự, như
khen thưởng, lý kịch, quá trình công tác, Độ dài khai báo là 10 nhưng nội dung thực sự
của kiểu ghi nhớ là tuỳ ý, chúng được lưu trữ trong một tập tin khác có cùng tên nhưng
phần mở rộng là FPT (FoxPro Text)
7 General
• Kiểu kí ức, dùng 4 byte để ánh xạ đến 1 file khác có phần mở rộng là fpt Kiểu này
cho phép lưu 1 đối tượng bất kỳ như file văn bản, file word, file excel, file ảnh và
thường được sử dụng để lưu trữ file ảnh
• Kiểu hình ảnh - Ficture (P): Dữ liệu lưu dưới dạng hình ảnh BMP, thường
được dùng trong các chương trình "quản lý nhân sự", "nhận dạng",
III Các phép toán
a Phép toán số học: được thực hiện trên các dữ liệu kiểu số, gồm các phép toán:
Trang 4Độ ưu tiên các phép toán theo thứ tự đã nêu ở trên, có thể thay đổi thứ tự tính toán bằng
cách đặt chúng trong 2 dấu ngoặc đơn ( ) như các quy tắc tính toán số học thông thường
b Phép toán chuỗi: Dùng để xử lý các dữ liệu kiểu chuỗi
• Phép toán ghép nối (+): dùng để ghép 2 chuỗi cạnh nhau, kết quả của phép toán là
một dữ liệu kiểu chuỗi
o Ví dụ: Trung tâm' + 'Tin học' -> 'Trung tâm Tin học'
• Phép toán ghép nối (-): dùng để ghép 2 chuỗi cạnh nhau và di chuyển các dấu
cách ở chuỗi thứ nhất (nếu có) ra cuối chuỗi tạo thành
o Ví dụ: 'Trung tâm ' - ' Tin học' -> 'Trung tâm Tin học '
• Phép toán $: kiểm tra chuỗi bên trái có nằm trong chuỗi bên phải không Kết quả
của phép toán có kiểu logic
o Ví dụ: 'ab' $ "ABab" cho giá trị T nhưng 'ab $ "AaBb" cho giá trị F
c Phép toán ngày: Hai dữ liệu kiểu ngày có thể trừ (-) cho nhau để cho khoảng cách đại
số giữa 2 ngày
Ví dụ:
• {01/08/2003} - {05/09/2003} -> - 35
• {01/08/2003} - {05/07/2003} -> 25
Một dữ liệu kiểu ngày có thể cộng (+) hay trừ (-) một số nguyên để cho kết quả là một
dữ liệu kiểu ngày
Ví dụ: {01/08/2003}+ 10 -> {11/08/2003}
{01/08/2003}- 20 -> {12/07/2003}
Chú ý: Hai dữ liệu kiểu ngày không thể cộng (+) cho nhau
Một số không thể trừ (-) với một dữ liệu kiểu ngày
Trang 5Việc diễn tả thứ tự ngày (D), tháng (M), năm (Y) trong một dữ liệu kiểu ngày còn phụ
thuộc vào thời điểm hiện tại đang theo hệ thống ngày tháng nào
(1) Lệnh SET DATE FRENCH |AMERICAN| JAPAN: Cho phép thiết lập dữ liệu
dạng ngày theo kiểu Pháp|Mỹ|Nhật
(2) SET CENTURY ON|OFF: Quy ước năm có một dữ liệu dạng ngày được biểu diễn
theo dạng hai số (mặc định) hay dạng bốn số Nếu SET CENTURY ON thì năm được
biểu diễn theo dạng bốn con số, nếu SET CENTURY OFF (dạng mặc định) thì năm
được biểu diễn theo dạng hai con số
(3) Lệnh SET MARK TO <bthức C>: để ấn định ký tự phân cách ngày tháng, năm là
<bthức
Dùng lệnh SET MARK TO để trở về ký tự phân cách ngày tháng mặc định
d Phép toán quan hệ: dùng để so sánh hai giá trị của hai biểu thức cùng kiểu
• Hai dữ liệu kiểu số được so sánh dựa theo biểu diễn của chúng trên trục số
• Hai dữ liệu kiểu ngày được so sánh dựa theo biểu diễn của chúng theo chiều của
thời gian Trong kiểu logic, Visual FoxPro quy ước: T.<.F
• Hai dữ liệu kiểu chuỗi có độ dài bằng nhau được so sánh dựa theo nguyên tắc
sau: đầu tiên so sánh 2 mã ASCII của 2 ký tự đầu của hai chuỗi, nếu bằng nhau thì
so sánh tiếp
Ví dụ: 'ABCD' < 'ABCE' -> T 'a' < 'A' -> F
• Trường hợp hai chuỗi có độ dài khác nhau, thì việc so sánh dựa vào việc thiết lập
môi trường SET EXACT ON/OFF, nghĩa là:
o Nếu SET EXACT ON thì 'AB' = 'AB ' -> F
o Nếu SET EXACT OFF thì 'ABCD' = 'AB' -> T
e Phép toán logic: Visual FoxPro có 3 phép toán logic: NOT; AND; OR NOT hay ! :
Trang 6phủ định của toán hạng theo sau
• AND : cho giá trị T nếu cả hai toán hạng đều T
• OR : cho giá trị F nếu cả hai toán hạng đều F
IV Toán hạng
Toán hạng là các dữ liệu tham gia vào các phép toán Ví dụ: del=b^2 - 4*a*c thì b,2,4,a,c
là các toán hạng
V Hằng
• Là đối tượng dữ liệu mà giá trị của nó chỉ xác định 1 lần khi khai báo và không thay đổi
được Hằng cũng được xác định qua tên, kiểu và phạn vi tác động của nó Trừ kiểu dữ liệu
memo thì mỗi kiểu dữ liệu đều có hằng của nó
• Khai báo hằng: Visual Foxpro dùng từ khoá #DEFINE <Tênhằng> <Giá trị> để khai
báo hằng Kiểu của hằng phụ thuộc vào kiểu của biểu thức <Giá trị>
• Phạm vi tác động của hằng được xác định tương tự với Biến
• Hằng kiểu số: như -2.5, 100, 4.14
• Hằng kiểu chuỗi: hằng loại nầy phải để trong hai dấu " " hoặc ' ' hoặc [ ], có độ
dài tối đa không quá 253 kí tự
o Tên biến: Dài không quá 254 kí tự, có thể dùng các chữ cáI, chữ số, dấu gạch
dưới (_) nhưng không được bắt đầu bằng chữ số (và không được trùng với từ khoá)
o Kiểu: Các kiểu dữ liệu kể trên trừ kiểu General Kiểu của biến trong Visual
Foxpro có thể thay đổi Visual FoxPro hiểu kiểu của biến là kiểu của giá trị
mà nó đang mang Số lượng tối đa của biến được phép sử dụng là 2048 biến
o Visual FoxPro chia biến làm 3 loại:
o Biến bộ nhớ: Gọi chung là biến, do người sử dụng tạo ra trong bộ nhớ, khi không sử dụng nữa có thể giải phóng để tiết kiệm bộ nhớ
Ví dụ: hsl = 3.12 ngaysinh = {01/01/88}
Trang 7o Biến hệ thống: Được tạo ra ngay từ khi khởi động Visual FoxPro Có tên
bắt đầu bằng dấu gạch nối ( _ ) thường được sử dụng trong vấn đề in ấn, người sử dụng không thể giải phóng biến loại này
o Biến trường: Tên các trường trong tập tin CSDL , nó chỉ có ý nghĩa khi tập
tin chứa nó được mở ra để sử dụng Nếu có một biến đặt trùng với một biến trường thì biến trường được ưu tiên thực hiện trước
• Phạm vi tác động của biến phụ thuộc vào vị trí mà nó được khai báo Ví dụ
Trong ví dụ trên: Biến A có tác động trong toán bộ chương trình chính, chương trình con 1
và chương trình con 2; Biến C chỉ có tác động trong chương trình con 2; Biến B có tác
động trong chương trình con 1, nếu trong chương trình con 1 có lời gọi chương trình con 2
thì biến B có thể tác động trong chương trình con 2 (nhưng nếu lời gọi chương trình con 2
tại vị trí khác mà ở đó không khai báo B thì lúc đó sẽ phát sinh lỗi)
• Khai báo biến: Trong Visual Foxpro thực ra không có khái niệm khai báo biến (như
trong PASCAL) mà các biến sẽ được sinh ra khi thực hiện lệnh gán (=) hoặc lệnh STORE
Ví dụ
o a=150 -> Tạo ra biến có tên là a, kiểu là số
o STORE ”Visual Foxpro“ TO monhoc -> Tạo ra biến monhoc, kiểu xâu kí tự
• Xoá bỏ các biến: Khi không dùng nữa thì có thể xoá bỏ các biến để giảI phóng bộ nhớ
Visual Foxpro dùng lệnh RELEASE <tenbien> để xoá bỏ các biến Ví dụ RELEASE a;
RELEASE monhoc
Trang 8Biến trường và biến hệ thống có phạm vi tác động trong toàn bộ chương trình
VII Hàm
Hàm là những đoạn chương trình được viết sẵn nhằm thực hiện một công việc nào đó
Các hàm này thường cho ra một giá trị, nhưng cũng có hàm chỉ thi hành một việc nào đó
mà không cho ra một trị nào cả Về hình thức, hàm được đặc trưng bởi tên hàm và theo
sau là cặp dấu ( ) dùng để bao các đối số, các đối số này đặt cách nhau bởi dấu phẩy Một
hàm có thể có nhiều đối số hoặc không có đối số nào cả nhưng phải có ( ) theo sau
Ví dụ: Date ( ): cho biết ngày tháng năm hệ thống
Sqrt(x): căn bậc 2 của x
Có 2 loại hàm: Hàm có sẵn của Visual FoxPro và hàm tự tạo do người sử dụng tạo ra
Trong phần này sẽ giới thiệu một số hàm do Visual Foxpro cung cấp
1 Hàm xâu kí tự
1 ALLTRIM(st), LTRIM(st), RTRIM(st)
2 LEFT(st,n), RIGHT(st,2), SUBSTRING(st,p,n)
Trang 94 Hàm tự tạo của người sử dụng
Cú pháp
FUNCTION <Tenham> [PARAMETER <danh sách các tham số>]
(Các lệnh của fox)
RETURN <Biểu thức>
Trong đó TenHam: Tên hàm do người sử dụng tự định nghĩa
Parameter: Từ khoá cho phép truyền vào các tham số cho hàm
VIII Biểu thức
Biểu thức là tập hợp của một hay nhiều thành phần như hằng, hàm, biến, phép toán, dấu
ngoặc tròn Sau khi tính toán biểu thức sẽ cho một trị duy nhất Trị của biểu thức thuộc
về một trong 4 kiểu: N, C, D, L Một biểu thức có thể rất phức tạp, trị của biểu thức
được tính theo nguyên tắc
• Thứ tự ưu tiên của các phép toán trong 1 biểu thức
4 Các phép logic: NOT, AND, OR
• Sử dụng cập dấu () trong biểu thức để tránh sai sót về thứ tự ưu tiên các phép toán
Bên trái tính trước, bên phải tính sau
IX Từ khoá
Từ khoá là những từ được Visual FoxPro sử dụng vào một mục đích riêng, người sử dụng
không được đặt tên trùng với các từ khoá này Thông thường từ khoá là những động từ
của lệnh thực hiện Nếu từ khoá có nhiều hơn 4 ký tự thì khi sử dụng chỉ cần ghi 4 ký tự
đầu
Trang 10Ví dụ: Câu lệnh MODIFY COMMAND LUONG.PRG có 2 từ khoá là
MODIFY và COMMAND có thể viết gọn là: MODI COMM LUONG.PRG
X Lệnh và chương trình
Lệnh là những yêu cầu để thực hiện một nhiệm vụ nào đó Lệnh trong Visual FoxPro
thường là một động từ, cũng có trường hợp là một kí hiệu như: ! ?, Tập hợp các
lệnh nhằm đạt được một mục tiêu đề ra gọi là chương trình
Trong Visual FoxPro có 3 cách để ban hành lệnh:
a Dùng cửa sổ lệnh:
Lệnh được đưa vào cửa sổ lệnh, sau khi ấn Enter lệnh được thi hành ngay Thi hành
xong một lệnh thì lệnh cũ được lưu lại trên cửa sổ lệnh có thể sử dụng cho lần sau Cách
này thường dùng trong những tính toán đơn giản để kiểm tra kết quả của lệnh
b Dùng menu:
Lệnh được ban hành bằng cách kích hoạt menu tương ứng, sau khi thi hành xong câu
lệnh cũng được lưu lại trên cửa sổ lệnh Cách này chỉ hạn chế trong một số lệnh thông
thường trên tập tin CSDL
c Dùng chương trình: Soạn thảo trước một chương trình gồm nhiều lệnh thích
hợp Chương trình được lưu trên đĩa dưới tên một tập tin có phần mở rộng PRG
Để thực hiện chương trình này, tại cửa sổ lệnh đưa câu lệnh DO <tên file.PRG> Sau
khi ấn Enter chương trình được nạp vào bộ nhớ và từng lệnh được thực hiện theo thứ tự
Trang 11BÀI 2: XÂY DỰNG PROJECT
I Tạo mới một Project
Việc phát triển một ứng dụng trong Visual Foxpro thường được tổ chức thành một Project -
Dự án
Việc tạo mới một Project có thể được thực hiện bằng 1 trong hai cách sau:
• Cách 1: Trong cửa sổ lệnh gõ vào lệnh CREATE PROJECT <Tên Project>
• Cách 2: Vào menu File ->Chọn New, khi đó giao diện New của VS Foxpro xuất
hiện
• Tiếp đến chọn File type = Project (Mặc định)
• Chọn New file để tạo một Project trống
• Chọn Wizard để tạo một Project theo một trong các mẫu
thiết kế sẵn của Microsoft
• Khi chọn New file hộp thoại Create hiển thị cho phép
nhập vào tên project cần tạo, tiếp chọn chọn Save
• Kết thúc việc tạo mới, cửa sổ Project Manager xuất hiện (xem phần tiếp theo) cho phép quản lý, làm việc với Project này
II Cửa sổ Project (Project Manager)
[Chạy Foxpro -> Project Manager]
Các thành phần chính trong Project Manager
1-Các tuỳ chọn (Tab) :
• Data: Database, Free Tables, Queries
• Documents: Forms, Reports, Labels
• Class
• Code: Program, API Libraries, Applications
• Other: Menu, Text file, Other file
Trang 122-Các nút chức năng trong cửa sổ Project Manager
ADD THÊM CÁC THÀNH PHẦN VÀO PROJECT
PROJECTT MODIFY SỬA CẤU TRÚC CỦA MỘT THÀNH PHẦN
TRONGG PROJECTT BROWSE XEM VÀ SỬA DỮ LIỆU CỦA CÁC BẢNG HAY
TRUYY VẤNN REMOVE LOẠI BỎ MỘT THÀNH PHẦN TRONG
PROJECTT
Trang 13BÀI 3: XÂY DỰNG DATABASE VÀ CÁC TABLES
I Giới thiệu
Bảng dữ liệu (gọi tắt là bảng) là nơi lưu trữ dữ liệu và nó đóng một vai trò quan trọng trong
các bài toán quản lý Xuất phát từ việc phân tích yêu cầu, các mẫu biểu của bài toán để từ
đó đưa ra cấu trúc các bảng sao cho phù hợp, đáp ứng các yêu cầu đặt ra là một công việc
khá phức tạp, đòi hỏi phải có kiến thức và kinh nghiệm trong lĩnh vực cụ thể đó
II Tạo Database
1 Tạo mới Database
Câch 1: Sử dụng câu lệnh
Bằng cách này chúng ta có thể tạo ta một Database, tuy nhiên database này là một Database
độc lập (không liên quan đến Project nào)
Câu lệnh: CREATE DATABASE <TenDatabase> ↵
Kết thúc lệnh này Visual Foxpro sẽ tạo ra file Database có tên là TenDatabase (phần mở
• Chọn New Database để tạo một database trống
• Visual Foxpro sẽ yêu cầu nhập vào tên Database (file có phần mở rộng là DBC), rồi chọn Save để ghi lại Khi đó giao diện Database designer xuất hiện như hình 2
• Giao diện Database Designer cho phép xem một cách tổng thể các thành phần (bảng, view, mỗi quan hệ giữa các bảng ) trong csdl
Hình 1 - Hộp thoại New database
Trang 142 Sửa đổi Database
• Trong Project Manager, chọn Tab Data, tiếp đến chọn Database và mở rộng đối tượng
này (bằng cách kích vào dấu + phía trước)
• Chọn Database cần sửa (vì trong một Project có thể có nhiều hơn một Database) rồi
chọn lệnh Modify, khi đó cửa sổ Database designer xuất hiện
3 Thêm vào Project một Database đã có
Trường hợp Project sử dụng một Database đã có (đã thiết kế trước đó) thì chúng ta có thể
thêm (Add) Database đó vào Project
• Trong Project Manager, chọn Tab Data, tiếp đến chọn mục Database
• Chọn lệnh Add, khi đó sẽ xuất hiện cửa số open file (hình 3) cho phép chúng ta chọn
csdl cần thêm vào
Hình 3 - Hộp thoại Open file (Select Database)
Trang 154 Loại bỏ một Database khỏi Project
Khi không cần dùng một Database nào đó, chúng ta có thể loại bỏ Database đó khỏi Project
Hình 4 - Hộp thoại Remove Database
• Chọn Remove (khỏi Project) nếu không muốn xoá hẳn Database này; chọn Delete
nếu muốn xoá hẳn Database này; chọn Cancel khi muốn huỷ bỏ thao tác này
III Bảng dữ liệu (Table)
1 Khái niệm
Bảng dữ liệu chứa dữ liệu theo dạng dòng và cột, mỗi dòng được gọi là một mẫu tin
(record), mỗi cột được gọi là một trường (field) của bảng
Một số công việc cần làm khi làm việc các tables:
• Xác định các Field cần thiết có trong table
• Loại dữ liệu, tạo tiêu đề diễn giải, giá trị mặc định cho từng field
• File dữ liệu: Là tập hợp dữ liệu phản ánh về một tập hợp các đối tượng được quản
lý thông qua các thuộc tính của nó
• Bản ghi (Record): Là một bộ giá trị các thuộc tính phản ánh về một đối tượng