1. Trang chủ
  2. » Công Nghệ Thông Tin

Giáo trình Hệ quản trị cơ sở dữ liệu: Phần 2 - ĐH Sư phạm kỹ thuật Nam Định

151 7 0

Đ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 đề Lập trình trong visual foxpro
Trường học ĐH Sư phạm kỹ thuật Nam Định
Thể loại Giáo trình
Thành phố Nam Định
Định dạng
Số trang 151
Dung lượng 1,39 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tiếp nội dung phần 1, Giáo trình Hệ quản trị cơ sở dữ liệu: Phần 2 cung cấp cho người học những kiến thức như: Lập trình trong Visual Foxpro; Lập trình hướng đối tượng; Phân phối ứng dụng và tạo bộ đĩa cài đặt. Mời các bạn cùng tham khảo để nắm chi tiết nội dung giáo trình!

Trang 1

Chương 7 LẬP TRÌNH TRONG VISUAL FOXPRO

7.1 Giới thiệu về lập trình

Trong Visual FoxPro, lập trình thủ tục (lập trình cấu trúc) và phương pháp lập trình hướng đối tượng làm việc chung với nhau, vì thế ta có thể tạo các ứng dụng một cách mềm dẻo Lập trình thủ tục là viết một dãy các lệnh liên tiếp với nhau để thực hiện một nhiệm vụ nào đó

Thông thường bất cứ nhiệm vụ nào làm bằng chương trình đều có thể làm bằng hội thoại hoặc sử dụng công cụ nếu có thời gian

7.1.1 Các kỹ thuật lập trình trong Visual FoxPro

Ta có thể viết chương trình trong Visual FoxPro bằng cách viết các câu lệnh trong:

- Cửa sổ lệnh

- Trong một file chương trình

- Trong các cửa sổ tình huống (Sự kiện- Event) hay phương thức (Method) của Form Designer,

- Trong các cửa sổ thủ tục của Form Designer,

1) Sử dụng cửa sổ lệnh

Ta có thể thực hiện các câu lệnh bằng cách gõ chúng vào cửa sổ lệnh rồi ấn phím Enter Để thực hiện lại các câu lệnh này ta di chuyển con trỏ đến dòng chứa câu lệnh đó rồi ấn phím Enter Ta cũng có thể cho thực hiện nhiều dòng lệnh một lúc bằng cách sau:

- Chọn các dòng lệnh cần thi hành

- Ấn phím Enter

Việc thi hành lệnh trên cửa sổ lệnh có ưu điểm là không lưu các lệnh cần thực hiện vào một file chương trình mà vẫn thực hiện được các lệnh đó

Trang 2

2) Các bước tạo một file chương trình

a) Một file chương trình Visual FoxPro là một file văn bản chứa dãy các câu lệnh có phần mở rộng là PRG Để tạo một file chương trình ta thực hiện một trong các cách sau:

 Trong cửa sổ Project Manager, chọn trang Code, sau đó chọn mục Program rồi chọn nút New

 Trong cửa sổ lệnh gõ vào lệnh Modify Command <Tên chương trình> b) Mẫu một File chương trình

 Phần giới thiệu: Tên chương trình, ngày viết, tác giả Trước mỗi dòng của phần này đều có dấu *

 Phần thiết lập môi trường nhờ các lệnh SET

 Phần nhập dữ liệu: Khởi tạo các hằng, biến Nhập dữ liệu cho các biến nhớ,

mở các CSDL

 Phần tính toán: Thực hiện các nhiệm vụ của chương trình

 Phần in kết quả tính toán

 Phần kết thúc: Đóng các bảng CSDL, trả về môi trường làm việc cũ

Ví dụ: Chương trình sau tìm và in ra họ tên, ngày sinh và năm làm việc của một nhân

viên trong bảng nhanvien.dbf có mã nhân viên nhập từ bàn phím

set talk off

set date to french

set default to c:\dulieu

clear

close all

use nhanvien

accept 'nhap ma nhan vien:' to bma

locate for MANV =bma

if found()

? 'Ho va ten:' , hoten

? ' ngay sinh:', ngaysinh

?'nam lam viec:', namlv

Trang 3

7.1.2 Lưu file chương trình

Sau khi tạo xong một file chương trình để lưu chương trình lên đĩa ta chọn Menu File/ Chọn Save

Nếu tạo file chương trình trong cửa sổ Project Manager, chương trình này sẽ được đưa vào đề án (Project)

7.1.3 Sửa chương trình

Để sửa một chương trình đã có ta thực hiện một trong các cách sau:

- Trong cửa sổ Project Manager chọn trang Code/ chọn mục Program/ Chọn chương trình cần sửa/ Chọn nút Modify

- Trong cửa sổ lệnh gõ vào lệnh Modify Command <Tên chương trình>

7.1.4 Thực hiện chương trình

Để thực thi một chương trình, ta thực hiện theo các cách sau:

- Nếu chương trình nằm trong một Project, chọn chương trình trong Project Manager , rồi chọn nút Run

- Trong cửa sổ lệnh, gõ lệnh Do <Tên file chương trình> Có thể gõ do ? để hiện lên danh sách các chương trình (Nếu không nhớ chương trình)

7.1.5 Ghi chú trong chương trình

Trong khi soạn thảo một chương trình, nên tập thói quen ghi chú cho từng câu lệnh Việc ghi chú giúp cho chương trình dễ đọc, dễ hiểu, dễ bảo trì Khi chạy chương trình máy bỏ qua phần ghi chú

Để ghi chú trong chương trình, ta sử dụng kí hiệu * hoặc && đặt trước mỗi câu ghi chú

* Sử dụng cho câu ghi chú nằm trên một dòng

&& Sử dụng cho câu ghi chú nằm cuối câu lệnh

Trang 4

7.2 Chương trình con

Chương trình con là một chương trình được một chương trình khác gọi nó tại một nơi nào đó trong thân chương trình Chương trình gọi chương trình con gọi là chương trình gọi Chương trình gọi có đuôi là PRG được người sử dụng gọi nó tại cửa

sổ lệnh gọi là chương trình chính

Visual FoxPro có hai loại chương trình con: thủ tục và hàm Các tệp chương trình riêng lẻ trên đĩa cứng cũng coi như là một thủ tục Thủ tục và hàm cho phép lưu đoạn chương trình thường được sử dụng trong một nơi và có thể gọi thi hành nó mọi nơi trong ứng dụng Điều này làm cho ứng dụng dễ dàng trong việc bảo trì vì nếu có sửa đổi thì chỉ cần sửa đổi một nơi thay cho nhiều nơi

7.2.1 Hàm tự tạo

Hàm tự tạo là một chương trình do người dùng lập ra, nó nhằm trả về cho chương trình gọi nó một giá trị duy nhất thuộc một kiểu dữ liệu nào đó Hàm tự tạo có cấu trúc sau:

Trang 5

SET TALK OFF && bật chế độ lập trình

CLEAR

ACCEPT „Họ và tên: ‟ TO ht

INPUT „Điểm toán: ‟ TO t

INPUT „Điểm văn: ‟ TO v

INPUT „Điểm lý: ‟ TO l

INPUT „Điểm anh: ‟ TO a

? ht + „ tốt nghiệp loại: ‟ + loai(t,v,l,a)

WAIT „‟

SET TALK ON && bật chế độ đối thoại

* Phần trình bày chương trình con

Trang 6

ENDPROCEDURE | RETURN

Lệnh gọi thủ tục: Ta gọi thủ tục theo mẫu

DO <Tên_thủ_tục> WITH <d.sách_tham_số_thực_sự> [IN <Tên_tệp>]

Danh sách các tham số thực sự phải tương ứng với các tham số hình thức Phần

IN <Tên_tệp> dùng để chỉ ra tệp chứa thủ tục cần gọi Lời gọi thủ tục được sử dụng như một câu lệnh Visual FoxPro coi các tệp chương trình như là các thủ tục

INPUT „Chiều dài: ‟ TO dai

INPUT „Chiều rộng: ‟ TO rong

STORE 0 TO p, s, c

DO chunhat WITH dai,rong,p,s,c

? „Chu vi: ‟, p , ‟Diện tích: ‟ , s , „Đường chéo: ‟, c

1) Tổ chức thành các tệp chương trình riêng biệt

Ta có thể viết các chương trình con dưới dạng các chương trình (có đuôi PRG) và lưu thành từng tệp riêng biệt trên đĩa Giả sử trên đĩa có các tệp ct1.PRG, ct21.PRG, ct22.PRG, ct221.PRG

Trong chương trình ct1.PRG có các lệnh:

DO CT21

Trang 7

Cách tổ chức trên có ưu điểm là các chương trình con có tính độc lập Song có nhược điểm thời gian thực hiện chương trình lâu vì máy phải đọc chương trình trên đĩa nhiều lần Cách tổ chức này tiện lợi khi thử chương trình Sau khi chương trình chạy thông, ta nên gộp các chương trình con thành một tệp thủ tục

2) Tổ chức các chương trình con ngay trong chương trình gọi

Nếu độ dài các chương trình con không dài quá, ta có thể tổ chức chúng thành các hàm hay thủ tục và viết chúng vào cuối chương trình gọi theo mẫu:

SET PROCEDURE TO THUVIEN1.PRG

<Dãy_lệnh>

DO CT21

<Dãy_lệnh>

Trang 8

Ta có thể không cần dùng tới lệnh SET PROCEDURE TO THUVIEN1.PRG mà dùng lệnh sau:

DO <Tên_thủ_tục> [ WITH <d.sách_th.số_thực_sự>] IN THUVIEN1.PRG

Ví dụ: DO CT21 IN THUVIEN1.PRG

4) Tổ chức các chương trình con trong các cửa sổ thủ tục, sự kiện, phương thức, trang code của project manager,

(sẽ giới thiệu ở phần sau)

7.3 Biến toàn cục, biến cục bộ

bộ tự động mất đi khi chương trình con khai báo nó thực hiện xong hoặc gặp trong các lệnh: QUIT, CLEAR ALL, CLEAR MEMORY, RELEASE <danh_sách_biến>

Trang 9

Khi đã che chắn một biến thì việc thay đổi các giá trị của biến ở chương trình cấp dưới không làm thay đổi các giá trị vốn có của nó ở chương trình cấp cao hơn

* Đến đây biến x,y không xác định

x = 33 && khai báo biến x mới và khởi đầu

y = 44 && khai báo biến y mới và khởi đầu

PRIVATE a, b, i, j, alpha, z

Trang 10

7.4 Truyền tham số

Khi một chương trình A gọi thực hiện chương trình con B, chương trình A có thể truyền cho B một giá trị (hằng, biến, biểu thức) để sử dụng Ngược lại trong quá trình thực hiện, B có thể thay làm đổi giá trị một số biến của A Đó chính là sự truyền tham

số Có hai hình thức truyền tham số:

7.4.1 Truyền theo giá trị (truyền theo tham trị):

A truyền tham số cho B, trị của tham số trong B có thể bị thay đổi, nhưng trị nguyên thủy của tham số trong A không bị thay đổi

7.4.2 Truyền theo địa chỉ (truyền theo tham biến):

A truyền tham số cho B, nếu trị của tham số trong B bị thay đổi thì trị nguyên thủy của tham số trong A cũng thay đổi theo

Việc truyền tham số cho thủ tục: Visual Foxpro mặc định các biến nhớ truyền theo địa chỉ, các tham số khác (các biểu thức và các biến trường) truyền theo giá trị Để cho một biến đơn truyền theo giá trị ta phải đặt nó trong 2 dấu ngoặc đơn (xem như là một biểu thức)

Ví dụ 1: Biến LUONG được truyền cho thủ tục theo giá trị

SET TALK OFF CLEAR

hoten = „Nguyễn Văn An‟

ngaysinh = {09/23/49}

luong = 500 phucap = 200

Do Thutuc1 WITH hoten, ngaysinh, (luong), phucap IN Thutuc

? hoten, ngaysinh,luong, phucap WAIT „‟

*Tệp Thutuc.PRG có nội dung sau:

PROCEDURE Thutuc1 PARA ht,ns,lg,ph

? ht,ns,lg,ph

ht = „Trần Bình‟

ns = „Không nhớ ngày sinh‟

Trang 11

lg = 1000

ph = 300 RETURN Kết quả khi chạy chương trình:

Nguyễn Văn An 09/23/49 500 200 Trần Bình Không nhớ ngày sinh 500 300 Việc truyền tham số cho hàm tự tạo có thể theo địa chỉ và theo giá trị, mặc định

là theo giá trị Để thiết lập việc truyền tham số cho hàm tự tạo theo địa chỉ thì phải dùng lệnh:

SET UDFPARMS TO REFERENCE Khi kết thúc chương trình nên thiết lập lại chế độ truyền tham số theo giá trị (mặc định) bằng lệnh:

SET UDFPARMS TO VALUE

Ta cũng có thể truyền tham số theo giá trị hay theo địa chỉ cho hàm tự tạo mà không cần dùng lệnh SET UDFPARMS TO REFERENCE bằng cách: muốn truyền theo giá trị thì đặt các tham số của hàm trong dấu ngoặc đơn bình thường, muốn truyền theo tham biến thì trước tham số truyền theo tham biến phải có dấu @ Hãy xem Ví dụ

2 ở dưới

Các tham số là biến mảng khi truyền vào hàm tự tạo nhất thiết phải truyền theo địa chỉ, nếu truyền theo giá trị sẽ bị lỗi Muốn truyền các biến mảng vào hàm thì ta phải dùng SET UDFPARMS TO REFERENCE hoặc đặt @ trước tên biến mảng Chú ý:

Lệnh SET UDFPARMS TO VALUE không có tác dụng đối với thủ tục

Khi dùng lệnh SET UDFPARMS TO REFERENCE mà cuối chương trình không có SET UDFPARMS TO VALUE thì lệnh SET UDFPARMS TO VALUE vẫn

bị ảnh hưởng tới các lần chạy sau đối với các chương trình khác Lỗi này rất khó phát hiện Nói chung nên dùng @ để truyền theo địa chỉ

Ví dụ 2:

SET TALK OFF CLEAR

Trang 12

u = u + 2

v = v + 2 RETURN u + v Kết quả khi chạy chương trình:

Ban đầu: x =1 y = 1 Trị hàm = 6

Sau khi gọi hàm: x = 3 y = 3

Ban đầu: x = 1 y = 1 Trị hàm = 6

Sau khi gọi hàm: x = 1 y = 1

Trang 13

CLEAR INPUT „Vào số phần tử của mảng: ‟ TO n DIME a(n),b(n)

FOR i =1 TO n INPUT „a(„+LTRIM(STR(i)+‟) = ‟ TO a(i) INPUT „b(„+LTRIM(STR(i)+‟) = ‟ TO b(i) ENDFOR

t = tvh(n,a,b) && Lệnh 2

? „Tích vo hướng: ‟+ STR(t,9,5) WAIT „ ‟

SET UDFPARMS TO VALUE

*************************************

FUNCTION tvh PARA n,a,b

s = 0

FOR i=1 TO n

s = s+a(i)*b(i) ENDFOR RETURN Nếu bỏ lệnh (1) thì lệnh (2) là sai cú pháp vì phần tử mảng bao giờ cũng truyền theo địa chỉ Nếu bỏ lệnh (1) hoặc lệnh (1) là SET UDFPARMS TO VALUE thì lệnh (2) phải đổi là: t = tvh(n,@a,@b)

7.5 Một số câu lệnh của Visual FoxPro

7.5.1 Các câu lệnh thiết lập môi trường làm việc

SET DATE TO FRENCH | AMERICAN thiết lập ngày tháng dạng dd/mm/yy hoặc mm/dd/yy (ngầm định là AMERICAN)

SET CENTURY ON | OFF : thiết lập năm có 4 chữ số (ngầm định là OFF) SET TALK ON | OFF : bật/tắt chế độ đối thoại (ngầm định là ON)

SET DEFAULT TO <đường dẫn> : chọn thư mục làm việc

CLEAR : xoá sạch màn hình

Trang 14

CLEAR ALL: xoá sạch biến nhớ

CLOSE ALL: đóng tất cả các tệp đang mở

7.5.2 các câu lệnh vào, ra dữ liệu đơn giản

Cú pháp ACCEPT [<lời nhắc>] to <biến chuỗi>

Chức năng : Khi gặp lệnh này máy in ra màn hình lời nhắc (nếu có), chờ người

sử dụng nhập một chuỗi từ bàn phím vào cho biến chuỗi

Ví dụ:

ACCEPT „nhap ho ten‟ to bhoten

b) Lệnh INPUT

Cú pháp: INPUT [<Lời nhắc>] to <biến nhớ>

Chức năng: Tương tự lệnh ACCEPT nhưng khác ở chỗ người sử dụng có thể nhập dữ liệu có kiểu bất kỳ cho biến nhớ Khi nhập dữ liệu cần chú ý:

- Kiểu Character: Phải được đặt trong cặp dấu ' ' hay " "

- Kiểu Numberic: Nhập như số bình thường

- Kiểu Date: Phải được để trong dấu {}

- Kiểu Logic: Nhập giá trị T hay F

Ví dụ:

INPUT 'Nhap ngay sinh' TO bngaysinh INPUT 'Nhap diem‟ TO bdiem

Trang 15

c) Lệnh WAIT

Cú pháp: WAIT [< lời nhắc>] to <biến chuỗi> [WINDOW]

Chức năng: In ra màn hình lời nhắc (nếu có) và chờ người sử dụng ấn một phím bất kỳ, ký tự gõ vào được lưu vào biến chuỗi Nếu không có lời nhắc máy in ra màn hình dòng chữ “Press any key to continue…” Từ khoá WINDOW dùng để hiện lời nhắc ở cửa sổ nhỏ góc trên, bên trái màn hình

Lệnh ? đưa con trỏ xuống dòng mới, in kết quả của các biểu thức, in xong con trỏ

ở cuối giá trị của biểu thức sau cùng

Lệnh ?? không đưa con trỏ xuống dòng mới, in ngay kết quả các biểu thức tại vị trí con trỏ, in xong con trỏ ở cuối giá trị của biểu thức sau cùng

Trang 16

luong = 554.550

phucap = 150.50 clear

@11,20 say „Họ và tên: ‟ + hoten

@12,20 say „Ngày sinh: ‟ + dtoc(ngaysinh)

@13,20 say „Giới tính: ‟ + iif(gioitinh,‟Nam‟,‟Nữ‟)

@14,20 say „Lương chính: ‟ + str(luong,7,2)

@dòng1, cột1 SAY <Lời nhắc1> GET <biến1>

@dòng2, cột2 SAY <Lời nhắc2> GET <biến2>

@1,1 say 'Ma khach hang: ' get Makh

@3,1 say 'Ho ten: ' get Tenkh

@4,1 say 'Gioi tinh: ' get Gioitinh

@5,1 say 'Dia chi: ' get Diachi

@6,1 say 'Dien thoai: ' get Dienthoai

@7,1 say 'An Ctrl+W de ghi lai ban ghi vua sua'

Read

Trang 17

7.6 Các cấu trúc điều khiển chương trình

Ví dụ: Viết chương trình nhập vào hai số, cho biết số lớn nhất

set talk off clear Input “Nhap so thu nhat” to so1 Input „Nhap so thu hai' to so2 max=so1

If max < so2

max=so2 Endif

? "So lon nhat la:”, max set talk on

return

Trang 18

Ví dụ: Dựa vào bảng nhanvien.dbf, hãy nhập vào một họ tên nhân viên, tìm

xem có đúng là nhân viên của công ty hay không, nếu đúng thì thông báo năm sinh và năm làm việc, ngƣợc lại thì thông báo là không phải nhân viên của công ty

set talk off

set date to french

set defaut to c:\dulieu

clear

close all

use NHANVIEN

accept 'nhap ho ten nhan vien:' to bhoten

locate for HOTEN =bhoten

if found()

? ' ngay sinh là:', ngaysinh'

? 'nam lam viec:', namlv else

? 'khong phai la nhan vien cua cong ty' endif

set talk on

return

Trang 19

Trong trường hợp không có <bthức Li> nào với i từ 1 đến n có giá trị T thì

<dãy lệnh n+1> sẽ được thực hiện nếu có

Ví dụ: Viết chương trình nhập vào một năm (có 4 chữ số), sau đó nhập thêm một

tháng, cho biết tháng này có bao nhiêu ngày

set talk off

set date to french

set defaut to c:\dulieu

clear

Trang 20

input 'nhap vao mot nam' to bnam

input 'nhap vao mot thang' to bthang

do case

case bthang = 4 or bthang = 6 or bthang = 9 or bthang = 11

songay =30 case bthang = 2

if (mod(bnam, 4) = 0 and (mod(bnam, 100) <> 0)

songay = 29 else

songay = 28 endif

otherwise

songay =3 1 endcase

? 'thang', bthang, 'nam', bnam, 'co', so ngay, 'ngay'

Trang 21

động quay lại kiểm tra điều kiện trong <Bthức L> và cứ tiếp tục nhƣ thế mãi cho đến khi <Bthức L> có giá trị F

Ví dụ: Cho biết dang sách họ tên của các nhân viên trong công ty

set talk off set date to french set defaut to c:\dulieu clear

close all use NHANVIEN

? 'danh sach ho ten hoc vien la:'

do while !eof()

? HOTEN skip enddo set talk on return

Chú ý: Khi sử dụng cấu trúc này, dãy lệnh trong thân vòng lặp phải làm thay đổi đƣợc

giá trị của <Bthức L> để đảm bảo tính kết thúc, nếu không có thể sẽ rơi vào vòng lặp

vô hạn

Ví dụ: Nhập vào một năm, hãy thông báo danh sách họ tên, ngày sinh của những nhân

viên làm việc trong năm đó, nếu không có thì thông báo là không có

set talk off

set date french

set defaut to c:\dulieu

clear

close all

use NHANVIEN

input “nhap nam lam viec" to bnam

set filter to NAMLV = bnam

count to dem

Trang 22

? ' khong co nhan vien nao' else

go top

? 'danh sach nhan vien lam viec năm', bnam

? "HO TEN NGAY SINH'

do while !eof()

? HOTEN, NGAYSINH skip

enddo endif

Chức năng: Khi gặp cấu trúc này trước hết <biến đếm> được gán giá trị của

<btN1>, rồi kiểm tra xem giá trị của <biến đếm> có nhỏ hơn hoặc bằng giá trị của

<btN2> không? ( nếu <btN3> lớn hơn 0) hoặc kiểm tra xem giá trị của <biến đếm> có lớn hơn hoặc bằng giá trị của <btN2> không? ( nếu <btN3> nhỏ hơn 0) nếu việc kiểm tra cho kết quả đúng thì <dãy lệnh> được thực hiện và biến đếm được cộng thêm giá trị của <btN3> rồi tự động quay lại việc kiểm tra, cứ tiếp tục như thế cho đến khi việc kiểm tra cho kết quả sai thì kết thúc cấu trúc lặp FOR và chuyển đến thực hiện lệnh sau ENDFOR Trường hợp không có mệnh đề STEP thì ngầm định là STEP 1

Trang 23

Ví dụ:

Nhập vào một dãy số dương từ bàn phím, quá trình nhập dừng khi nhập vào số 0, nếu nhập vào số âm thì yêu cầu nhập lại và in ra màn hình tổng các số dương vừa nhập

SET TALK OFF

Trang 24

ELSE

IF N = 0 EXIT ELSE

S = S + n ENDIF

USE <tên bảng dữ liệu>

Chức năng : Dùng để mở bảng dữ liệu tại vùng làm việc hiện thời

CLOSE ALL: Đóng tất cả các loại tệp đang mở

CLOSE DATABASES: Đóng tất cả các bảng CSDL trên tất cả các vùng

7.7.2 Dịch chuyển con trỏ bản ghi – Lệnh GO và SKIP

Tại một thời điểm Visual FoxPro chỉ làm việc với bản ghi, bản ghi này gọi là bản ghi hiện hành

Sau khi mở bảng CSDL bằng lệnh USE, bản ghi hiện hành là bản ghi đầu tiên trong CSDL Để dịch chuyển con trỏ bản ghi dùng lệnh sau:

Trang 25

GO <n>: Chuyển tới bản ghi có số hiệu là n

GO TOP: Chuyển tới bản ghi đầu tiên

GO BOTTOM: Chuyển tới bản ghi cuối cùng

SKIP: Dịch chuyển theo chiều tiến (về phía cuối bảng) một bản ghi

SKIP <n>: Dịch chuyển theo chiều tiến n bản ghi (nếu n>0) hoặc lùi lại n bản

ghi (nếu n<0)

7.7.3 Lệnh LOCATE

Cú pháp:

LOCATE FOR <Bthức L> [<Phạm vi>]

Chức năng: Lệnh này định vị con trỏ bản ghi của bảng dữ liệu hiện thời vào bản ghi đầu tiên (theo thứ tự trên xuống), thuộc <Phạm vi> thỏa mãn <Bthức L>

Hàm FOUND() cho giá trị T nếu tìm thấy, ngược lại cho giá trị F Trong trường hợp tìm thấy, để tìm kiếm tiếp tục hãy lặp lại lệnh:

CONTINUE

7.7.4 Lệnh BROWSE

Một số lệnh của Visual Foxpro có các tuỳ chọn:

[Phạm vi] nếu có thì phạm vi là một trong các giá trị sau:

ALL : Tất cả các bản ghi

REST : Tất cả các bản ghi từ bản ghi hiện thời đến hết bảng

NEXT <n> : n bản ghi từ bản ghi hiện thời về phía cuối bảng

RECORD <n> : Bản ghi có số hiệu là n

Cú pháp câu lệnh với các tham số hay dùng:

BROWSE [FIELDS <ds trường>][FOR <btL>]

Trang 26

Chức năng : Đưa ra các bản ghi thoả mãn điều kiện của bảng dữ liệu đang mở gồm các thông tin nằm trong <ds trường> để người sử dụng xem, sửa, bổ sung và xóa

Ví dụ:

USE hsns

BROWSE

Xuất hiện màn hình:

Manv HoTen Ngaysinh Gioi Donvi luong

001 Nguyễn Văn Thiều 01/08/48 T Kinh tế 500.05

002 Lê Quang Bình 12/25/50 T Tin học 605.50

003 Phạm Bích Hằng 09/29/70 F Du lịch 400.00

7.7.5 Bổ sung bản ghi – Lệnh APPEND

Cú pháp:

APPEND

Chức năng: Để bổ sung các bản ghi vào cuối bảng CSDL đang mở

Màn hình nhập dữ liệu như của lệnh CREAT, các thao tác nhập tương tự Nhập xong ấn CTRL + W để ghi lại

Lệnh bổ sung bản ghi trắng vào cuối tệp (không hiện màn hình nhập dữ liệu, con trỏ ở bản ghi trắng, hay dùng trong chế độ lập trình)

APPEND BLANK

7.7.6 Xóa bản ghi – Lệnh DELETE, RECALL, PACK, ZAP

1) Đánh dấu xóa một số bản ghi

Cú pháp:

DELETE [<phạm vi>] [FOR <btL>]

Phạm vi ngầm định là bản ghi hiện thời

2) Lệnh xóa hẳn các bản ghi đã đánh dấu xóa

PACK

3) Lệnh khôi phục các bản ghi đã đánh dấu xóa

RECALL [<Phạm vi>] [FOR <btL>]

Trang 27

Phạm vi ngầm định là bản ghi hiện thời

Kết quả xuất hiện màn hình:

Manv HoTen Ngaysinh Gioi Donvi luong

001 Nguyễn Văn Thiều 01/08/48 T Kinh tế 500.05

002 Lê Quang Bình 12/25/50 T Tin học 605.50

2) Đặt lọc các trường

Cú pháp:

SET FIELDS TO <danh sách các trường>

Chức năng:

Trang 28

Lệnh này dùng tạo ra bộ lọc trên bảng CSDL đang mở, sau lệnh này chỉ có các trường trong <danh sách các trường> mới được tham gia vào quá trình xử lý Sau khi đặt lọc ta có thể tắt hoặc bật việc đặt lọc các trường nhờ lệnh

SET FIELDS OFF | ON Khi đóng bảng CSDL lọc sẽ bị mất tác dụng

Chức năng: Lệnh này dùng để duyệt các bản ghi nằm trong phạm vi, thoả mãn

<Bthức L> của một bảng cơ sở dữ liệu đang mở và <Dãy lệnh> được thi hành với mỗi bản ghi được duyệt Duyệt xong mỗi bản ghi con trỏ tự động chuyển sang bản ghi tiếp theo Khi sử dụng lệnh này ta phải đưa con trỏ về đầu phạm vi

Ví dụ: Chương trình sau in ra màn hình danh sách các nữ nhân viên nằm trong bảng CSDL NHANVIEN gồm các thông tin họ tên, ngày sinh có năm sinh nhập vào từ bàn phím

SET TALK OFF

SET DATE FRENCH

SET DEFAUT TO c:\dulieu

CLEAR

CLOSE ALL

USE NHANVIEN

Trang 29

INPUT 'nhap nam lam viec" TO bnam

INPUT 'nhap nam:' TO bnam

? ' DANH SACH CAC NU NHAN VIEN, SINH NAM', bnam

SCAN for !GIOITINH and year(NGAYSINH)=bnam

?HOTEN, NGAYSINH ENDSCAN

SET TALK ON

7.8 Một số ví dụ về lập trình cơ sở dữ liệu

7.8.1 Chương trình nhập dữ liệu cho một bảng

Lập chương trình nhập dữ liệu cho tệp khhanh.dbf đặt trong thư mục dữ liệu ở ổ

C gồm các trường MaKH, TenKH, Gioitinh, Diachi, Dienthoai

Set talk off

Set default to c:\dulieu

append blank

@0,1 say „Nhap ban ghi: ‟ + str(recno(),4)

@2,1 say „Ma khach hang: ‟ get maKH

@3,1 say „Ho ten: ‟ get TenKH

@4,1 say „Gioi tinh: ‟ get Gioitinh default F

@5,1 say „Dia chi: ‟ get Diachi default „Nam Dinh‟

@6,1 say „Dien thoai: ‟ get Dienthoai

@7,1 say „An Ctrl+W de ghi lai ban ghi vua nhap‟

Read

enddo

use

set talk on

Trang 30

7.8.2 Chương trình tìm kiếm và xử lý bản ghi của một bảng

Giả sử tệp Khhang đã được sắp xếp theo chỉ mục theo biểu thức MaKH Lập chương trình thực hiện các công việc sau:

Nếu tìm thấy chương trình cho phép xoá bản ghi này (nếu muốn)

Ta tổ chức một tệp chương trình thư viện TV.PRG chứa các chương trình con tìm, sửa, xem, xoá một bản ghi đặt trong thư mục dữ liệu ở ổ C

@2,1 say 'Ban ghi: ' + str(recno(),4)

@3,1 say 'Ho ten: ' get Tenkh

@4,1 say 'Gioi tinh: ' get Gioitinh

@5,1 say 'Dia chi: ' get Diachi

@6,1 say 'Dien thoai: ' get Dienthoai

@7,1 say 'An Ctrl+W de ghi lai ban ghi vua sua'

Trang 31

Procedure xem

If found()

clear

@2,1 say 'Ban ghi: ' + str(recno(),4)

@3,1 say 'Ho ten: ' + Tenkh

@4,1 say 'Gioi tinh: ' + iif(Gioitinh,"Nam","Nu" )

@5,1 say 'Dia chi: ' + Diachi

@6,1 say 'Dien thoai: ' + Dienthoai

Nội dung chương trình chính CTC.PRG

Set talk off

Set default to c:\Dulieu

Trang 32

endif

mma=space(10)

@1,2 say „Nhap vao ma khach hang: ‟ get mma

Read

Do Tim with mma

@2,2 say „Chon chuc nang: 1-Sua 2-Xem 3-Xoa‟ get chon default 1

Do Xem Case chon=3

Do Xoa EndCase

enddo

7.8.3 Tìm kiếm trên nhiều bảng

Muốn tìm kiếm trên nhiều bảng, trước hết tạo một View bằng cách kết nối cả bảng lại Sau đó coi View như một bảng (bảng ảo) và tiến hành thực hiện tương tự

Ví dụ: Hãy đưa ra các thông tin gồm MaKH, TenKH, Diachi, TenMH, Soluong, Dongia, Thanhtien của khách hàng khi mua một mặt hàng trong mỗi lần

Trước hết Tạo view vidu bằng cách kết nối 3 bảng Khhang, MatHang, MuaBan gồm các thông tin: MaKH, TenKH, Diachi, TenMH, Soluong, Dongia, Thanhtien có Muaban=.F

Trang 33

Nội dung chương trình chính CTCVD.PRG

Set talk off

Set default to c:\Dulieu

Do Tim with mma in TV1

DO xem WITH mma in TV1

enddo

Close all

SET TALK on

Trang 34

Chương 8 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

Trong khi Visual FoxPro vẫn hỗ trợ cho lập trình hướng thủ tục, nó còn cung cấp thêm công cụ mạnh và uyển chuyển đó là lập trình hướng đối tượng, giúp hoàn thành nhanh chóng các ứng dụng

Thiết kế và lập trình hướng đối tượng trình bày một sự thay đổi về lập trình so với lập trình hướng thủ tục Thay vì việc nghĩ về luồng chương trình từ dòng đầu tiên đến dòng cuối cùng các câu lệnh, chỉ cần nghĩ về các đối tượng cần tạo

Lập trình hướng đối tượng dựa trên các khái niệm cơ bản: Class (lớp), Object (đối tượng), Event (sự kiện, biến cố, tình huống), Property (Thuộc tính) và Method (phương thức, cách thức, hành vi)

Ví dụ: Để lập chương trình giải phương trình bậc hai theo hướng thủ tục ta phải biên

soạn văn bản chương trình Giai_phuong_trinh_bac_2.prg

Set talk off

Trang 35

EndIf

Set talk on

Để lập chương trình giải phương trình bậc hai theo hướng đối tượng ta phải tạo ra một form; gắn các đối tượng vào form; xác định các thuộc tính cho các đối tượng; viết các đoạn mã lệnh cho các sự kiện

Chẳng hạn có thể tạo một form như sau:

Hình 8.1 Form giải phương trình bậc 2

Trang 37

thisform.kq.value=" phuong trinh vo nghiem "

8.1 Một số khái niệm cơ bản

8.1.1 Đối tượng trong Visual FoxPro

- Trong Visual FoxPro, các Form và các Control là các đối tượng liên quan đến ứng dụng

- Các đối tượng này được thể hiện thông qua các thuộc tính, được tác động thông qua các biến cố và cách thức của chúng

- Lập trình hướng đối tượng cung cấp một số lượng lớn các điều khiển (Control) cho các đối tượng trong những ứng dụng, giúp ta dễ dàng tạo và duy trì các thư viện của các câu lệnh để có thể dùng lại, nó cho ta:

Trang 38

8.1.2 Class và Object

- Lớp (Class) và đối tượng liên hệ chặt chẽ với nhau, nhưng chúng không giống nhau Một Class chứa thông tin về một đối tượng chính là bảng thiết kế, mẫu, khuôn dạng hay sơ đồ của đối tượng, còn một đối tượng là một minh họa cụ thể của lớp Như vậy một Class chứa các thuộc tính và các phương thức của đối tượng; đối tượng có các thuộc tính và các phương thức cụ thể Hay nói một cách khác: Lớp là một tập hợp các đối tượng tương tự nhau, có cùng tập các thuộc tính và các phương thức còn đối tượng

là một phần tử của lớp; mỗi thuộc tính của đối tượng có một giá trị cụ thể, xác định

- Các thuộc tính của lớp được hiểu như là các biến, còn các thuộc tính của đối tượng

là các giá trị cụ thể của các biến tại thời điểm nào đó

- Các phương thức của lớp được hiểu như là các phép toán, các thao tác trên các đối tượng

Ví dụ 1: + Lớp Phân số là tập hợp các số có dạng P/Q sao cho PZ; QN+

Ví dụ 2: + Command button (nút lệnh) trong Visual Foxpro là một lớp

Các thuộc tính cơ bản: Name, Caption, Height, Width, Left, Top, …

+ Nút Ok là một đối tượng của lớp Command button có các thuộc tính cụ thể là:

Trang 39

Các thuộc tính cơ bản: Name, Caption, Height, Width, Autocenter, Picture, …

- Form1 là một đối tượng của lớp Form có các thuộc tính trên và giá trị cụ thể của các thuộc tính đó như sau:

- Một sự kiện là một hành động tác động lên đối tượng và được chỉ định trước,

nó thường được khởi phát từ người sử dụng hay hệ thống Khi xảy ra một sự kiện thì hành động gắn với sự kiện đó được thực hiện, rồi đến lượt nó (hành động vừa xảy ra)

có thể lại là một sự kiện

Trong Visual FoxPro, những sự kiện thường có là: kích trái chuột (Click Event),

di chuyển chuột (MouseMove Event), …

- Những phương thức (Method) là những thủ tục, đó là đoạn mã lệnh được liên kết với đối tượng Method được gắn chặt với đối tượng và được đặt trong các sự kiện của đối tượng đó, nó được gọi (kích hoạt) khi có các sự kiện xảy ra hay nói cách khác phương thức là hành động đáp lại của đối tượng khi có sự kiện xảy ra

Đối tượng, sự kiện và phương thức luôn liên kết chặt chẽ với nhau

8.1.3 Các Class cơ sở trong Visual FoxPro

Visual FoxPro cung cấp một số lượng lớn các Class (Class cơ sở) giúp ta hoàn thành các ứng dụng một cách nhanh chóng Mỗi Class cơ sở chứa khuôn mẫu về một

Trang 40

đối tượng như các OptionGroup, CommandButton, text box, combo box, CheckBox, EditBox, Form, Label…

CommandButton FormSet OLEBoundControl Shape

CommandGroup Grid OLEContainerControl Spinner

Container Hyperlink

Để tạo ra một đối tượng cụ thể, ta chỉ việc sử dụng khuôn mẫu của lớp cơ sở và gán cho nó những thuộc tính, phương thức và sự kiện cụ thể

Tất cả các class cơ sở trong Visual FoxPro công nhận tập hợp các biến cố nhỏ nhất sau:

Init Xảy ra khi đối tượng này được tạo

Destroy Xảy ra khi đối tượng này được thoát ra từ bộ nhớ

Error Xảy ra bất cứ khi nào có lỗi trong các thủ tục của biến cố

hoặc phương thức của class Tất cả các class cơ sở Visual FoxPro có tập hợp các thuộc tính nhỏ nhất sau:

Class Nó là kiểu class nào

BaseClass Là class cơ sở xây dựng nên class cần tạo

như Form, CommandButton, Custom, …

ClassLibrary Thư viện class mà class này được lưu trữ

trong đó

ParentClass Tên của class cha của class cần tạo

Ngày đăng: 08/06/2021, 14:12

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1]. Nguyễn Ngọc Minh, Nguyễn Đình Đề. Sử dụng và khai thác Microsoft Visual Foxpro 6.0. NXB Lao động 2003 Sách, tạp chí
Tiêu đề: Sử dụng và khai thác Microsoft Visual Foxpro 6.0
Nhà XB: NXB Lao động 2003
[2]. Phạm Hùng Phú, Nguyễn Văn Thẩm, Đoàn Tuấn Nam. Giáo trình Hệ quản trị cơ sở dữ liệu. Giáo trình nội bộ Trường Đại học Sư phạm Kỹ thuật Nam Định.2009 Sách, tạp chí
Tiêu đề: Giáo trình Hệ quản trị cơ sở dữ liệu
[3]. Hoàng Quang, Quang Anh. Tự học ngôn ngữ lập trình Visual Fox 8.0. NXB Văn hóa thông tin. 2007 Sách, tạp chí
Tiêu đề: Tự học ngôn ngữ lập trình Visual Fox 8.0
Nhà XB: NXB Văn hóa thông tin. 2007
[4]. Nguyễn Đình Tê. Giáo Trình Lý Thuyết Và Bài Tập Foxpro. NXB Giáo dục. 2002 Sách, tạp chí
Tiêu đề: Giáo Trình Lý Thuyết Và Bài Tập Foxpro
Nhà XB: NXB Giáo dục. 2002
[5]. Vũ Nhật Minh. Thực tập lập trình Mirosoft Visual FoxPro 9.0. NXB Giao thông vận tải. 2007 Sách, tạp chí
Tiêu đề: Thực tập lập trình Mirosoft Visual FoxPro 9.0
Nhà XB: NXB Giao thông vận tải. 2007
[6] Nguyễn Tiến, Nguyễn Văn Hoài. Giáo Trình Lý Thuyết Và Bài Tập Microsoft Visual Foxpro 6.0. NXB Thống kê. 2005 Sách, tạp chí
Tiêu đề: Giáo Trình Lý Thuyết Và Bài Tập Microsoft Visual Foxpro 6.0. NXB Thống kê
Nhà XB: NXB Thống kê". 2005

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w