Giáo trình được tổ chức theo 11 chương:
Chương 1: Làm quen với môi trường VF
Chương 2: Các loại dữ liệu trong VF
Chương 3: DataBase và Table
Chương 4: Truy vấn và hiển thị thông tin
Chương 5: Form Report
Chương 6: Lập trình trong VF
Chương 7: Thiết kế giao diện
Chương 8: Bẫy trong chương trình
Chương 9: Mảng và chuyển giao dữ liệu
Chương 10: Một số lệnh hiệu chỉnh dữ liệu
Chương 11: Chương trình con
Chương 12: Ghép dữ liệu
146 trang |
Chia sẻ: phuongt97 | Lượt xem: 556 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Giáo trình Visual FoxPro 6.0, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
NENO() thông báo số thứ tự dòng bị lỗi
Lệnh ON ERROR thông có tham số cho phép huỷ bỏ bẫy lỗi.
Ví dụ:
set talk off
clear
ON ERROR DO ThongBao WITH MESS(1), ERROR(), MESS(), LINENO()
?sin(9
USU Nhansu
Brws
ON ERROR
PROCEDURE ThongBao
PARAMETER a, b, c,d
? 'Sai lệnh nào? : ' +a
? 'Mã của lỗi : ' + STR(b)
? 'Sai gì? : ' + c
?' Dòng nào sai :'+Str(c)
?'----------------------------------------------- '
RETURN
8.2 Lệnh ON KEY
Lệnh có dạng như sauL:
ON KEY []
Khi ấn một phím bất kỳ thì lệnh được kích hoạt và thực hiện .
Chương trình sau ta tạo một vòng lặp, khi chương trình đang chạy nếu ấn một
phím bất kỳ thi lệnh ON KEY được kích hoạt và chương trình con có tên
TamDung được thực hiện:
SET TALK OFF
USE khoia
ELEC Trang 107
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
CLEAR
ON KEY DO TamDung
FOR i=1 to 10000
?i,sin(i),cos(i)
Next
PROCEDURE TamDung
h= INKEY()
?'Bạn đã gõ phím:',H
WAIT
RETURN
8.3 Lệnh ON KEY =
Lệnh có dạng:
ON KEY [=]
Trong đó là mã phím hoặc tổ hợp phím. Bảng mã phím như sau:
Mã phím Tên phím khi gõ
272-281 Alt+Q đến Alt +P
286-294 Alt+A đến Alt +L
300- 306 Alt+Z đến Alt +M
315-324 F1 đến F10
327 HOME
328 Up arrow ( )
329 PgUp
331 Left arrow ( )
333 Right arrow ( )
335 End
336 Down arrow ( )
337 PgDn
338 Ins
339 Ins
340-349 Shift+F1 đến Shift +F10
350 - 359 Ctrl+F1 đến Ctrl +F10
360 - 369 Alt+F1 đến Alt +F10
370 Ctrl+Print+Scrn
371 Ctrl+left arrow
372 Ctrl+right arrow
373 Ctrl+End
374 Ctrl+PgDn
375 Ctrl+Home
376 - 387 Alt+1 đến Alt +0,Alt+-,Alt+=
388 Ctrl+PgUp
ELEC Trang 108
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Ví dụ 1:
CLEAR
ON KEY = 315 DO TroGiup WITH VARREAD()
SET TALK OFF
USE khoia
SCATTER TO temp
DEFINE WINDOW VAO FROM 6,10 TO 20,70 PANEL
ACTIVATE WINDOW VAO
DO WHILE NOT EOF()
@ 1,3 SAY 'Ho va dem: ' GET hodem
@ 3,3 SAY 'Ten : ' GET ten
@ 5,3 SAY 'Diem toan: ' GET toan
@ 7,3 SAY 'Diem ly : ' GET ly
@ 9,3 SAY 'Diem hoa : ' GET hoa
@ 11,8 SAY 'An ESC de thoat hoac an F1 de tro giup'
READ
SKIP
ENDDO
DEACTIVATE WINDOW VAO
RELEASE WINDOW VAO
PROCEDURE TroGiup
PARAMETERS TenTruong
CLEAR
DEFINE WINDOW HelpMe FROM 1,0 TO 5,79
ACTIVATE WINDOW HelpMe
@ 0,20 SAY 'Đây là tên trường có tên: ' + TenTruong+ ' bạn chỉ vào DL hoặc
chấp nhận'
WAIT
RELEASE WINDOW HelpMe
RETURN
8.4 Lệnh ON KEY LABEL
Lệnh có dạng sau:
ON KEY [LABEL ] []
Sau đây là các nhãn phím:
Tên nhãn Cách viết
Shift+F11, Shift+F12 Shift+F11 ...
Alt+F1 đến Alt +F12 Alt+F1, Alt+F2 ...
ELEC Trang 109
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Alt+0 đến Alt -9 Alt+0, Alt+1 ...
Alt+A đến Alt +Z Alt+A, Alt+B ...
Alt+PgUp Alt+PGUP
Alt+PgDn Alt+PGDN
Ctrl+left arrow Ctrl+LEFTARROW
Ctrl+right arrow Ctrl+RIGHTARROW
Ctrl+Home Ctrl+HOME
Ctrl+End Ctrl+END
Ctrl+PgUp Ctrl+PGUP
Ctrl+PgDn Ctrl+PGDN
Ctrl+A đến Ctrl +Z Ctrl+A, Ctrl+B ...
Right Mouse RIGHTMOUSE
Left Mouse LEFTMOUSE
Mouse MOUSE
Escape ESC
8.5 Lệnh ON ESCAPE
Lệnh có dạng sau:
ON ESCAPE
Khi ấn phím ESC thì được thi hành
Ví dụ chương trình:
SET TALK OFF
CLEAR
ON KEY LABEL RIGHTARROW? 'Đây là phím d ịch phải (Right Arrow) '
ON KEY LABEL LEFTARROW? 'Đây là phím d ịch trái (Left Arrow)'
ON KEY LABEL UPARROW? 'Đây là phím lên d òng (Up Arrow)'
ON KEY LABEL DNARROW? 'Đây là phím xuống một dòng (Down Arrow)'
SET ESCAPE ON
Thoat=.T.
ON ESCAPE Thoat=.F.
@ 2,0 SAY 'Ấn các phím , , và để xem lệnh ON KEY LABEL, ấn ESC
để thoát'
DEFINE WINDOW Input FROM 10,20 TO 14,60 DOUBLE
ACTIVATE WINDOW Input
DO WHILE Thoat
ENDDO
DEACTIVATE WINDOW Input
ON KEY
8.6 Lệnh ON READERROR
Lệnh có dạng:
ELEC Trang 110
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
ON READERROR []
Khi nhập dữ liệu nếu gặp lỗi thì thực hiện
Ví dụ chương trình:
CLOSE DATABASES
SET STATUS OFF
SET TALK OFF
USE KhoiA
ON READERROR DO LoiNhap
@ 10,13 SAY 'Vào họ và đệm : ' GET HODEM
@ 12,13 SAY 'Vào Tên : ' GET Ten
@ 14,13 SAY 'Vào số báo danh : '
@ 14,30 GET SBDC Valid Val(right(sbdc,4))<=3000
READ
PROCEDURE LoiNhap
?'Không có số báo danh '+sbdc
WAIT 'ấn phím để tiếp tục'
Clear
RETURN
ELEC Trang 111
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Chương 9: Mảng và chuyển giao dữ liệu giữa các môi trường
9.1 Mảng
Mảng được định nghĩa như sau:
DIMENSION ( [, ])
a. Mảng một chiều
Giả sử ta khai báo mảng A có 10 thành phần:
DIMENSION A(10)
Thứ tự truy cập mảng như sau: A(1), A(2), A(3), A(4),...,A(10)
b. Mảng hai chiều
DIMENSION B(2,4)
Thứ tự truy cập mảng như sau:
B(1,1), B(1,2), B(1,3), B(1,4)
B(2,1), B(2,2), B(2,3), B(2,4)
Ta có thể khai báo ngắn gọnT:
DIMENSION A(10),B(2,4)
Để gán giá trị ban đầu cho mảng ta dùng lệnh gán:
A=0 hay STORE 0 TO A
B='Tin học' hay STORE 'Tin học' TO B
Điều đó có nghĩa là các thành phần của mảng A: A(1),...,A(10) đều bằng 0 v à
các thành phần của mảng B:
B(1,1),B(1,2) v.v..đều có cùng giá trị 'Tin học'
Giả sử ta có mảng:
DIMENSION M(2)
STORE 'A' TO M(1)
STORE 'B' TO M(2)
DISPLAY MEMORY LIKE M
Sau đó hiện lên:
M Pub A
( 1) C "A"
( 2) C "B"
Còn nếu:
DIMENSION M(4)
STORE 'A' TO M(1)
STORE 'B' TO M(2)
DISPLAY MEMORY LIKE M
Sau đó hiện lên:
M Pub A
( 1) C "A"
( 2) C "B"
( 3) L .F.
ELEC Trang 112
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
( 4) L .F.
Hãy quan sát các ví dụ sau:
DIMENSION M(4)
STORE 'E' TO M(1)
STORE 'F' TO M(2)
STORE 'G' TO M(3)
STORE 'H' TO M(4)
DISPLAY MEMORY LIKE M
M Pub A
( 1) C "E"
( 2) C "F"
( 3) C "G"
( 4) C "H"
Còn nếu:
DIMENSION M(2,3)
DISPLAY MEMORY LIKE M
M Pub A
( 1, 1) C "E"
( 1, 2) C "F"
( 1, 3) C "G"
( 2, 1) C "H"
( 2, 2) L .F.
( 2, 3) L .F.
Như vậy khi mảng 2 chiều chuyển sang một chiều, th ì nội dung của mảng hai
chiều được sao chép từ mảng một chiều theo trật tự trên.
Ví dụ:
DIMENSION ViDu(2,3)
STORE 'Tạm biệt' TO ViDu(1,2)
STORE 'Hello' TO ViDu(2,2)
STORE 99 TO ViDu(6)
STORE .T. TO ViDu(1)
DISPLAY MEMORY LIKE ViDu
Sau khi chạy sẽ có kết quả:
VIDU Priv A
( 1, 1) L .T.
( 1, 2) C "Tạm biệt"
( 1, 3) L .F.
( 2, 1) L .F.
( 2, 2) C "Hello"
ELEC Trang 113
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
( 2, 3) N 99 ( 99.00000000)
9.2 Copy mảng
Để copy nội dung của mảng a (nguồn) sang mảng b (đích) ta d ùng:
=COPY (A,B)
Ví dụ:
set talk off
clear
dime a(4),b(4), c(5)
a(1)=2
a(2)=5
a(3)=99
a(4)=1234
=ACOPY(a, b)
?B(1)
?B(2)
?B(3)
?B(4)
=ACOPY(b,c)
?c(1)
?c(2)
?c(3)
?c(4)
?C(5)
9.3 Một số thuật toán về mảng
a. Tìm max của mảng
Giả sử ta tìm phần tử lớn nhất của mảng 20 thành phần. Ta lập trình như sau:
Set talk off
Clear
Dimension A(20)
A=0
For i=1 to 20
Input 'Vào phần tử A ( '+Str(i,2)+' )=' To A(i)
Next
Max=a(1)
For i=2 to 20
If max<=a(i)
max=a(i)
next
?'Phần tử lớn nhất là:',max
ELEC Trang 114
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
b. Tìm min của mảng
Giả sử ta tìm phần tử nhỏ nhất của mảng 20 thành phần. Ta lập trình như sau:
Set talk off
Clear
Dimension A(20)
A=0
For i=1 to 20
Input 'Vào phần tử A ( '+Str(i,2)+' )=' To A(i)
Next
Min=a(1)
For i=2 to 20
If min>=a(i)
min=a(i)
next
?'Phần tử nhỏ nhất là:',max
c. Xếp mảng
Giả sử ta xếp giảm dần các phần tử của mảng 20 th ành phần, ta lập trình như
sau:
Set talk off
Clear
Dimension A(20)
A=0
For i=1 to 20
Input 'Vào phần tử A ( '+Str(i,2)+' )=' To A(i)
Next
for i=1 to 20
for j=i+1 to 19
if a(i)>a(j)
tg=a(i)
a(i)=a(j)
a(j)=tg
Endif
9.4 Chuyển bản ghi ra mảng hoặc biến nhớ
Để dễ trình bày ta nên dựa vào một tệp CSDL, giả sử ta có tệp CSDL có t ên
KHOIA.DBF như sau:
STT SBDC HODEM TEN NGAYSINH KV DT
TOAN LY HOA TONG TIEUSU
1 99A0001 Nguyễn Thị Hà 171279 1 01 6.5 5.0 5.5 17.0
2 99A0002 Trịnh Vĩnh Anh 280278 2 02 5.0 3.5 4.0 12.5
3 99A0003 Đỗ Văn Hùng 280679 3 03 7.0 5.5 6.0 18.5
4 99A0004 Trần Thanh Hải 011080 1 01 8.5 7.0 7.5 23.0
ELEC Trang 115
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
5 99A0005 Phan Trọng Thanh 241280 1 5A 9.0 7.5 8.0 24.5
6 99A0006 Đàm Hữu Thắng 190581 1 5B 3.0 1.5 2.0 6.5
7 99A0007 Lê Thanh Hồng 171177 2 09 4.5 3.0 3.5 11.0
8 99A0008 Nguyễn Phi Chung 020979 2 08 5.5 4.0 4.5 14.0
9 99A0009 Trần Tuấn Bảo 090280 2 07 6.5 5.0 5.5 17.0
10 99A0010 Nguyễn Đình Thu 151179 2 06 7.0 5.5 6.0 18.5
11 99A0011 Nguyễn Văn Hoàng 100177 2 09 8.5 7.0 7.5 23.0
12 99A0012 Đinh Việt Hữu 020180 2 09 9.0 7.5 8.0 24.5
13 99A0013 Đỗ Nguyễn Chu 071180 2 04 10.0 8.5 9.0 27.5
14 99A0014 Lý Xuân Thanh 200880 2 04 2.5 1.0 1.5 5.0
15 99A0015 Phạm Quốc Bình 140975 2 02 4.5 3.0 3.5 11.0
16 99A0016 Đoàn Mạnh Khanh 030280 3 10 5.0 3.5 4.0 12.5
17 99A0017 Nguyễn Văn Khoa 031278 3 11 6.0 4.5 5.0 15.5
18 99A0018 Tạ Hồng An 081180 2 09 8.0 6.5 7.0 21 .5
19 99A0019 Đỗ Trọng Ân 201180 2 07 7.0 5.5 6.0 18.5
20 99A0020 Đỗ Đình Khải 190479 2 08 5.0 3.5 4.0 12.5
Trong đó các tên Trường như sauT:
STT : Số thứ tự
HODEM : Họ đệm
NGAYSINH : Ngày sinh
KV : Khu vực
DT : Đối tượng
TOAN : Điểm toán
LY : Điểm lý
HOA : Điểm hoá
TONG : Tổng điểm
TIEUSU : Tiểu sử
Lệnh có dạng như sau:
SCATTER [FIELDS
| FIELDS LIKE
| FIELDS EXCEPT ]
TO | TO BLANK
| MEMVAR
Copy dữ liệu từ bản ghi hiện thời sang mảng hoặc sang các biến nhớ.
SCATTER tự động tạo ra các biến nhớ hoặc mảng nếu chúng ch ưa tồn tại.
FIELDS
Chỉ một số trường trong danh sách trường mới được Copy
FIELDS LIKE | FIELDS EXCEPT
Chúng ta có thể copy các trường vào biến nhớ hoặc mảng bằng dùng từ khoá
LIKE hoặc EXCEPT
ELEC Trang 116
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
SCATTER FIELDS LIKE A*,P* TO myarray
SCATTER FIELDS LIKE A*,P* EXCEPT PARTNO* TO myarray
TO
Nội dung các trường được đưa vào mảng
TO BLANK
Một mảng được tạo với các phần tử trống.
MEMVAR
Chuyển nội dung bản ghi ra các biến nhớ (các biến n hớ mang tên trườngc) và
viết như sau: m.SBDC, m.HODEM v.v..
Ví dụ1:
set talk off
clear
use khoia
copy to khoia1
use khoia1
Dimension A(10)
do while not eof()
scatter to a
?a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10)
Skip
Enddo
Giả sử không khai báo mảng thì máy sẽ tự động tạo ra mảng để lưu bản ghi đó
set talk off
clear
use khoia
copy to khoia1
use khoia1
do while not eof()
scatter to a
?a(1),a(2),a(3),a(4),a(5),a(6),a(7),a(8),a(9),a(10)
Skip
Enddo
Ví dụ 2: chuyển nội dung bản ghi ra biến nhớ
SET TALK OFF
USE Khoia
COPY TO Khoia1
USE Khoia1
SCATTER MEMVAR MEMO && cất dữ liệu cũ
DEFINE WINDOW Win1 FROM 5,10 to 20,70 PANEL
ELEC Trang 117
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
ACTIVATE WINDOW Win1
@ 1,3 SAY 'Số báo danh: ' GET m.sbdc
@ 3,3 SAY 'Họ đệm : ' GET m.hodem
@ 5,3 SAY 'Tên : ' GET m.ten
@ 7,3 SAY 'Ngày sinh : ' GET m.Ngaysinh
@ 7,18 SAY 'Khu vực : ' GET m.KV
@ 9,13 SAY 'Tiểu sử : '
@ 9,23 EDIT m.Tieusu SIZE 3,26
@ 13,13 SAY 'ấn Escape để thay đổi'
READ
? m.sbd, m.hodem, m.ten, m.ngaysinh, m.kv
IF LASTKEY() != 27
GATHER MEMVAR
WAIT WINDOW 'Cất sự thay đổi' NOWAIT
ELSE
WAIT WINDOW 'Không cất sự thay đổi' NOWAIT
ENDIF
DEACTIVATE WINDOW Win1
BROWSE
USE
9.5 Chuyển dữ liệu từ mảng vào bản ghi
GATHER FROM | MEMVAR
[FIELDS
| FIELDS LIKE
| FIELDS EXCEPT ]
Lệnh GATHER để lưu dữ liệu từ mảng hoặc từ biến nhớ v ào bản ghi hiện
thời.
FROM
Copy từ mảng
MEMVAR
copy vào bản ghi từ biến nhớ
FIELDS
Chỉ những trường liệt kê trong mới nhận dữ liệu vào
FIELDS LIKE | FIELDS EXCEPT
Ví dụ:
GATHER FROM myarray FIELDS LIKE A*,P*
GATHER FROM myarray FIELDS LIKE A*,P* EXCEPT PARTNO*
ELEC Trang 118
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Ví dụ:
SET TALK OFF
USE Khoia
COPY TO Khoia1
USE Khoia1
SCATTER MEMVAR MEMO && save old values
DEFINE WINDOW Win1 FROM 5,10 to 20,70 PANEL
ACTIVATE WINDOW Wind1
@ 1,3 SAY 'Số báo danh: ' GET m.sbdc
@ 3,3 SAY 'Họ đệm : ' GET m.hodem
@ 5,3 SAY 'Tên : ' GET m.ten
@ 7,3 SAY 'Ngày sinh : ' GET m.Ngaysinh
@ 7,18 SAY 'Khu vực : ' GET m.KV
@ 9,13 SAY 'Tiểu sử:'
@ 9,23 EDIT m.Tieusu SIZE 3,26
@ 13,13 SAY 'ấn Escape để thay đổi'
READ
IF LASTKEY() != 27
GATHER MEMVAR
WAIT WINDOW 'Cất sự thay đổi' NOWAIT
ELSE
WAIT WINDOW 'Không cất sự thay đổi' NOWAIT
ENDIF
DEACTIVATE WINDOW Wind1
BROWSE
USE
ELEC Trang 119
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Chương 10: Một số lệnh hiệu chỉnh dữ liệu
10.1 Các tuỳ chọn cao cấp của lệnh BROWSE
Lệnh BROWSE có dạng sau:
BROWSE
[FIELDS ]
[FONT [, ]]
[STYLE ]
[FOR ]
[FREEZE ]
[KEY [, ]]
[LEDIT]
[REDIT]
[LOCK ]
[LPARTITION]
[NOAPPEND]
[NOCLEAR]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLGRID] [NORGRID]
[NOLINK]
[NORMAL]
[NOWAIT]
[PARTITION ]
[PREFERENCE ]
[SAVE]
[TIMEOUT ]
[TITLE ]
[VALID
[ERROR ]]
[WHEN ]
[WIDTH ]
[[WINDOW ]
[IN [WINDOW] | IN SCREEN]]
[COLOR SCHEME | COLOR ]
BROWSE là một trong những lệnh mạnh của FoxPro. Sử dụng BROWSE để mở
cửa sổ Browse và hiển thị các bản ghi của tệp cơ sở dữ liệu. Nếu như bạn cảm
thấy cú pháp quá phức tạp thì nhiều khi chỉ cần gõ BROWSE là có thể
hiệu chỉnh được các bản ghi. Nhưng muốn tận dụng được sức mạnh của nó bạn
ELEC Trang 120
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
nên tuỳ từng tình huống cụ thể mà sử dụng các mệnh đề và từ khoá của lệnh. Sau
đây là mô tả các mệnh đề và từ khoá của nó.
1. [FIELDS ]
Mệnh đề [FIELDS ] định ngh ĩa các trường cần hiển thị, ví dụ:
USE KHOIA
BROWSE FIELD Hodem,ten,sbdc
· · Nếu muốn một trường nào đó không được phép sửa ta thêm: R vào sau
trường đó
Ví dụ:
USE KHOIA
BROWSE FIELD Hodem,ten,sbdc :R
Như vậy trường SBDC chỉ đọc mà không được phép sửa
· · Có thể xác định độ rộng của trường đó như sau:
USE KHOIA
BROWSE FIELD Hodem,ten,sbdc :R :8
Ở trên trường SBDC chỉ đọc (:R) và có độ rộng 8 kí tự (:8)
· · Giả sử ta khống chế trường SBDSO (Số báo danh số) chỉ đ ược sửa từ số
báo danh 1 đến số báo danh 12, ta viết như sau:
USE KHOIA
BROWSE FIELD Hodem,ten,sbdso :V=(sbdso<13) :F
· · Khi dùng tuỳ chọn: V và : F ở trên, nếu muốn có một thông báo lỗi ta viết
như sau:
USE KHOIA
BROWSE FIELD Hodem, ten, sbdso :V=(sbdso<13) :F:E='Không đư ợc phép'
· · Nếu muốn chỉ định một khoảng giá trị để hiệu chỉnh, giả sử chỉ đ ược sửa
SBDSO (số được gõ vào thay cho số cũ) từ 12, 20 ta viết như sau:
USE KHOIA
BROWSE FIELD Hodem, ten, sbdso :B=12,20
· · Muốn hiển thị môt tên trường mới thay cho tên trường đã có ta gõ như
sau:
USE KHOIA
BROWSE FIELD Hodem, ten, sbdso :H='So Bao Danh'
· · Chỉ được sửa những bản ghi có SBDSO <12 ta g õ như sau:
USE KHOIA
BROWSE FIELD Hodem, ten, sbdso :W=SBDSO<12
2. [FONT [, ]]
Khi chạy trong môi trường Windows thì là tên phông chữ (VnTime,
VnTimeH v.v..) còn là cỡ phông, nếu không có tham số này, FoxPro sẽ
dùng cỡ phông 10.
Ví dụ:
ELEC Trang 121
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
USE KHOIA
BROWSE FIELD Hodem, ten, sbdso Font '.VnTime', 14
3. [STYLE ]
Biểu thức ký tự xác định kiểu của phông (B= Béo, I=nghiêng v.v..)
USE KHOIA
BROWSE FIELD Hodem, ten, sbdso Font '.VnTime', 14 Style 'B'
4. [FOR ]
Điều kiện để hiển thị các bản ghi, ví dụ:
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem For TongDiem >=16
5. [FREEZE ]
Chỉ cho phép hiệu chỉnh trường C , ví dụ:
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem FREEZE TongDiem
6. [KEY [, ]]
Mệnh đề KEY được dùng để giới hạn phạm vi các bản ghi được hiển thị, ví dụ:
USE Khoia
INDEX ON SBDSO TO SBDINDEX
BROWSE KEY 1,40
Nghĩa là chỉ hiện các bản ghi có số báo danh từ 1 đến 40
USE Khoia
INDEX ON Ten TO TenIndex
BROWSE KEY 'A', 'N'
Hiển thị những bản ghi có tên với chữ cái đầu từ A đến N
USE Khoia
INDEX ON Ten TO TenIndex
BROWSE KEY 'A''
Hiển thị những bản ghi có tên với chữ cái đầu từ A
7. [LEDIT] [REDIT]
[LEDIT] cho phép hiển thị dữ liệu dạng BROWSE
[REDIT] cho phép chuyển sang hiển thị dạng lệnh EDIT hoặc CHANGE
8. [LOCK ]
Cho phép cố định trường bên trái trong khi vẫn di chuyển trỏ sang
phải. phải nhỏ hơn số lượng các trường hiện ra màn hình.
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem LOCK 2
9. [LPARTITION]
Đưa trỏ sang vùng bên trái, ví dụ:
USE KHOIA
BROWSE PARTITION 40 LPARTITION
ELEC Trang 122
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Mệnh đề PARTITION 40 chia cửa sổ th ành hai phần, đường phân cách đứng
nằm ở cột 40, bình thường trỏ nằm ở bên phải nhưng nếu có mệnh đề
LPARTITION thì trỏ sẽ được đặt ở phần trái.
10. [NOAPPEND]
Từ khoá NOAPPEND sẽ không cho phép ghép các bản ghi v ào sau tệp, ví dụ:
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem NOAPPEND
11. [NOCLEAR]
Từ khoá NOCLEAR báo cho lệnh BROWSE để lại tr ên màn hình một ảnh của
cửa sổ BROWSE sau khi thoát, ví dụ:
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem NOCLEAR
12. [NODELETE]
Không cho xoá các bản ghi, ví dụ:
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem NODELETE
13. [NOEDIT | NOMODIFY]
Loại bỏ việc hiệu chỉnh dữ liệu.
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem NOEDIT
Hoặc:
USE KHOIA
BROWSE FIELD Hodem, ten, TongDiem NOMODIFY
14. [NOLGRID] [NORGRID]
Không hiển thị đường kẻ dọc phân cách các trường của phân vùng bên trái hoặc
bên phải, ví dụ:
USE KHOIA
BROWSE PARTITION 40 NOLGRID
15. NOLINK
Từ khoá NOLINK báo cho lệnh BROWSE không nối kết các phân v ùng, nghĩa
là khi ta di chuyển trỏ đến các bản ghi khác nhau ở phân v ùng này thì các bản
ghi ở phân vùng kia vẫn nằm yên, ví dụ:
USE KHOIA
BROWSE PARTITION 40 NOLINK
16. [NORMAL]
Nếu chỉ định từ khoá NORMAL thì cửa sổ BROWSE vẫn xuất hiện ở màn hình
mặc dù có thể đang có một cửa sổ hoạt động, ví dụ:
DEFINE WINDOW W1 FROM 1,2 TO 12,40 PANEL
ACTIVATE WINDOW W1
USE KHOIA
BROWSE
ELEC Trang 123
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Dữ liệu sẽ xuất hiện trong cửa sổ W1 v à cửa sổ BROWSE sẽ kết thừa các tính
chất như màu, ZOOM, SIZE v.v.. của cửa sổ W1, con nếu:
DEFINE WINDOW W1 FROM 1,2 TO 12,40 PANEL
ACTIVATE WINDOW W1
USE KHOIA
BROWSE NORMAL
Thì dữ liệu sẽ xuất hiện ở màn hình (không phải trong W1) và nó kế thừa màu,
ZOOM, SIZE v.v..của chính cửa sổ BROWSE.
17. [NOWAIT]
Nếu có từ khoá NOWAIT, lệnh BROWSE sẽ hiển thị dữ liệu v à sau đó làm tiếp
các lệnh trong chương trình mà không phải gõ CTRL +W hoặc CTRL +END, ví
dụ:
Set talk off
Clear
DEFINE WINDOW w1 FROM 1,2 TO 12,40 PANEL
ACTIVATE WINDOW w1
USE KHOIA
BROWSE
WAIT 'ấn phím để tiếp tục'
BROWSE NOWAIT &&sẽ hiển thị dữ liệu nhưng không dừng
DEFINE WINDOW w2 FROM 14,20 TO 20,70 PANEL
ACTIVATE WINDOW w2
FOR i=1 TO 1000
?i,sin(i)
NEXT
CLEAR ALL
18. [PARTITION ]
Tách cửa sổ BROWSE thành hai phân vùng, có đường ngăn cách tại cột
.
USE KHOIA
BROWSE PARTITION 40
19. [PREFERENCE ]
Từ khoá PREFERENCE báo cho lệnh BROWSE l ưu cất các thuộc tính và tuỳ
chọn của cửa sổ BROWSE và tệp tin tài nguyên có tên , để sau đó
dùng lại, ví dụ:
USE KHOIA
BROWSE FIELD HODEM,TEN, SBDC COLOR SCHEME 3 PREFERENCE
File1
**** Thoát bằng CTRL +W********
**** Phục chế lại nguyên dạng *********
BROWSE PREFERENCE File1
20. [SAVE]
ELEC Trang 124
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Để lại trên màn hình cửa sổ BROWSE và các trường trước khi thoát, ví dụ:
USE KHOIA
BROWSE FIELD HODEM,TEN, SBDC SAVE
21. [TIMEOUT ]
Từ khoá TIMEOUT báo cho lệnh BROWSE chờ T giây, ví dụ:
USE KHOIA
BROWSE FIELD HODEM,TEN, SBDC TIMEOUT 5
Chú ý: Chỉ dùng TIMEOUT trong chương trình.
22. [TITLE ]
Đặt tiêu đề cho cửa sổ BROWSE, ví dụ:
USE KHOIA
BROWSE FIELD HODEM,TEN TITLE ' Thi khoi A'
23.[VALID [:F] [ERROR ]]
Chỉ sửa dữ liệu khi thoả mãn , ví dụ:
USE KHOIA
BROWSE VALID KV0 ERROR 'Không đư ợc phép'
Nghĩa là khi sửa trường KV (Khu vực), ta chỉ có thể g õ vào các số 1,2, 3 mà
thôi, còn nếu gõ vào khác các số đó thì có thông báo lỗi .
24. [WHEN ]
Chỉ hiệu chỉnh khi thoả mãn điều kiện
USE KHOIA
BROWSE WHEN KV0
25. [WIDTH ]
Đặt độ rộng cho các trường, nếu độ rộng thực của trường lớn hơn thì
nội dung trường sẽ được cuốn theo chiều ngang.
USE KHOIA
BROWSE WIDTH 10
26. [[WINDOW ]
Cửa sổ BROWSE sẽ được hiện trong cửa sổ được định nghĩa trước đó.C
DEFINE WINDOW W1 FROM 1,1 TO 20,40 PANEL
USE KHOIA
BROWSE WINDOW W1
27. [IN [WINDOW] | IN SCREEN]]
Hiện ở một cửa sổ bên trong một cửa sổ khác, ví dụ:
USE KHOIA
DEFINE WINDOW WTo FROM 1,1 TO 20,40 PANEL
DEFINE WINDOW WNho FROM 4,4 TO 15,30 PANEL
ACTIVATE WINDOW Wto
BROWSE WINDOW WNho In Wto
28. [COLOR SCHEME | COLOR ]
Chỉ định lược đồ màu hoặc danh sách các thuộc tính màu. Thông thường
COLOR SCHEME 10 là màu ngầm định.C
ELEC Trang 125
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
USE KHOIA
BROWSE COLOR SCHEME 5
Hoặc:
USE KHOIA
BROWSE COLOR 4
10.2 Các tuỳ chọn cao cấp của Lệnh CHANGE v à EDIT
CHANGE
[FIELDS ]
[]
[FOR ]
[WHILE ]
[FONT [, ]]
[STYLE ]
[FREEZE ]
[KEY [, ]]
[LEDIT] [REDIT]
[LPARTITION]
[NOAPPEND]
[NOCLEAR]
[NODELETE]
[NOEDIT | NOMODIFY]
[NOLINK]
[NORMAL]
[NOWAIT]
[PARTITION ]
[PREFERENCE ]
[SAVE]
[TIMEOUT ]
[TITLE ]
[VALID [:F] [ERROR ]]
[WHEN ]
[WIDTH ]
[[WINDOW ]
[IN [WINDOW] | IN SCREEN]]
[COLOR SCHEME | COLOR ]
Nếu không cung cấp [scope] thì ALL được thiết lập, mỗi mệnh đề và từ khoá
khác như lệnh BROWSE.
Lệnh EDIT hoàn toàn như lệnh CHANGE.
10.3 Các tuỳ chọn cao cấp của lệnh @...SAY...GET
Lệnh có dạng tổng quát như sau:
ELEC Trang 126
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
@
SAY
[FUNCTION ]
[PICTURE ]
[SIZE , ]
[FONT [, <expN3]]
[STYLE ]
[COLOR SCHEME | COLOR ]
GET |
[FUNCTION ]
[PICTURE ]
[FONT [, ]]
[STYLE ]
[ENABLE | DISABLE]
[MESSAGE ]
[[OPEN] WINDOW ]
[RANGE [] [, ]]
[SIZE , ]
[VALID | [ERROR ]]
[WHEN ]
[COLOR SCHEME | COLOR ]
READ
1.
Dòng (row) và cột (column) nơi bắt đầu hiển thị dữ liệu, nếu dùng SET DEVICE
TO PRINTER để đưa kết xuất ra máy in thì hàng có thể nằm trong phạm vi từ 0
ddến 32.768 và cột từ 0 đến 255.
2.
là biểu thức bất kỳ, ví dụ:
@10,12 SAY 'Chào bạn'
@11,12 SAY 12*23
Phần chung cho cả SAY và GET
3. [FUNCTION ]
Tạo khuôn dạng cho dữ liệu, biểu thức nhận các ký tự sau:
a. Ký tự!
Chuyển mọi ký tự viết thường thành viết hoa:
@2,10 SAY 'Chào bạn ' FUNCTION '!'
Khi hiển thị chữ 'Chào bạn' sẽ biến thành 'chào bạn'.
b. Ký tự ^
Hiện thị các số theo dạng động:
@12,10 SAY 1232*7654 FUNCTION '^'
Sẽ hiển thị ở dòng 12 cột 10 số: .94279E+7
c. Ký tự $
ELEC Trang 127
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
Hiện thị dữ liệu theo dạng thức tiền tệ:
@12,10 SAY 12*54 FUNCTION '$'
Sẽ hiển thị kết quả: $648
d. Ký tự (
Bao các con số âm bằng các dấu ngoặc đơn:
@12,10 SAY -112*54 FUNCTION '('
Sẽ hiển thịS: ( 6048)
e. Ký tự A hoặc a
Chỉ cho phép nhập các ký tự thuộc bảng chữ cái:
Clear
Ten=Space(7)
@12,10 SAY 'Vào tên của ban? ' GET Ten FUNCTION 'A'
READ
? Ten
f. Ký tự B hoặc b
Gióng thẳng hàng lề trái của trường, ví dụ
USE KHOIA
@12,10 SAY 'Vào họ đệm ? ' GET Hodem FUNCTION 'B'
@13,10 SAY 'Vào tên ? ' GET Ten FUNCTION 'B'
@14,10 SAY 'Vào điểm toán?' GET Toan FUNCTION 'B'
READ
g. Ký tự C
Hiển thị ký tự CR sau một số dương:
@14,10 SAY 1235 FUNCTION 'C'
Kết quả: 1235 CR
h. Ký tự D
Hiển thị giá trị Date:
@14,10 SAY 12345 FUNCTION 'D'
Kết quả sẽ là:1/23/45
i. Ký tự E
Hiển thị và nhập ngày tháng theo kiểu châu âu (ngày/Tháng /Năm):
Clear
A={}
@14,10 SAY 'Vào dữ liệu dạng Date?' GET a FUNCTION 'E'
?a
j. Ký tự I
Canh văn bản nằm giữa:
USE KHOIA
@12,10 SAY 'Vào họ đệm ? ' GET Hodem FUNCTION 'I'
@13,10 SAY 'Vào tên ? ' GET Ten FUNCTION 'I'
@14,10 SAY 'Vào điểm toán?' GET Toan FUNCTION 'I'
READ
ELEC Trang 128
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN - ĐẠI HỌC KINH DOANH & CÔNG NGHỆ H À NỘI
k. Ký tự J
Dóng thẳng hàng bên phải:
USE KHOIA
@12,10 SAY 'Vào họ đệm ? ' GET Hodem FUNCTION 'J'
@13,10 SAY 'Vào tên ? ' GET Ten FUNCTION 'J'
@14,10 SAY 'Vào điểm toán?' GET Toan FUNCTION 'J'
READ
l. Ký tự K
Nguyên cả trường được chọn (bôi đen)
USE KHOIA
@12,10 SAY 'Vào họ đệm ? ' GET Hodem FUNCTION 'K'
@13,10 SAY 'Vào tên ? ' GET Ten FUNCTION 'K'
@14,10 SAY 'Vào điểm toán?' GET Toan FUNCTION 'K'
READ
Nên dùng K khi ta định gõ lại toàn bộ nội dung của trường đó
m. Ký tự L
Hiển thị các chữ số 0 ở đầu thay vì dấu cách:
A=123
@14,10 SAY 'Vào a =' GET a FUNCTION 'L'
READ
n. Ký tự M
Lựa một giá trị trong
USE KHOIA
@12,10 SAY 'Vào khu vực? ' GET kv FUNCTION 'M 1,2,3'
@13,10 SAY 'Vào ưu tiên?' GET ut FUNCTION 'M 1,2,3,4,5, 6,7,8,9,10,11'
READ
o. Ký tự S
Cuốn duyệt theo chiều ngang trong khi sửa biến sau GET kiểu ký tự:
p. Ký tự T
Cắt bỏ dấu cách trước vào sau ra khỏi trường ký tự
2. [PICTURE ]
a. Ký tự!
Chuyển mọi ký tự viết thường thành viết hoa:
@2,10 SAY 'chào bạn?' PICTURE '!!!!!
Các file đính kèm theo tài liệu này:
- giao_trinh_visual_foxpro_6_0.pdf