Chương 1: GIỚI THIỆU VỀ HỆ QUẢN TRỊ CSDL VISUAL FOXPRO 1.1 Tổng quan về FoxPro và Visual FoxPro 1.1.1 Giới thiệu Foxpro là hệ quản trị cơ sở dữ liệu dùng ñể giải quyết các bài toán tron
Trang 1Chương 1:
GIỚI THIỆU VỀ HỆ QUẢN TRỊ CSDL VISUAL FOXPRO
1.1 Tổng quan về FoxPro và Visual FoxPro
1.1.1 Giới thiệu
Foxpro là hệ quản trị cơ sở dữ liệu dùng ñể giải quyết các bài toán trong các lĩnh vực quản lý FoxPro ñược thừa kế và phát triển trên phần mềm DBASE III PLUS và DBASE IV, những sản phẩm nổi tiếng của hãng ASTON-TATE Khi các công cụ lập trình và các ứng dụng trên môi trường Windows ngày nhiều thì Microsoft cho ra ñời các phiên bản FoxPro 2.6, chạy ñược trên hai môi trường DOS và Windows Visual Foxpro là sản phẩm của hãng Microsoft, nó ñược kế thừa từ Foxpro for Windows, là một trong những công cụ tiện lợi ñể giải quyết các bài toán trong lĩnh vực quản lý cho những người chuyên nghiệp và không chuyên nghiệp Từ khi phát triển ñến nay, Hảng Microsoft ñã cho ra ñời nhiều phiên bản Visual Foxpro 3.0, 4.0, 5.0, 6.0 1.1.2 Khởi ñộng Visual Foxpro
Sau khi ñã cài ñặt Visual FoxPro, ta có thể khởi ñộng nó bằng cách thực hiện file FoxProw.exe hoặc file vfp.exe ñối với Visual Foxpro theo các cách sau:
+ Kích chuột vào biểu tượng của FoxPro hoặc Visual Foxpro trên Desktop
+ Chọn menu Start/Program, chọn Microsoft Visual Foxpro và kích chuột vào ñó
Màn hình Visual Foxpro sau khi khởi ñộng:
Màn hình Visual FoxPro sau khi khởi ñộng:
1.1.3 Các chế ñộ làm việc
Thanh Menu
Cửa sổ lệnh
Trang 2Visual FoxPro có 2 chế ựộ làm việc; chế ựộ tương tác (interactive) và chế ựộ chương trình (program)
Chế ựộ tương tác: Là chế ựộ trả lời từng câu lệnh một của người sử dụng, trong chế ựộ này có 2 hình thức ựưa câu lệnh:
* đưa câu lệnh qua menu hệ thống (system menu)
* đưa câu lệnh từ cửa sổ lệnh (command window)
Chế ựộ chương trình: Các câu lệnh trong cửa sổ lệnh có thể tập trung thành một file và lưu trên ựĩa (gọi là file chương trình nguồn) Khi muốn thực hiện các lệnh trong chương trình nầy, tại cửa sổ lệnh ựưa vào các câu lệnh: DO < tên chương trình >
để thoát khỏi Visual FoxPro, tại cửa sổ lệnh sử dụng lệnh QUIT
1.2 Các khái niệm cơ bản
1.2.1 Kiểu dữ liệu
đối tượng xử lý của V FOXPRO là dữ liệu, ựể quản lý và khai thác tốt các dữ liệu này, tuỳ theo tắnh chất, V.FOXPRO phải chia dữ liệu thành nhiều kiểu dữ liệu khác nhau: kiểu số (numberic), kiểu chuỗi (character), kiểu ngày tháng (date), kiểu lý luận (logical), kiểu bộ nhớ (memo), kiểu hình ảnh (picture)
a Kiểu số - Numeric (N): dùng ựể biểu diễn các số liệu mang giá trị số học và có nhu cầu tắnh toán như trong kế toán, quản lý, Mỗi dữ liệu kiểu số chiếm tối ựa 20 chữ số gồm cả phần nguyên, phần thập phân và dấu chấm thập phân
b Kiểu số - Float (F): Dùng ựể biểu diễn số là các số có dấu chấm ựộng như: 2.03e5 (2.03 x
105), thường ựược sử dụng trong các chương trình thuộc lĩnh vực khoa học kỹ thuật,
c Kiểu chuỗi - Charater (C): Chứa các số liệu là tổ hợp một số bất kỳ các ký tự ASCII như tên, họ hoặc là số nhưng không có nhu cầu tắnh toán như số chứng minh, ựịa chỉ, số phòng, Mỗi dữ liệu kiểu chuỗi có ựộ dài tối ựa 255 ký tự (mỗi ký tự chiếm 1 byte trong bộ nhớ)
d Kiểu ngày tháng - Data (D): Dùng cho những số liệu dạng ngày tháng như ngày sinh, ngày ựến, đó là những số nguyên dạng "yyyymmdd" khi hiển thị ra bên ngoài sẽ ựược chuyển
Trang 3lập trình ðộ dài cố ñịnh của dữ liệu kiểu ngày là 8 ký tự
e Kiểu logic - Logical (L): Dùng cho những dữ liệu chỉ có một trong hai trường hợp hoặc ñúng (T) hoặc sai (F) như giới tính, ñối tượng ưu tiên, ðộ dài cố ñịnh của dữ liệu kiểu lý luận
là 1 ký tự
f Kiểu ghi nhớ - Memo (M): Dữ liệu kiểu ghi nhớ là một ñoạn văn bản có ñộ dài lớn hơn
255 ký tự, như khen thưởng, lý kịch, quá trình công tác, ðộ dài khai báo là 10 nhưng nội dung thực sự của kiểu ghi nhớ là tuỳ ý, chúng ñược lưu trữ trong một tập tin khác có cùng tên nhưng phần mở rộng là FPT (FoxPro Text)
g Kiểu tổng quát - General (G): Dùng ñể chứa dữ liệu như bảng tính, âm thanh,
h Kiểu hình ảnh - Ficture (P): Dữ liệu lưu dưới dạng hình ảnh BMP, thường ñược dùng trong các chương trình "quản lý như sự", "nhận dạng",
1.2.2 Các phép toán
a Phép toán số học: ðược thực hiện trên các dữ liệu kiểu số, gồm các phép toán:
ðộ ưu tiên các phép toán theo thứ tự ñã nêu ở trên, có thể thay ñổi thứ tự tính toán bằng cách ñặt chúng trong 2 dấu ngoặc ñơn ( ) như các quy tắc tính toán số học thông thường
b Phép toán chuỗi: Dùng ñể xử lý các dữ liệu kiểu chuỗi
• Phép toán ghép nối (+): dùng ñể ghép 2 chuỗi cạnh nhau, kết quả của phép toán là một
dữ liệu kiểu chuỗi
Ví dụ: Trung tâm' + 'Tin học' -> 'Trung tâm Tin học'
Trang 4• Phép toán ghép nối (-): dùng ñể ghép 2 chuỗi cạnh nhau và di chuyển các dấu cách ở chuỗi thứ nhất (nếu có) ra cuối chuỗi tạo thành
Ví dụ: 'Trung tâm ' - ' Tin học' -> 'Trung tâm Tin học '
• Phép toán $: kiểm tra chuỗi bên trái có nằm trong chuỗi bên phải không Kết quả của phép toán có kiểu logic
Ví dụ: 'ab' $ "ABab" cho giá trị T nhưng 'ab $ "AaBb" cho giá trị F
c Phép toán ngày: Hai dữ liệu kiểu ngày có thể trừ (-) cho nhau ñể cho khoảng cách ñại số giữa 2 ngày
Ví dụ: {01/08/2003} - {05/09/2003} -> - 35
{01/08/2003} - {05/07/2003} -> 25
Một dữ liệu kiểu ngày có thể cộng (+) hay trừ (-) một số nguyên ñể cho kết quả là một dữ liệu kiểu ngày
Ví dụ: {01/08/2003}+ 10 -> {11/08/2003}
{01/08/2003}- 20 -> {12/07/2003}
Chú ý: • Hai dữ liệu kiểu ngày không thể cộng (+) cho nhau
• Một số không thể trừ (-) với một dữ liệu kiểu ngày
Việc diễn tả thứ tự ngày (D), tháng (M), năm (Y) trong một dữ liệu kiểu ngày còn phụ thuộc vào thời ñiểm hiện tại ñang theo hệ thống ngày tháng nào
(1) Lệnh SET DATE FRENCH |AMERICAN| JAPAN: Cho phép thiết lập dữ liệu dạng ngày theo kiểu Pháp|Mỹ|Nhật
(2) SET CENTURY ON|OFF: Quy ước năm có một dữ liệu dạng ngày ñược biểu diễn theo dạng hai số (mặc ñịnh) hay dạng bốn số Nếu SET CENTURY ON thì năm ñược biểu diễn theo dạng bốn con số, nếu SET CENTURY OFF (dạng mặc ñịnh) thì năm ñược biểu diễn theo dạng hai con số
(3) Lệnh SET MARK TO <bthức C>: ñể ấn ñịnh ký tự phân cách ngày tháng, năm là <bthức
Trang 5d Phép toán quan hệ: dùng ñể so sánh hai giá trị của hai biểu thức cùng kiểu
Phép toán Ý nghĩa Phép toán Ý nghĩa
= = bằng chính xác
Hai dữ liệu kiểu số ñược so sánh dựa theo biểu diễn của chúng trên trục số
Hai dữ liệu kiểu ngày ñược so sánh dựa theo biểu diễn của chúng theo chiều của thời gian Trong kiểu logic, Visual FoxPro quy ước: T.<.F
Hai dữ liệu kiểu chuỗi có ñộ dài bằng nhau ñược so sánh dựa theo nguyên tắc sau: ñầu tiên so sánh 2 mã ASCII của 2 ký tự ñầu của hai chuỗi, nếu bằng nhau thì so sánh tiếp
Ví dụ: 'ABCD' < 'ABCE' -> T 'a' < 'A' -> F
Trường hợp hai chuỗi có ñộ dài khác nhau, thì việc so sánh dựa vào việc thiết lập môi trường SET EXACT ON/OFF, nghĩa 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 của toán hạng theo sau
AND : cho giá trị T nếu cả hai toán hạng ñều T
OR : cho giá trị F nếu cả hai toán hạng ñều F
1.2.3 Toán hạng
Toán hạng là các dữ liệu tham gia vào các phép toán
Ví dụ: del=b^2 - 4*a*c thì b,2,4,a,c là các toán hạng
1.2.4 Hằng
Trang 6Là ñại lượng có giá trị không ñổi trong thời gian chương trình thực hiện Trừ kiểu dữ liệu memo thì mỗi kiểu dữ liệu ñều có hằng của nó
Hằng kiểu số: như -2.5, 100, 4.14
Hằng kiểu chuỗi: hằng loại nầy phải ñể trong hai dấu " " hoặc ' ' hoặc [ ], có ñộ dài tối ña không quá 253 kí tự
Ví dụ: "abc"; tổng hợp', '123',
Hằng kiểu ngày: phải ñược ñặt trong cặp dấu { }
Ví dụ: {01/01/96}; {}: ngày rỗng
Hằng logic: chỉ có 2 giá trị T và F
1.2.5 Biến
Biến là ñại lượng dùng ñể lưu trữ dữ liệu trong quá trình tính toán Biến có hai ñặc trưng chính: tên biến và giá trị của biến Tên biến ñược ñặt theo nguyên tắc: dài không quá 10 kí tự, bắt ñầu phải là chữ cái hoặc dấu _ phần còn lại là tổ hợp của bất kỳ các chữ cái, chữ số hoặc dấu _ Tên biến không nên ñặt trùng tên các từ khoá của Visual FoxPro, tên biến có thể viết bằng chữ in hoa hay chữ thường Visual FoxPro hiểu kiểu của biến là kiểu của giá trị mà nó ñang mang Số lượng tối ña của biến ñược phép sử dụng là 2048 biến
Visual FoxPro chia biến làm 3 loại:
a Biến bộ nhớ: Gọi chung là biến, do người sử dụng tạo ra trong bộ nhớ, khi không sử dụng nữa có thể giải phóng ñể tiết kiệm bộ nhớ
Ví dụ: hsl = 3.12
ngaysinh = {01/01/88}
b Biến hệ thống: ðược tạo ra ngay từ khi khởi ñộng Visual FoxPro Có tên bắt ñầu bằng dấu gạch nối ( _ ) thường ñược sử dụng trong vấn ñề in ấn, người sử dụng không thể giải phóng biến loại nầy
c Biến trường: Tên các trường trong tập tin CSDL , nó chỉ có ý nghĩa khi tập tin chứa nó ñược mở ra ñể sử dụng
Trang 7Nếu có một biến ñặt trùng với một biến trường thì biến trường ñược ưu tiên thực hiện trước Nếu tồn hại hai biến trường và biến bộ nhớ trùng tên nhau, ñể truy nhập ñến chúng mà không
sợ nhầm lẫn, bạn sử dụng quy cách sau cho biến bộ nhớ:
M.<tên trường> hay M -> <tên trường>
1.2.6 Hàm
Hàm là những ñoạn chương trình ñược viết sẳn nhằm thực hiện một công việc nào ñó Các hàm nầy thường cho ra một giá trị, nhưng cũng có hàm chỉ thi hành một việc nào ñó mà không cho ra một trị nào cả Về hình thức hàm ñược ñặc trưng bởi tên hàm và theo sau là cặp dấu ( ) dùng ñể bao các ñối số, các ñối số nầy ñặt cách nhau bởi dấu phẩy Một hàm có thể có nhiều ñối
số hoặc không có ñối số nào cả nhưng phải có ( ) theo sau
Ví dụ: Date ( ): cho biết ngày tháng năm hệ thống
Sqrt(x): căn bậc 2 của x
Có 2 loại hàm: Hàm có sẵn của Visual FoxPro và hàm tự tạo do người sử dụng tạo ra Chúng ta
sẽ nghiên cứu vấn ñề nầy kỹ hơn ở chương sau
1.2.7 Biểu thức
Biểu thức là tập hợp của một hay nhiều thành phần như hằng, hàm, biến, phép toán, dấu ngoặc tròn Sau khi tính toán biểu thức sẽ cho một trị duy nhất Trị của biểu thức thuộc về một trong 4 kiểu: N, C, D, L Một biểu thức có thể rất phức tạp, trị của biểu thức ñược tính theo nguyên tắc sau:
* Trong ( ) tính trước, ngoài ( ) tính sau,
* Phép toán ưu tiên cao tính trước
* Bên trái tính trước, bên phải tính sau
1.2.8 Từ khoá
Từ khoá là những từ ñược Visual FoxPro sử dụng vào một mục ñích riêng, người sử dụng không ñược ñặt tên trùng với các từ khoá nầy Thông thường từ khoá là những ñộng từ ñộng từ của lệnh thực hiện Nếu từ khoá có nhiều hơn 4 ký tự thì khi sử dụng chỉ cần ghi 4 ký tự ñầu
Ví dụ: Câu lệnh MODIFY COMMAND LUONG.PRG có 2 từ khoá là MODIFY và COMMAND có thể viết gọn là: MODI COMM LUONG.PRG
1.2.9 Lệnh và chương trình
Trang 8Lệnh là những yêu cầu ñể thực hiện một nhiệm vụ nào ñó Lệnh trong Visual FoxPro thường là một ñộng từ, cũng có trường hợp là một kí hiệu như: ! ?, Tập hợp các lệnh nhằm ñạt ñược một mục tiêu ñề ra gọi là chương trình
Trong Visual FoxPro có 3 cách ñể ban hành lệnh:
a Dùng cửa sổ lệnh:
Lệnh ñược ñưa vào cửa sổ lệnh, sau khi ấn Enter lệnh ñược thi hành ngay Thi hành xong một lệnh thì lệnh cũ ñược lưu lại trên cửa sổ lệnh có thể sử dụng cho lần sau Cách nầy thường dùng trong những tính toán ñơn giản ñể kiểm tra kết quả của lệnh
b Dùng menu:
Lệnh ñược ban hành bằng cách kích hoạt menu tương ứng, sau khi thi hành xong câu lệnh cũng ñược lưu lại trên cửa sổ lệnh Cách nầy chỉ hạn chế trong một số lệnh thông thường trên tập tin CSDL
c Dùng chương trình: Soạn thảo trước một chương trình gồm nhiều lệnh thích hợp Chương trình ñược lưu trên ñĩa dưới tên một tập tin có phần mở rộng PRG ðể thực hiện chương trình này, tại cửa sổ lệnh ñưa câu lệnh DO <tên file.PRG> Sau khi ấn Enter chương trình ñược nạp vào bộ nhớ và từng lệnh ñược thực hiện theo thứ tự
Bài thực hành chương 1
1 Giả sử có tập tin HSNV.DBF (có cấu trúc như ñã mô tả ở bài 1, thực hành hai) trong
ñó có ít nhất 15 mẫu tin
a Dùng lệnh SORT ñể sắp xếp lại tập tin HSNV.DBF sang một tập tin mới HSNVSX.DBF theo chỉ tiêu: Các mẫu tin ñược sắp xếp theo từng ñơn vị (giảm dần), trong mỗi ñơn vị thứ tự tên, họ ñược sắp xếp tăng dần
b Mở tập tin HSNVSX.DBF
• Sử dụng lệnh LIST liệt kê các trường HOLOT, TEN, NGSINH, M_LUONG, MADV
• Sử dụng lệnh USE ñể ñóng tập tin lại
Trang 9c Lập 3 tập tin chỉ mục: FMASO.IDX theo trường MASONV, FDONVI.IDX theo trường MADV, FLUONG.IDX theo trường M_LUONG giảm dần
- Bằng cách thay thế tập tin chỉ mục chủ, hãy liệt kê các mẫu tin theo MASONV tăng dần, theo MADV tăng dần, theo M_LUONG giảm dần
2 Trong tập tin HSNV.DBF
a Dùng lệnh LOCATE:
- Tìm người có họ tên là ‘LE VAN NAM’ (giả sử có họ tên này trong tập tin HSNV.DBF) Dùng lệnh DISPLAY cho hiện nội dung của mẫu tin này, rồi dùng lệnh EDIT ñể sửa lại
- Tìm những người ở phòng Hành chính (MADV=’HC’), cho hiện ñầy ñủ thông tin của những người này
- Tìm những người có mức lương > 310
b Dùng lệnh SEEK ñể tìm kiếm người có MASONV=’TCH01’ (giả sử mã này có trong tập tin HSNV.DBF) Cho hiện nội dung của mẫu tin này
c Cho biết ñịa chỉ của người có Họ tên là ‘HO VAN HAO’, sinh ngày 10/11/58 (bằng hai cách: LOCATE và SEEK)
-
1.1 2.1 KHÁI NIỆM
Bảng dữ liệu chứa dữ liệu theo dạng dòng và cột, mỗi dòng ñược gọi là một mẫu tin (record), mỗi cột ñược gọi là một trường (field) của bảng
Mỗi bảng dữ liệu ñược lưu trử trên ñĩa với tên file có phần mở rộng mặc ñịnh là DBF, mỗi bảng
dữ liệu có hai phần: cấu trúc và nội dung của bảng
Ví dụ: bảng nhân viên (nhanvien.dbf) có cấu trúc sau: