Xem mẫu

  1. 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:
  2. Để 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.
  3. 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)
  4. 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
  5. 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
  6. ?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ệ: =, ,>=,
  7. ?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
  8. 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ỏ
  9. 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ố:
  10. - 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)
  11. 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 ( )
  12. ♦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
  13. ♦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:
  14. ♦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
  15. 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
  16. 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ố.
  17. ♦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
  18. ? ‫׀׀‬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ố:
  19. 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