Xem mẫu
- Chương 2: CÁC THÀNH PHÂN CƠ BẢN CỦA NGÔN NGỮ
2. KIỂU DỮ LIỆU, BIỀN, HẰNG, HÀM VÀ BIỂU THỨC
2.1.Kiểu dữ liệu
Kiểu dữ liệu là một thuộc tính gắn liền với biến hay Field trong cơ
sở dữ liệu. Visual FoxPro có tất cả 10 kiểu dữ liệu khác nhau và mỗi kiểu
đều có các phép toán riêng của nó.
Ví dụ: Không thể đem kiểu dữ liệu ký tự cộng với số được.
2.2. Biến
♦ Mô tả
Là một vị trí trong bộ nhớ mà giá trị của chúng có thể thay đổi từ đầu
đến cuối chương trìn.
Một biến có thể chứa giá trị bất kỳ một loại dữ liệu nào. Chúng ta có
thể thay đổ giá trị của biến vào bất cứ lúc nào.
♦Phạm vi cuả biến
Biến chỉ tồn tại trong một ứng dụng đang chạy hay trong một lần
làm việc của Visual FoxPro mà đã tạo chúng. Để chỉ rõ phạm vi của biến ta
dùng các khóa Loca, Private hay Public
♦ Quy ước và cách đặt tên
Tên biến có quy ước dài không quá 254 ký tự (riêng biến vùng chỉ
được 10 ký tự). Có thể dùng các chữ cái, chữ số và dấu gạch dưới ( _ ) để
đặt tên biến nhưng không được bắt đầu bằng số. Không được dùng các từ
khóa của Visual FoxPro.
Lưu ý: Trong tên biến không phân biệt chữ hoa, chữ thường.
Ví dụ: x, X, Delete, _ giatri.
♦ Các loại biến trong Visual Pro: Visual Pro chia làm 3 loại biến:
Biến ký ức ( Memory Variable ): là biến do người dùng khai báo. Khi
không sử dụng biến này nữa thì nên giải phóng chúng để đỡ tốn bộ nhớ.
Ví dụ: m.giatri
Biến hệ thống :Là biến do Visual Foxpro tự tạo ra ngay sau khi khởi
động. Loại biển này có thể bắt đầu bằng dấu gạch dưới ( _ ) và thường
dùng trong việc in ấn. Trong khiVisual FoxPro đang hoạt động ta có thể
giải phóng biến hệ thống được
Ví dụ : _ Pageno: Là biến hệ thống cho biết số trang hiện hành.
Biến vùng : Là tên các vùng trong cơ sở dữ liệu và chỉ có nghĩa khi
bạn mở tập tin cơ sở dữ liệu.
Chú ý : Không nên đặt tên biến ký ức trùng với tên biến vùng, vì khi
2 biến ký ức và biến vùng cùng tên thì biến vùng được ưu tiên trước. Khi
muốn đặt tên ký ức trùng với tên biến vùng thì ta nên đặt trước. Khi muốn
đặt tên biến ký ức trùng với tên biến vùng thì ta nên đặt một ký tự đã được
quy ước ngầm là “m_”đằng trước tên biến đó.
♦Cách tạo biến:
- Để tạo một biến và gán giá trị ban đầu cho biến đó ta có thể sử dụng
câu lệnh STORE hay phép toán =
Ví dụ STORE sapce(10) to thang: Lệnh này khai báo một biến có tên
là thang gán giá trị ban đầu cho nó là 10 khoảng trắng.
Lệnh STORE: Dùng để đưa dữ liệu vào biến
Cú pháp
STORE TO [,,]
Ví dụ :STORE 2 TO lan 1, lan 2
Ghi chú khi cần khởi tạo cùng một giá trị cho nhiều biến thì ta lên dùng câu
lệnh STORE.
Lệnh gán (=)
Chức năng tương đươpng với lệnh STORE
Ví dụ: lan1 = 2
Ghi chú :Lệnh = còn có chức năng là một phép toán so sánh.
MỘT SỐ VÍ DỤ:
Ví dụ 1: Ví dụ dưới đây sử dụng biến nINC để lưu lại số lần lặp. Visual
Fro sẽ khởi tạo lại giá trị mới trong mỗi lần lặp.
For nINC = 1 To 10
? nINC
ENDFOR
Ví dụ 2: Ví dụ dưới đây dùng biến c Name để lưu lại giá trị của Field First
Name trong bảng dữ liệu Customer
Use Customer
Store custoe. First Name to cName
2.3. Cách sử dụng các từ khóa Local, Private và Public
2.3.1. Từ khóa Local
Chức năng: dùng để tạo biến cục bộ
LOCAL Varlist
Cú pháp
Ý nghĩa các thông số:
Varlist là một hay nhiều biến được tạo
Biến cục bộ chỉ có thể được tạo và dùng trong các chương trình con
và không thể truy xuất được ở cấp chương trình cao hơn. Các biến cục bộ
sẽ hủy khi các thủ tục hay hàm chức chúng thực thi xong.
Các biến cục bộ có thể được truyền qua tham biến.
Ghi chú: ta không thể viết tắt từ LOCAL bởi vì LOCAL và LOCATE đều
có 4 ký tự đầu.
2.3.2. Từ khóa Private:
Chức năng: dùng để che các biến được chỉ ra.
PRIVATE Varlist hay PRIVATE ALL
Cú pháp:
Nếu sử dụng dạng 2 thì sẽ dấu tất cả các biến.
- Khi một chương trình chứa từ khóa Private được thi hành xong thì tất cả
các biến được khai báo trong Private sẽ được khôi phục lại giá trị ban đầu
trước khi bị dấu.
Private không tạo ra biến mới, nó chỉ đơn giản là dấu đi các biến đã được
khai báo ở chương trình cấp cao hơn.
Ghi chú: Khi sử dụng từ khóa Private sẽ không làm ảnh hưởng đến giá trị
các biến được dấu.
2.3.3. Từ khóa Public:
Chức năng : dùng để định nghĩa các biến toàn cục, nghĩa là cá biến này có
thể truy xuất ở bất kỳ đâu trong chương trìng.
PUBLIC
Cú pháp:
Ghi chú: Tất cả các biến được khai báo trong cửa sổ lệnh đều là biến toàn
cục.
2.4. Loại bỏ biến
Tất cả có thể sử dụng Replease để loại bỏ các biến không còn sử
dụng.
Cú pháp:
RELEASE
[ ALL Like ׀Except ׀
Vídụ: Release phonenumber
Release ALL like N? ( loại bỏ tất cả các biến có 2 ký tự mà ký tự
đầu
là N)
Release Except S* (loại bỏ tất cả các biến ngoại trừ các biến có tên
bắt đầu bằng ký tự S)
2.5. Hằng
♦ Mô tả : hằng là một giá trị (dạng số, chuỗi, ngày,…) không thay đổi trong
xuốt chương trình.
2.5.1. Hằng ký tự(chuỗi) là một dãy các ký tự bao gồm tối đa 254 ký tự đặt
trong cặp dấu’..’,”..” [..]
Ví dụ: ‘Tin học hóa’
2.5.2. Hằng kiểu ngày
Hằng kiểu ngày phải được đặt trong dấu { và }
Ví dụ: {01/12/1988}
Ghi chú: Ngoài ra Visual FoxPro có hằng kiểu ngày giờ.
Ví dụ: 01/01/98 01:02:02 am
2.5.3. Hằng Logic
Là một hằng có giá trị số (nguyên hay thực)
Ví dụ: 15, -10, 5.3
2.5.4.Các khai báo hằng được khai báo ở đầu mỗi chương trình bằng câu
lệnh
# DEFINE (ta có thể dùng quy tắc viết tắt)
- Ví dụ:
#DEFINE Max_Value 10
# DEFINE thoat .F.
2.6. HÀM
Hàm là một đoạn chương trình được thi hành mỗi khi được gọi và
trả về một giá trị tại nơi gọi chương trình. Bởi vì Hàm nhận một hay nhiều
đối số và trả về một giá trị nên chúng có thể sử dụng trong các biểu thức.
Hàm có 2 loại: hàm có sẵn của Visual FoxPro và hàm tự tạo (User
Defined Function UFD).
2.6.1. Hàm của Visual FoxPro
Là những hàm đã được định nghĩa sẵn trong Visual FoxPro, khi sử dụng chỉ
cần quan tâm hàm này nhận vào những đối số nào và trả về kết quả gì
2.6.2. Hàm do người dùng định nghĩa
Hàm do người dùng định nghĩa phải theo cú pháp sau:
FUNCTION
< Các lệnh>
RETURN
Ví dụ FUNCTION UDF Quit
Private traloi
@10,15 say “tiếp tục ?(Y/N)’ get traloi pict ‘Y’
Read
Return traloi
Ghi chú : Hàm trên ta có thể lưu vào tập tin thư viện có tên là
THUVIEN.PRG. sau đó chúng ta có thể sử dụng hàm này trong chương
trình để hỏi người dùng có muốn thoát khỏi chương trình hay không
Set Talk off
Set Procedure to thuvien
Tiep = ‘ Y’
Do While Upper (tiep) = ‘Y’
? ‘ Xin chao’
tiep = UDF Quit ( )
ENDDO
SET TALK ON
Ghi chú: Phần này sẽ được bàn tiếp trong phần lập trình
2.7. Biểu thức
Biểu thức được tạo bởi các bién, toán tử hằng, hàm, Field để tạo ra
một công cụ toán học nào đó.
Ví dụ “ TRAN’ + SUBSTR (‘ABC VAN CD; 4,4)
Trong đó : ‘ TRAN’, ‘ ABC VAN CD’ là các hằng.
+: là phép toán
Giới thiệu công cụ Expression Builder (Xem chương 1)
3. CÁC PHÉP TOÁN
3.1. Phép gán
- Dùng để gán dữ liệu vào một thành phần khác như biến, biến vùng,..
Ta có thể sử dụng hai lệnh cơ bản sau để thực hiện phép gán dữ liệu:
Lệnh = và lệnh Store
Ví dụ: Tuoi = 5
Chuoi = ‘abc’
Ngay sinh = {02/05/1972}
3.2. Phép toán chuỗi ký tự
♦ Phép +: Kết nối 2 chuỗi thành một chuỗi mới.
♦ Phép toán-: Cũng giống như phép + nhưng những ký tự trắng ở cuối
chuỗi 1 sẽ được đưa vào cuối chuỗi kết quả.
Ví dụ
Lệnh Kết quả
A= ‘ HELLO’ HELLO
B= ‘THERE THERE
A+B HELLO THERE
A-B HELLOTHERE
LEN (A- B) 20
3.3. Phép toán trên kiểu dữ liệu ngày
Hai phép toán + và – cũng được sử dụng trong kiểu dữ liệu ngày giờ
được chỉ ra trong bảng dưới đây
Phép tính Kết quả
+ Số Ngày
Số + Ngày
- Số Ngày
- Số
+ Số Ngày giờ
Số + < Ngày giờ > Ngày giờ
< Ngày giờ> - Số Ngày giờ
< Ngày giờ> - Số
Ví dụ { 03/04/94 - { 27/03/94} cho kết quả là 7
{ 25/12/93} - { 31/12/93} cho kết quả là -6
{ 24/12/1993} +12 cho kết quả là {05/01/94}
15/08/93} – 12 sẽ cho kết quả là { 03/08/93}
3.4. Phép toán quan hệ
Kết quả phép toán quan hệ luôn trả về giá trị về giá trị Logic, nghĩa
là luôn mang một trong 2 giá trị .T. hay .F.
Phép toán Diễn giải
= Bằng
== So sánh bằng tuyết đối(dùng trong kiểu kí tự )
> Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc
-
- ?3^3 9
?42%10 2
4. THỨ TỰ ƯU TIÊN CÁC PHÉP TOÁN
Thứ tự ưu tiên các phép toán được tính theo trật tự sau (trên cùng một
hàng thì cùng độ ưu tiên)
1. Các phép toán số học: Dấu âm, dương
Lũy thừa
Nhân chia
Phần dư
Cộng, Trừ
2. Các phép toán chuỗi ký tự: +,-
3. Các phép toán quan hệ: =, ,>=,
- ?A (3) = .F.
? A (4) = .F.
5.3. Truy xuất mảng
Các phần tử của mảng được đánh số bắt đầu từ 1, do đó ta có thể
truy xuất tới từng phân tử của mảng thông qua chỉ số của chúng.
Ví dụ; Nhập 10 mẫu tự A, B, C đầu tiên vào mảng và xuất chúng ra
màn hình
Dimension chu (10)
FOR I =1 TO 10
CHU (i) = CHR (64+1)
ENDFOR
FOR j = 1 TO 10
?CHU (j)
ENDFOR
5.4. Ví dụ về mảng
Chương trình nhập vào 10 số nguyên. Tính và cho biết số lớn nhất và
chung bình cộng của 10 số đó.
Dimension NGUYEN (10)
NGUYEN =0
* Phần nhập dữ liệu vào mảng
DO WHILE 10=>׀
CLEAR
@8,20 SAY ‘nhập vào một số nghuyên thứ ‘ + STR (2,; )׀
GET NGUYEN ()׀
READ
1+ ׀=׀
ENDDO
*Phần sắp xếp
SOLONNHAT = NGUYEN (1)
SONHONHAT = NGUYEN (1)
TONG = NGUYEN (1)
2= ׀
DOWHILE 10=>׀
TONG = TONG +NGUYEN ()׀
IF NGUYEN ( > )׀SOLONNHAT
SOLONNHAT = NGUYEN ()׀
ENDIF
IFDIF
IF NGUYEN ( < )׀SONHONHAT
SONHONHAT = NGUYEN ()׀
ENDIF
1+ ׀=׀
ENDDO
- SOTB = TONG /10
CLEAR
@ 10,20 SAY ‘ SO LON NHAT’+ STR( SOLONNHAT ,4)
@ 10,20 SAY ‘SONHO NHAT’ +STR(SONHONHAT ,4)
@ 10,20 SAY ‘ TRUNG BINH CONG LA’ + STR (TONG,4)
5.5. Các hàm liên quan đến mảng
5.5.1. Hàm ALEN ()
Chức năng: Cho biết chiều dài của mảng
Cú pháp:
ALEN
Ví dụ: Dimension a(4)
?Alen (a) && Sẽ cho kết quả là 4
5.5.2 Hàm ACOPY ()
Chức năng: Sao chép giá trị từ mảng này sang mảng khác.
Cú pháp: ACOPY (, [, n1,[,׀n2][,n3)׀
Ý nghĩa các thông số
♦ : Mảng nguồn
♦ : Mảng đích
♦ n1: Sẽ sao chép bắt đầu từ phần tử thứ mấy của mảng 1
♦ n2: Sẽ sao chép bao nhiêu hàng
♦ n2: Sẽ bắt đầu Copy vào phần tử thứ mấu của mảng 2
6.LỆNH VÀ CẤU TẠO LỆNH
6.1. Định nghĩa:
Lệnh là một chỉ thị của người dùng yều cầu VisualPro làm một
việc gì đó. Lệnh có thể đưa vào từ bàn phím, chọn từ Menu hoặc đưa vào
từ chương trình.
6.2. Cấu tạo lệnh
Lệnh luôn bắt đầu bằng một tên thường là động từ, theo sau là các
tùy chọn(Option) để xác định cách thức làm việc của lệnh đó
Ví dụ :
REPACE WITH
[ With ],…
Chương 3
CÁC KIỂU DỮ LIỆU CỦA VISUAL FOPRO
1.KIỂU CHAACTER
1.1. Mô tả
Kiểu Character gồm các ký tự từ a->z, A->Z, 0->9 và một số các ký
tự đặc biệt như %,$,…
1.2. Các phép toán
Toán tử Ý nghĩa Ví dụ
+ Kết nối chuỗi Hoten = ‘Huynh’+’ ‘+’Ha’
- Kết nối chuỗi nhưng hủy bỏ
- các khoảng trắng trước và sau
chuỗi
$ Chứa trong Tieptuc $’YN’
1.3. Các hàm
1.3.1 Hàm AllRIM ()
♦Chức năng : Loại bỏ các khoảng trắng trước và sau của mỗi
chuỗi.
♦Cú pháp: ALLTRIM
♦ Ý nghĩa các thông số;
Chuoi: Chuỗi các ký tự cần cắt bỏ các khoảng trắng trước và sau
chuỗi
♦ Kết quả trả về: Hàm này trả một chuỗi ký tự sau khi cắt bỏ các
khoảng trắng trước và sau.
Ví dụ
ALLT (‘ Trung tam tin hoc ‘) sẽ trả về chuỗi ‘ Trung Tam Tin Hoc’’
ALL(‘ VISUAL STUDIO 6.0 ‘) sẽ trả về chuỗi “ VISUAL STUDIO
6.0’
ALL (‘ Thực tập tin học’ sẽ trả về chuỗi ‘ Thực tập tin học’
1.3.2 Hàm ASC ( )
♦Chức năng: Trả về mã Ascii của một ký tụ
♦Cú pháp ASC (‘Ký tự’)
♦Ý nghĩa thông số
Ký tự: là ký tự cần biết mã Ascii
♦ Kết quả trả về : Là một số tương ứng với mã Ascii của ký tự đó
Ví dụ: ASC (‘a’): 97
ASC (‘A’): 65
1.3.3. Hàm AT ( )
♦Chức năng: Trả về vị trí xuất hiện của chuỗi thứ 2 trong chuỗi
thứ 1
♦Cú pháp: AT (Chuôi 1, chuoi 2 [,n]
♦Ý nghĩa các thông số:
Chuỗi 1: Chuỗi dùng để tìm trong chuỗi 2.
Chuỗi 2: Chuỗi nguồn.
N: Chỉ ra lần xuất hiện thứ mấy.
♦ Kết quả trả về : Hàm này trả về một số cho biết vị trí xuất hiện
chuoi1 trong chuoi2
Ví dụ: AT (‘tin’, ‘Trung tâm tin học’: trả về giá trị thứ 11
1.3.4. Hàm ATLINE ( )
♦Chức năng: Trả về vị trí dòng đầu tiên mà một chuỗi hay một
vùng Memo được tìm thấy trong một chuỗi hay vùng Memo kia
♦Cú pháp: ATLINE (cSearchExpression, cExpressionSearch)
♦Ý nghĩa các thông số:
- - cSearchExpression: Chuỗi ký tự dùng để tìm trong chuỗi ký tự
cExpressionSearch.
- cExpressionSearch: Chuỗi ký tự nguồn
♦ Kết quả trả về : Dòng đầu tiên tìm thấy cSearchExpression trong
cExpressionSearch.
Ví dụ 1:
STORE ‘1234567890 ABCDEFGJIJ’ TO gcString
SET MEMOWITH TO 20
?ATLINE (‘AB’,gcString) sẽ trả về giá trị 1
Ví dụ 2:
SET MEMOWITH TO 10
?ATLINE (‘AB’,gcString) sẽ trả về giá trị 2
Ghi chú
Lệnh SET MEMOWITH TO nColumn sẽ dùng để xác định chiều
rộng thể hiện của vùng Memo
Nếu không tìm thấy hàm ATLINE ( ) sẽ trả về 0.
1.3.5.Hàm BETWEEN ( )
♦Chức năng: Xác định xem một giá trị có nằm trong một vùng giá
trị được chỉ ra hay không.
♦Cú pháp: BETWEEN (eTestValue,eLowValue, eHeightValue)
♦Ý nghĩa các thông số:
- eTestValue: Giá trị cần kiểm tra
- eLowValue: Giá trị nhỏ nhất trong khoảng cần xác định
- eHeightValue: Giá trị lớn nhất trong khoảng cần xác định
♦ Kết quả trả về : Nếu có, hàm trả về .T.(True), ngược lại hàm trả
về .F. (False)
Ví dụ :BETWEEN (5.3.10) sẽ trả về .T.
BETWEEN (5.3.20) sẽ trả về .F.
Ghi chú: Cả 3 thông số phải cùng kiểu dữ liệu
1.3.6. Hàm CHR ( )
♦Chức năng: Cho biết ký tự tương ứng với mã Ascii được chỉ ra
♦Cú pháp: CHR (nANSICode)
♦Ý nghĩa các thông số:
nANSICode: Mã Ascii của ký tự
♦ Kết quả trả về : ký tự tương ứng với mã Ascii
Ví dụ 1: CHR (97): Sẽ trả về kí tự ‘a’
CHR (66): Sẽ trả về kí tự ‘b’
VÍ dụ 2: Đoạn chương trình sau sẽ thể hiện trên màn hình các chữ cái từ
mà Ascii 65 đến 75
CLEAR
FOR NCOUNT = 65 TO 75
?nCOUNT && Thể hiện giá trị mã Ascii
??’’ + CHR (nCOUNT)
- ENDFOR
1.3.7 Hàm CHRTRAM ( )
♦Chức năng: Thay thế một ký tự được của chuoi 2 trong chuoi 1
bằng ký tự tương ứng nằm trong chuoi 3
♦Cú pháp: CHRTRAM (cSearcherExpression, cSearchExpression,
cReplacementExpression)
♦Ý nghĩa các thông số:
- cSearcherExpression: Chuỗi nguồn
- cSearchExpression: Chuỗi dùng để tìm
- cReplacementExpression: Chuỗi dùng để tìm thay thế nếu tìm
thấy
Ví dụ:
?CHRTRAM (‘ABCDEF’,ACE’,’XYZ’) sẽ hiện XYBYDZF
?CHRTRAM (‘ABCD’,ABC’,’YZ’) sẽ hiện YZD
?CHRTRAM (‘ABCDEF’,ACE’,’XYZQRSRT’) sẽ hiện XBYDZF
Ghi chú: Nếu cReplacementExpression có ít ký tự hơn so với
cSearchExpression thì sẽ xóa ký tự tìm được tương ứng trong
cReplacementExpression nếu vị trí tìm được lớn hơn số ký tự trong
cReplacementExpression.
1.3.8 Hàm CTOD ( )
♦Chức năng: Chuyển đổi một biểu thức ký tự sang biểu thức kiểu
ngày.
♦Cú pháp: CTOD (cExpression )
♦Ý nghĩa các thông số:
cExpression : Biểu thức dạng ngày kiểu ký tự
Ví dụ: CTOD (‘12/10/1999’) sẽ trả về giá trị {12/10/1999}
1.3.9. Hàm DTOC ( )
♦Chức năng: Chuyển đổi một biểu thức kiểu ngày sang biểu thức
kiểu ngày kiểu ký tự.
♦Cú pháp: DTOC (dExpression)
♦Ý nghĩa các thông số:
dExprression: là hằng, biểu thức hay Field kiểu ngày
Ví dụ: DTOC ({12/10/1998}) sẽ trả về giá trị ‘12/10/1998’
1.3.10. Hàm LEFT ( )
♦Chức năng: Trích xuất n ký tự từ bên trái của chuỗi.
♦Cú pháp: LEFT (cExpression,nExpression)
♦Ý nghĩa các thông số:
- cExpression: Chuỗi ký tự
- nExpression: Số ký tự cần trích xuất.
♦ Kết quả trả về: Kiểu ký tự
Ví dụ: LEFT (ABCDEF’,2) sẽ trả về ‘AB’
LEFT (ABCDEF’,6) sẽ trả về ‘ABCDEF’
1.3.11.Hàm LEN ( )
- ♦Chức năng: Trả về chiều dài của một chuỗi ký tự
♦Cú pháp: LEN (cExpression)
♦Ý nghĩa các thông số:
cExpression: Chuỗi ký tự cần tính chiều dài.
♦ Kết quả trả về: Kiểu số
Ví dụ: LEN (‘Visual FoxPro’) sẽ trả về 13
1.3.12. Hàm LOWER ( )
♦Chức năng: chuyển các ký tự từ chữ hoa sang chữ thường, Hàm
có thể sử dụng cho tiếng việt 2Bytes.
♦Cú pháp: LOWER (cExpression )
♦Ý nghĩa các thông số:
cExpression: Chuỗi ký tự
♦ Kết quả trả về: chuỗi ký tự sau khi chuyển thành chữ hoa
Ví dụ: LOWER (‘MICROSFT’) sẽ trả về ‘microsoft’
1.3.13. Hàm LTRIM ( )
♦Chức năng: Cắt các khoảng trắng phía trái của chuỗi
♦Cú pháp: LTRIM(cExpression)
♦Ý nghĩa các thông số:
cExpression: Chuỗi ký tự
♦ Kết quả trả về: chuỗi ký tự sau khi cắt khoảng trắng bên trái
Ví dụ: LTRIM (‘PC WORLD)sẽ trả về’PC WORLD’
LTRIM (‘PC WORLD)sẽ trả về’PC WORLD’
1.3.14.Hàm PADL ( ), PADR ( ) và PADC ( )
♦Chức năng: Thêm các ký tự vào bên trái, bên phải hay cả 2 bên để
đạt được chiều dài chỉ định.
♦Cú pháp: PADL ( eExpression, nResultSize [, cPadCharacter])
PADR (eExpression, nResultSize [, cPadCharacter])
PADC (eExpression, nResultSize [, cPadCharacter])
♦Ý nghĩa các thông số:
eExpression: Chuỗi nguồn cần thêm các ký tự vào
NresultSize: Kích thước yêu cầu sau khi thêm các ký tự vào.
cPadCharacter: Các ký tự thêm vào để đạt được chiều dài
nResultSize
♦ Kết quả trả về: chuỗi ký tự
Ví dụ: STORE’ TILE’TO gcString
CLER
?PADL (gcString,40,’=’)
?PADR (gcString,40,’=’)
?PADC (gcString,40,’=’)
Ghi chú” Nếu CpadCharacter không có thì là 3 hàm trên sẽ tự động thêm các
khoảng trắng để đạt được kích thước yêu cầu.
1.3.15. Hàm PROPER ( )
♦Chức năng: Đổi các ký tự đầu mỗi từ thành chữ hoa
- ♦Cú pháp: PROPER (cExpression)
♦Ý nghĩa các thông số:
cExpression: chuỗi ký tự
♦ Kết quả trả về: chuỗi ký tự
Ví dụ: STORE ‘Visual FoxPro’ TO gcExpr1
CLEAR
?PROPER(gcExpr1) && Display’’ Visual FoxPro’’
STORE ‘VISUAL FOXPRO’ TO gcExpr2
?PROPER(gcExpr2) ) && Display’’ Visual FoxPro’’
1.3.16 Hàm RIGHT ( )
♦Chức năng: Trích xuất n ký tự từ bên phải chuỗi.
♦Cú pháp: RIGHT (cExpression, nExpression)
♦Ý nghĩa các thông số:
cExpression: chuỗi ký tự
nExpression: Số ký tự cần truy xuất
♦ Kết quả trả về: Kiểu ký tự
Ví dụ RIGHT (‘Redmond, WA’,2) sẽ cho kết quả là WA
1.3.17 Hàm LTRIM ( )
♦Chức năng: Cắt khoảng trắng phía phải của mỗi chuỗi.
♦Cú pháp: LTRIM (cExpression)
♦Ý nghĩa các thông số:
cExpression: chuỗi ký tự
♦ Kết quả trả về: Chuỗi ký tự sau khi cắt khoảng trắng bên phải
Ví dụ: LTRIM (Visual FoxPro ’) sẽ trả về giá trị ‘Visual FoxPro ‘
1.3.18.Hàm STR ( )
♦Chức năng: Chuyển một số thành chuỗi số
♦Cú pháp: STR(nExpression [, nLength [ nDecimalPlaces]] )
♦Ý nghĩa các thông số:
nExpression: số cần chuyển thành chuỗi
NLength : Chiều dài yêu cầu đối với kết quả.
NdecimalPlaces: Số lẻ yêu cầu
♦ Kết quả trả về: là một chuỗi số.
Ví dụ: STR (125) Sẽ trả về chuỗi số 125
Ghi chú
- Nếu không đưa ra thông số NLength thì Visual FoxPro sẽ lấy giá
trị mặc nhiên là 10.
- Nếu số lẻ yêu cầu ít hơn số lẻ thực tế thì máy sẽ làm tròn.
- Nếu không đưa ra thông số lẻ thì máy sẽ lấy giá trị mặc nhiên là
0.
1.3.19. Hàm SUBSTR ( )
♦Chức năng: Cho mỗi chuỗi con n ký tự bắt đầu từ vị trí đưa ra
được chỉ ra trong mỗi chuỗi:
- ♦Cú pháp: SUBSTR ( cExpression, n StartPosition [,
nCharactersReturned])
♦Ý nghĩa các thông số:
- cExpression: chuỗi ký tự
- n StartPosition : Vị trí bắt đầu trích xuất
- nCharactersReturned: Số ký tự trích xuất
♦ Kết quả trả về: là một chuỗi số.
STORE ‘abcdefghiklm’ TO mytring
CLER
? SUBSTR (mytring, 1,5) && kết quả là abcde
? SUBSTR (mytring ,6) && kết quả là fghijklm
2.KIỂU DATE VÀ DATE TIME
2.1 Mô tả : Kiểu dữ liệu ngày giờ dành8 Bytes để lưu trữ các giá trị ngày
giờ.
2.2. Các phép toán (Xem chương 2)
2.3. Một số hàm
2.3.1. Hàm CDOW ( )
♦Chức năng: Hàm này trả về ngày thứ mấy trong tuần cho bởi biểu
thức kiểu ngày.
♦Cú pháp: CDOW (dExpression \ tExpression)
Ý nghĩa các thông số:
- dExpression: Biểu thức ngày
- tExpression: Biểu thức giờ
♦ Kết quả trả về: Kiểu ký tự
Ví dụ: CDOW ({^ 1999 – 09 – 02 }) sẽ cho kết quả là Thúday
2.3.2. Hàm Date ( )
♦Chức năng: Trả về ngày hiện hành của hệ thống
♦Cú pháp: DATE ( )
♦ Kết quả trả về: Kiểu ký tự
Ví dụ: DATE ( ) sẽ trả về ngày hiện hành.
2.3.3. Hàm DATETIME ( )
♦Chức năng: Trả về ngày giờ hiện hành của hệ thống.
♦Cú pháp: DATETIME ( )
♦ Kết quả trả về: Kiểu ký tự
Ví dụ: DATETIME () sẽ trả ngày giờ hiện hành.
2.3.4. Hàm CMONTH ( )
♦Chức năng: Hàm này trả về tên tháng cho bởi biểu thức ngày
♦Cú pháp: CMONTH (dExpression \ tExpression)
Ý nghĩa các thông số:
- dExpression: Biểu thức ngày
- tExpression: Biểu thức giờ
♦ Kết quả trả về: Kiểu ký tự
Ví dụ: CMONTH (DATE ( ))sẽ cho kết quả là tháng hiện hành
- 2.3.5.Hàm DAY ( )
♦Chức năng: Trả về ngày thứ mấy trong tháng cho bởi biểu thức
ngày.
♦Cú pháp: DAY ( dExpression \ tExpression)
Ý nghĩa các thông số:
- dExpression: Biểu thức ngày
- tExpression: Biểu thức giờ
♦ Kết quả trả về: Kiểu số biểu thị ngày thứ mấy trong tháng.
Ví dụ: DAY (DATE ( )) sẽ trả về ngày thứ mấy trong tháng
2.3.6. Hàm INLIST ( )
♦Chức năng: Cho biết giá trị cần tìm có nằm trong tập hợp các giá
trị đưa ra hay không.
♦Cú pháp: INLIST (eExpression1,etExpression2[, eExpression3..] )
Ý nghĩa các thông số:
eExpression 1 : Giá trị cần tìm
eExpression 2 [, eExpression3..]): Các giá trị dùng để tìm kiếm
♦ Kết quả trả về: Trả về kiểu Logic
Ghi chú:
- Đối với hàm trên phải có ít nhất 2 đối số.
- Các đối số thứ 2,3,4 trở đi phải cùng dữ liệu để tìm kiếm là 24
giá trị
2.3.7. Hàm YEAR ( )
♦Chức năng: Trả về năm hiện hành cho bởi biểu thức kiểu ngày,
giờ.
♦Cú pháp: YEAR ( )
♦ Kết quả trả về: Trả về kiểu số
Ví dụ: YEAR ( DATE ( )) sẽ cho kết quả là năm hiện hành.
3. KIỂU CURRENCY
3.1. Mô tả
Liệu dữ liệu Currency dùng để biểu thị tiền tệ trong dữ liệu. Kiểu
này có kích thước tối đa là 8 Bytes và có giá trị trong khoảng giới hạn từ : -
922337203685477.5807 tới 922337203685477.5807
3.2 Các lệnh liên quan đến kiểu dữ liệu Currency cho biến, ta đặt dấu ‘$’
đằng trước giá trị đó.
Ví dụ: m.so_tien = $ 124000
3.2.2Lệnh SET CURRENCY TO
Ta có thể thay đổi ký hiệu theo từng loại tiền bằng cách dùng các
lệnh SET CURRENCY TO. Giá trị mặc nhiên là dấu $.
♦Cú pháp: SET CURRENCY TO. [cCurrencySymbol]
Ý nghĩa các thông số:
cCurrencySymbol: Là ký hiệu biểu thị loại tiền tệ mà bạn muốn sử dụng.
Ví dụ: SET CURRENCY TO ‘VND’
3.2.3. Lệnh SET CURRENCY RIGHT/LEET
- Lệnh này cho phép ta thay đổi vị trí hiển thị ký hiệu tiền tệ bên trái
hay bên phải số tiền. Giá trị mặc nhiên là bên phải.
Ví dụ: SET CURRENCY TO’ VND’
m.so_tien = $ 124000
@10,15 SAY m.so_tien FUNCTION ‘$99,999,99’sẽ cho ra kết quả
là VND 124,000
SET CURRENCY RIGHT
@10,15 SAY m.so_tien FUNCTION ‘$99,999,99’sẽ cho ra kết quả
là 124,000 VND
Ghi chú: Để biết xem hiện ký hiệu tiền tệ nằm bên trái hay bên phải của
giá trị tiền ta dùng lệnh sau
STORE SET (‘CURRENCY’) TO vitri
4.KIỂU LOGIC
4.1.Mô tả;
Kiểu số trong Visual FoxPro bao gồm các biểu như Numberic,
Double, Float và Interger. Mỗi kiểu điều có một miền giá trị riêng của nó
tùy thuộc vào từng yêu cầu thực tế ta có thể chọn từng kiểu cho phù hợp.
Bảng miền giá trị
Kiểu Diễn giải Kích thước Miền giá trị
Numberic Số nguyên hay 8 Bytes -.9999999999 E+19
thực đến .9999999999 E+20
Double Số nguyên hay số 8 Bytes +/- 4.9406564584127 E-
thực 324 đến +/-
8.988465673115E07
Float Giống kiểu Numberic
Integer Số nguyên 4 Bytes -21474836747 đến
21474836747
Một số hàm liên quan
4.3.1.Hàm ABS( )
♦Chức năng: Trả về trị tuyệt đối của một số
♦Cú pháp: ABS (nExpression)
Ý nghĩa các thông số:
nExpression: Số hoặc biểu thức trả về giá trị số
♦ Kết quả trả về: Số
Ví dụ :ABS (-5) sẽ cho kết quả là 5
ABS (20) sẽ cho kết quả là 20
m.so1 = 10
m.so2 = 20
ABS(m.so10-m.so2 ) sẽ cho kết quả là 10
4.3.2 Hàm BETWEEN (xem chương trước)
4.3.3. Hàm INT ( )
♦Chức năng: Trả về phần nguyên của một số.
- ♦Cú pháp: INT (nExpression)
Ý nghĩa các thông số:
nExpression: Số hoặc biểu thức trả về giá trị số
♦ Kết quả trả về: Số
Ví dụ: INT (12.5) sẽ cho kết quả là 12
INT (62.5*2) sẽ cho kết quả là 12
INT (-12.5) sẽ cho kết quả là -12
4.3.4,. Hàm MAX ( )
♦Chức năng: Hàm này trả về giá trị lớn nhất trong số các giá trị đưa
ra trong hàm.
♦Cú pháp: MAX (eExpression1,eExpression2[,eExpression3…])
Ý nghĩa các thông số:
eExpression1, eExpression2, eExpression3….: Là các số hay biểu
thức trả về số.
♦ Kết quả trả về: Một số lớn nhất trong các số đưa ra
Ví dụ:
MAX(2,7,-12) sẽ cho kết quả là 7
m.so1 = 85
m.so = 56
MAX(m.so1,m.so2, m.so1+m.so2 ) sẽ cho kết quả là 141
4.3.5. Hàm MIN ( )
♦Chức năng: Hàm này trả về giá trị nhỏ nhất trong số các giá trị
đưa ra trong hàm.
♦Cú pháp: MIN (eExpression1,eExpression2[,eExpression3…])
Ý nghĩa các thông số:
eExpression1, eExpression2, eExpression3….: Là các số hay biểu
thức trả về số.
♦ Kết quả trả về: Một số lớn nhất trong các số đưa ra
Ví dụ:
MIN(2,7,-12) sẽ cho kết quả là 12
m.so1 = 85
m.so = 56
MIN(m.so1,m.so2, m.so1+m.so2 ) sẽ cho kết quả là 56
4.3.6. Hàm MOD ( )
♦Chức năng: Trả về số dư của phép toán chia
♦Cú pháp: MOD (nDividend, n Divisor)
Ý nghĩa các thông số:
nDividend: Số chia
n Divisor: Số bị chia
Ví dụ:
? MOD(36,10) && kết quả là 6
? MOD(4*9),(90/9)) && kết quả là 9
? MOD(25.250,5.0) && kết quả 0.250
- ? ׀׀F(MOD(YER(DATE( )),4) = 0.’Năm nhuần ‘:, ‘Không phải năm nhuần’)
4.3.7.Hàm ROUND ( )
♦Chức năng: Trả về giá trị sau khi làm tròn số
♦Cú pháp: ROUND (eExpression, nDecimalPlaces)
♦Ý nghĩa các thông số:
eExpression: Số hoặc biểu thức trả về giá trị số
nDecimalPlaces: số lẻ muốn thể hiện trong kết quả
♦ Kết quả trả về: Số
Ví dụ:
?ROUND (1234.1962,3) && kết quả là 1234.1960
?ROUND (1234.1962,2) && kết quả là 1234.2000
?ROUND (1234.1962,0) && kết quả là 1234.0000
?ROUND (1234.1962,-1) && kết quả là 1230.0000
?ROUND (1234.1962,-2) && kết quả là 1200.0000
?ROUND (1234.1962,-3) && kết quả là 1000.0000
4.3.8.Hàm VAL ( )
♦Chức năng: Biến đổi chuỗi số thành một số
♦Cú pháp: (cExpression)
♦Ý nghĩa các thông số:
eExpression: Ký số hoặc một biểu thức ký số
Ví dụ:
STORE ‘12’ TO A
STORE ‘12’ TO B
VAL (A) + VAL (B) sẽ là kết quả là 25.00
Ghi chú: Ta có thể thay đổi số lẻ của một số bằng cách dùng lệnh SET
DECIMAL TO n, trong đó n là số lẻ ta muốn hiển thị
5. KIỂU GENERAL
5.1.Mô tả:
Kiểu dữ liệu General cho phép ta nhúng hay kết các đối tượng dữ
liệu đặc biệt vào trong cơ sở dữ liệu như: Bảng tính Excel, một văn bản
Word hoặc một hình ảnh. Đặc biệt đối với Visual FoxPro 6.0 Việc tích hợp
hình ảnh
mở rộng thêm, có nghĩa là ta có thể nhúng hay nối kết một hình ảnh
dạng .GIF, TÌ hoặc .JPG vào trong cơ sở dữ liệu. Kích thước của vùng
General không bị hạn chế, nó chỉ phụ thuộc vào dung lượng đĩa.
5.2. Lệnh APPEND GENERAL
♦Chức năng: Nhúng hay nối kết một đối tượng vào cơ sơ dữ liệu
♦Cú pháp: APPEND GENERAL
General Field Name
[ FROM FileName]
[LINK]
[CLASS OLECLassName]
♦Ý nghĩa các thông số:
- General Field Name: Field dùng để nhúng đối tượng OLE vào.
FROM FileName: Xác định File OLE cần nhúng bao gồm cả hướng
dẫn.
Link: Nếu có Option LINK thì đối tượng OLE sẽ tạo ra một mối
liên kết với đối tượng nguồn, ngược lại là nhúng.
Ví dụ:
APPEND GENERAL mygenfield FROM C:\ EXCEL\BOOk1.XLSCLASS
EXCELCHART
6. KIỂU MEMO
Dùng để lưu trữ khối văn bản có chiều dài lớn hơn 254 ký tự. File
dữ liệu có chứa vùng Memo có tên trùng với tên bảng dữ liệu nhưng có
phần mở rộng .FPT. giới hạn của vùng Memo phụ thuộc vào không gian.
(II)
CHƯƠNG 10
CẤU TRÚC ĐIỀU KHIỂN TUẦN TỰ
Chương trình là một tập hợp các chỉ thị mà bạn muốn Visual
FoxPro làm công việc gì đó và tuân thủ theo nguyên tắc lập trình có cấu
trúc, có nghĩa là các lệnh sẽ được thi hành tuần tự từ trên xuống dưới. Đối
với cách lập trình này sẽ gây nhiều khó khăn cho công tác bảo trì sau này,
do đó xu thế hiện nay đang chuyển dần qua việc lập trình hướng đối
tượng, và bắt đầu từ phiên bản 3.0 việc lập trình hướng đối tượng đã đưa
vào. Nhưng cho dù đó là lập trình hướng đối tượng đi chăng nữa thì nó
cũng không thể thiếu các cấu trúc điều khiển cơ bản như sau:
1.CẤU TRÚC RẼ NHÁNH IF
Cấu trúc rẽ nhánh IF cho phép ta có thể rẽ nhánh chương trình theo
hai hướng khác nhau tùy thuộc vào điều kiện để rẽ nhánh có đúng hay
không.
Cú pháp: IF
Các lệnh khi DIEUKIEN đúng
ELSE
Các lệnh khi DIEUKIEN sai
ENDIF
Trong đó DIEUKIEN là một biểu thức Logic luôn trả về một trong
hai giá trị .T. hay .F.
Lưu đồ
nguon tai.lieu . vn