chuong 1 chuong 1 gi i thieu v h qu n tr csdl visual foxpro 1 1 tong quan v foxpro và visual foxpro 1 1 1 gi i thieu foxpro là h qu n tr co s d lieu dùng ñ gi i quyêt các bài toán trong các linh vc q

81 6 0
chuong 1 chuong 1 gi i thieu v h qu n tr csdl visual foxpro 1 1 tong quan v foxpro và visual foxpro 1 1 1 gi i thieu foxpro là h qu n tr co s d lieu dùng ñ gi i quyêt các bài toán trong các linh vc q

Đ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

SET DATE FRENCH: ñat ngày tháng nam theo dPng DD-MM-YY SET CURENCY ON : ñat nam có 4 ch. th,c hien lenh SET DEFAULT TO <ñuMng dan> : ñat ñuMng dan hien thMi CLEAR: xoá màn hình hie[r]

(1)

Chuong 1:

GII THIEU V H QUN TR CSDL VISUAL FOXPRO 1.1 Tong quan v FoxPro và Visual FoxPro

1.1.1 Gii thieu

Foxpro là h qun tr co s d lieu dùng ñ gii quyêt các bài toán trong các linh v,c qun lý FoxPro ñu0c th1a k và phát trien trên phân mêm DBASE III PLUS và DBASE IV, nh ng sn

pham noi tiêng cAa hãng ASTON-TATE Khi các công c lap trình và các Lng dIng trên môi

truMng Windows ngày nhiêu thì Microsoft cho ra ñMi các phiên bn FoxPro 2.6, chPy ñu0c trên

hai môi truMng DOS và Windows Visual Foxpro là sn pham cAa hãng Microsoft, nó ñu0c k

th1a t Foxpro for Windows, là mot trong nh ng công c tien l0i ñ gii quyêt các bài toán trong linh v,c qun lý cho nh ng nguMi chuyên nghiep và không chuyên nghiep T khi phát

trien ñên nay, Hng Microsoft ñã cho ra ñMi nhiêu phiên bn Visual Foxpro 3.0, 4.0, 5.0, 6.0

1.1.2 Kh

i ñong Visual Foxpro

Sau khi ñã cài ñat Visual FoxPro, ta có th khi ñong nó bang cách th,c hien file FoxProw.exe hoac file vfp.exe ñôi vZi Visual Foxpro theo các cách sau: + Kích chuot vào bieu tu0ng cAa FoxPro hoac Visual Foxpro trên Desktop + Ch_n menu Start/Program, ch_n Microsoft Visual Foxpro và kích chuot vào ñó Màn hình Visual Foxpro sau khi khi ñong:

(2)

Visual FoxPro có 2 ch ñ làm viec; ch ñ tuong tác (interactive) và ch ñ chuong trình (program)

Ch ñ tuong tác: Là ch ñ tr lMi t1ng câu lenh mot cAa nguMi s dIng, trong ch ñ này có 2

hình thLc ñua câu lenh:

* ðua câu lenh qua menu h thông (system menu) * ðua câu lenh t caa s lenh (command window)

Ch ñ chuong trình: Các câu lenh trong caa s lenh có th tap trung thành mot file và luu trên

ñia (g_i là file chuong trình nguôn) Khi muôn th,c hien các lenh trong chuong trình nây, tPi

caa s lenh ñua vào các câu lenh: DO < tên chuong trình > ð thoát khki Visual FoxPro, tPi caa s lenh s dIng lenh QUIT 1.2 Các khái niem co b!n

1.2.1 Kieu d lieu

đôi tu0ng x lý cAa V FOXPRO là d lieu, ự qun lý và khai thác tôt các d lieu này, tu theo tắnh chât, V.FOXPRO phi chia d lieu thành nhiêu kieu d lieu khác nhau: kieu s (numberic), kieu chuoi (character), kieu ngày tháng (date), kieu lý luan (logical), kieu b nh

(memo), kieu hình nh (picture)

a Kieu s -Numeric (N): dùng ñ bieu dien các s lieu mang giá tr s h_c và có nhu câu tính toán nhu trong k toán, qun lý, Moi d lieu kieu s chiêm tôi ña 20 ch s gôm c phân

nguyên, phân thap phân và dâu châm thap phân

b Kieu s -Float (F): Dùng ñ bieu dien s là các s có dâu châm ñong nhu: 2.03e5 (2.03 x 105), thuMng ñu0c s dIng trong các chuong trình thuoc linh v,c khoa h_c k thuat, c Kieu chuoi -Charater (C): ChLa các s lieu là t h0p mot s bât k các ký t ASCII nhu tên, h hoac là s nhung không có nhu câu tính toán nhu s chLng minh, ña chu, s phòng,

Moi d lieu kieu chuoi có ự dài tôi ựa 255 ký t (moi ký t chiêm 1 byte trong b nhZ) d Kieu ngày tháng -Data (D): Dùng cho nh ng s lieu dPng ngày tháng nhu ngày sinh, ngày ựên, đó là nh ng s nguyên dPng "yyyymmdd" khi hien th ra bên ngoài s ựu0c chuyen

(3)

lap trình ð dài c ñnh cAa d lieu kieu ngày là 8 ký t,

e Kieu logic -Logical (L): Dùng cho nh ng d lieu ch có mot trong hai truMng h0p hoac ñúng (T) hoac sai (F) nhu giZi tính, ñôi tu0ng uu tiên, ð dài c ñnh cAa d lieu kieu lý luan

là 1 ký t,

f Kieu ghi nh -Memo (M): D lieu kieu ghi nh là mot ñoPn van bn có ñ dài lZn hon 255 ký t,, nhu khen thung, lý kch, quá trình công tác, ð dài khai báo là 10 nhung noi dung

th,c s cAa kieu ghi nh là tu ý, chúng ñu0c luu tr trong mot tap tin khác có cùng tên nhung

phân m rong là FPT (FoxPro Text)

g Kieu tong quát -General (G): Dùng ñ chLa d lieu nhu bng tính, âm thanh,

h Kieu hình 5nh -Ficture (P): D lieu luu duZi dPng hình nh BMP, thuMng ñu0c dùng trong các chuong trình "qun lý nhu s,", "nhan dPng",

1.2.2 Các phép toán

a Phép toán s h8c: ðu0c th,c hien trên các d lieu kieu sô, gôm các phép toán: Phép toán Ý nghia Ví d

-, + dâu âm và duong +5, -7 ** hay ^ lu th1a 5**2,5^2 , / nhân, chia 25, 5/7 % phân du (modulo) 25%5 +, -cong, tr 10-2, 45+4

ð uu tiên các phép toán theo th t ñã nêu trên, có th thay ñoi th t tính toán bang cách ñat chúng trong 2 dâu ngoac ñon ( ) nhu các quy tac tính toán s h_c thông thuMng b Phép toán chuoi: Dùng ñ x lý các d lieu kieu chuoi

• Phép toán ghép nôi (+): dùng ñ ghép 2 chuoi cPnh nhau, kêt qu cAa phép toán là mot d lieu kieu chuoi

(4)

• Phép toán ghép nôi (-): dùng ñ ghép 2 chuoi cPnh nhau và di chuyen các dâu cách chuoi th nhât (nêu có) ra cuôi chuoi tPo thành

Ví dI: 'Trung tâm ' -' Tin h_c' -> 'Trung tâm Tin h_c '

• Phép toán $: kiem tra chuoi bên trái có nam trong chuoi bên phi không Kêt qu cAa phép toán có kieu logic

Ví dI: 'ab' $ "ABab" cho giá tr .T nhung 'ab $ "AaBb" cho giá tr .F

c Phép toán ngày: Hai d lieu kieu ngày có th tr (-) cho nhau ñ cho khong cách ñPi s gi a 2 ngày

Ví dI: {01/08/2003} -{05/09/2003} -> -35 {01/08/2003} -{05/07/2003} -> 25

Mot d lieu kieu ngày có th cong (+) hay tr (-) mot s nguyên ñ cho kêt qu là mot d lieu kieu ngày

Ví dI: {01/08/2003}+ 10 -> {11/08/2003} {01/08/2003}-20 -> {12/07/2003}

Chú ý: • Hai d lieu kieu ngày không th cong (+) cho nhau • Mot s không th tr (-) vZi mot d lieu kieu ngày

Viec dien t th t ngày (D), tháng (M), nam (Y) trong mot d lieu kieu ngày còn ph thuoc vào

thMi ñiem hien tPi ñang theo h thông ngày tháng nào

(1) Lenh SET DATE FRENCH |AMERICAN| JAPAN: Cho phép thiêt lap d lieu dPng ngày

theo kieu Pháp|My|Nhat

(2) SET CENTURY ON|OFF: Quy uZc nam có mot d lieu dPng ngày ñu0c bieu dien theo dPng

hai s (mac ñnh) hay dPng bôn sô Nêu SET CENTURY ON thì nam ñu0c bieu dien theo dPng

bôn con sô, nêu SET CENTURY OFF (dPng mac ñnh) thì nam ñu0c bieu dien theo dPng hai

con sô

(3) Lenh SET MARK TO <bthLc C>: ñ ân ñnh ký t phân cách ngày tháng, nam là <bthLc

(5)

d Phép toán quan he: dùng ñ so sánh hai giá tr cAa hai bieu thLc cùng kieu Phép toán Ý nghia Phép toán Ý nghia

< nh hon <>, ! khác

> lZn hon <= nh hon hay bang = bang => lZn hon hay bang = = bang chính xác

Hai d lieu kieu s ñu0c so sánh d,a theo bieu dien cAa chúng trên trIc sô

Hai d lieu kieu ngày ñu0c so sánh d,a theo bieu dien cAa chúng theo chiêu cAa thMi gian

Trong kieu logic, Visual FoxPro quy uZc: T.<.F

Hai d lieu kieu chuoi có ñ dài bang nhau ñu0c so sánh d,a theo nguyên tac sau: ñâu tiên so

sánh 2 mã ASCII cAa 2 ký t ñâu cAa hai chuoi, nêu bang nhau thì so sánh tiêp Ví dI: 'ABCD' < 'ABCE' -> T 'a' < 'A' -> F

TruMng h0p hai chuoi có ñ dài khác nhau, thì viec so sánh d,a vào viec thiêt lap môi truMng

SET EXACT ON/OFF, nghia là:

Nêu SET EXACT ON thì 'AB' = 'AB ' -> F Nêu SET EXACT OFF thì 'ABCD' = 'AB' -> T

e Phép toán logic: Visual FoxPro có 3 phép toán logic: NOT; AND; OR NOT hay ! : ph ñnh cAa toán hPng theo sau

AND : cho giá tr .T nêu c hai toán hPng ñêu T OR : cho giá tr .F nêu c hai toán hPng ñêu F 1.2.3 Toán h>ng

(6)

Là ñPi lu0ng có giá tr không ñoi trong thMi gian chuong trình th,c hien Tr kieu d lieu memo thì moi kieu d lieu ñêu có hang cAa nó

Hang kieu sô: nhu -2.5, 100, 4.14

Hang kieu chuoi: hang loPi nây phi ñ trong hai dâu " " hoac ' ' hoac [ ], có ñ dài tôi ña

không quá 253 kí t,

Ví dI: "abc"; tong h0p', '123',

Hang kieu ngày: phi ñu0c ñat trong cap dâu { } Ví dI: {01/01/96}; {}: ngày rong

Hang logic: ch có 2 giá tr .T và F 1.2.5 Biên

Biên là ñPi lu0ng dùng ñ luu tr d lieu trong quá trình tính toán Biên có hai ñac trung chính: tên biên và giá tr cAa biên Tên biên ñu0c ñat theo nguyên tac: dài không quá 10 kí t,,

bat ñâu phi là ch cái hoac dâu _ phân còn lPi là t h0p cAa bât k các ch cái, ch s hoac dâu

_ Tên biên không nên ñat trùng tên các t khoá cAa Visual FoxPro, tên biên có th viêt bang

ch in hoa hay ch thuMng Visual FoxPro hieu kieu cAa biên là kieu cAa giá tr mà nó ñang

mang S lu0ng tôi ña cAa biên ñu0c phép s dIng là 2048 biên Visual FoxPro chia biên làm 3 loPi:

a Biên b nh: G_i chung là biên, do nguMi s dIng tPo ra trong b nhZ, khi không s dIng n a có th gii phóng ñ tiêt kiem b nhZ

Ví dI: hsl = 3.12 ngaysinh = {01/01/88}

b Biên h thông: ðu0c tPo ra ngay t khi khi ñong Visual FoxPro Có tên bat ñâu bang dâu gPch nôi ( _ ) thuMng ñu0c s dIng trong vân ñ in ân, nguMi s dIng không th gii phóng

biên loPi nây

(7)

Nêu có mot biên ñat trùng vZi mot biên truMng thì biên truMng ñu0c uu tiên th,c hien truZc

Nêu tôn hPi hai biên truMng và biên b nh trùng tên nhau, ñ truy nhap ñên chúng mà không

s nhâm lan, bPn s dIng quy cách sau cho biên b nhZ: M.<tên truMng> hay M -> <tên truMng>

1.2.6 Hàm

Hàm là nh ng ñoPn chuong trình ñu0c viêt san nham th,c hien mot công viec nào ñó Các hàm nây thuMng cho ra mot giá tr, nhung cung có hàm ch thi hành mot viec nào ñó mà không

cho ra mot tr nào c V hình thLc hàm ñu0c ñac trung bi tên hàm và theo sau là cap dâu ( )

dùng ñ bao các ñôi sô, các ñôi s nây ñat cách nhau bi dâu phay Mot hàm có th có nhiêu ñôi

s hoac không có ñôi s nào c nhung phi có ( ) theo sau Ví dI: Date ( ): cho biêt ngày tháng nam h thông Sqrt(x): can bac 2 cAa x

Có 2 loPi hàm: Hàm có san cAa Visual FoxPro và hàm t tPo do nguMi s dIng tPo ra Chúng ta

s nghiên cLu vân ñ nây k hon chuong sau 1.2.7 Bieu thFc

Bieu thLc là tap h0p cAa mot hay nhiêu thành phân nhu hang, hàm, biên, phép toán, dâu ngoac

tròn Sau khi tính toán bieu thLc s cho mot tr duy nhât Tr cAa bieu thLc thuoc v mot trong 4

kieu: N, C, D, L Mot bieu thLc có th rât phLc tPp, tr cAa bieu thLc ñu0c tính theo nguyên tac

sau:

* Trong ( ) tính truZc, ngoài ( ) tính sau, * Phép toán uu tiên cao tính truZc * Bên trái tính truZc, bên phi tính sau 1.2.8 T khoá

T khoá là nh ng t ñu0c Visual FoxPro s dIng vào mot mIc ñích riêng, nguMi s dIng không

ñu0c ñat tên trùng vZi các t khoá nây Thông thuMng t khoá là nh ng ñong t ñong t cAa

(8)(9)

Lenh là nh ng yêu câu ñ th,c hien mot nhiem v nào ñó Lenh trong Visual FoxPro thuMng là

mot ñong t1, cung có truMng h0p là mot kí hieu nhu: ! ?, Tap h0p các lenh nham ñPt ñu0c

mot mIc tiêu ñ ra g_i là chuong trình

Trong Visual FoxPro có 3 cách ñ ban hành lenh: a Dùng ca s lenh:

Lenh ñu0c ñua vào caa s lenh, sau khi ân Enter lenh ñu0c thi hành ngay Thi hành xong mot lenh thì lenh cu ñu0c luu lPi trên caa s lenh có th s dIng cho lân sau Cách nây thuMng

dùng trong nh ng tính toán ñon gin ñ kiem tra kêt qu cAa lenh b Dùng menu:

Lenh ñu0c ban hành bang cách kích hoPt menu tuong Lng, sau khi thi hành xong câu lenh

cung ñu0c luu lPi trên caa s lenh Cách nây ch hPn ch trong mot s lenh thông thuMng trên

tap tin CSDL

c Dùng chuong trình: SoPn tho truZc mot chuong trình gôm nhiêu lenh thích h0p Chuong trình ñu0c luu trên ñia duZi tên mot tap tin có phân m rong PRG ð th,c hien chuong trình này, tPi caa s lenh ñua câu lenh DO <tên file.PRG> Sau khi ân Enter chuong

trình ñu0c nPp vào b nh và t1ng lenh ñu0c th,c hien theo th t, Bài th,c hành chuong 1

1 Gi s có tap tin HSNV.DBF (có câu trúc nhu ñã mô t bài 1, th,c hành hai) trong ñó có ít nhât 15 mau tin

a Dùng lenh SORT ñ sap xêp lPi tap tin HSNV.DBF sang mot tap tin mZi

HSNVSX.DBF theo ch tiêu: Các mau tin ñu0c sap xêp theo t1ng ñon v (gim dân), trong moi

ñon v th t tên, h ñu0c sap xêp tang dân b M tap tin HSNVSX.DBF

(10)

c Lap 3 tap tin ch mIc: FMASO.IDX theo truMng MASONV, FDONVI.IDX theo truMng MADV, FLUONG.IDX theo truMng M_LUONG gim dân

-Bang cách thay th tap tin ch mIc chA, hãy liet kê các mau tin theo MASONV tang dân, theo MADV tang dân, theo M_LUONG gim dân

2 Trong tap tin HSNV.DBF a Dùng lenh LOCATE:

-Tìm nguMi có h tên là ‘LE VAN NAM’ (gi s có h tên này trong tap tin

HSNV.DBF) Dùng lenh DISPLAY cho hien noi dung cAa mau tin này, rôi dùng lenh EDIT ñ

saa lPi

-Tìm nh ng nguMi phòng Hành chính (MADV=’HC’), cho hien ñây ñ thông tin cAa nh ng nguMi này

-Tìm nh ng nguMi có mLc luong > 310

b Dùng lenh SEEK ñ tìm kiêm nguMi có MASONV=’TCH01’ (gi s mã này có trong tap tin HSNV.DBF) Cho hien noi dung cAa mau tin này

c Cho biêt ña ch cAa nguMi có H tên là ‘HO VAN HAO’, sinh ngày 10/11/58 (bang hai cách:

LOCATE và SEEK)

1 CHUONG 2: THAO TÁC VI BNG D LIEU 1.1 2.1 KHÁI NIEM

Bng d lieu chLa d lieu theo dPng dòng và cot, moi dòng ñu0c g_i là mot mau tin (record),

moi cot ñu0c g_i là mot truMng (field) cAa bng

Moi bng d lieu ñu0c luu tr trên ñia vZi tên file có phân m rong mac ñnh là DBF, moi bng

(11)

Fieldname Type Width Decimal Hoten Character 30

Gioitinh Logic 1 Ngaysinh Date 8 NamLV Numberic 4 Lylich Memo 10

Noi dung cAa NHANVIEN.DBF

Hoten Gioitinh Ngaysinh NamLV Lylich Nguyen van A T 10/15/75 1999 Memo Le thi Nhan F 06/15/70 1995 Memo

1.2 2.2 FILE VÀ KIEU FILE TRONG VISUAL FOXPRO 2.2.1 Các kieu file chính cRa Foxpro

FoxPro có các kieu file sau: *.dbf: File d lieu

*.idx: File ch mIc *.prg: File chuong trình *.dbc: File co s d lieu

*.dll: File thu vien liên kêt ñong *.pjx: File d án

*.scx: File Form *.vcx: File thu vien

(12)

a File d lieu: Là tap h0p d lieu phn ánh v mot tap h0p các ñôi tu0ng qun lý thông qua các

thuoc tính cAa nó

b B5n ghi (Record): Là mot b giá tr các thuoc tính phn ánh v mot ñôi tu0ng qun lý c TruTng (Field): Là mot thuoc tính trong file d lieu, moi truMng ñu0c xác ñnh bi tên truMng, kieu truMng và kích thuZc truMng

+ Tên truMng (Field name): Tên truMng dài tôi ña 10 ký t bao gôm ch cái, ch sô, ký t gPch

duZi, ký t ñâu tiên cAa tên truMng phi là ch cái

+ Kieu truMng (Field type): Kieu truMng có các dPng sau: C: Charater N:Numberic L:Logic

D:Date M:Memo G:General

+ Kích thuZc truMng (Field Width): Là khong b nh cân thiêt ñ luu tr các giá tr cAa truMng, kích thuZc cAa truMng ph thuoc vào kieu truMng:

Kieu C: Tôi ña 254 Byte

Kieu N: Tôi ña 20 Byte k c dâu thap phân Kieu L: Chiêm 1 Byte

Kieu D: Chiêm 8 Byte

Kieu M: ñ dài tu ý, chiêm 10 Byte khi khai báo Currency: Chiêm 8 byte

+ Câu trúc file: Moi t h0p truMng sap xêp theo th t nhât ñnh g_i là câu trúc cAa file d lieu, moi file d lieu ch có mot câu trúc c the

2.2.3 Nguyên tac ho>t ñong

Chúng ta ch có th truy nhap ñên các phân t cAa mot file DBF nêu file ñó ñã ñu0c m bang

lenh USE <tên file DBF>

(13)

là mau tin có th truy nhap vào thMi ñiem ñó Mau tin hien thMi ñu0c tr ñên b con tr mau tin

(record pointer) Moi mau tin ñang m có 2 v trí ñac biet chú ý: ñâu file và cuôi file ð biêt

ñu0c con tr mau tin ñâu hay cuôi file ta dùng các hàm logic sau:

Hàm BOF( ) (begin of file) cho giá tr .T nêu con tr mau tin cuôi file DBF ñang m, ngu0c

lPi hàm cho giá tr .F

Hàm BOF( ) (end of file) cho giá tr .T nêu con tr mau tin cuôi file DBF ñang m, ngu0c lPi

hàm cho giá tr .F

S th t cAa mau tin (record number -recno): mô t s th t vat lý cAa mau tin trong tap tin

co s d lieu DBF S th t nây do FoxPro qui ñnh mot cách tuân t,, ñu0c ñánh s t 1 ñên mau tin cuôi cùng Trong khi làm viec, nêu xoá m_t mau tin thì s th t này cung t ñong ñu0c

cap nhat theo cho phù h0p

Hàm RECOUNT( ) dùng ñ biêt s mau tin cAa mot tap tin DBF ñang m Hàm RECSIZE( ) dùng ñ biêt ñu0c kích thuZc cAa mot mau tin

Hàm RECNO( ) cho biêt s th t cAa mau tin hien thMi Kích thuZc cAa các mau tin cAa mot file DBF ñêu bang nhau

1.3 2.3 CÁC LENH CO B?N TRÊN FILE DBF 1.4 2.3.1 DBng lenh tong quát

Lenh là mot ch th cho máy th,c hien mot thao tác c the Mot lenh trong Foxpro nói chung có

cú pháp tong quát nhu sau:

Lenh [phPm vi] [FIELDS <dsách truMng>] [FOR <btL1>] [WHILE <btL2>] [FROM <tên file>

/ ARRAY <tên mng>] [TO print/tên file/dsách biên] Trong ñó,

(14)

nêu lenh có nhiêu hon 4 ký t,

(15)

PhPm vi (Scope): ch ñnh phPm vi các mau tin chu s tác ñong cAa lenh, phPm vi có th là:

• ALL: tât c các mau tin trong file d lieu ñêu b tác ñong cAa lenh (nêu có s dIng FOR thì phPm vi ñu0c hieu là ALL)

• NEXT <n>: n mau tin tiêp theo tính t mau tin hien thMi b tác ñong cAa lenh • RECORD <n> Lenh ch tác ñong ñên mau tin th n

• REST Lenh s tác ñong t mau tin hien thMi cho ñên hêt

FIELDS <dsách truMng>: lenh ch có tác dIng trên nh ng truMng có tên ñu0c nêu trong <dsách

truMng>

FOR <btL1>: mau tin nào tho mãn <btL1> mZi b tác ñong bi lenh

WHILE <btL2>: ch1ng nào <btL2> còn ñúng thì lenh còn hieu l,c Nghia là, lenh s tác ñong

lên các bn ghi tho mãn bieu thLc logic ñi kèm (có giá tr là T.) cho ñên khi gap mot bn ghi

không tho mãn bieu thLc logic (có giá tr .F.) hoac ñên hêt file d lieu Nêu ñiêu kien sai thì

lenh ñu0c d1ng ngay Trong lenh nêu v1a có FOR v1a có WHILE thì menh ñ WHILE uu tiên

th,c hien truZc

FROM <tên file>: tên cAa file mà t ñó lenh lây s lieu ñ s dIng cho file DBF ñang m TO PRINT/tên file/dsách biên: chuyen kêt qu sau khi th,c hien lenh ñên máy in/file/biên Các menh ñ theo sau lenh có mat hay không tu truMng h0p và không cân phi viêt theo th t

nhu ñã nêu

1.5 2.3.2 TBo b!ng d lieu

Cú pháp: Create <tên file DBF> hoac Ch_n File/New/<ch_n loPi file d lieu DBF> Ví dI: create nhanvien && tPo bng nhanvien

(16)

Trong ñó: Name: Tên truMng Type: Kieu truMng

Width: ð rong cAa truMng

Decimal: S ch s l sau phân dâu châm thap phân, phân này ch s dIng cho d lieu kieu sô

Chú ý: -Các tên truMng không ựu0c trùng nhau, không ựu0c trùng vZi t khoá -đôi vZi d lieu kieu s nêu có phân thap phân thì ự rong cAa phân thap phân phi nh hon ự rong cAa truMng ắt nhât là 2 ựon v

ð kêt thúc viec nhap câu trúc ta ân ñông thMi Ctrl+W, lúc này s nhan ñu0c hop thoPi Lúc này: tr lMi <No> thì s quay lPi caa s

lMi <Yes> ñ tiên hành nhap các bn ghi Khi ch_n Yes s tiêp tIc xuât hien hop thoPi ñ nhap

d lieu

Khi kêt thúc viec nhap d lieu, nhân t h0p <Ctrl+W> ñ luu file d lieu lên ñia Khi ñó file d

lieu s có dPng <tên file>.DBF

Chú ý: ð nhap d lieu cho truMng MEMO, ta ñua con tr ñên hop memo rôi nhân t h0p phím

Ctrl_PgUp, lúc ñó s xuât hien caa s nhap d lieu cho truMng này Sau khi kêt thúc viec nhap

d lieu cho nó, ta ân t h0p Ctrl+W ñ ghi lPi 1.6 2.3.3 ðEnh v con tr ñên mot b!n ghi a ðXnh v tuyet ñôi

Cú pháp: GO <N>|[TOP]|[BOTTOM]

(17)

lenh

+ GO TOP: Dùng ñ chuyen con tr bn ghi v ñâu file d lieu + GO BOTTOM: Dùng ñ chuyen con tr bn ghi v cuôi file d lieu b.ðXnh v tuong ñôi

Cú pháp: Skip [+|-] [<n>]

Tác dIng: Di chuyen con tr bn ghi v truZc (-) hay sau (+) so vZi bn ghi hien thMi Chú ý: Khi ch gõ lenh Skip thì con tr bn ghi s ñu0c di chuyen v sau bn ghi hien thMi

mot ñon v

1.7 2.3.4 Lây d lieu t b!ng a Lenh Display

Cú pháp: display [<phPm vi>] [fields<danh sách truMng>] [For<bthLc logic>] [While<bthLc logic>] [on|off]

Tác dIng: Hien th noi dung cAa các bn ghi trong <phPm vi> ñu0c ch ñnh và tho mãn ñiêu

kien cAa các bieu thLc logic ñi sau FOR và WHILE nêu có

Theo mac ñnh thì tât c các truMng trong bng d lieu s ñu0c hien th, nêu có [field<danh sách truMng>] thì nh ng truMng ñu0c ch ra trong danh sách này mZi ñu0c hien th lên màn

hình <phPm vi> mac ñnh là bn ghi hien thMi

Ví dI: 1 Hien th tât c các bn ghi cAa bng d lieu nhanvien:

Use nhanvien Display all

2 Hien th tât c nh ng nguMi có nam làm viec (namlv) truZc 1980 Display for namlv <1980

Chú ý: Trong câu lenh cAa Fox, nêu có menh ñ FOR thì phPm vi mac ñnh là ALL

(18)

Cú pháp: List [<phPm vi>] [fields<danh sách truMng>] [For<bthLc logic>] [While<bthLc

logic>] [on|off]

Tác dIng: Hien th noi dung cAa các bn ghi nhu lenh Display nhung mac ñnh cAa lenh này là

ALL

Ví dI:1 Hien th tât c các bn ghi cAa bng d lieu nhanvien: Use nhanvien

List

2 Hien th tât c nh ng nguMi có nam làm viec (namlv) truZc 1980 List for namlv <1980

c Lenh ?|??

Cú pháp: ?|?? <danh sách bieu thLc>

Tác dIng: Lenh này tính toán và cho hien th kêt qu cAa danh sách bieu thLc lên màn hình

Chú ý: lenh ? truZc khi in d lieu thì xuông duZi 1 dòng, còn lenh ?? thì không Ví dI: Cho hien th h tên cAa nguMi có s hieu là 5 lên màn hình:

Go 5

? ‘ho ten’, hoten

Chú ý: danh sách bieu thLc trong Fox ñu0c viêt cách nhau bi dâu phay “,” Ví dI: cho biêt h tên, nam làm viec cAa nguMi có s hieu là 2:

Go 2

?’ho ten:’,hoten,’nam lam viec:’,namlv 1.8 2.3.5 Chèn, b sung b!n ghi

a Chèn b5n ghi

Cú pháp: INSERT [BEFORE][BLANK]

Tác dIng: Chèn mot bn ghi ngay sau bn ghi hien thMi (nêu có [Before]) vZi noi dung ñu0c

(19)

Ví dI: chèn mot bn ghi vào sau bn ghi th 3: Go 3

Insert

b B sung bn ghi

Cú pháp: APPEND [BLANK]

Tác dIng: ð chèn 1 bn ghi vào cuôi bng d lieu (giá tr ñu0c nhap vào), nêu có tham s [BLANK] thì s b sung mot bn ghi trang

2.3.6 Saa ch a noi dung bn ghi a Lenh BROWSE:

CÚ PHÁP: BROWSE [FIELD<DSÁCH TRUTNG>] [FREEZE<DSÁCH TRUTNG>][NODELETE]

[NOEDIT] [FOR<BTHFC LOGIC>]

TÁC DhNG: HIeN TH NoI DUNG CRA B5NG D LIeU, MoI B5N GHI ðUkC TH HIeN

TRONG MoT HÀNG (DÒNG), TA CÓ TH XEM VÀ DI CHUYeN HoP SÁNG T TRUTNG NÀY QUA TRUTNG KHÁC, B5N GHI NÀY SANG B5N GHI KHÁC VÀ CÓ

TH SrA ðoI NoI DUNG CRA THNG MaU TIN TRONG B5N GHI VÍ Dh:

USE NHANVIEN BROWSE

[FIELD<DSÁCH TRUTNG>]: CHO PHÉP CÁC TRUTNG TRONG DANH SÁCH NÀY ðUkC HIeN TH TRÊN MÀN HÌNH, NêU KHÔNG CÓ THAM S NÀY THÌ TâT C CÁC TRUTNG TRONG B5NG D LIeU S ðUkC HIeN THX

[FREEZE<DSÁCH TRUTNG>]: CHO PHÉP CÁC TRUTNG TRONG DANH SÁCH NÀY LUÔN ðUkC HIeN TH TRÊN MÀN HÌNH

(20)

VÍ Dh: HIeN TH NoI DUNG CRA CÁC TRUTNG HOTEN, NAMLV ð TIêN HÀNH SrA ðoI

BROWSE FIELD HOTEN,NAMLV FREEZE NAMLV

[FOR<BTHFC LOGIC>]: CH CHO PHÉP NH%NG BIeU THFC THO MÃN ðIêU KIeN CRA BIeU THFC LOGIC MI ðUkC HIeN THX

b Lenh Edit

CÚ PHÁP: EDIT [<PH>M VI>] [FIELD<DSÁCHTRUTNG>][ NOAPPEND][NODELETE] [NOEDIT]

[FOR<BTHFC LOGIC>] [WHILE<BTHFC LOGIC>]

TÁC DhNG: TUONG T NHU LeNH BROWSE NHUNG CÁC B5N GHI ðUkC XUâT HIeN NHU LeNH APPEND

c Lenh REPLACE

CÚ PHÁP: REPLACE [<PH>MVI>]<TRUTNG 1>WITH<BTHFC 1>[ADDITIVE] [,<TRUTNG 2> WITH <BTHFC 2> [ADDITIVE] ][FOR<BTHFC

LOGIC>]

[WHILE<BTHFC LOGIC>]

TÁC DhNG: DÙNG ð THAY TH NoI DUNG CÁC TRUTNG ðUkC CH RA CRA CÁC

B5N GHI NaM TRONG <PH>M VI> VÀ THA MÃN ðIêU KIeN CRA <BIeU THFC LOGIC> ðI SAU FOR HOaC WHILE B

I CÁC BIeU THFC TUONG FNG PH>M VI MaC ðXNH LÀ B5N GHI HIeN THTI

CHÚ Ý: KIeU D LIeU CRA <BIeU THFC> VÀ CRA <TRUTNG> TUONG FNG PH5I TUONG ðUONG NHAU, NêU KHÔNG THÌ FOX S THÔNG BÁO LoI KIeU D LIeU "DATA TYPE MISMATCH"

VÍ Dh: 1 THAY TH H TÊN CRA NHÂN VIÊN TRONG FILE NHANVIEN BaNG CH

(21)

REPLACE ALL HOTEN WITH UPPER(HOTEN)

2 NÂNG LUONG CRA NH%NG NHÂN VIÊN N LÊNH THÊM 50000 đôNG REPLACE LUONG WITH LUONG+50000 FOR !GIOITINH

1.9 2.3.7 Xoá b!n ghi

VIeC XOÁ MoT B5N GHI TRONG B5NG D LIeU ðUkC THC HIeN THEO HAI BUC:

BUC 1: ðÁNH DâU B5N GHI MUôN XOÁ:

CÚ PHÁP: DELETE [<PH>M VI>] [FOR<BTHFC LOGIC>] [WHILE<BTHFC LOGIC>]

TÁC DhNG: LeNH NÀY ðÁNH DâU TâT C CÁC B5N GHI THO MÃN ðIêU KIeN

ðUkC NÊU, MaC ðXNH LÀ B5N GHI HIeN THTI

KHI THC HIeN LeNH NÀY CÁC B5N GHI ðUkC CH ðXNH ðÁNH DâU XOÁ S. XUâT HIeN DâU * TRUC CÁC B5N GHI LÚC NÀY TA CÓ TH PHhC HôI L>I CÁC B5N GHI ðÓ ðUkC

VÍ Dh: ðÁNH DâU XOÁ NH%NG NHÂN VIÊN CÓ NAM LÀM VIeC TRUC 1951 DELETE FOR NAMLV <1950

BUC 2 XOÁ CÁC B5N GHI CÁC B5N GHI SAU KHI ðà ðUkC ðÁNH DâU XOÁ NêU QUYêT ðXNH THaT S MUôN XOÁ NÓ THÌ THC HIeN LeNH PACK, NGUkC  L>I NêU KHÔNG MUôN XOÁ NÓ THÌ THC HIeN LeNH RECALL 

A LeNH XOÁ CÁC B

N GHI B ðÁNH DâU XÓA (PACK) CÚ PHÁP: PACK

TÁC DhNG: XOÁ CÁC B5N GHI TRONG B5NG D LIeU ðà ðUkC ðÁNH DâU XOÁ BaNG LeNH DELETE

B LeNH PHC HôI CÁC B

(22)

CÚ PHÁP: RECALL [<PH>M VI>] [FOR<BTHFC LOGIC>] [WHILE<BTHFC

LOGIC>]

TÁC DhNG: PHhC HôI L>I CÁC B5N GHI MÀ TRUC ðÓ ðà ðUkC ðÁNH DâU XOÁ B

I LeNH DELETE PH>M VI MaC ðXNH CRA LeNH NÀY LÀ B5N GHI HIeN THTI

C LeNH XÓA D LIeU TRÊN FILE DBF CÚ PHÁP: ZAP

TÁC DhNG: XÓA TâT C CÁC B5N GHI TRONG MoT FILE DBF ðANG M

1.10 2.3.8 LSc d lieu

ð H>N CH S LUkNG CÁC B5N GHI THAM GIA VÀO QUÁ TRÌNH X LÝ, TA CÓ TH L8C CÁC B5N GHI TRONG BÀNG D LIeU THO MÃN ðIêU KIeN CHO

TRUC

CÚ PHÁP: SET FILTER TO <BTHFC LOGIC>

SAU KHI THC HIeN LeNH L8C THÌ CÁC LeNH TIêP THEO SAU LeNH NÀY CH. CÓ TÁC DhNG đôI VI CÁC B5N GHI THO MÃN đIêU KIeN L8C

MUôN HU B VIeC L8C D LIeU TA THC HIeN LeNH: SET FILTER TO  VÍ Dh:

1 CH HIeN TH NH%NG NHÂN VIÊN N%: SET FILTER TO !GIOITINH

LIST

2 CHÍ XÉT NH%NG NHÂN VIÊN CÓ QUÊ QUÁN LÀ HU SET FILTER TO QUEQUAN=="HUE"

LIST

(23)

a Xem câu trúc b5ng (List|Display structure) CÚ PHÁP: LIST | DISPLAY STRUCTURE

TÁC DhNG: HIeN TH CâU TRÚC CRA B5NG D LIeU ðANG ðUkC M , BAO GôM:

TÊN TRUTNG, KIeU VÀ ð RoNG CRA TRUTNG VÍ Dh:

USE NHANVIEN LIST STRUCTURE

b Sra ñoi câu trúc b5ng d lieu CÚ PHÁP: MODIFY STRUCTURE

TÁC DhNG: HIeN TH VÀ CHO PHÉP SrA ðoI CâU TRÚC B5NG D LIeU, KêT THÚC LeNH NÀY NHâN T HkP PHÍM CTRL+W

VÍ Dh: USE NHANVIEN MODIFY STRUCTURE c Sao luu câu trúc b5ng d lieu

CÚ PHÁP: COPY STRUCTURE TO <TEN FILE.DBF> [FIELDS<DANH SÁCH TRUTNG>]

TÁC DhNG: ð SAO CHÉP CâU TRÚC CRA B5NG D LIeU ðANG ðUkC M SANG MoT B5NG MI CÓ TÊN ðUkC CH RA TRONG <TEN FILE.DBF> VI CÁC

TRUTNG ðUkC CH RA TRONG MhC [FIELD<DANH SÁCH TRUTNG>] MaC ðXNH

CRA LeNH NÀY LÀ TâT C CÁC TRUTNG CÓ TRONG B5NG D LIeU ðANG ðUkC M

VÍ Dh: SAO LUU CâU TRÚC CRA NHANVIEN THÀNH FILE CÓ TÊN LÀ LUU.DBF

NHUNG CH GôM CÁC TRUTNG: HOTE, GIOITINH, NAMLV USE NHANVIEN

COPY STRUCTURE TO LUU FIELDS HOTEN, GIOITINH, NAMLV

(24)

1.12 2.3.10 Sao chép b!ng

CÚ PHÁP: COPY TO <TÊN B5NG ðÍCH> [<PH>M VI>] [FIELDS <DANH SÁCH TRUTNG>] [FOR<BTHFC LOGIC>] [WHILE<BTHFC LOGIC>]

TÁC DhNG: LeNH DÙNG ð T>O B5NG MI CÓ TÊN ðUkC CH RA <TÊN B5NG ðÍCH> VI NoI DUNG ðUkC LâY T B5NG D LIeU ðANG ðUkC M

MaC ðXNH

LeNH NÀY LÀ TâT C CÁC B5N GHI đêU đUkC SAO CHÉP, NêU CÓ PH>M VI VÀ CÁC BIeU THFC LOGIC THÌ NH%NG B5N GHI THO MÃN đIêU KIeN MI đWOCJ SAO CHÉP DANG SÁCH TRUTNG đ CH đXNH CÁC TRUTNG đUkC SAO CHÉP VÍ Dh: T>O B5NG D LIeU CÓ TÊN LÀ NU.DBF T FILE NHANVIEN.DBF GôM CÁC

TRUTNG HOTEN, NGAYSINH, NAMLV USE NHANVIEN

COPY TO NU FIELDS HOTEN, NGAYSINH, NAMLV FOR !GIOITINH USE NU &&M ð XEM KêT QU

LIST

1.13 2.4 MOT S HÀM THÔNG D]NG 2.4.1 Các hàm v ngày tháng

A HÀM DATE(): CHO NGÀY, THÁNG, NAM HIeN T>I CRA H THôNG TH T NGÀY, THÁNG, NAM CRA LeNH NÀY PH THUoC VÀO LeNH SET DATE VÍ Dh:

NêU TA THC HIeN LeNH: SET DATE FRENCH 

RôI THC HIeN LeNH DATE() THÌ NGÀY HIeN HÀNH CRA H THôNG S ðUkC HIeN RA THEO TH T LÀ NGÀY, THÁNG, NAM

B HÀM YEAR(<BTH*C DATE>): CHO NAM (CÓ 4 CH Sô) CRA <BTHFC DATE> VÍ Dh: YEAR(DATE()) CHO NAM HIeN T>I CRA NGÀY H THôNG

C HÀM MONTH(<BTH*C DATE>): CHO THÁNG HIeN T>I CRA BIeU THFC NGÀY

(25)

D HÀM DAY(<BTHFC DATE>): CHO NGÀY CRA BIeU THFC NGÀY VÍ Dh: DAY(DATE()) CHO NGÀY HIeN T>I

2.4.2 Các hàm v chuoi

A HÀM LEN(<BTH*C C>): CHO CHIêU DÀI CRA BIeU THFC, TÍNH BaNG BYTE CRA

<BTHFC C>, CHUoI RoNG CÓ CHIêU DÀI LÀ 1

B HÀM LEFT(<BTH*C C>, <N>): TRÍCH RA MoT CHUoI T <BTHFC C> GôM <N>

KÝ T TÍNH T BÊN TRÁI SANG

VÍ Dh: ?LEFT("NGUYEN VAN AN", 6) CHO KêT QU LÀ "NGUYEN"

C HÀM RIGHT(<BTH*C C>, <N>): TRÍCH RA MoT CHUoI T <BTHFC C> GôM <N>

KÝ T TÍNH T BÊN PH5I SANG

D HÀM SUBSTR (<BTH*C C>, <N1>, <N2>):TRÍCH RA MoT CHUoI CON CRA <BTHFC C> T V TRÍ <N1> VÀ GôM <N2>) KÝ T.

VÍ Dh: ? SUBSTR ("NGUYEN VAN AN", 8, 3" KêT QU CHO CHUoI "VAN"

E HÀM ALLTRIM (<BTH*C C>): CHO KêT QU LÀ MoT CHUoI SAU KHI ðà LO>I B

CÁC KÝ T TRaNG HAI BÊN (NêU CÓ) CRA<BTHFC C> VÍ Dh: ?ALLTRIM("NGUYEN VAN AN ") "NGUYEN VAN AN"

F HÀM UPPER(<BTH*CC>): CHO KêT QU LÀ CHUoI IN HOA CRA <BTHFC C> VÍ Dh: ?UPPER ("NGUYEN VAN AN") "NGUYEN VAN AN"

G HÀM LOWER <BTH*C C>: NGUkC L>I CRA HÀM UPPER 2.4.3 Các hàm s h8c

A ASB(X): CHO GIÁ TR TUYeT đôI CRA X B INT(X): CHO PHâN NGUYÊN CRA X C ROUND(X,<N>): LÀM TRÒN X VI N S Le E SIN(X): CHO GIÁ TR SIN X

(26)

Bài thc hành chuong 2  1 TPo tap tin DBF

Dùng lenh Create t caa s lenh ñ tPo câu trúc cho tap tin HSNV.DBF nhu sau: (Ch tPo câu trúc, không nhap d lieu)

2 Field Name Field Type Width Dec Phân ghi chú MASONV HOLOT TEN PHAI DIACHI NGSINH TDVH M_LUONG NGAYLL Character Character Character Logic Character Date Numeric Numeric Date 5 20 7 1 30 8 2 3 8

Mã s nhân viên H lót

Tên

Phái (Nam, N ) ða ch

Ngày sinh Trình ñ van hoá MLc luong Ngày lên luong

(27)

0: Mù ch , 1-12: Ph thông, 13: ðPi h_c, 14, Cao h_c, 15: Tiên si b Cho biêt công dIng cAa phím F5 và F6

c Thêm vào tap tin v1a tPo ra hai truMng mZi 3 Field Name Field Type Width Dec Phân ghi chú MADV

HOHANG Character Memo 2 10

Mã ñon v H hàng

d truMng PHAI saa lPi tên là NU có kieu Logic e Nhap s lieu 10 nhân viên vào tap tin HSNV.BDF này

(28)

2 Dùng menu h thông tPo câu trúc tap tin HOCVIEN.DBF sau ñây: 4 Field Name Field Type Width Dec Phân ghi chú

MASONV HO TEN NAM NGSINH NOISINH DIACHI MALOP MAGV DIEMLT DIEMTH UUTIEN GHICHU Character Character Character Logic Date Character Character Character Character Numeric Numeric Logic Date 4 20 7 1 8 2 20 4 3 5 5 1 10 5 2 2

(29)

H lót Tên

Nam: T., N : F Ngày sinh Noi sinh ða ch Mã lZp Mã giáo viên ðiem lý thuyêt ðiem th,c hành Uu tiên

Ghi chú

Nhap s lieu 10 h_c viên ñâu tiên

b Dùng lenh DIR caa s lenh ñ xem tap tin có trên ñia hay không, s mau tin v1a nhap và dung lu0ng ñia còn trông?

c Gõ lenh: Use ñ ñóng tap tin HOCVIEN.DBF rôi thoát khki FoxPro C ᄉ p nh ᄉ t d li ᄉ u

1 M tap tin HOCVIEN.DBF

-Dùng lenh LIST hay DISPLAY ALL ñ xem noi dung các mau tin cAa tap tin

HOCVIEN.DBF và ch xem các vùng tin MAHV, HO, TEN, NAM, MALOP, MAGV, DIEMLT, DIEMTH, nêu có sai sót hãy ñiêu chunh cho ñúng

2 Gõ lenh SET STATUS ON ñ xem thanh trPng thái

-Nêu thanh trPng thái b che khuât bi caa s lenh thì ân Ctrl_F7 ñ di chuyen caa s ñên v trí khác

(30)

3 Dùng lenh APPEND ñ thêm hai mau tin mZi rôi ân Ctrl_W ñ ghi lPi

4 Dùng hàm RECNO() cho biêt s hieu cAa mau tin hien hành dMi con tr ñên ñâu tap tin

5 S dIng lenh EDIT ñ saa noi dung các mau tin tu ý thích cAa bPn, saa xong ân Ctrl_W ñ ghi lPi

6 Gõ lenh: BROWSE Quan sát màn hình rôi th các ñong tác sau:

a ðua vet sáng ñên mau tin th nhât tPi vùng ghi chú, rôi ân Ctrl_Home ñ xem phân ghi chú có nh ng noi dung gì? Gõ thêm mot ghi chú tu ý rôi ân Ctrl_W ñ ghi lPi

b Ân Alt+B ñ g_i MENU cAa BROWSE, sau ñó g_i APPEND, nhap thêm 1 mau tin rôi ân Ctrl_W ñ ghi lPi

c Gõ lPi lenh BROWSE lân n a, ân Ctrl_N, FoxPro s thêm mau tin trang cuôi, nhap s lieu cho mau tin này

d ðua vet sáng ñên vùng DIEMLT, ân Alt+B ñ g_i MENU phI, sau ñó ch_n Move rôi chuyen vet sáng ñên vùng DIEMTH, ân Enter Kêt qu hai cot DIEMLT và DIEMTH s ñu0c

chuyen cho nhau

e ðua vet sáng ñên vùng NOISINH, ân Alt+B ñ g_i menu SIZE, dùng mui tên trái thu h¡p cot này còn 10 Bytes thôi, sau ñó gõ: “Vinh l0i-Huê” vào mau tin th tu

7 Gõ lenh DELETE ALL FOR DIEMTH < 7 rôi xem có bao nhiêu mau tin b ñánh dâu xoá?

8 Gõ lenh BROWSE ñ quan sát, sau ñó ñua vet sáng ñên mot mau tin b ñánh dâu xoá rôi ân Ctrl_T xem dâu xoá có còn hay không, ân lPi Ctrl_T lân n a ñ xem ñiêu gì xy ra, sau ñó

ân Ctrl_W ñ thoát ra

9 Gõ lenh RECALL ALL ñ phIc hôi các mau tin b ñánh dâu xoá rôi ñóng tap tin HOCVIEN.DBF lPi

10 M tap tin HSNV.DBF

a Dùng lenh REPLACE ñ tang luong gâp ñôi cho tât c nhân viên, sau ñó tang thêm riêng cho các n nhân viên 10% n a

b Thêm vào câu trúc tin HSNV.DBF mot truMng LOAIBC (loPi biên chê: BC/HD) và dùng BROWSE nhap d lieu cho vùng tin này, ân Ctrl_B ñ thoát khki BROWSE c Gõ lenh DISPLAY STRUCTURE (hay F5) ñ xem lPi câu trúc

(31)

e Nhap thêm hai mau tin vào gi a tap tin HSNV.DBF -Mot mau tin sau mau tin có STT=5

-Mot mau tin truZc mau tin có STT=3

f Gõ lenh RECALL ALL ñ phIc hôi các mau tin b ñánh dâu xoá g Liet kê danh sách các nhân viên theo dPng

MNV HOLOT TEN NU NGSINH HSL TDVH h Liet kê theo Png câu g nh ng nhân viên nam

(32)

5 CHUONG 3: SAP XÊP-TÌM KIÊM-THÔNG KÊ 5.1 3.1 SP X P

3.1.1 Khái niem

Trong m ᄉ t b ᄉ ng d li ᄉ u, chúng ta có th s ᄉ p x ᄉ p các m ᄉ u tin theo m ᄉ t tiêu chu ᄉ n n ᄉ o ᄉ ó tu theo yêu c ᄉ u c ᄉ a vi ᄉ c khai thác thông tin

3.1.2 Sap xêp theo ch mhc a Khái niem v ch m0c

Ta ñã biêt moi bng d lieu chLa các bn ghi và moi bn ghi ñêu ñu0c ñánh s hieu theo s th t t 1 ñên n

Ví dI: bng NHANVIEN.DBF có dang sau:

Record# HOTEN NGAYSINH GIOITINH NAMLV 1

2 3 4

NGUYeN VAN A Lê th nhàn

Nguyen An Trân HPnh 02/10/75 05/23/75 10/26/80 09/25/70 T .F .T .T 1985 1980 1982 1981

S hieu các bn ghi

Khi x lý thông tin trong b ᄉ ng d li ᄉ u, ta truy xu ᄉ t chúng theo tr ᄉ t t c ᄉ a s hi ᄉ u b ᄉ n ghi

Ví dI: use NHANVIEN list

Kêt qu in ra s nhu sau:

(33)

1 NGUYeN VAN A 02/10/75 T 1985 2 Lê th nhàn 05/23/75 F 1980

(34)

filechumIctheonamlv

Sap xêp bng d lieu theo ch mIc là tPo ra mot file mZi (có phân m rong mac ñnh là IDX) ch có hai truMng: truMng khoá sap xêp và truMng s hieu bn ghi Th t cAa bn ghi

ñây là th t sap xêp

Ví d ᄉ: file ch m ᄉ c c ᄉ a b ᄉ ng nhanvien theo th t t ᄉ ng d ᄉ n c ᄉ a n ᄉ m làm vi ᄉ c nh sau:

Namlv Record# 1980 2

1981 4 1982 3 1985 1

Lúc này, khi truy xuât d lieu cAa bng, th t cAa các bn ghi là th t ñu0c quy ñnh trong file ch mIc này

Ví d ᄉ: Trong b ᄉ ng nhanvien, s d ᄉ ng ch m ᄉ c theo tr ᄉᄉ ng namlv.idx ta có th t truy xu ᄉ t:

Record# Hoten ngaysinh gioitinh namlv 2 Lê th nhàn 05/23/75 F 1980

4 Trân HPnh 09/25/70 T 1981 3 Nguyen An 10/26/80 T 1982 1 Nguyen van A 02/10/75 T 1985 b Lap ch m0c IDX cho b6ng d lieu

Cú pháp: INDEX ON <bthLc khoá> TO <tên file idx> [FOR<bthLc logic>] [UNIQUE]

Tác dIng: Lenh sap xêp file d lieu theo chiêu tang dân cAa <BthLc khoá> cAa các bn ghi tho mãn <BthLc logic> sau FOR, mac ñnh là tât c các bn ghi Nêu có t khoá [UNIQUE] thì các bn ghi nào có <BthLc khoá> trùng nhau s b b qua trên file ch mIc Ví d 1: Hien th theo th t tang dân cAa namlv cAa các nhân viên

use NHANVIEN

(35)

Ví d 2: Hien th theo th t tang dân cAa hoten index on HOTEN to CMHOTEN

list

Chú ý: Lenh luôn sap xêp theo th t tang dân cAa <bthLc khoá>, do vay khi l,a ch_n <bthLc khoá> thì phi ch_n cho phù h0p

Ví d 1: Hien th theo th t gim dân cAa namlv cAa các nhân viên use NHANVIEN

index on -NAMLV to CMNAMLVG list

Ví d 2: Hien th theo th t gim dân cAa ngaysinh use NHANVIEN

index on date()-NGAYSINH to CMNSINHG list

c Mot s lenh liên quan

+ SET INDEX TO <file ch mIc>: Dùng ñ m file ch mIc sau khi ñã m mot bng d lieu

+ SET INDEX TO: Dùng ñ ñóng file ch mIc

+ REINDEX: Dùng ᄉ c ᄉ p nh ᄉ t l ᄉ i file ch m ᄉ c sau khi có s s ᄉ a ᄉᄉ i trên b ᄉ ng

d li ᄉ u

5.2 3.2 TÌM KI M 3.2.1 Tìm kiêm tuân t a Lenh Locate:

Cú pháp:

(36)

Tác dIng: Lenh s duyet tuân t các bàn ghi trong bng d lieu và tìm ñên bn ghi ñâu tiên trong <phPm vi> tho mãn ñiêu kien cAa <bthLc logic> Nêu tìm ñu0c, hàm FOUND() s

cho giá tr .T., hàm EOF() có giá tr .F

Ví dI: Tìm nhân viên ñâu tiên trong bng d lieu sinh nam 1970 trong bng nhanvien use NHANVIEN

Locate for year(NGAYSINH) = 1970 Display

b Lenh continue Cú pháp : CONTINUE

ChLc nang : Theo sau lenh LOCATE, dùng ñ tìm bng ghi k tiêp sau thka mãn ñiêu kien ñã nêu

Ví d : Tìm 2 nhân viên ñâu tiên sinh nam 1970 use NHANVIEN

locate for year ( NGAY SINH) = 1970 display

continue display

3.2.2 Tìm kiêm sau khi ñã lap ch mhc Cú pháp : SEEK <bieu thLc>

ChLc nang : sau khi ñã lap ch mIc theo <bthLc khóa> ñ tìm bn ghi nào thka mãn mot ñiêu kien d,a vào <bthLc khóa>

Ta s dIng lenh SEEK theo sau là <giá tr> cAa bieu ñiêu kien cân tìm nêu tìm thây thì hàm FOUND() có giá tr .T và hàm EOF () có giá tr .F

(37)

use NHANVIEN

index on upper(HOTEN) to CMHOTEN seek “Nguyen Van An”

disp

2 Sap xêp theo th t gim dân cAa NAMLV, tìm nhân viên có nam làm viec 1981 use NHANVIEN

index on -NAMLV to CMNAMLVG list

seek -1981 disp

3.3 THÔNG KÊ

3.3.1 đêm s lukng b5n ghi Cú pháp

COUNT [<phPm vi>][FOR<btlogic>] [WHILE<btlogic>] [TO<biên nhZ>]

ChLc nang :lenh dùng ñ ñêm s mau tin trong bng d lieu hien hành thka mãn ñiêu kien các

<bthLc logic> nam trong phPm vi ñu0c ch ra Kêt qu ñu0c ñua ra màn hình hay ñua vào <biên nhZ> nêu có TO

Ví dI: Cho biêt có bao nhiêu nhân viên có NAMLV là 1980 use NHANVIEN

count for NAMLV = 1980 to songuoi

?’ có songuoi: ‘, songuoi, ‘ làm viec nam 1980’

3.3.2 Tính tong giá tr các truTng kieu s

(38)

ChLc nang : Lenh s lây tong theo các bieu thLc ñu0c xây d,ng d,a trên các truMng kieu sô, cAa các bn ghi trong bng d lieu; nam trong <phPm vi> và thka mãn ñiêu kien cAa các

<bthLc logic> N1u không có <ds bieu thLc> thì các truMng kieu s ñêu ñu0c lây tong Mac ñnh, kêt qu ñu0c ñua ra màn hình; nêu có TO <dsbiên> thì kêt qu cAa các <bieu thLc> s ñu0c ñua vào các <biên> tuong Lng

Chú ý : Phi tuong Lng 1-1 gi a <ds bieu thLc> và <ds biên>

Ví dI: D,a vào bng NHANVIEN, cho biêt tong LUONG phi tr và tong PHUCAP là bao nhiêu

use NHANVIEN

sum LUONG, PHUCAP to tongluong, tongpc ?’ tong luong la:’ , tong luong

?’ tong phu cap la:’ , tongpc

3.3.3 Tính trung bình cong các truTng kieu s

Cú pháp: AVERAGE [<phPm vi>] [<ds bieu thLc>] [TO <ds biên >] [FOR <bt logic>] [WHILE <bt logic>]

ChLc nang : giông nhu lenh SUM trên nhung sau khi lây tong, lenh s lây giá tr ñó ñem chia cho tong s bn ghi tham gia vào câu lenh

Ví dI: d,a vào bng NHANVIEN, cho biêt trung bình moi nhân viên nhan ñu0c bao nhiêu LUONG, PHU CAP

use NHANVIEN

average LUONG, PHUCAP to tbluong, tbphucap ?’ trung binh luong:’ , tbluong

?’ trung bình phu cap:’ , tbphucap 3.3.4 Tính tong các truTng s theo nhóm

(39)

[FIELD <dstruMng>][FOR <biê thLc L>][WHILE < biê thLc L>]

ChLc nang: Lenh s cong dôn các truMng kieu s theo t1ng nhóm bn ghi có <bt

khóa> giông nhau và ñua vào bng mZi có tên ñu0c ch ra <tên bng DBF> Mac ñnh thì tât

c các truMng kieu s ñêu ñu0c cong dôn, nêu có FIELDS <danh sách truMng> thì ch có các

truMng liet kê mZi ñu0c cong Lenh ch tác ñong ñên các bàn ghi nam trong (phPm vi) và tho

mãn ñiêu kien ñi sau các menh ñ FOR, WHILE

Chú ý: TruZc khi dùng lenh này, bng d lieu phi ñnh sap xêp theo khoá

Ví dI: D,a vào bng VATTV, hãy thông kê xem moi mat hàng ñã xuât hay nhap mot s lu0ng là bao nhiêu

use VATTV

index on MAXN + MAVT to CMTK

total on MAXN + MAVT to THONGKE fields SOLUONG use THONGKE

? ‘chi tiet la :’

list MAXN, MAVT, SOLUONG, DONGIA Gi s bng VATTU sau khi sap xêp là:

MAXN SOCT MAVTU SOLUONG DONGIA N

(40)

F01 145 203 123 345 654 5 500 200 200 180

Kêt qu cAa bng THONGKE.DBF là:

(41)

N 1 F01 469 200 N 10 F01 654 180

6 CHUONG 4: LAP TRÌNH TRÊN VISUAL FOXRO 6.1 4.1 CH ᄉ NG TRÌNH

4.1.1 Khái niem

Là mot dãy lenh liên tiêp ñu0c t chLc vào 1 file chuong trình, file chuong trình mac ñnh có phân m rong là * PRG

Trong mot chuong trình, moi lenh ñu0c viêt trên mot hàng và moi hàng ch chLa mot lenh tPi

mot cot bât k

4.1.2 So>n th5o chuong trình

ð soPn tho chuong trình, t c a s lênh ñua vào lenh; MODIFY COMAND < tên file ch ᄉᄉ ng trình >

Lúc này xuât hien caa s chuong trình ñ ta có th ñua các lenh vào cho nó Mot chuong trình foxpro thuMng có 3 phân

a) TPo môi truMng làm viec : thuMng chLa các lenh sau:

SET DATE FRENCH: ñat ngày tháng nam theo dPng DD-MM-YY SET CURENCY ON : ñat nam có 4 ch s

(42)

CLOSE ALL: ñóng các bng d lieu, các file co s d lieu,

(43)

Th,c hien các công viec mà chuong trình yêu câu nhu : + Cap nhap d lieu

+ x lý, tính toán + Kêt xuât thông tin c) Kêt thúc chuong trình

+ đóng các tap tin CSDL, các bng d lieu ựang s dIng + Gii phóng biên nh

+ Tr lPi các ch ñ cho h thông d) Chú thích trong chuong trình

Là các gii thích ñu0c thêm vào ñ làm rõ cho chuong trình, phi ñu0c bat ñâu bi dâu * hay &&

* : Bat ñâu mot dòng && : Viêt sau mot lenh 6.2 4.2 BIÊN NH 4.2.1 Khai báo biên a) Lenh gán =

Cú pháp: <biên> = <bien thLc> VídI: a= 5

ngay = Date() b) Lenh STORE

Cú pháp: STORE <bthLc> to <ds biên>

Công dIng: Gán giá tr <bthLc> cho <ds biên> ; nêu <biên> chua tôn tPi nó s khai báo, nêu ñã có thì thay th bi giá tr mZi

(44)

4.2.2 Nhap giá tr cho biên t bàn phím a) Lenh ACCEPT

Cú pháp ACCEPT <bthLc chuoi> to <biên chuoi>

ChLc nang : Dùng ñ nhap mot chuoi t bàn phím, kêt thúc bi phím , giá tr nhan ñu0c s ñua cho <biên>

Ví dI:

ACCEPT ‘nhap ho ten’ to bhoten ? ‘Ho ten vua nhap', bhoten

<BthLc chuoi> là mot câu nhac nh nguMi s dIng b Lenh INPUT

Cú pháp: INPUT <BthLc chuoi> to <biên>

Tác dIng: Tuong t lenh trên nhung có th nhan d lieu theo t1ng kieu: Kieu Charater: Phi ñu0c ñat trong cap dâu ' ' hay " "

Kieu Numberic: Nhap d lieu kieu sô Kieu Date: Phi ñu0c ñ trong dâu {} Kieu Logic: Nhap giá tr .T hay F Ví dI:

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

Chú ý: Trong hai lenh trên, nêu biên chua có thì nó s t khai báo, nêu ñã có thì nó s thay giá tr cAa biên bi giá tr v1a nhap

(45)

Quy uZc: Chuong trình ñu0c th,c hien t trên xuông duZi 4.3.2 C

u trúc r nhánh

Còn g ᄉ i l c ᄉ u trúc ch ᄉ n l ᄉ a C ᄉ u trúc r nhánh có hai d ᄉ ng: d ᄉ ng khuy ᄉ t v d ᄉ ng ᄉᄉ y ᄉᄉ:

a D>ng khuyêt: Cú pháp:

IF <BthLc L> <các lenh> BthLcL.F Cáclenh.T ENDIF

Tác dIng: Khi gap câu trúc này, <BthLc L> s ñu0c tính, nêu có giá tr .T thì <các lenh> s ñu0c th,c hien, ngu0c lPi th,c hien các lenh tiêp theo sau

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

(46)

Cú pháp: IF <BthLc L> <các lenh 1> ELSE <các lenh 2> ENDIF

Tác dIng: Khi gap câu trúc này, <BthLc L> s ñu0c tính Nêu có giá tr .T thì <các lenh 1> s ñu0c th,c hien, ngu0c lPi (có giá tr .F.) thì s th,c hien <các lenh 2> Sau ñó tiêp tIc th,c

hien các lênh tiêp theo trong chuong trình

Ví dI: D,a vào bng nhanvien, hãy nhap vào mot h tên nhân viên, tìm xem có ñúng là nhân viên cAa công ty hay không, nêu ñúng thì thông báo nam sinh và nam làm viec, ngu0c lPi

thì thông báo là không phi nhân viên cAa công ty set talk off

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

(47)

return

4.3.2.1 La ch8n mot trong nhiêu truTng hkp  Cú pháp

(48)

CASE <BthLc L1> <các lenh 1> CASE <BthLc L2>

<các lenh 2> CASE <BthLc Ln>

<các lenh n> [OTHERWISE <Các lenh n+1>] ENDCASE

Tác dIng: Khi gap câu trúc DO CASE, các <BthLc L> ñiêu kien s ñu0c tính Nêu <BthLc L> ñiêu kien nào ñó có giá tr .T thì nhóm lenh tuong Lng s ñu0c th,c hien và kêt thúc

câu trúc này, rôi tiêp tIc th,c hien các lênh sau ENDCASE Trong truMng h0p không có <bthLc

L> nào t 1 ñên n có giá tr .T thì <nhóm lenh n+1> (nêu có) s ñu0c th,c hien

Ví dI: Viêt chuong trình nhap vào mot nam (có 4 ch sô), sau ñó nhap thêm mot tháng, cho biêt tháng này có bao nhiêu ngày

set takl off clear

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=12

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

else

(49)

endcase

? 'thang', bthang, 'nam', bnam, 'co', so ngay, 'ngay' set talk on

return

4.3.3 Câu trúc lap

4.3.3.1 Câu trúc DO WHILE Cú pháp:

DO WHILE <BthLc L> <các lenh>

[LOOP] [EXIT]

ENDDO

Tác dIng: Khi gap câu trúc này thì <BthLc L> s ñu0c tính, nêu có giá tr .F thì s d1ng và th,c hien các lenh sau ENDDO Nêu có giá tr .T thì các lenh trong thân vòng lap s ñu0c

th,c hien và lPi quay v kiem tra ñiêu kien trong <bthLc L> và c th tiêp tIc

[LOOP]: Khi gap lenh này, Foxpro s quay v kiem tra ñiêu kien logic mà b qua các lenh phía sau [LOOP]

[EXIT]: Khi gap lenh này thi s thoát ra khki chuong trình Ví dI: Cho biêt dang sáchh tên cAa các nhân viên trong công ty set takl off

clear close all

use NHANVIEN

? 'danh sach ho ten hoc vien la:' do while !eof()

(50)(51)

Chú ý: Khi s dIng câu trúc này, các lenh trong thân vòng lap phi thay ñoi ñu0c giá tr cAa <BthLc L> ñ ñm bo tính kêt thúc

Ví dI: Nhap vào mot nam, hãy thông báo danh sách h tên, ngày sinh cAa nh ng nhân viên làm viec trong nam ñó, nêu không có thì thông báo là không có

set takl off set date french clear

close all

use NHANVIEN

input 'nhap nam lam viec" to bnam set filter to NAMLV = bnam count to dem

if dem = 0

? ' khong co nhan vien nao' else

go top

? 'danh sach nhan vien lam viec nam', bnam ? "HO TEN NGAY SINH'

do while !eof()

?HOTEN, NGAYSINH skip

enddo endif set filter to set talk on return

4.3.3.2 Câu trúc SCAN Cú pháp

(52)

<các lenh> [LOOP] [EXIT]

END SCAN

Tác dIng: Dùng ñ duyet lân lu0t các bn ghi trong bng d lieu hien hành nam trong <phPm vi> ñu0c ch ra và tho mãn ñiêu kien cAa các <BthLc L> sau FOR hoac WHILE Tuong

Lng vZi mot bn ghi tìm ñu0c <các lenh> s ñu0c th,c hien

Câu trúc SCAN s d1ng khi nào duyet ñên bn ghi cuôi cùng cAa bng d lieu ñang xét Ví d ᄉ: Vi ᄉ t ch ᄉᄉ ng trình nh ᄉ p n ᄉ m (b ᄉ n ch s ᄉ), hi ᄉ n th nh ᄉ ng n nhân viên sinh n ᄉ m ᄉ ó

set takl off set date french clear

close all

use NHANVIEN

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 return

Bài th,c hành chuong 4

7 Field Name Field Type Width Dec Phân ghi chú MASV

HOLOT TEN Character Character Character 5

(53)

7

Mã s nhân viên H lót

(54)

NGSINH Date 8 Ngày sinh

QUEQUAN Character 20 Quê quán DOS Numeric 2 ðiem môn Dos VRES Numeric 2 ðiem VRER FOX Numeric 2 ðiem FoxPro DTB Numeric 4 2 ðiem trung bình XEPLOAI Character 4 Xêp loPi

Nhap vào 10 mau tin cho các vùng: MASV, HOLOT, TEM, NGSINH, QQUAN, DOS, VRES, FOR theo mau duZi ñây Các vùng tin còn lPi s tính sau:

MASV HOLOT TEN NGSINH QQUAN DOS VRES FOR CK001 Le Van Hung 12-04-1972 Da Nang 8 9 10

NT001 Ho Thi Lan 10-05-1969 Hue 7 6 9 NT002 Tran Van Long 06-12-1968 Da Lat 5 4 5 CK002 Le Tung 05-06-1967 TP.HCM 7 7 6 KT001 Ng Thi Hoa 10-10-1967 TP.HCM 8 4 7 KT002 Le Van Chau 05-04-1968 Da Nang 7 6 9 CK003 Vo Anh 02-10-1969 Hue 9 9 10

CK004 Ho Duc Tuan 10-02-1968 Da Nang 7 6 9 NT003 Vo Thi Lan 02-01-1969 Hue 8 9 9 NT004 Le Van Huy 05-06-1968 Da Nang 8 5 2

2 Dùng lenh COPY FILE ñ chép tap tin KETQUA1.DBF thành KQ1.DBF Sau ñó có th dùng lenh USE KQ1 ñ m tap tin KQ1 không? tPi sao?

3 M tap tin KETQUA1.DBF

a Tính (ñiem trung bình), biêt rang DOS có h s hai, VRES có h s 1, FOX có h s 3 b Xêp loPi, biêt rang:

(55)

5<=DTB<7 : Xêp loPi ‘TB’ DTB<5 : Xêp loPi ‘YEU’

c Sap xêp gim dân theo DTB và ghi vào tap tin SX_DTB.DBF M tap tin SX_DTB.DBF rôi dùng lenh BROWSE ñ xem

d ðoi d lieu cAa truMng QQUAN thành ch hoa

e Tính trung bình cong cAa các môn h_c cho toàn b các mau tin, cho t1ng nhóm có MASV bat ñâu bang CK, NT, KT

f Cho biêt s sinh viên có ít nhât hai môn có ñiem >=8 Bài tap chuong 5

1 TPo tap tin NHAPVT.DBF có câu trúc nhu sau: 8 Field Name Field Type Width Dec Phân ghi chú MAVT NGAYNHAP MANX SL DONGIA THANHTIEN Charater Date Charater Numeric Numeric Numeric 5 8 1 6 8 9

Mã s vat tu Ngày nhap Nhap: N, xuât: X S lu0ng

ðon giá Thành tiên

Nhap vào 10 mau tin theo mau duZi ñây:

MAVT NGAYNHAP MANX SL 8.1 DONGIA TV01

(56)

BU01 QB01 MG01 ND01 01-01-1998 04-01-1998 08-01-1998 04-05-1998 05-01-1998 05-06-1998 06-06-1998 N

(57)

HD02 10-10-1998 N 12 13000000 HD02 01-01-1998 N 10 16000000 XD01 01-01-1998 X 30 1200000

2 Tap tin TONKHO98.DBF có câu trúc nhu sau: 9 Field Name Field Type Width Dec Phân ghi chú MAVT TONDAU SLN SLX TONCUOI Charater Numeric Numeric Numeric Numeric 5 10 10 10 10

Mã s vat tu Tôn ñâu k S lu0ng nhap S lu0ng xuât Tôn cuôi k

Nhap vào các mau tin sau:

MAVT TONDAU TV01 12 TL01 30 ML01 50 BU01 40 QB01 50 MG01 55 ND01 100 HD02 50 HD02 45 XD01 100

(58)

Width Dec 10 Field Name MAVT

(59)

TENVTCharater20

(60)

MAVT NGAYNHAP TV01

TL01 ML01 BU01 QB01 MG01 ND01 HD02 XD01

Tivi mau SHAP 14 Tu lanh TOSHIBA 1401 May lanh 1.5 HP

Ban ui Philip Quat ban Hitachi May giat SANYO 40 Noi com dien SANYO Xe cub 86

Xe dap NHAT

4 Tính giá tr truMng THANHTIEN cAa tap tin NHAPVT.DBF

5 Tính tong s tiên nhap cAa moi loPi vat tu có ch cái ñâu tiên bên trái giông nhau 6 Tính SLN, SLX, TONCUOI, sau thMi gian nhap xuât trên

7 TPo tap tin TONKHO99.DBF có câu trúc giông nhu TONKHO98.DBF Lây TONCUOI cAa tap tin TONKHO94.DBF ñ b vào TONDAU cAa TONKHO99.DBF 8 Liet kê danh sách Nhap vat tu gôm các mIc sau:

(61)

11 CHUONG 5: FORMS

11.1 5.1 KHÁI NIM V L-P TRÌNH HNG ð!I T"NG:

Thiêt k và lap trình huZng ñôi tu0ng là mot s thay ñoi ñôi vZi phong cách lap trình cu, lap trình huZng th tIc ñây thay vì nghi ñên các chLc nang cAa chuong trình ta ch cân nghi

ñên các ñôi tu0ng ñang tPo: là các thành phân ñoc lap cAa mot Lng dIng cZi chLc nang riêng

cAa nó Moi mot ñôi tu0ng ñêu có mot b thuoc tính mô t ñôi tu0ng; các phuong thLc là nh ng

ñoPn trình chLa trong ñiêu khien, cho ñiêu khien biêt cách thLc ñ th,c hien mot ñoPn công viec

nào ñó; và tap h0p nh ng s kien ñó là nh ng phn Lng cAa ñôi tu0ng

Trong Visual Foxpro, các form và control là các ñôi tu0ng ñu0c dùng ñ xây d,ng các Lng dIng

5.1.1 Thuoc tính cRa ñôi tukng (Properties)

ð ch ñên mot thuoc tính cAa ñôi tu0ng nào ta dùng cú pháp sau: <tên ñôi tuIng>.<thuoc tính>

Ví dI: Myform.caption= “Chuong trình Lng dIng” Các thuoc tính thông dIng:

-Left: V trí cPnh trái cAa ñôi tu0ng so vZi vat chLa nó -Top: V trí trên cAa ñôi tu0ng so vZi vat chLa nó -Height: Chiêu cao cAa ñôi tu0ng

-Width: Chiêu rong cAa ñôi tu0ng -Name: Tên ñ ch ñôi tu0ng -Enable: Giá tr logic:

True: có quyên làm viec

False: Không có quyên làm viec -Visible: Giá tr logic:

(62)

False: Không thây ñu0c ñôi tu0ng

5.1.2 Phuong thFc cRa ñôi tukng (Methods)

ð g_i ñên phuong thLc cAa mot ñôi tu0ng, ta dùng cú pháp: <tên ñôi tuIng>.<phuong thLc>

Ví dI: Myform.show

Mot s phuong thLc thung dùng: -Refresh: Làm tuoi lPi ñôi tu0ng -Show: Hien ñôi tu0ng

-Hide: an ñôi tu0ng

-Release: Gii phóng ñôi tu0ng

-SetFocus: Thiêt lap “tâm ngam” cho ñôi tu0ng

5.1.3 S kien cRa ñôi tukng

ð ch ñên s kien cAa ñôi tu0ng, ta dùng cú pháp sau: <tên ñôi tuIng>.<s kien>

Mot s s kien thung dùng:

-Click: ðu0c g_i khi kích chuot vào ñôi tu0ng

-DbClick: ðu0c g_i khi kích ñúp chuot vào ñôi tu0ng

-MouseMove: ðu0c g_i khi di chuyen chuot trên b mat cAa ñôi tu0ng -KeyPress: ðu0c g_i khi nhân mot phím kích chuot vào ñôi tu0ng -Got focus: ðu0c g_i khi ñua ñôi tu0ng vào tâm ngam

-Lostfocus: ðu0c g_i khi ñua ñôi tu0ng ra khki tâm ngam

(63)

11.2 5.2 FORM 5.2.1 Gii thieu

Form ñu0c dùng ñ làm giao dien nhap, hien th thông tin, nó cung câp mot tap h0p các ñôi tu0ng ñ ñáp lPi nh ng thao tác cAa nguMi dùng làm cho Lng dIng ra dáng chuyên nghiep

Ví dI: Giao dien cAa mot Form nhap d lieu 5.2.2 T>o form thông qua Wizard

T menu Tools, ch_n wizard, ch_n form, xuât hien giao dien wizard selection, rôi thông qua huZng dan

5.2.3 T>o form thông qua thiêt k ð tPo form thông qua thiêt kê, t caa s lenh ta th,c hien lenh sau: CREATE FORM <tên form> Khi ñó ta ñu0c màn hình thiêt k form nhu sau:

a Qu6n lý form

Luu Form: T menu file,

ch_n save ñ luu vào <tên form>, mac ñnh phân m rong là scx ChZy form: T caa s lenh, th,c hien lenh sau:

DO FORM <tên form>

(64)

dùng: ñoiñoidùng

b Tuy cap ñên các ñôi tuIng trên form

+ Muôn ch ñên mot ñôi tu0ng nào trên form, ta dùng:

<tên form> <ñôi tu0ng>: nêu <ñôi tu0ng> không cùng vZi form ñang thao tác <this form>.<ñôi tu0ng>: nêu ñôi tu0ng nam trên form ñang thao tác

+ Muôn thay ñoi giá tr các thuoc tính trên form, ta <tên form>.<thuoc tính>= <giá tr>: nêu muôn thay thuoc tính cAa form không phi là form hien hành <This form>.<thuoc tính>=<giá tr>: nêu muôn thay các thuoc tính cAa form hien hành

c Các thuoc tính, phuong thLc, s kien thung trên form

Thuoc tính:

-BackColor: Màu nên

-BorderStyle: DPng ñuMng viên -Caption: Tiêu ñ cAa form -FillColor: Màu ñ tô ñôi tu0ng

-Fontname: Font ch cho các ñôi tu0ng chLa van bn -Fontsize: Kính thuZc fontname

-Moveable: Cho phép di chuyen hay không

Tình huông

-MoveMouse: đáp Lng khi di chuyen chuot trên b mat form -Destroy: đáp Lng khi gii phóng form

(65)

5.3 Thanh công c Control Toolbar

Muôn ñua ñôi tu0ng trên thanh Control vào form: 4 buZc -Kích chuot vào ñôi tu0ng cân ñua

-V nó trên form ñ xác ñnh v trí -Thiêt lap các thuoc tính thích h0p

-Viêt mã lenh cho các tình huông tuong Lng Quy uZc ñat tên cho các ñôi tu0ng

LoPi ñôi tu0ng Tên Form Bat ñâu bi Frm Command Bat ñâu bi cmd Edit box Bat ñâu bi Edb Grid Bat ñâu bi Grd Image Bat ñâu bi Img Label Bat ñâu bi Lbl Textbox Bat ñâu bi Txt Timer Bat ñâu bi Tmr

5.3.2 Mot s ñôi tukng trên Controls

a Label : Dùng ñ th hien các chuoi trên form Các thuoc tính thuMng dùng:

-Caption: Chuoi th hien

-Autosize: Giá tr logic, cho phép kích thuZc cAa Label có t ñong chunh saa theo ñ dài cAa caption hay không

(66)

Các thuoc tính thuMng dùng: -Caption: tên xuât hien trên nút lenh -Picture: Hình xuât hien trên nút lenh

-Enable: giá tr Logic, cho phép ch_n nút lenh hay không Các S kien thuMng dùng:

-Click: Khi kích chuot vào nút lenh thì s kien này ñu0c g_i

c TextBox: Dùng ñ xem, chunh saa d lieu t các truMng trong bng d lieu không phi kieu memo

Các thuoc tính thuMng dùng

-ControlSource: Tên cAa truMng hay biên mà giá tr cAa nó ñu0c hien trong textbox

-Value: Giá tr hien thMi cAa textbox S kien thuMng dùng:

-Change: Khi có s thay ñoi cAa thuoc tính value -KeyPress: Khi có phím bât k ñu0c ân

d Editbox: Tuong t nhu textbox, ñu0c dùng ñ chunh saa d lieu t các truMng memo Các thuoc tính thuMng dùng

-Control Source: Tên cAa truMng mà giá tr cAa nó ñu0c th hien trong editbox -ScrollBars: Có hien thanh cuon trong khung editbox hay không

-ReadOnly: Cho phép có ñu0c chunh saa noi dung hay không S kien thuMng dùng:

-Change: Khi có s thay ñoi cAa thuoc tính value -Keypress: Khi có phím bât k ñu0c ân

(67)

Các thuoc tính thuMng dùng -Picture: Xác ñnh file hình nh

-Stretch: Xác ñnh cách thLc th hien hình nh (phóng to, thu nhk, nguyên mau) f Timer: Dùng ñ thiêt lap các công viec th,c hien ñêu ñan sau mot khong thMi gian Các thuoc tính thuMng dùng

-Enabled: Xác ñnh xem Timer có hieu l,c hay không

-Interval: Quy ñnh khong thMi gian xác ñnh cho tình huông timer S kien thuMng dùng:

-Timer: ðu0c kích hoPt ñêu ñan sau mot khong thMi gian xác ñnh thuoc tính Interval

g Grid: Dùng ñ th hien d lieu theo dPng bng Các thuoc tính thuMng dùng

-Row Source: Xác ñnh bng d lieu cân th hien -ColumnCount: Xác ñnh s cot cAa Grid Chú ý:

Nêu Row Source không ñu0c ch ra thì lây bng d lieu hien hành

Nêu Column count không ch ra thì mac ñnh là tât c các truMng trong bng d lieu (Column count=-1)

Control Source: ðu0c xác ñnh cho t1ng cot, dùng ñ khai báo nguôn d lieu cho cot ñó

-Allow Addnew: Cho phép thêm các bn ghi mZi hay không Chú ý:

Muôn thay ñoi các thuoc tính trên Grid thì chuyen Grid sang dPng edit bang cách nhân phím

phi chuot lên Rrid, ch_n Properties Grid ñang ch ñ Edit có mot ñuMng viên bao quanh

(68)

Gi s có b

ng d lieu vi câu trúc: MANV C5

HOTEN C 30

Hãy thiêt k form ñ xem bng d lieu trên

TathiêtkêformnhusauTxtMANVTxtHOTENCmdDaCmdTruoCmdSauCmdCuoiCmdTho atFrmXem

13 Các thuoc tính chính :

14 + TxtMANV các thuoc tính ControlSource là MANV 15 + TxtHOTEN các thuoc tính ControlSource là HOTEN 16 Mã lenh cAa các ñôi tu0ng trên Form là:

+ FrmXem.load use hoso

(69)

thisform.refresh + CmdCuoi.Click go bottom

thisform.refresh + CmdTruoc.Click if not bof()

skip -1 endif

thisform.refresh + CmdSau.Click if not eof() skip endif

thisform.refresh + CmdThoat.Click use

(70)

17 CHUONG 6 REPORTS 17.1 6.1 KHÁI NIM

Reports là công c ñ trình bày và tóm tat d lieu trong mot van bn khi in Report có hai thành phân co bn câu thành: d lieu nguôn, thông thuMng là các bng d lieu và hình thLc trình

bày là dPng thLc cAa report s ñnh dPng cách kêt xuât d lieu Màn hình thiêt k Report

17.2 6.2 CÁC BC ð T)O REPORT

Ta có th thiêt k report ñ th hien d lieu nhiêu dPng thLc khác nhau trên giây khi in Quá trình thiêt k gôm 4 buZc chính nhu sau:

1 Xác ñnh loPi Report cân tPo: TLc là quyêt ñnh ch_n dPng thLc mà report hien th kêt qu

2 TPo Report layout: Có th s dIng report wizard hay report designer Report layout ñu0c luu trên ñia vZi phân m rong cAa file là FRX: Luu tr chi tiêt cAa report 3 Saa ñoi layout cAa report

4 Xem và in report

(71)

T menu Tools, ch_n Wizard, ch_n Report sau ñó làm theo các buZc huZng dan

BuZc 1: Ch_n bng d lieu và các truMng cân th hien

BuZc 2: TPo nhóm d lieu kêt xuât

(72)

BuZc 5: Ch_n truMng Sap xêp

BuZc 6: ðat t,a ñê, kêt thúc

17.4 6.4 TUO REPORT BANG REPORT DESIGNER 6.4.1 Qu5n lý Report

TPo mZi Report: CREATE REPORT <tên Report> Ví dI: create report THU

Lúc này màn hình xuât hien hop thoPi report

(73)

Xem truZc khi in: REPORT FORM <tên report> PREVIEW Xem truZc khi in có ñiêu kien:

REPORT FORM <tên report> PREVIEW <ñiêu kien> In report: REPORT FORM <tên report> TO PRINTER 6.4.2 Các thành phân trên Report

Title: Dùng ñ in trên moi report: T menu report, ch_n title summary Page Header: ð in trên moi header cAa moi trang in

Column header: ð in tên header cAa moi cot ð ch_n, t menu file ch_n page setup,

ch_n giá tr cho column number lZn hon 1

Group header: Xuât hien moi khi bat ñâu nhóm mZi ð ch_n, t menu report ch_n data grouping

(74)

Column footer: In phân Footer cAa moi cot ð ch_n, t menu file, ch_n page setup, ch_n giá tr cho column nimber lZn hon 1

Page Footer: In phân Footer cAa moi trang Sumary: Phân tôm tat cAa moi report 6.4.3 Các control trên Report

Thanh công c Report Control

ChLc nang cAa các control:

Field trong bàng d lieu, biên và các bieuthLc toán Field Text thuân tuý Label

ðuMng k Line

Hop và ñông khung Rectangle Hình tròn, elip Rounded Rectangle Hình nh hoac field General Picture 6.4.4 ðua các control vào report Th,c hien các buZc sau:

+ Ch_n control thích h0p

+ Kéo rê chuot trên report ñ xác ñnh v trí cAa nó trên report + Hieu chunh các control

a ðua field vào report: + Kích chuot vào

+ Trong hop report Expression, ch_n nút lenh sau hop Expression + Trong hop field, hc_n tên truMng hay biên thích h0p

(75)

b ðua label vào report: + Ch_n A

+ G noi dung cAa label

c ðua Picture bound control vào report: + Ch_n picture bound control

+ Xuât hien hop hoi thoPi report picture, ch_n file, nêu muôn chèn hình nh t file, ch_n field nêu muôn ch_n truMng General

+ Ch_n Ok

(76)

18 CHUONG 7 T>O MENU VÀ QUN LÝ ð ÁN 18.1 7.1 TUO MENU

18.2 7.1.1 GI=I THIEU

Menu cung câp mot phuong thLc có câu trúc và giao dien vZi nguMi dùng ñ tác ñong lên

nh ng câu lenh trong Lng dIng

Viec sap xêp và thiêt k menu thích h0p s giúp cho nguMi dùng ñu0c thuan l0i khi s dIng h thông menu cAa bPn

18.3 7.1.2 CÁC BU=C TUI MOT MENU H THÔNG

1 Sap xêp và thiêt kê: Quyêt ñnh menu nào bPn cân chúng xuât hien v trí nào trên màn hình, cân nh ng menu con nào?

2 S dIng menu designer, tPo menu và các Submenu 3 Gan các câu lenh tuong Lng vZi công viec

4 Biên dch menu

5 Tiên hành chPy tha, kiem tra 18.4 7.1.3 TUO MENU H THÔNG 7.1.3.1 Qu5n lý menu h thông

Menu h thông ñu0c luu tr tên ñia vZi file có phân m rong là *.MNX TPo menu bang công c Designer Menu: Th,c hien lenh:

CREATE MENU <tên menu>

M menu ñã có: MODIFY MENU <tên menu>

Dch file Menu: ð dch file menu, t màn hình Menu Designer ch_n lenh Generate File menu sau khi dch s có phân m rong là MPR

7.1.3.2 T>o menu h thông thông qua Menu Designer

(77)

sau:

+ Trong hop Prompt, ta ñua vào tên cân hien th trên giao dien + Trong hop Result, ch_n:

-Submenu nêu muôn tPo menu con -Procedure nêu muôn thi hành th tIc

-Command n ᄉ u mu ᄉ n th ᄉ c hi ᄉ n m ᄉ t l ᄉ nh + Kêt thúc, ân Ctrl_W

18.5 7.2.QU_N LÝ ð ÁN 18.6 7.2.1 KHÁI NIEM ð ÁN

ð án là tên g_i ñ ch ñên Lng dIng mà bPn ñang xây d,ng Thông thuMng các thành phân cAa mot ñ án bao gôm:

+ Các bng d lieu (table)

+ Các file co s d lieu (database) + Các form

+ Các report + Các query

(78)

18.7 7.2.2 QU_N LÝ ð ÁN

Mot ñ án trong Visual Foxpro ñu0c luu tr trên file có phân m rong mac ñnh là *.PRJ 7.2.2.1 T>o mi các ñ án

Th,c hien lenh: CREATE PROJECT <tên ñ án>

Lúc này xuât hien caa s qun lý ñ án Project Manager nhu trên +

Database: Bao gôm các:

Table: Các bng d lieu có liên kêt vZi nhau hay các bng t do Query: Là câu trúc ñ lây thông tin t các bng table

View: Là các Query chuyên dIng mà ta có th truy xuât d lieu cIc b và t xa cho phép cap nhat các nguôn d lieu bang cách làm thay ñ Report bi

quyre

(79)

+ Class: Liet kê các thu vien ñu0c s dIng

+ Code: và nh ng file khác: Liet kê các file chuong trình và các file khác ñu0c s dIng trong chuong trình

ð chunh saa bât k mot thành phân nào trong ñ án ta ch_n nó rôi ch_n nút Modify ð thêm bât k mot file nào cho ñ án ta kích nút add (nêu ch_n file ñã có) hoac nút new (nêu tPo mZi)

Muôn loPi b bât k mot thành phân nào cAa ñ án ta ch_n nó rôi ch_n nút remove 7.2.2.2 M mot ñ án ñã có

Th,c hien lenh: MODIFY PROJECT <tên ñ án> 7.2.2.3 DXch ñ án

+ Dch sang APP: Khi này, ñ ch_n ñ án phi có mot bn sao cAa Visual Foxpro Dùng lenh BUILD <tên ñ án>

+ Dch sang file có phân m rong là exe: Khi này, nguMi dùng không cân có Visual Foxpro nhung phi cung câp hai file: vfp6r.dll và vfp6renu.dll ñu0c cài ñat trong ñuMng dan

hoac trong cùng thu mIc vZi Lng dIng Dùng lenh: BUILD EXE <tên ñ án> 7.2.2.4 Ch>y ñ án

Sau khi ñã dch, ta có th chPy ñ án thông qua lenh: DO <tên Lng dIng> 18.8 7.2.3 ðAT STARTING POINT CHO ð ÁN

Khi Lng dIng ñu0c thi hành, có mot ñiem bat ñâu, ñó là Starting point ð ch_n mot thành phân cAa d án là Starting point:

+ Ch_n thành phân ñu0c ñat là Starting point + T Menu Project, ch_n Set main

(80)

Do mainmenu.mpr Read Events Do cleanup.prg

a Do Setup.prg: L th ᄉ c hi ᄉ n ch ᄉᄉ ng trình ᄉ thi ᄉ t l ᄉ p môi tr ᄉᄉ ng cho h th ᄉ ng

b Do mainmenu.mpr: ChPy file menu chính ñ thiêt lap giao dien cho h thông c Read Events: Bat ñâu th,c hien vòng lap ñ th,c hien công viec

d Do cleanup.prg: ChPy chuong trình d_n d¡p môi truMng, tr lPi môi truMng cho h thông và

thoát khki h thông ñây, phi có lenh Clear Events ñ thoát khki vòng lap ñã ñu0c thiêt lap

(81)

Ngày đăng: 17/04/2021, 21:37

Tài liệu cùng người dùng

Tài liệu liên quan