1. Trang chủ
  2. » Giáo án - Bài giảng

De cuong th fox

78 415 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề De cuong th fox
Trường học Unknown University
Chuyên ngành Database Management
Thể loại Bài tập
Thành phố Unknown
Định dạng
Số trang 78
Dung lượng 283 KB

Nội dung

Ví dụ : Giả sử với tệp HSLUONG.DBF USE HSLUONG ↵ INDEX ON HOTEN TO CSTEN ↵ LIST HOTEN,LUONG ↵ DISP STATUS ↵ INDEX ON LUONG TO CSLUONG ADDI ↵ LIST HODEM, HOTEN, LUONG ↵ SET INDEX TO CSTEN

Trang 1

Bài tập 1 : Các thao tác ban đầu với tệp CSDL

1 Tạo tệp CSDL :

Dùng lệnh: CREA LUONG ↵

Tạo tệp LUONG có cấu trúc nh sau:

Fields name Type Width DEC

Sau khi khai báo xong, ấn CTRL+W để ghi lại

Trả lời Y khi máy hỏi :

Input data records now(Y/N)?

Vào 10 bản ghi xong ấn CTRL+W để ghi lại

2 Xem thông tin:

Gõ lệnh: LIST ↵

- Nếu muốn xem danh sách tất cả các cán bộ ở phòng kế hoạch (KH) bằng lệnh:

DISPLAY ALL FOR DONVI=‘KH’ ↵

- Nếu vào tròng DONVI không thống nhất:Kh,kH

Ta dùng lệnh đổi thành chữ hoa: UPPER( )

DISPLAY ALL FOR UPPER(DONVI)=‘KH’ ↵

-Thay đổi đơn vị trờng THUONG lên trên trờng PHUCAP bằng cách đa vệt sáng

đến cột THUONG ấn đồng thời CTRL+PgUp

(ấn Ctrl để ghi lại)

- Để kiểm tra lại hãy dùng lệnh: LIST ↵

- Sao chép cấu trúc tệp đang mở:

COPY STRU TO LUU

Tệp LUU.DBF đã đợc tạo ra có cấu trúc giống nh tệp LUONG.DBF

4 Dùng kỹ thuật sao luu cấu trúc để thêm một tr ờng thành tiền

Trang 2

repl field_name with 'ttien'

repl field_type with 'N'

repl field_len with '10'

repl field_len with 10

repl field_dec with 2

use

creat luong3 from luong2

appe from luong

6 Mở tệp và bổ sung bản ghi mới:

Gõ lệnh USE LUONG ↵

Khi đó màn hình hiện ra cho ta nhập nội dung bản ghi mới muốn thêm

- Nếu muốn chèn trớc bản ghi số 6 một bản ghi mới,ta gõ lệnh:

GO 6 ↵

INSERT BEFO ↵

Khi đó màn hình hiện ra cho ta nhập nội dung bản ghi mới muốn thêm

8- Hiện thị ra màn hình LUONG nhỏ nhất

USE luong

list

index on luong to csluong

disp sotien

Trang 3

9- Hiện thị ra màn hình LUONG lớn nhất

index on -luong to cslg

disp sotien

8.Sửa lại nội dung nhiều bản ghi:

Ta tính lại tiền thởng theo chỉ tiêu sau:

- Lơng dới 200.000 tiền thởng = 65% lơng

- Lơng từ 200.000 đến dới 300.000 tiền thởng = 50% lơng

- Lơng từ 300.000 đến dới 400.000 tiền thởng = 45%lơng

- Lơng từ 400.000 trở lên tiền thởng = 40% lơng

Các câu lệnh sẽ đợc thực hiện nh sau:

REPL ALL THUONG WITH 65/100*LUONG FOR LUONG < 200.000 ↵

REPL ALL THUONG WITH 50/100* LUONG FOR LUONG >= 200.000

REPL ALL CONLAI With (LUONG+THUONG+PHUCAP-TAMUNG) ↵

Kiểm tra lại dùng lệnh : LIST TEN,CONLAI

- Khi muốn phục hồi lại bản ghi thứ 10 , ta gõ lệnh : RECA RECORD 10 ↵

- Khi ta muốn xoá hẳn khỏi DBF và không thể phục hồi lại đợc nữa, ta gõ lệnh : PACK ↵

11 Sao chép bản ghi :

- Khi ta muốn lấy ra danh sách riêng của phòng kế hoạch, ta gõ lệnh sau :

COPY TO KH FOR UPPER(DONVI)= ‘KH’ ↵

Khi đó ta có một tệp có tên là KH.DBF đã đợc tạo ra để lu trữ lơng của phòng kế hoạch

Trang 4

Bài tập 2 : Các thao tác ban đầu với tệp CSDL ( tiếp )

A sắp xếp và tìm kiếm dữ liệu

1 Các yêu cầu của việc sắp xếp

Trớc khi sắp xếp dữ liệu, phải xác định sắp xếp theo trờng nào, theo thứ tự tăng hay giảm dần, trờng nào u tiên sắp xếp trớc, có phân biệt chữ hoa hay chữ th-ờng không

/D ( Descending) : Sắp xếp theo thứ tự giảm dần

/C Để xác định không phân biệt chữ hoa hay chữ thờng đối với trờng đợc sắp xếp có kiểu dữ liệu là ký tự

Nếu không có /A /D thì FOXPRO hiểu là sắp xếp theo thứ tự tăng dần Nếu

có hai chỉ tiêu cùng một trờng thì viết /AC hoặc /DC

Trang 5

Ví dụ : Giả sử với tệp HSLUONG.DBF

USE HSLUONG ↵

INDEX ON HOTEN TO CSTEN ↵

LIST HOTEN,LUONG ↵

DISP STATUS ↵

INDEX ON LUONG TO CSLUONG ADDI ↵

LIST HODEM, HOTEN, LUONG ↵

SET INDEX TO CSTEN, CSLUONG ↵

DISPLAY ALL ↵ (Đã đợc sắp theo tên)

SET ORDER TO CSLUONG ↵

DISPLAY ALL ↵ (Đã đợc sắp theo lơng)

- Khi không cần các tệp chỉ số nữa, ta nên đóng chúng lại bằng lệnh :

SET INDEX TO Hoặc CLOSE INDEX

*) Cập nhật tệp chỉ số

Trong quá trình khai thác CSDL có lúc ta không mở hết các tệp chỉ số của

nó Điều đó dẫn đến tệp chỉ số đó không đợc thay đổi cho phù hợp với sự thay đổi

ở tệp CSDL đang mở Vì vậy để cập nhật ta dùng lệnh sau:

Trang 6

(Sau khi thêm các bản ghi thì tệp chỉ số CSTEN không đợc cập nhật)

LOCATE [<Phạm vi>] [ FOR <Bt logic>] ↵

Khi gặp lệnh này, FOXPRO sẽ lần lợt duyệt qua tệp CSDL đang mở để tìm

ra bản ghi đầu tiên trong <Phạm vi> thoả mãn <Bt logic> Sau khi đã tìm đợc một bản ghi thoả mãn <BT logic>, việc tìm kiếm tạm dừng lại để ta xử lý, ví dụ nh hiển thị thông tin ra màn hình (DISPLAY), sửa đổi (CHANGE) Việc tìm kiếm chỉ đợc tiếp tục khi ta ra lệnh CONTINUE

Nếu tìm thấy bản ghi thì hàm FOUND() cho giá trị T

Hàm RECONO() cho kết quả là số hiệu bản ghi vừa tìm thấy

Nếu không tìm thấy bản ghi nào, LOCATE thông báo ‘End of locate scope’

và con trỏ bản ghi đợc chuyển đến vị trí kết thúc tệp EOF (End of File ) và lúc này thì:

Hàm RECNO( ) cho giá trị bằng tổng số bản ghi của tệp CSDL cộng thêm 1

Hàm EOF( ) cho giá trị T

Hàm FOUND( ) cho giá trị F

Trang 7

Lệnh này chỉ tìm kiếm thông tin trên tệp đã đợc sắp xếp theo chỉ số Trong

đó <Biểu thức> có thể là biến có kết quả là một chuỗi ký tự, vì thế chuỗi ký tự không cần đặt trong dấu nháy đơn, nháy kép

Ví dụ : Giả sử tệp HSLUONG.DBF cần tìm trên tệp chỉ số đợc sắp xếp theo tên

Record # HODEM TEN DONVI

3 Phan thi Anh Tin hoc

2 Van duc Binh Ke hoach

1 Tran van Sa To chuc

4 Le Van Thuy Dao tao

Nếu ta ra lệnh:

SET EXACT OFF ↵

FIND Thu ↵

? HODEM, TEN, DONVI ↵

Kết quả là : Le Van Thuy Dao tao

Ví dụ : SEEK Date( ) - 10 ↵

Chú ý: Lệnh SEEK khác với lệnh FIND

- Nếu < Biểu thức> là một biến thì không cần hàm & (Macro) ở phía trớc

- Nếu <Biểu thức > là một chuỗi kí tự thì bắt buộc phải cho vào trong hai dấu nháy đơn, hoặc nháy kép

Trang 8

Ví dụ: USE HSLUONG ↵

SUM LUONG, PHUCAP,LUONG+PHUCAP TO A1 , A2, A3

?” A1, A2, A3 “,A1,A2,A3 ↵ kết quả sẽ hiện lên màn hình

SET TALK ON ↵

2 Lệnh TOTAL

Đối với những CSDL đã đợc sắp xếp theo một <biểu thức khoá> nào đó, các bản ghi sẽ đợc xếp lại thành từng nhóm, trong đó hai bản ghi thuộc cùng một nhóm là hai bản ghi có cùng giá trị <biểu thức khoá> sắp xếp Khi đó ta có thể cộng các trờng số của CSDL này theo từng nhóm nhờ lệnh:

TOTAL ON <Biểu thức khoá> TO <Tên tệp mới> [<Phạm vi>]

[FIELDS <DS trờng>] [ FOR <Bt logic 1>/ WHILE <Bt logic 2>]

Kết quả cộng đợc ghi sang một tệp CSDL mới có tên <tên tệp mới> Tệp này

có cấu trúc nh tệp CSDL ban đầu, trong đó mỗi bản ghi tơng ứng với những tổng tìm đợc của một nhóm Những tổng này đợc ghi trên các trờng tơng ứng

Ví dụ: Tính tổng LUONG, PHUCAP của các đơn vị trong tệp HSLUONG

USE HSLUONG ↵

SORT ON DONVI /A TO SAPXEP ↵

USE SAPXEP ↵

Trang 9

TOTAL ON DONVI TO BAOCAO FIELD LUONG,PHUCAP ↵

Trang 10

Thông thờng mỗi lần dùng lệnh USE <Tên tệp CSDL> thì chỉ có một tệp CSDL đợc mở trong một vùng làm việc nhất định Giả sử ta làm việc với nhiều tệp CSDL thì làm thế nào? FOXPRO cho phép mở một lúc tối đa 25 tệp DBF trên 25 vùng làm việc khác nhau Các vùng làm việc hoàn toàn độc lập với nhau FOXPRO đánh số các vùng làm việc từ 0,1,2, hoặc A, B, C,

Khi không nói gì đến vùng làm việc thì FOXPRO đang làm việc ở vùng số 1

2 Đặt bí danh cho vùng làm việc

Ta có thể mở một tệp CSDL có kèm theo bí danh (để dễ nhớ ) theo hai cách sau:

USE HSLUONG IN 1 ALIAS LUONG ↵

3 Truy nhập dữ liệu trên các vùng làm việc khác nhau

Để truy nhập vào một trờng nào đó của một bản ghi hiện thời, tuỳ theo từng trờng hợp ta làm nh sau:

Trang 11

- Nếu bản ghi ấy đang ở vùng làm việc hiện thời ta chi cần truy nhập thông qua tên trờng.

- Nếu bản ghi ấy không nằm trong vùng làm việc hiện thời ta truy nhập theo cách:

Trong trờng hợp cập nhật chỉ để sửa đổi dữ liệu các trờng của các bản ghi

mà không thêm bản ghi, có thể lu tất cả dữ liệu cần cập nhật vào một tệp, sử dụng lệnh UPDATE với cú pháp nh sau:

UPDATE ON <Khoá> FROM <Bí danh>

REPLACE <Trờng 1> WITH <Biểu thức1>,

<Trờng 2> WITH <Biểu thức2>,

<Trờng n> WITH <Biểu thứcn> [RANDOM]

Lệnh UPDATE đòi hỏi tệp dữ liệu hiện thời (cần cập nhật) phải đợc chỉ số hoá theo <khoá> Nếu tệp <bí danh> không đợc sắp xếp (hoặc không đợc chỉ số hoá) theo <khoá> cập nhật thì phải dùng từ khoá RANDOM

Ví dụ 1: Xét bài toán quản lý vật t Tính lợng tồn kho cuối kỳ dựa vào lợng tồn kho đầu kỳ và dựa vào phát sinh trong kỳ Giả sử có 3 tệp DBF: NHAPKHO.DBF

để lu các phiếu nhập, XUATKHO để lu các phiếu xuất và TONKHO.DBF để lu trữ lợng tồn kho

Trang 12

UPDATE ON MAVT FROM NHAP REPLACE SOLUONG WITH SOLUONG+NHAP->SOLUONG RANDOM

UPDATE ON MAVT FROM XUAT REPLACE SOLUONG WITH SOLUONG+XUAT->SOLUONG RANDOM

5 Kết nối 2 tệp DBF

Nếu bản ghi giữa 2 tệp DBF có liên quan với nhau, muốn tạo ra một tệp mới bao gồm một số trờng hoặc tất cả các trờng dữ liệu của 2 tệp DBF, sử dụng lệnh JOIN với cú pháp nh sau:

JOIN WITH <Bí danh> TO <Tệp kết quả> FOR <BT logic>

[FIELDS <ds trờng >]

Lệnh này tạo ra <tệp kết quả > từ 2 tệp dữ liệu đang mở Một tệp đợc mở ở vùng làm việc hiện thời và tệp còn lại đợc mở ở vùng đợc chỉ định bởi bí danh

Ví dụ: giả sử có 2 tệp cơ sở dữ liệu:

Tệp QLPB.DBF lu trữ các thuộc tính của các phòng , ban có cấu trúc nh sau :

Tên trờng Kiểu trờng Kích thớc Giải thích

MAPB C 2 Mã phòng ban

TENPB C 20 Tên phòng, ban

TRUONGPB C 25 Trởng phòng, ban

Tệp NHANVIEN.DBF lu trữ các nhân viên có cấu trúc nh sau :

Tên trờng Kiểu trờng Kích thớc Giải thích

DSNV.DBF (tệp kết quả)

Trang 13

Cú pháp:

SET RELATION TO [<Khoá liên kết 1> INTO < Bí danh 1>]

[,<Khoá liên kết 2> INTO <Bí danh 2 >]

[ ADDITIVE]

Ví dụ :

Trong một kỳ thi tuyển sinh, để đảm bảo việc cho điểm, ngời ta lập 4 file

a) DSACH.DBF để lu trữ họ tên thí sinh gồm:

Field name Type Witdth Dec chú thích

SOBD C 10 Số báo danh

HOTEN C 25 Họ và tên

PTOAN C 4 Phách môn toán

PLY C 4 Phách môn lý

PHOA C 4 Phách môn hoá

b) File DTOAN.DBF có cấu trúc nh sau :

Field name Type Witdth Dec chú thích

PTOAN C 4 Phách môn toán

DIEM N 5 2 Điểm môn toán

c) File DLY.DBF có cấu trúc nh sau :

Field name Type Witdth Dec chú thích

PLY C 4 Phách môn lý

DIEM N 5 2 Điểm môn lý

d) File DHOA.DBF có cấu trúc nh sau :

Field name Type Witdth Dec chú thích

PHOA C 4 Phách môn hoá

DIEM N 5 2 Điểm môn hoá

PHACH.DBF SBD

HOTEN PTOAN PLY PHOA

Trang 14

Ta có thể dùng lệnh SET RELATION để thiết lập mối quan hệ giữa các tệp

để biết điểm của các thí sinh:

SELECT 1

USE TOAN ALIAS TOAN

INDEX ON PTOAN TO MTID

SELECT 2

USE LY ALIAS LY

INDEX ON PLY TO MTID

SELECT 3

USE HOA ALIAS HOA

INDEX ON PHOA TO MTID

Trang 15

Ví dụ :

MODIFY COMMAND BAITAP

Sau lệnh này màn hình soạn thảo xuất hiện, ta gõ các lệnh vào ví dụ:

USE HOSO

LIST ALL FOR LUONG >= 1000000

COUNT TO TL FOR LUONG >= 1000000

SET TALK OFF && Không hiện kết quả tính toán trung gian lên màn hình

SET STATUS OFF && Không hiện dòng trạng thái

- Đóng tất cả các file dữ liệu và giải phóng bộ nhớ

b/ Khởi tạo biến nhớ: gán giá trị ban đầu cho biến nhớ, kiểu của biến nhớ đợc xác

Trang 16

a Dùng lệnh DO ở khung cửa sổ lệnh

DO <Tên chơng trình>

Trong đó: <Tên chơng trình> là tên chơng trình mà ta muốn thực hiện

Nếu chơng trình không thuộc th mục hiện thời hoặc th mục chứa chơng trình không đợc khai báo bằng lệnh:

SET PATH TO < Danh sách đờng dẫn >

Lệnh này nhằm khai báo một danh sách các th mục để FOXPRO tìm đến khi không tìm thấy tệp trong th mục làm việc

SET DEFAULT TO <Đờng đẫn>

Lệnh này đặt th mục nằm trong <Đờng dẫn> làm th mục làm việc của

FOXPRO FOXPRO sẽ tìm các tệp dữ liệu và tệp chơng trình trong th mục này

Ví dụ:

SET DEFAULT TO C:\QUANLY

SET PATH TO C:\QUANLY\DBF ,C:\QUANLY\PRG

Ví dụ: chạy chơng trình BAITAP.PRG

Trang 17

Khi gặp lệnh này, trên màn hình xuất hiện <Dòng thông báo> và chơng trình

sẽ dừng lại chờ ngời sử dụng gõ một phím bất kỳ Không nhất thiết phải chỉ thị < biến kí tự > Nếu có chỉ thị <Biến ký tự > thì ký tự ta gõ vào sẽ đợc lu vào <Biến

ký tự> Nếu <Biến ký tự> cha tồn tại thì FOXPRO sẽ tự tạo ta

Nếu không có chỉ thị <Dòng thông báo > thì FOXPRO sẽ nhắc:

'Press any key to continue' Nghĩa là: Hãy ấn một phím bất kỳ để tiếp tục.

Lệnh này rất hay dùng trong chơng trình để dừng chơng trình tại một thời

điểm nào đó

Ví du:

WAIT

WAIT “ Chuẩn bị máy in Bấm phím ENTER để bắt đầu in”

WAIT “ Bấm phím bất kỳ để tiếp tục” WIND

2 Lệnh ACCEPT

Cú pháp:

ACCEPT [<Dòng thông báo >] TO <Biến ký tự >

Khi gặp lệnh này trên màn hình xuất hiện <Dòng thông báo> sau dòng hiện thời

để biết đợc cần đa giá trị nào vào < biến kí tự > <Biến ký tự > chỉ nhận dữ liệu kiểu ký tự (Character), chính vì vậy khi nhập dữ liệu là biểu thức kí tự không cần

đặt trong nháy đơn hoặc nháy kép

Nếu <Biến ký tự> cha tồn tại thì FOXPRO sẽ tự tạo ta

Ví dụ:

ACCEPT “ Họ và tên : “ TO HOTEN

Khi chạy chơng trình trên màn hình xuất hiện:

Họ và tên : Nguyen Van Nam

?HOTEN

Nguyen Van Nam

3 Lệnh INPUT

Cú pháp :

INPUT <Dòng thông báo > TO <Biến>

Khi gặp lệnh này trên màn hình xuất hiện <Dòng thông báo> sau dòng hiện thời

để biết đợc cần đa giá trị nào vào < biến >

Ví dụ:

INPUT ‘ Họ và tên : ’ TO hoten

INPUT ‘ Ngày sinh : ’ TO Ngaysinh

INPUT ‘ Giới tính : ’ TO Gioitinh

Trang 18

@ <Toạ độ dòng, cột > SAY <Biểu thức> GET <Biến >

@ 2,2 Say ' Họ và tên : ’ Get Hoten

@ 3,2 Say ' Ngày sinh : ' Get Ngaysinh

@ 4,2 Say ‘ Giới tính : ’ Get Gioitinh

@ 5,2 Say ‘ Lơng : ‘ Get Luong

Hiện các số 0 vô nghĩa ở đầu thay cho khoảng trắng trớc dữ liệu số

Bỏ bớt các ký tự trắng trớc và sau dữ liệuNếu giá trị bằng Zero (0) thì cho hiện ra toàn kí tự trắngCác dữ liệu kiểu ký tự vào sẽ tự động chuyển sang chữ hoa

*Các mã của PICTURE

A Chỉ nhận chữ cái

Trang 19

Nhận các chữ cái Y, y, N, n Đổi y,n thành Y, NNhận giá trị là số và dấu âm (-) dơng (+)

Nhận giá trị là số, ký tự trắng dấu +,

-Đổi chữ thờng thành chữ hoa Xác định vị trí dấu thập phânXác định vị trí ngăn cách hàng ngàn, triệu ,tỷChỉ cho phép đánh vào dữ liệu dạng số

L

u ý:

Picture "@ <mã function>" và Function "<mã Function> " là nh nhau

Ví dụ: Function "D" tơng đơng với Picture "@D"

Để qui định dữ liệu đa vào phải nằm trong một giới hạn nào đó đối với kiểu ký tự,

số hoặc kiểu ngày

Trong đó : <Bthức 1> là giới hạn dới và <bthức 2> là giới hạn trên Nếu ta chỉ có giới hạn dới thì không ghi <bthức 2>, ngợc lại nếu chỉ có giới hạn trên thì ta chỉ ghi <Bthức 2> với dấu phẩy (,) ở phía trớc để thông báo không có giới hạn dới

c Tham số VALID <BT Logic>

Chỉ thị VALID <BT Logic>: Nếu <BT Logic> nhận giá trị T (đúng) thì dữ liệu

đ-ợc nhập vào <Biến >, ngđ-ợc lại phải ấn phím Space để nhập lại

Ví dụ 1:

KT = ' '

Trang 20

@ 10,10 Say 'Còn nhập nữa không (C/K) ' Get KT;

Function "!" VALID KT $ 'CK'

Read

Biến KT chỉ nhận một trong 2 ký tự C, K (nếu ta gõ c,k thì function “!” đã chuyển thành C,K) Nếu ta gõ các ký tự khác thì FOXPRO thông báo ta phải gõ lại

d.Tham số WHEN <Bt logic>

Chỉ khi nào <Bt logic> nhận giá trị T (đúng) thì con trỏ mới nhảy vào vùng GET để nhập dữ liệu Nếu <Bt logic> nhận giá trị F (sai) thì con trỏ nhảy

về vùng GET tiếp theo

@4,2 say “Mã số : “ get MASO

@5,2 say “Họ và tên : “ get HOTEN when MASO<>” ”

@6,2 say “Ngày sinh : “ get NGAYSINH when HOTEN<>” “

@7,2 say “Hệ số lơng : “ get HESOL

read

Khi chạy chơng trình, các vùng nhập liệu của các biến hiện lên, con trỏ màn hình ở vùng nhập dữ liệu vào biến MASO, nếu nhập MASO<> “ “ thì con trỏ màn hình mới nhảy vào vùng nhập dữ liệu cho biến HOTEN, ngợc lại con trỏ chuyển xuống vùng nhập dữ liệu vào biến HESOL Vì MASO=” ” con trỏ không nhảy vào vùng nhập dữ liệu của biến HOTEN, nên giá trị của biến HOTEN=” “ thì con trỏ không nhảy vào vùng nhập dữ liệu của biến NGAYSINH

Bài tập 6 : biến và Cách sử dụng biến

Trong FOXPRO có 2 loại biến:

Biến nhớ (memory variable): là các biến trung gian đợc lập ra khi thực hiện

chơng trình hay thực hiện các câu lệnh trong khung cửa sổ lệnh

Biến trờng (field variable): là tên của các trờng trong trong file DBF đang

mở Biến trờng đợc tạo ra khi khai báo cấu trúc tệp CSDL và vẫn tồn tại trên đĩa khi ra khỏi FOXPRO hoặc mất điện và chỉ tồn tại trong bộ nhớ khi mở tệp CSDL chứa nó

Trang 21

1 Lệnh gán giá trị cho biến

a Gán giá trị cho biến nhớ:

<tên biến > = <giá trị>

Ngoài lệnh gán “=” còn có lệnh

STORE <Giá trị> TO <danh sách biến nhớ>

Trong đó : <giá trị > có thể là hằng, biến hoặc một biểu thức

Biến nhớ không cần phải khai báo trớc, kiểu của biến nhớ tuỳ vào kiểu <giá trị>

SUM TO <Biến nhớ>

AVERAGE TO <Biến nhớ>

COUNT TO <Biến nhớ>

Trong trờng hợp ta muốn ghi các biến nhớ lên đĩa để lần khởi động sau dùng

đến, hãy ghi các biến này lên dĩa ta dùng lệnh:

SAVE TO <Tên tệp> [ALL LIKE <Kiểu biến>/ALL EXCEPT <Kiểu biến>]

Trờng hợp ta cần dùng đến biến đã ghi tên đĩa, ta dùng lệnh:

RESTORE FROM <Tên tệp.MEM> [ADDITIVE]

Nếu không chỉ thị [ ADDITIVE] thì khi thực hiện lệnh RESTORE sẽ huỷ bỏ các biến đã tồn tại

Ví dụ:

RESTORE FROM TEPBIEN1

Xoá biến nhớ:

Trang 22

Khi không cần đến biến nhớ ta hãy xoá một phần hay toàn bộ các biến nhớ

để giải phóng chỗ cho các biến bộ nhớ khác, bằng một trong các cách sau:

- CLEAR ALL: Xoá tất cả các biến nhớ và đồng thời cũng đóng tất cả các tệp CSDL

- CLEAR MEMORY: Xoá tất cả các biến nhớ

- RELEASE: Lệnh này có tác dụng sau

+ RELEASE <Danh sách biến>: Xoá các biến trong danh sách

+ RELEASE ALL: Xoá tất cả các biến ở chế độ trực tiếp ( ở chế độ hội thoại), và xoá các biến riêng trong chế độ gián tiếp (trong chơng trình).+ RELEASE ALL LIKE <Kiểu biến >: Xoá tất cả các biến nhớ đợc chỉ thị

trong kiểu biến (có thể dùng ký tự đại diện *

và ?)

+ RELEASE ALL EXCEPT <Kiểu biến >: Xoá tất cả các biến nhớ ngoài

chỉ thị trong kiểu biến (có thể dùng ký tự đại diện * và ? )

Biến hệ thống:

Ngoài các biến nhớ của ngời sử dụng đa ra, FOXPRO còn tự tạo ra và duy trì một số biến đặc biệt gọi là biến hệ thống( System memory variable) Các biến này chứa các thông tin để định dạng kết quả kết xuất ra máy in hay trên màn hình

Tên của biến hệ thống bao giờ cũng bắt đầu bằng dấu gạch dới(_), do đó khi

đặt tên biến ta không nên đặt tên biến nhớ có ký tự gạch dới ở đầu biến

Ví dụ: Các biến hệ thống nh:

_PPITCH Chọn chế độ in

_PLENGTH Qui định số dòng của trang giấy

_PSPACING Điều khiển việc nhảy dòng trớc khi in

b Gán giá trị cho biến trờng:

Để gán giá trị vào một trờng của một bản ghi hiện thời trong tệp DBF đang mở

ta dùng lệnh:

REPLACE <biến trờng> WITH <giá trị>

Trong đó: kiểu dữ liệu của <giá trị> phải cùng kiểu với kiểu của <biến trờng> đã

đợc khai báo trong phần khai báo cấu trúc của tệp cơ sở dữ liệu

Trang 23

Lu ý: Trong trờng hợp tại một thời điểm xử lý biến nhớ trùng tên với biến trờng thì

FOXPRO bao giờ cũng u tiên cho biến trờng trớc

2 Biến mảng

Mảng là một dạng đặc biệt của biến nhớ, trong đó mỗi phần tử mảng là một biến nhớ, chúng đợc viết cùng tên và phân biệt với nhau ở phần chỉ số Ta có thể dùng mảng một chiều hoặc mảng hai chiều

-Trong một mảng các phần tử có thể nhận các giá trị có các kiểu khác nhau

- Trong trờng hợp khi dùng lệnh DIMESION để khai báo <tên mảng> trùng với tên biến nhớ đã tồn tại thì biến này sẽ trở thành biến mảng

M=10Khi này toàn mảng M gồm 10 phần tử đều nhận giá trị là 10 Ngoài ra ta cũng có thể gán cho mảng một chuỗi ký tự, giá trị logic

- Gán giá trị cho từng phần tử của mảng:

Trang 24

Ví dụ:

DIMENSION M(6)STORE 10 TO M(1),M(4), M(5)M(2)= “Tran Van Nam”

Các phần tử của mảng đã đợc khai báo, khi chạy chơng trình đợc cấp phát các

ô nhớ tơng ứng theo kiểu tuần tự, hết hàng này đến hàng khác nên một mảng 2 chiều có thể đợc sử dụng tơng tự nh mảng một chiều

Ví dụ 1: Nếu ta khai báo

Các thao tác gán giá trị vào các phần tử của mảng 2 chiều cũng tơng tự nh

đối với mảng một chiều

3 Trao đổi dữ liệu giữa DBF và mảng

3.1 Lệnh lấy dữ liệu từ bản ghi ra mảng

Cú pháp:

SCATTER [FIELDS <DS trờng > ] TO <Tên mảng>

Trang 25

- Lệnh này đọc dữ liệu từ bản ghi hiện thời của một file DBF đang mở ra mảng.

Cơ chế đọc:

Đọc trờng 1 của bản ghi hiện thời vào phần tử 1 của mảng

Đọc trờng 2 của bản ghi hiện thời vào phần tử 2 của mảng

A(1) A(2) A(3) A(4)

3.2 Lệnh lấy dữ liệu từ mảng vào bản ghi

Cú pháp:

GATHER FROM <Tên mảng > [FIELDS <DS trờng >]

Lệnh này chuyển dữ liệu từ một mảng vào một bản ghi hiện thời của file DBF

Trang 26

Khi đó FOXPRO sẽ thực hiện chuyển dữ liệu mảng A vào bản ghi số 2 theo thứ tự sau:

A(1) A(2) A(3) A(4)

• Kiểu dữ liệu của các phần tử của mảng phải phù hợp với kiểu của các trờng

• Nếu không dùng chỉ thị FIELDS <DS trờng> thì tất cả các trờng đều đợc xét Còn nếu dùng tuỳ chọn FIELD <DS trờng> thì chỉ có các trờng trong <DS tr-ờng> mới đợc xét

Ví dụ: Ta có tệp HOCSINH.DBF khi nhập vào thông tin từ một mảng M vào CSDL

USE CANBO ↵

APPEND BLAN ↵

GATHER FROM M FIELDS HOTEN, NGAYSINH

3.3 Lệnh bổ sung dữ liệu một mảng vào cuối tệp

APPE FROM ARRAY M

3.4 Xem danh sách các biến nhớ

Muốn liệt kê các biến nhớ ra màn hình hoặc in ra giấy hoặc ghi ra một tệp, ta

có thể sử dụng một trong 2 lệnh sau:

DISPLAY MEMORY [LIKE <Dạng biến>] [TO PRINTER/ TO FILE

Trang 27

LIST MEMORY [LIKE <dạng biến>] [TO PRINTER/ TO FILE <Tên tệp>]

Nếu ta chỉ thị TO PRINTER thì nội dung các biến sẽ đợc ghi ra giấy Nếu ta chỉ thị TO FILE <tên tệp > thì nội dung các biến đợc đa vào tệp có tên là <tên tệp>

Bài tập 7: Các lệnh cấu trúc của Foxpro

1 Cấu trúc IF ELSE ENDIF

Nội dung chơng trình:

Set talk offSet status off

Trang 28

CleaInput “a=” to aInput “b=” to bMax2=a

If max2<b Max2=bEndif

?’So lon nhat : ‘,max2wait

Set talk onSet status on

LËp ch¬ng tr×nh gi¶i ph¬ng tr×nh bËc 2: ax2 + bx + c = 0 , víi a ≠ 0

Néi dung ch¬ng tr×nh:

Set status off

Set talk off

Trang 30

Néi dung ch¬ng tr×nh:

Set status offSet talk offclear

Input “Cho biÕt th¸ng : “ to tInput “Cho biÕt n¨m : “ to n

DO CASE CASE t=4.or.t=6.or.t=9.or.t=11 Songay=30

CASE t=2

If mod(n,4)=0 Songay=29 Else

Songay=28 Endif

OTHERWISE Songay=31ENDCASE

?”Th¸ng “+str(t,2)+” n¨m “+str(n,4)+” cã “+str(songay,2)+” ngµy”wait “ “

set status onset talk onretu

3 CÊu tróc lÆp for endfor

Trang 31

Dau=1For i=1 to n step 2S=s+dau/i

Dau=-dauEndfor

?”Sè π lµ : “+str(s*4,6,4)wait

set status onset talk on

Trang 32

Trên đĩa có file HOSO.DBF có cấu trúc nh sau:

Field name Type Width Dec chú thích

Trang 33

@3,10 say "Hä vµ tªn : " get _HOTEN

@4,10 say "Ngµy ssinh : " get _NGAYSINH

@5,10 say "HÖ sè l¬ng : " get _HESOL pict "99.99"

read

if

emty(_MACB).or.empty(_HOTEN).or.empt(_NGAYSINH).or.empt(_HESOL)

wait "D÷ liÖu kh«ng hîp lÖ Mêi nhËp l¹i !!!" wind

LOOPendif

appe blank

repl MACB with _MACB, HOTEN with _HOTEN, ;

NGAYSINH with _NGAYSINH, HESOL with _HESOL

wait ' Cã nhËp tiÕp kh«ng C/K ? ' to x wind

if uppe(x) = 'K'

exitendif

Trang 34

Trên đĩa có file HOSO.DBF có cấu trúc nh sau:

Field name Type Width Dec chú thích

Trong đó: LUONG = HESOL*450000

Bộ LĐTB & XH Cộng hoà xã hội chủ nghĩa Việt nam

3.262.724.12

9744007888001194800

Trang 35

Giả sử trên đĩa có file SINHVIEN.DBF với cấu trúc nh sau:

Field Field Name Type Width Dec Chú thích

1 MASV Character 6 Mã sinh viên

2 TENSV Character 25 Tên sinh viên

3 DTOAN Numeric 5 Điểm toán

4 DLY Numeric 5 Điểm lý

5 DTIN Numeric 5 Điểm tin

6 DNGOAINGU Numeric 5 Điểm ngoại ngữ

7 DTRIET Numeric 5 Điểm triết

8 DPHAPLUAT Numeric 5 Điểm pháp luật

9 DDAODUC Numeric 5 2 Điểm đạo đức

10 DTBCMR Numeric 7 2 Điểm trung bình chung mở rộng

11 XEPLOAI Character 10 Xếp loại

Lập chơng trình thực hiện các công việc sau:

Trang 36

n m DTBHT

1

1

*

- TÝnh DTBCMR (®iÓm trung b×nh chung më réng), biÕt r»ng hÖ sè c¸c m«n häc

nh sau : TOAN (5), LY(4), TIN (5), NGOAINGU (3), TRIET (3), PHAPLUAT (4), vµ tÝnh theo c«ng thøc sau:

- XÕp lo¹i häc tËp vµ rÌn luyÖn cho sinh viªn biÕt r»ng:

Trang 37

Mỗi thủ tục trong tệp thủ tục có dạng:

PROCEDURE <tên thủ thục> && bắt đầu thủ tục

< thân thủ tục>

RETURN && kết thúc thủ tục

Để thực hiện một thủ tục trong tệp thủ tục trớc hết ta phải khởi động tệp thủ tục bằng lệnh:

SET PROCEDURE TO <Tên tệp thủ tục>

Sau đó muốn gọi thủ tục nào ta chỉ việc dùng lệnh:

DO <Tên thủ tục>

Hạn chế:

- Tệp thủ tục quá dài

Trang 38

- Tại một thời điểm FOXPRO chỉ mở đợc một thủ tục, nếu mở tệp thủ tục khác thì tệp cũ sẽ bị đóng.

“,”

Để gọi một thủ tục có tham số ta dùng lệnh:

DO <Tên thủ tục> WITH <Danh sách giá trị>

Trong đó: <Danh sách giá trị> cách nhau bởi dấu phẩy và lần lợt truyền vào các tham số khai báo ở chơng trình con khai báo sau từ khoá PARAMETER

Ví dụ 1: Thủ tục in dòng thông báo ra giữa màn hình

PROCEDURE CENTERPARA thong_bao

N=int((80-len(thong_bao))/2)

?space(n)+thong_baoRETURN

Nếu trong chơng trình gặp lời gọi chơng trình:

DO CENTER WITH “Trờng cao đẳng s phạm kỹ thuật Vinh”

Thì sẽ in dòng thông báo “Trờng cao đẳng s phạm kỹ thuật Vinh” ra giữa màn hình

Bài luyện tập:

Trang 39

Đổi giá trị của hai biến a, b đợc nhập từ bàn phím:

Nội dung chơng trình:

SET TALK OFFClear

Input “a=” to aInput “b=” to b

Do DOI WITH a,b

?”a=”,a

?”b=”,bwait “ “SET TALK ONRETU

PROCEDURE DOIPARA a1,b1

* -Tg=a1A1=b1B1=tgRETURN

3 Hàm của ngời dùng (UDF _ User Defined Function)

Hàm của ngời dùng là một chơng trình con nhằm tính toán và trả lại một giá trị duy nhất thuộc một kiểu dữ liệu nào đó

Giá trị của <biểu thức> là giá trị của hàm mỗi khi hàm đợc gọi

Lời gọi hàm của ngời sử dụng cũng giống nh lời gọi hàm mẫu trong FOXPRO

Cú pháp:

<Tên hàm>(<Danh sách giá trị>)

Đối với các hàm không có tham số ta có thể gọi hàm:

<Tên hàm>( )

Ngày đăng: 02/07/2013, 01:25

Xem thêm

HÌNH ẢNH LIÊN QUAN

3. Bảng chọn ngang: - De cuong th fox
3. Bảng chọn ngang: (Trang 57)

TỪ KHÓA LIÊN QUAN

w