Cú pháp lệnh tạo lập CSDL: Create Ví dụ: Để tạo lập CSDL quản lý học sinh QLHS.DBF ta dùng lệnh: Create QLHS Tiếp theo xuất hiện một khung đối thoại yêu cầu khai báo cấu trúc tệp
Trang 1BàI 1: Tạo lập cơ sở dữ liệu
1/ Tạo lập một CSDL – Lệnh Create
Tất cả các bảng biểu trong thực tế ghi dữ liệu kiểu chữ, kiểu số, kiểu ngày tháng đều có thể chuyển thành một CSDL của Foxpro, chẳng hạn số điểm của một trờng phổ thông hồ sơ sinh viên của một trờng
đại học Khi đó mỗi dòng của hàng ứng với một bản ghi (record) của CSDL, mỗi cột của bảng ứng với một trờng (field), phần tiêu đề các cột của bảng ứng với cấu trúc (structure) của CSDL Mỗi trờng đợc xác định bởi tên trờng (ứng với tiêu đề cột của bảng), kiểu trờng(ứng với kiểu dữ liệu) độ rộng (ứng với độ rộng cột )
Tệp CSDL có đuôi là DBF, trong các lệnh ta không cần viết phần đuôi DBF mà chơng trình Fox tự gán phần mở rộng này Một CSDL có hai phần: Phần đầu là cấu trúc tệp dùng khai báo các tr ờng, phần chính là nội dung các bản ghi
Việc tạo lập CSDL gồm việc đặt tên và khai báo cấu trúc tệp Mỗi tệp CSDL chỉ đợc ghi lên đĩa khi nó đã có cấu trúc
Cú pháp lệnh tạo lập CSDL:
Create <tên file>
Ví dụ: Để tạo lập CSDL quản lý học sinh (QLHS.DBF) ta dùng lệnh:
Create QLHS
Tiếp theo xuất hiện một khung đối thoại yêu cầu khai báo cấu trúc tệp CSDL:
Ta khai báo mỗi trờng của khung hội thoại bao gồm:
+ Name: tên của trờng, tối đa 10 ký tự bắt đầu bằng chữ
+ Type: kiểu của trờng là character (ngầm định), numeric(N), logical (L), date (D)
+ Width: độ rộng của trờng, độ rộng tối đa của trờng ký tự là 254, độ rộng tối đa của trờng số là
20, độ rộng cố định của trờng logical là 1, độ rộng cố định của trờng date là 8
+ Dec: Chữ số lẻ sau dấu chấm thập phân (chỉ với trờng số)
Foxpro cho phép CSDL có tới một tỷ bản ghi, kích thớc mỗi bản ghi không quá 4000 byte
Khi con trỏ ở vùng Type có thể nhấn phím cách để hiện danh sách các dạng dữ liệu, di vệt sáng
đến dạng cần chọn nhấn Enter, hoặc nhấn chữ cái đầu của dạng cần chọn (ví dụ nhấn N chọn numeric)
Trong quá trình khai báo cấu trúc ta có thể dễ dàng sửa chữa bằng cách di vệt sáng đến chỗ cần sửa và sửa Muốn chèn một trờng nào đó vào trớc một trờng có vệt sáng thì chọn Insert (hoăc ấn Alt+T) Xoá trờng có hộp sáng thì chọn Delete (Alt+T)
Muốn huỷ việc khai báo nhấn ESC
Muốn ghi cấu trúc tệp vào đĩa ấn Ctrl+W xuất hiện hộp thoại mang dòng chữ
Input data record now? (Yes, No)
Nếu trả lời No thì lệnh Create sẽ kết thúc ( sau này muốn nhập dữ liệu thì phải dùng lệnh Append), nếu trả lời Yes thì xuất hiện màn hình nhập liệu cho bản ghi đầu tiên Ta nhập dữ liệu lần l ợt cho các tr-ờng, hết bản ghi này máy tự động chuyển đến bản ghi khác
Sau khi nhập xong dữ liệu, ấn Ctrl+W để ghi toàn bộ dữ liệu vào đĩa Lúc này tệp vẫn ch a đợc
đóng, nếu bị mất điện dữ liệu vẫn có thể bị mất Để đóng tệp CSDL ta dùng lệnh
Trang 2USE
Lệnh Create Table(Tham khảo)
Để tạo cấu trúc tệp ngay tại cửa sổ lệnh hoặc ngay trong chơng trình, ta dùng lệnh:
create table <tên tệp> ( tên-trờng kiểu(độ rộng)… ) ) VD: Create table QLHS (stt C(3),hoten C(30),ngaysinh D, điểmtoán N(5,2)… ) )
Đối với các trờng D, L, Memo, không cần khai báo độ rộng
2 Mở và đóng tệp CSDL - Lệnh USE
Muốn làm việc với một tệp CSDL trớc tiên ta phải mở nó bằng lệnh:
USE <tên tệp>
VD USE QLHS
Foxpro cho phép mở đồng thời 25 tệp CSDL trên 25 vùng khác nhau
Lệnh đóng tệp CSDL trong vùng làm việc hiện hành gõ lệnh
USE
Để đóng các tệp CSDL còn có thể dùng các lệnh
+ CLOSE ALL: đóng tất cả các loại tệp đang mở + CLOSE DATABASES: đóng tất cả các tệp CSDL
3.Bổ xung bản ghi – Lệnh Append
Để bổ sung các bản ghi vào cuối tệp CSDL đang mở dùng lệnh :
Màn hình nhập dữ liệu nh của lệnh Create, các thao tác nhập cũng tơng tự Nhập xong nhấn Ctrl+W để ghi lại
Lệnh bổ xung bản ghi trắng vào cuối tệp (không hiện màn hình nhập dữ liệu):
APPEND BLANK
4 Bổ xung các bản ghi từ một tệp vào một tệp khác – lệnh APPEND FROM
Cú pháp:
APPEND FROM < tệp bổ xung > [ for <btL>]
Lệnh này bổ xung các bản ghi của < tệp bổ xung> vào tệp CSDL đang mở Hai tệp này phải có cấu trúc giống nhau, < tệp bổ xung > phải ở trang thái đóng Phần FOR <btL>: hạn chế các bản ghi đợc bổ xung vào tệp
VD: Giả sử ta có 3 tệp CSDL: QLHS.DBF, QLHS1.DBF, QLHS2.DBF Để ghép 2 tệp CSDL QLHS1.DBF, QLHS2.DBF vào tệp QLHS DBF ta dùng lệnh:
Use QLHS
Append from QLHS1.DBF
Append from QLHS2.DBF
Trang 3List (KiÓm tra l¹i)
Trang 4BàI 2 con trỏ bản ghi và dịch chuyển con trỏ bản ghi
Lệnh goto và lệnh skip
Để xem điểm của một học sinh trong bảng điểm ta phải đặt một thớc kẻ dài ngang dới tên học sinh
đó Thớc kẻ này tơng ứng với khái niệm con trỏ bản ghi trong tệp CSDL Việc dịch chuyển thớc kẻ đến xem dữ liệu của những học sinh khác nhau tơng ứng với khái niệm dịch chuyển con trỏ bản ghi Tại một thời đIểm Foxpro chỉ làm việc với bản ghi mà con trỏ bản ghi đang trỏ vào nó, bản ghi này gọi là bản ghi hiện hành
Sau khi mở tệp 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 các lệnh sau:
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 1 bản ghi
Skip <n> : Dịch chuyển theo chiều tiến n bản ghi (n>0) hoặc lùi lại n bản ghi (n<0) so bản ghi hiện hành
BàI 3: xem cơ sở dữ liệu
1.Phạm vi thc hiện của một lệnh
Nhiều lệnh của Foxpro dùng kèm với <phạm vi >, nh các lệnh List, Display, browse, locate, delete, Phạm vi xác định số bản ghi mà lệnh tác động đến Phạm vi có 4 dạng:
… )… )
All : Làm việc với tất cả các bản ghi
RECORD <n>: làm việc với bản ghi thứ n
NEXT <n>: làm việc với bản ghi thứ n kể từ bản ghi hiện hành
REST: làm việc với tất cả các bản ghi kể từ bản ghi hiện hành đến bản ghi cuối cùng
2/ Xem cấu trúc – lệnh Structure
Có thể xem cấu trúc bằng một trong hai lệnh sau:
LIST Structure [ to Print | to file <tên tệp]
DISPLAY Structure [ to Print | to file <tên tệp>]
Hai lệnh trên sẽ đa cấu trúc tệp CSDL đang mở lên màn hình nếu không có các tham số Nếu có
To Print thì đa kết quả ra máy in Nếu có To File thì đa kết quả ra tệp Lệnh Display cho hiện ra từng trang màn hình VD:
Use qlhs
List stru
3 Xem nội dung các bản ghi – Lệnh LIST, DISPLAY
Cú pháp lệnh list:
LIST < phạm vi><ds trờng> FOR <btL1> WHILE<btL2> [OFF] [TO PRINT | TO FILE<tên tệp>]
Trang 5Lệnh trên sẽ liệt kê các bản ghi của tệp CSDL đang mở lên màn hình, mỗi bản ghi là một dòng, mỗi trờng là một cột (tên cột là tên trờng) Nếu trờng dài hơn chiều rộng màn hình thì bị ngắt xuống dòng dới Nếu số dòng nhiều hơn một trang màn hình thì màn hình bị trôi
Các thành phần tuỳ chọn của lệnh :
* < phạm vi>: xác định phạm vi của bản ghi đợc liệt kê
* < ds trờng> : hạn chế chỉ cho hiện các trờng trong danh sách Tên trờng cách nhau bởi dấu phẩy
* FOR<btL1> chỉ có những bản ghi thoả mãn <btL1>mới đợc liệt kê
* WHILE<btL2> việc liệt kê sẽ dừng khi lần đầu tiên gặp phải bản ghi không thoả mãn <btL2>
* OFF: không hiện số hiệu bản ghi ở cột khi liệt kê
* TO PRINT : Đa kết quả ra máy in
* TO FILE <tên tệp>: đa kết quả ra máy in
Nếu không dùng tuỳ chọn nào(dùng LIST) thì tất cả các bản ghi và tất cả các trờng đều hiển thị
Để xem nội dung bản ghi ta còn có thể dùng lệnh DISPLAY (cú pháp giống nh lệnh LIST) Song
có một số điểm khác biệt
Nếu dùng lệnh DISPlAY không có tuỳ chọn về hạn chế bản ghi thì chỉ có bản ghi hiện hành đợc hiển thị
Lệnh Display All… ) Cho hiện tất cả các bản ghi nh lệnh LIST Khi hiện đợc một trang màn hình thì máy dừng lai, để hiện tiếp cần nhấn một phím
Display tiện dùng để xem các CSDL lớn nhằm tránh trôi màn hình nh lệnh List
Vd:
Use QLHS
List
List hoten,ngaysinh,quequan,noisinh,gioitinh for noisinh=’an bài’
(liệt kê các học sinh co Noisinh tai An Bài)
bàI 4: SửA cấu trúc – lệnh modify structure Muốn sửa cấu trúc của một tệp CSDL trớc tiên ta phải mở nó và sau đó dùng lệnh:
modify structure Trên màn hình xuất hiện một hộp thoại chứa cấu trúc của tệp CSDL
Các thao tác sửa đổi nh trong lệnh Create Khi kết thúc sửa: ấn ESC nếu muốn huỷ các sửa đổi (cấu trúc vẫn nh cũ) hoặc ấn Ctrl+W để ghi lại, sau khi nhấn Ctrl+W xuất hiện hộp thoại
Nếu chọn Yes là đồng ý, chọn No là bỏ qua
Chú ý: Trớc khi sửa cấu trúc cần phải sao tệp CSDL thêm một bản nữa để lu trữ, nếu có trục trặc
gì ta vẫn còn bản cũ
Nếu kiểu dữ liệu của một trờng sau khi sửa đổi phù hợp với dữ liệu của tệp cũ thì dữ liệu tệp cũ chuyển sang tệp mới Nếu không phù hợp thi sẽ bị xoá bỏ
Trang 6Nếu ta thay đổi tên trờng và kiểu trờng, hoặc thay đổi tên trờng và độ rộng của trờng thì Foxpro coi đây là trờng hoàn toàn mới và huỷ bỏ hết dữ liệu của trờng này Trong trờng hợp này ta cần phải tiến hành hai lần sửa cấu trúc: Lần thứ nhất sửa mọi thay đổi của trờng nhng không sửa tên trờng và sau đó ghi lại, lần thứ hai mới sửa tên trờng
Nếu tệp CSDL có trờng là memo thì tệp cũ lu trờng memo *.FPT sẽ đổi thành *.TBK
Nhìn chung sau khi sửa cấu trúc, ta nên kiểm tra lại dữ liệu của tệp bằng các lệnh List, Display, Browse
VD : use qlhs
Modi stru
BàI 5: sửa nội dung bản ghi – lệnh edit
Để sửa nội dung bản ghi của một tệp CSDL đang mở, dùng lệnh
EDIT < phạm vi> FIELDS <ds trờng> [NOEDIT] [FOR <btL1>] [WHILE<btL2>]
Màn hình hiện bản ghi nh lệnh Append Các thành phần sau Edit đợc giải thích nh trong lệnh List NOEDIT không cho phép sửa đổi các bản ghi đang tồn tại (nhng ta vẫn có thể bổ xung bản ghi hay
đánh dấu xoá)
Nếu chỉ dùng đơn giản Edit thì lệnh này cho phép sửa đổi bản ghi hiện hành Sửa xong ấn Ctrl+W
để ghi lại hoặc ấn ESC để huỷ bỏ
VD:
USE QLHS
GO 2 EDIT (sửa bản ghi thứ 2)
Lệnh Edit còn dùng để xem các bản ghi trên màn hình
Lệnh Change có cú pháp và nhiệm vụ giống hệt lệnh Edit
BàI 6 lệnh xem, sửa, và bổ xung bản ghi
lệnh Browse Lệnh Browse là một lệnh rất mạnh của foxpro Cú pháp của lệnh với các tham số hay dùng:
BROWSE [FIELDS <ds trờng>][FOR<btL1>] [WINDOWN<tên cửa sổ 1>][IN WINDOWN<tên cửa sổ 2>| IN SCREEN ][TITLE<btC1>][WIDTH<btN1>][ PARTITION ][PARTITION<btN2>] [NOLINK][LEDIT][REDIT][LOCK<btN3>][FREEZE<tên trờng>][ NOEDIT | NOMODIFY ] [NOAPPEND ][NODELETE]
Lệnh Browse dùng tiện cả trong chế độ hội thoại lẫn trong chơng trình Hay dùng nhất là lệnh Browse (không tuỳ chọn): Sẽ hiển thị tất cả các bản ghi và tất cả các trờng Ta có thể dễ dàng sửa đổi và
bổ xung các bản ghi Để cửa sổ Browse chiếm toàn màn hình thì ấn Ctrl+F10
Trong màn hình của lệnh Browse ta có thể di chuyển lên xuống từng dòng bằng các phím mũi tên hay từng trang màn hình bằng phím Page Up hoặc Page Down, di chuyển giữa các tr ờng bằng phím Tab hoặc Shift+Tab
Trang 7Muốn thoát khỏi lệnh mà không ghi các sửa đổi thì ấn ESC, ghi các sửa đổi và thoát thì ấn Ctrl+W Lệnh Browse chỉ có hiệu lực khi CSDL có ít nhất 1 bản ghi
Vd:
USE QLHS BROWSE Lệnh Browse còn dùng để bổ xung các bản ghi vào cuối tệp Khi nhấn Ctrl+N, một bản ghi trắng xuất hiện ở cuối tệp con trỏ ở đầu dòng đợi ta nhập bản ghi mới Muốn bổ xung nhiều bản ghi thì ấn Ctrl+N nhiều lần
Chú ý: Các tham số in nghiêng sau lệnh Brow học sinh tự tìm sách tham khảo
BàI 7 Chèn một bản ghi – lệnh Insert
Cú pháp: INSERT [BLANK] [ BEORE]
Giải thích
Lệnh Insert : Chèn một bản ghi vào sau bản ghi hiện hành, các bản ghi phía sau bị đẩy lùi xuống, màn hình nhập liệu xuất hiện
Lệnh Insert Before: chèn một bản ghi vào trớc bản ghi hiện hành, xuất hiện màn hình nhập dữ liệu Lệnh Insert Blank: Chèn một bản ghi trắng vào sau bản ghi hiện hành, không hiện màn hình nhập liệu
Goto 5 Insert Goto 10 Insert blank List
Chú ý: Đối với lệnh Insert và lệnh Append mà trớc đó đã dùng lệnh Set carry on thì nội dung của bản ghi trớc sẽ tự động chuyển sang bản ghi mới
BàI 8: Xoá bản ghi – các lệnh Delete, Recall, Pack - Zap 1.Xoá một số bản ghi
Muốn xoá một số bản ghi cần phải qua hai giai đoạn: đánh dấu xoá ( để an toàn dữ liệu ), thực sự xoá
a/ Lệnh đánh dấu xoá
Cú pháp:
DELETE < phạm vi> [FOR btL1 ] [WHILE btl2]
Trang 8Nếu không dùng các tuỳ chọn, lệnh này đánh dấu xoá bản ghi hiện hành Muốn đánh dấu xoá nhiều bản ghi thoả mãn btL thì dùng FOR, While hoặc <phạm vi> Khi dùng lệnh List, các bản ghi bị
đánh dấu xoá có dấu đằng trớc
Vd: Đánh dấu xoá những ngời có đểm toán = 0
Use qlhs
Delete for diemtoan=0
List
Có thể tiến hành đánh dấu xoá các bản ghi khi đang thực hiện Edit hoặc Browse bằng cách gõ Ctrl+ T tại bản ghi tơng ứng Các bản ghi này đợc thể hiện bởi những dấu chấm sao (*) bên trái Cũng có thể đánh dấu xoá các bản ghi qua bảng chọn : F10, record, Delete
Hàm delete(): dùng để kiểm tra bản ghi hiện hành có bị đánh dấu xoá hay không Hàm cho T nếu
bị đánh dấu xoá
Theo ngầm định, Foxpro vẫn xử lý các bản ghi bị đánh dấu xoá nh bình thờng Để che các bản ghi
bị đánh dấu xoá ( coi nh không có bản ghi này), dùng lệnh:
SET DELETE ON
Để huỷ việc che các bản ghi bị đánh dấu xoá dùnglệnh
SET DELETE OFF
b/ Khôi phục bản ghi
Cú pháp:
RECALL[<phạm vi>] [FOR btL1] [WHILE btL2]
Lệnh này khôi phục lại các bản ghi bị đánh dấu xoá bởi Delete ý nghĩa các tuỳ chọn nh trong lệnh Delete
Có thể khôi phục các bản ghi đã bị đánh dấu xoá khi đang thực hiện Edit hoặc Browse bằng cách
gõ Ctrl+ T tại bản ghi tơng ứng Nếu dùng bảng chọn thì ấn F10, hoặc chọn record, Delete
c/ Xoá hẳn các bản ghi đã bị đánh dấu xoá bằng lệnh
PACK
Khi thực hiện lệnh này máy sẽ chép lại các bản ghi không bị đánh dấu sang một tệp trung gian, xoá tệp gốc, đổi tên tệp trung gian thành tên tệp ban đầu
Có thể thực hiện lệnh qua bảng chọn : F10, database, Pack
2/ Xoá tất cấc bản ghi- lệnh ZAP
Cú pháp lệnh
ZAP
Khi gọi lệnh này, Foxpro hỏi lại ngời dùng một lần nữa: ZAP<DBF>? Nếu trả lời Yes thì thc hiện lệnh, trả lời No thì huỷ lệnh
Lệnh ZAP tơng đơng với lệnh
Delete all
Pack
Trang 9BàI 9 sao chép tệp cơ sở dữ liệu 1/ Sao chép cấu trúc tệp CSDL – Lệnh Copy Stru
Cú pháp:
COPY STRUCTURE TO <tên tệp.DBF> [FIEDLS<ds trờng>]
Lệnh này sao chép cấu trúc tệp CSDL đang mở sang một tệp mới Tệp mới chỉ có cấu trúc, cha có nội dung Từ khoá Fields dùng để hạn chế số trờng chép sang tệp mới
Vd : use qlhs
Copy stru to qlhs 2 fiel hoten, diemtoan, … ) Use qlhs2
Disp stru List 2/ Sao lu cấu trúc
Cú pháp
COPY STRUCTURE EXTENDED TO < tệp2.DBF> [FIEDLS<ds trờng của tệp 1.dbf>]
Lệnh trên sẽ chép cấu trúc của tệp CSDL đang mở( tệp 1) thành các bản ghi của CSDL ( tệp 2), CSDL này có 4 trờng cố định
Field_name C(10) : ghi tên các trờng của CSDL tệp 1
Field_type C(1): ghi kiểu trờng, C- ký tự, N- số, F- số thự với dấu phẩy động, D - ngày tháng, L-logic, G- general, P- picture
Field_len N(3) chiều rộng của trờng
Field_Dec N(3) số chữ số thập phân đối với trờng số
Từ khoá Fields dùng để hạn chế các trờng của <tệp 1.dbf> chuyển thành các bản ghi của <tệp 2.dbf>
Sau khi sửa đổi <tệp 2.dbf> ta có thể tạo một tệp CSDL mới tệp3.dbf có các trờng ứng với các bản ghi của tệp 2.dbf bằng cách dùng lệnh:
CREATE <tệp3.dbf> from<tệp2.dbf>
Sau lệnh này <tệp3.dbf>trở thành CSDL hiện hành
Lệnh trên tiện dùng để sửa cấu trúc tệp CSDLtrong chế độ chơng trình
Ví dụ 1: Giả sử ta có tệp XuatTh1.dbf chứ các phiếu xuất hàng của tháng 1 Ta sao lu cấu trúc của tệp này sang XuatLCT.dbf Từ tệp XuấtCL.dbf ta tạo lập các tệp để chứa các phiếu xuất hàng cho tháng 2, tháng 3
Use XuatTh1
Copy stru exte to XuatLCT
Use
Cea XuatTh2 from XuatLCT
Trang 10Cea XuatTh3 from XuatLCT
Cea XuatTh4 from XuatLCT
Cea XuatTh5 from XuatLCT
Ví dụ 2
Một ngời bán hàng ghi các mặt hàng bán ra trong một ngày vào tệp BanHang.dbf gồm những tr -ờng: Tenhang C(20) ghi các mặt hàng bán ra, Donvi C(10) ghi đơn vị tính Gia N(8,2) ghi giá tiền theo
đơn vị ngàn đồng, Soluong N(5,2) Dùng kỹ thuật sao lu cấu trúc để thêm một trờng ThanhTien N (10,2) vào tệp banHang.dbf và tính giá trị của trờng này (tệp mới có tên là tệp3.dbf)
Set talk off
Clear
Close all
Set safe off
Use banhang
? ’cau truc cua tep BanHang.dbf’
displ stru
wait ‘Am phim’ wind
copy stru exte to tep2
use tep2
? ‘cau truc cua tep2.dbf:’
list stru
wait ’An phim’ wind
appe blan
repl field_name with ‘thanhtien’
repl field_type with ‘N’
repl field_len with 10
repl field_dec with 2
? ‘cac ban ghi cua tep tep2.dbf sau khi bo xung truong ’
list
wait ‘ An phim’ wind
use
creat tep3 from tep2
appe from banhang
? ‘ noi dung tep3 truoc khi tinh: ’