Bài giảng Tin học ứng dụng - Chương 2: Hệ quản trị cơ sở dữ liệu Visual Foxpro - Nguyễn Sĩ Thiệu
Lệnh TOTAL
Ví dụ 2:
- Báo cáo tồn kho từng loại vật tư (đơn vị đã chuẩn hóa)
Các bước:
- Gán KL của chứng từ xuất là số âm
- Sắp xếp vật tư theo từng nhóm dùng INDEX
- Tính tổng các nhóm dùng TOTAL
- Mở tệp kết quả
- Hiển thị kết quả
Ví dụ 2: (tiếp)
USE QLVT
REPL KL WITH –KL FOR NOT(LP)
INDEX ON MAVT TO VD2.IDX
TOTAL ON MAVT TO KQ2.DBF FIELDS KL
USE KQ2
LIST FIELDS MAVT, TENVT, KL
USE QLVT
REPL KL WITH –KL FOR NOT(LP)
Ví dụ 3:
- Tính tổng số tiền Nhập của từng loại Vật tư trong từng kho của tháng 9 năm 2011
Các bước:
- Sắp xếp vật tư theo từng nhóm dùng INDEX
- Tính tổng các nhóm dùng TOTAL
- Mở tệp kết quả
- Hiển thị kết quả
Ví dụ 3: (tiếp)
USE QLVT
INDEX ON MAVT+MAKH TO VD3.IDX FOR LP .AND. MONTH(NL)=9 .AND. YEAR(NL)=2011
TOTAL ON MAVT+MAKH TO KQ3.DBF FIELDS ST
USE KQ3
LIST FIELDS MAVT, MAKH, TENVT, ST
USE
120 trang |
Chia sẻ: thucuc2301 | Lượt xem: 1771 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Tin học ứng dụng - Chương 2: Hệ quản trị cơ sở dữ liệu Visual Foxpro - Nguyễn Sĩ Thiệu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
27/11/2020GV Nguyễn Sĩ Thiệu - BM Tin học TCKT - HVTC1TIN HỌC ỨNG DỤNGNguyễn Sĩ ThiệuBộ môn: Tin học TCKTKhoa: Hệ Thống Thông Tin Kinh tế - HVTCEmail: thieuns.hvtc@gmail.com27/11/2020GV Nguyễn Sĩ Thiệu - BM Tin học TCKT - HVTC2Chương 2HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU VISUAL FOXPRO1.1. Khái niệm tệp cơ sở dữ liệuThông tin về các đối tượng được quản lý thường lưu trữ dưới dạng bảngCác bảng thường gồm các dòng và các cộtMỗi cột phản ánh một tiêu thức cần quản lý hay còn gọi là thuộc tính của đối tượngMỗi dòng chứa thông tin về tất cả các thuộc tính của đối tượng.Giao của mỗi dòng và một cột là giá trị cụ thể về một thuộc tính của một đối tượng tương ứng.31. Khái niệm chung1.1. Khái niệm tệp cơ sở dữ liệuSTTHỌ TÊNLỚPNGÀY SINHGIỚI TÍNHĐIỂM TB1Nguyễn An45/21.0101/01/1989Nam7.212Cao Đức Cẩm46/15.0412/07/1990Nam6.483Lê Thị Lan48/41.0223/12/1992Nữ8.12...........4Một bảng luôn chứa thông tin về một tập hợp các đối tượng cùng loạiVí dụ: danh sách sinh viênKhi lưu trữ trên máy, mỗi bảng như vậy được ghi thành một tệp dữ liệu1.1. Khái niệm tệp cơ sở dữ liệuTệp dữ liệu là tệp chứa các thông tin về các thuộc tính của một tập hợp các đối tượng cùng loại cần cho việc quản lýMột bộ thông tin về tất cả các thuộc tính của một đối tượng sẽ được lưu trữ trong tệp gọi là một bản ghi dữ liệu (RECORD).Thông tin về mỗi thuộc tính của đối tượng được ghi trong một phần của bản ghi gọi là một trường (Field). 561.1. Khái niệm tệp cơ sở dữ liệu Tệp dữ liệu = bảng Một bản ghi = một dòng = 1 record Một trường = một cột = 1 field Một trường được xác định bởi:Tên trườngKiểu trườngĐộ rộngSố chữ số thập phân71.1. Khái niệm tệp cơ sở dữ liệuTên trường (Field Name): Dùng để đặt tên và phân biệt các trườngQui tắc đặt tên trường trong Fox:Không quá 10 kí tự gồm các chữ cái, chữ số và dấu gạch nối _ Không phân biệt chữ hoa hay thườngKhông bắt đầu từ chữ sốKhông chứa các kí tự đặc biệt: \ , /, space, Ví dụ: Masv, HoTen, Ngay_Sinh, Diem1, Diem2 81.1. Khái niệm tệp cơ sở dữ liệuKiểu trường (Type):Dùng để xác định kiểu dữ liệu chứa trong trườngCác kiểu hay gặp trong Fox: 5 kiểuKiểu kí tự (Character - C): gồm các: Chữ cáiChữ số không tính toán và các kí tự đặc biệt.- Ví dụ: “Hà Nội” , “NĐ37/CP” , “CQ46/21.01”, “0912345678”Kiểu số (Numeric - N): chứa các số có thể tính toán91.1. Khái niệm tệp cơ sở dữ liệuKiểu Ngày (Date - D): dùng để lưu ngày tháng năm cụ thể Ví dụ: {12/25/2011}, {^2011-12-25}Kiểu Logic (Logical - L): dùng để lưu các thông tin có hai giá trị trái ngược nhau của một thuộc tính. .T. là đúng , .F. là sai Ví dụ: Giới tính nam> 123.45? VAL(’12a4h’) => 12? VAL([Học viện Tài chính]) => 0333.3. Các đại lượng- Hàm chuyển kiểu:Hàm STR(bt_số [, m [, n]])Tác dụng: chuyển giá trị số thành xâu với độ dài m và n số chữ số sau dấu chấm thập phânVí dụ:? STR(123.45,6,1) => “ 123.5”? STR(20/3,5,2) => “ 6.67”? STR(20/3,5) => “ 7”343.3. Các đại lượngHàm DTOC(bt_ngày)Tác dụng: chuyển ngày thành xâuVí dụ:? DTOC ({^2006/10/20}) => ‘10/20/2006’Hàm CTOD(bt_xâu)Tác dụng: chuyển xâu thành ngàyVí du:? CTOD([10/20/2006]) => {10/20/2006}? CTOD(‘20/10/2006’) => Báo lỗi353.3. Các đại lượng- Một số hàm khác:Hàm DAY(bt_ngày)Tác dụng: trả về giá trị của ngàyVí dụ: DAY ({^2006/10/20}) Hàm MONTH(bt_ngày)Tác dụng: trả về giá trị của thángVí dụ: MONTH ({^2006/10/20}) Hàm YEAR(bt_ngày)Tác dụng: trả về giá trị của nămVí dụ: YEAR ({^2006/10/20}) 2009 – YEAR({^1985/10/20}) YEAR(DATE())-YEAR({^1985/10/20})363.3. Các đại lượng= 20= 10= 2006= 24= 29- Một số hàm khác (tiếp):Hàm DATE( )Tác dụng: Để xác định ngày hệ thốngVí dụ: ? DATE( ) Cho kết quả là {11/27/2020}Hàm CMONTH(bt_ngày)Hàm DOW(bt_ngày), CDOW(bt_ngày)Hàm RECNO( ): Dùng để xác định số thứ tự của bản ghi trong tệp dữ liệu.Hàm EOF( ), BOF( ): Dùng để xác định con trỏ bản ghi có đặt vào dấu hiệu kết thúc/bắt đầu tệp hay khôngHàm IIF(BtLg,Bt1,Bt2) Trả về giá trị là Bt1 nếu BtLg cho kết quả là .T., và trả về giá trị là Bt2 nếu giá trị BtLg là .F.373.3. Các đại lượng3.4. Biểu thức3.4.1. Biểu thức sốLà các biểu thức nhận giá trị số, gồm các đại lượng số kết hợp với nhau bằng các phép toán:Cộng (+), trừ (-), nhân (*), chia (/), lũy thừa (^ hoặc **)Đổi dấu, ngoặc ()Thứ tự ưu tiên:Biểu thức trong ngoặc ()Phép toán một ngôi (đổi dấu)Tính hàm ^ *, / + , -383. Các yếu tố cơ bản của Fox3.4.2. Biểu thức xâuLà các biểu thức nhận giá trị xâu, gồm các đại lượng xâu kết hợp với nhau bằng các phép toán ghép xâu là phép cộng (+) và trừ (-) Phép (-) sẽ xóa bỏ kí tự trắng ở giữaVí dụ:? “AB ” + “cd” => “AB cd”? “AB ” – “cd” => “ABcd”393.4. Biểu thức3.4.3. Biểu thức ngàyLà các biểu thức nhận giá trị ngày, gồm các đại lượng ngày hoặc số kết hợp với nhau bằng các phép toán: phép cộng (+) và phép trừ (-)Các phép toán liên quan kiểu Ngày:D + N DD - N DD - D NVí dụ:{01/20/2011} + 12 = {01/20/2011} – 12 ={01/20/2011} – {01/10/2011} = 403.4. Biểu thức{02/01/2011}{01/08/2011}103.4.4. Biểu thức quan hệLà các biểu thức gồm 2 đại lượng cùng loại kết hợp với nhau bằng các phép toán quan hệ.Các phép toán quan hệ:= : Bằng (!=, #) : Không bằng>, = : Lớn hơn hoặc bằng 6 Cho kết quả là .F.? “Anh” > “An” Cho kết quả là .F.? “Anh” = “An” Cho kết quả là .T.? “Nguyen Van A” = “Nguyen VAn A” Cho kết quả là .F.423.4.4. Biểu thức quan hệNguyenVanANguyenVAnAVí dụ: (tiếp)? {01/01/2006} {01/02/2006} Cho kết quả là .T.? {12/12/2005} > {01/01/2006} Cho kết quả là .F.? {12/12/2006} 1982 NS1982 .AND. NS =8.0 Delete ALL FOR LUONG >1000000050Dạng lệnh tổng quát4.1.1. Lệnh CREATETác dụng:Dùng để tạo ra cấu trúc của tệp dữ liệuNghĩa là khai báo cho máy biết có bao nhiêu trường và các đặc trưng của trườngDạng lệnh: CREATE Tên_Tệp Trong đó: Tên_tệp là tên của tệp dữ liệu, có đuôi ngầm định là .DBFTác động: Máy sẽ hiển thị một bảng cho phép khai báo cấu trúc tệp:514.1. Lệnh tạo tệp dữ liệuĐể kết thúc việc tạo cấu trúc tệp dữ liệu, nhấn nút OK hoặc nhấn tổ hợp phím Ctrl + W524.1. Lệnh tạo tệp dữ liệuTên trườngKiểu trườngĐộ rộngSố chữ số thập phânKết thúc việc tạo tệpHủy bỏ việc tạo tệpTên tệpChú ý:Nên đặt tên tệp ngắn gọn, mang tính gợi nhớ Trong tên tệp không có dấu cáchKhông đặt trùng tên với tệp đã có (Nếu đặt trùng tên, tệp dữ liệu cũ có thể bị ghi đè và mất hết thông tin)Ví dụ: Để quản lý sinh viên người ta lưu trữ các thông tin: Họ tên, ngày sinh, giới tính, lớp (4 kí tự đầu chỉ khóa học), điểm thi 2 môn, điểm trung bình. - Lệnh tạo tệp: CREATE QLSV.DBF Khai báo bảng cấu trúc như sau:534.1. Lệnh tạo tệp dữ liệu54Bảng QLSV.DBFNameTypeWidthDecGiải thíchHODEMC18Họ tênTENC7TênNSD8Ngày sinhGTL1Giới tính (.T./nam)LopC10LớpD1N20Điểm môn 1D2N20Điểm môn 2DTBN52Điểm trung bình4.1.2. Lệnh USETác dụng: Dùng để đóng hoặc mở tệp dữ liệuDạng lệnh: USE [Tên_tệp]Trong đó: Tên_tệp là tên của tệp dữ liệu, có đuôi ngầm định là .DBFTác động: Nếu có tên_tệp thì máy sẽ mở tệp đó (là quá trình nạp tệp dữ liệu lên bộ nhớ RAM)Nếu không có tên_tệp thì lệnh sẽ đóng tệp đang mở554.1 Lệnh tạo tệp dữ liệuChú ý:Trước khi thao tác với dữ liệu trong tệp phải mở tệp Để đóng tệp ngoài sử dụng lệnh USE còn có thể sử dụng lệnh CLOSE ALL hoặc CLOSE DATABASES Khi mở tệp mới thì tệp đang làm việc sẽ bị đóngVí dụ: Lệnh Tác động . USE C:\QLVT.DBFUSE QLSV USE 564.1 Lệnh tạo tệp dữ liệu Mở tệp QLVT ở ổ đĩa C đóng tệp QLVT và mở tệp QLSV đóng tệp QLSV4.1.3. Lệnh APPENDTác dụng: Dùng để thêm bản ghi vào cuối tệp dữ liệu đang mở.Dạng lệnh: APPEND [BLANK] Trong đó: BLANK là thêm bản ghi trống không có dữ liệuTác động: Lệnh sẽ bổ sung thêm các bản ghi vào cuối tệp đang mở, dữ liệu do người dùng nhập từ bàn phím.Khi kết thúc nhập dữ liệu bấm Ctrl+W hoặc Ctrl+End.574.1 Lệnh tạo tệp dữ liệuVí dụ: Nhập thêm danh sách sinh viên vào tệp QLSV.DBF USE QLSV APPEND (Xuất hiện cửa sổ nhập bổ sung bản ghi.. Nhập dữ liệu lần lượt từng bản ghi kết thúc bấm Ctrl+W) USE27/11/2020GV Nguyễn Sĩ Thiệu - BM Tin học TCKT - HVTC584.1 Lệnh tạo tệp dữ liệu4.1.4. Lệnh APPEND FROMTác dụng: Dùng để bổ sung các bản ghi vào cuối tệp đang mở nhưng dữ liệu được lấy từ một tệp dữ liệu khác đã có trên đĩaDạng lệnh: APPEND FROM tên_tệp [FOR BtLg] Trong đó: tên_tệp là tên của tệp dữ liệu đã có sẵn các bản ghi Tác động: Lệnh sẽ cho bổ sung các bản ghi từ tệp xác định bởi tên_tệp vào cuối tệp dữ liệu đang mở. Nếu có FOR thì chỉ những bản ghi thỏa mãn biểu thức logic mới được bổ sung.594.1 Lệnh tạo tệp dữ liệuVí dụ: Tại ổ C:\ có tệp DSLOP.DBF chứa dữ liệu và cấu trúc giống tệp QLSV, yêu cầu sao chép sinh viên khóa 47 vào tệp QLSV USE QLSV APPEND FROM C:\DSLOP.DBF FOR LEFT(LOP,4)=“CQ47” USEChú ý: không dùng lệnh Copy vì nếu copy sẽ ghi đè gây mất dữ liệu đã có.27/11/2020GV Nguyễn Sĩ Thiệu - BM Tin học TCKT - HVTC604.1 Lệnh tạo tệp dữ liệu4.1.5. Lệnh COPY TOTác dụng: Dùng để sao chép 1 phần hoặc toàn bộ các bản ghi của tệp đang mở sang tệp mới.Dạng lệnh: COPY TO tên_tệp [FIELDS DS_Trường] [FOR BtLg]Trong đó: tên_tệp là tên của tệp dữ liệu mới sau khi được sao chép từ tệp đang mở.Tác động: Lệnh sẽ sao chép tệp đang mở và tạo ra tệp mới Có tên xác định bởi tên_tệpCó cấu trúc được xác định trong tham số FIELDS DS_trường Có nội dung là các bản ghi thoả mãn BtLg614.1 Lệnh tạo tệp dữ liệuVí dụ 1: USE QLSV COPY TO D:\BANSAO.DBF USEVí dụ 2: Chép lên USB tệp danh sách sinh viên thi lại môn thứ nhất của lớp CQ49/21.01 USE QLSV COPY TO F:\DSTL.DBF FIELDS hodem, ten, lop, d1, d2 FOR (D1 RecCount() sẽ báo lỗiVí dụ: Tệp QLSV.DBF có 10 bản ghi Lệnh Vị trí con trỏ . USE QLSV GO 5 ?RECNO( ) GO TOP GO BOTTOM 27/11/2020GV Nguyễn Sĩ Thiệu - BM Tin học TCKT - HVTC654.2 Lệnh di chuyển con trỏ1551104.2.3. Lệnh SKIPTác dụng: Dùng để di chuyển con trỏ bản ghi tới một vị trí tương đối so với bản ghi hiện thời.Dạng lệnh: SKIP [n]Trong đó: n là số nguyên bất kỳ. Nếu không viết n thì ngầm định là n= 1Tác động: Lệnh sẽ di chuyển con trỏ đi n bản ghi kề từ bản ghi hiện thờiNếu n>0: sẽ di chuyển về phía cuối tệpNếu n=8.0 - In danh sách sinh viên sinh tháng 10 năm 1990USE QLSVLIST FIELDS Hodem, Ten, Ns FOR MONTH(NS)=10 .AND. YEAR(NS)=1990774.3.4. Lệnh LIST và DISPLAY4.3.5. Lệnh BROWSETác dụng: Dùng để sửa chữa nội dung các bản ghi của tệp dữ liệu đang mở (dữ liệu do người dùng nhập bằng tay)Dạng lệnh: BROWSE [FIELDS DS_trường] [FOR BtLg]Trong đó: Phạm vi ngầm định là all Ds_trường: là các trường cần sửa.Tác động: Khi gặp lệnh này Fox sẽ hiển thị tệp dữ liệu dưới dạng bảng để người sử dụng sửa nội dung bản ghi. Nếu có FOR thì chỉ những bản ghi thỏa mãn biểu thức logic mới được hiển thịSửa xong nhấn Ctrl + W để lưu thay đổi784.3 Lệnh xem sửa tệp dữ liệuVí dụ: Nhập điểm thi hai môn của lớp CQ47/21.01Use QLSVBROW Fields hodem,ten,d1,d2 FOR LOP=“CQ47/21.01”(Nhập điểm thi xong bấm Ctrl+W)4.3.6. Lệnh EDITTác dụng: Tương tự BROWSE ( Xem giáo trình )794.3.4. Lệnh LIST và DISPLAY4.3.7. Lệnh REPLACETác dụng: Dùng để thay thế nội dung trường dữ liệu trong tệp đang mởDạng lệnh: REPLACE [Phạm_vi] Trg1 WITH Bt1 [ , Trg2 WITH Bt2 ] [, ] [ FOR BtLg ]Trong đó: + Phạm_vi ngầm định là ALL (Khi sử dụng mệnh đề FOR), hoặc là Bản ghi hiện thời (Khi không sử dụng mệnh đề FOR) + Trg1, Trg2, : Là các trường dữ liệu sẽ được lệnh thay thế nội dung. + Bt1, Bt2, : Là các biểu thức có giá trị xác định đối với mỗi bản ghi, có kiểu phù hợp với các Trg1, Trg2, tương ứng .Tác động: Lệnh trên sẽ thay thế dữ liệu cho các Trg1, Trg2, của các bản ghi nằm trong Phạm_vi, thoả mãn BtLg. Trên các bản ghi đó, Trg1 sẽ được thay bởi giá trị của Bt1, Trg2 sẽ được thay bởi giá trị của Bt2, 804.3 Lệnh xem sửa tệp dữ liệuChú ý: Dữ liệu do máy thay thế tự động nên phải cẩn thận khi dùng lệnh.Ví dụ 1:USE QLSVREPLACE ALL DTB WITH 0, PL WITH “ ”- Nhập 10 vào điểm môn 2 của sinh viên có tên Trần Mỹ Anh.USE QLSVREPL D2 WITH 10 FOR Ten=“Anh” .AND. Hodem=“Trần Mỹ”814.3.7. Lệnh REPLACEVí dụ 2: Tính điểm trung bình và xếp loại sinh viên- Biết điểm trung bình được tính DTB = (D1x3 + D2x4)/7- Phân loại: + Giỏi nếu ĐTB >=8.0 + Khá nếu 8.0 > ĐTB >= 7.0+ TB nếu 7.0 > ĐTB >= 5.0 + Yếu nếu ĐTB =8.0REPL XL with “Khá” FOR DTB>=7.0 .AND. DTB=5.0 .AND. DTB Nhập dữ liệu cho bản ghi- Hoặc cách 2:GO 8INSERT BEFORE BLANKREPL Ten WITH “Anh”, Hodem WITH “Nguyễn Ngọc ”854.4 Lệnh thêm bớt bản ghi4.4.2. Lệnh DELETETác dụng: Dùng để đánh dấu xóa các bản ghi trong tệp đang mở.Dạng lệnh:DELETE [Phạm_vi] [FOR BtLg]Trong đó: phạm vi ngầm định là bản ghi hiện thời.Tác động: Fox sẽ đánh dấu xóa các bản ghi thuộc phạm_vi và thỏa mãn biểu thức logicChú ý: Có thể sử dụng hàm DELETED( ) để kiểm tra bản ghi hiện thời đã đánh dấu xoá hay chưa?864.4 Lệnh thêm bớt bản ghi874.4 Lệnh thêm bớt bản ghiVí dụ: đánh dấu xóa sinh viên khóa 45Use QLSVDELETE ALL FOR LEFT(Lop,4)=’CQ45’USE- Đánh dấu xóa bản ghi số 7USE QLSVGO 7DELETEUSE4.4.3. Lệnh RECALLTác dụng: Dùng để hủy việc đánh dấu xóa các bản ghi trong tệp đang mởDạng lệnh: RECALL [Phạm_vi] [FOR BtLg]Trong đó: phạm vi ngầm định là bản ghi hiện thờiTác động: Fox sẽ hủy bỏ việc đánh dấu xóa các bản ghi thuộc phạm_vi thỏa mãn biểu thức logic.Ví dụ: Bỏ đánh dấu xóa các sinh viênUse QLSVRECALL ALL FOR LEFT(Lop,4)=’CQ45’884.4 Lệnh thêm bớt bản ghi4.4.4. Lệnh PACKTác dụng: Dùng để loại bỏ các bản ghi đã bị đánh dấu xóa ra khỏi tệp.Dạng lệnh: PACKTác động: Fox sẽ xóa hẳn các bản ghi bị đánh dấu xóa khỏi tệp, và không thể phục hồi.Ví dụ: xóa bản ghi số 7Use QLSVDELETE RECORD 7PACKUSE894.4 Lệnh thêm bớt bản ghi4.4.5. Lệnh ZAPTác dụng: Xóa bỏ toàn bộ các bản ghi trong tệp đang mởDạng lệnh: ZAPTác động: Fox sẽ xóa tất cả các bản ghi trong tệp và chỉ để lại cấu trúc của tệp.Lệnh này tương đương với việc đánh dấu xóa tất cả rồi Pack nhưng tốc độ thì nhanh hơn.904.4 Lệnh thêm bớt bản ghiSắp xếp và tìm kiếm là công việc thường gặp trong quá trình xử lý của máy tínhĐể tìm kiếm được nhanh trước hết ta phải sắp xếp dữ liệuTrước khi sắp xếp ta phải xác định được:Trường cần sắp xếp hay còn gọi là khóaSắp xếp theo thứ tự tăng hay giảmTrường nào được ưu tiên sắp trướcCó phân biệt chữ hoa hay thường không?914.5. Sắp xếp và tìm kiếm4.5.1. Lệnh INDEX (tạo chỉ mục)Tệp chỉ dẫn:Là tệp được sử dụng để chỉ dẫn cho tệp dữ liệu gốcPhục vụ cho công việc tìm kiếm dữ liệuGồm 2 trường: trường chỉ dẫn và số hiệu bản ghiCó đuôi là : .IDXCác bản ghi trong tệp dữ liệu có sử dụng tệp chỉ dẫn được sắp xếp theo thứ tự tăng dần của trường chỉ dẫn924.5. Sắp xếp và tìm kiếmTác dụng: Dùng tạo ra một tệp chỉ dẫn để sắp xếp tệp đang mở theo thứ tự tăng dần của khóa sắp xếp.Dạng lệnh: INDEX ON BT TO Tentep.idx [ FOR BtLg ]Trong đó:BT: là biểu thức bất kỳ dùng làm khóa sắp xếpTentep: là tên tệp chỉ dẫn với đuôi ngầm định .idxTác động: Lệnh sẽ tạo ra tệp chỉ dẫn có tên là tentep.idx để sắp xếp các bản ghi của tệp đang mở theo thứ tự tăng dần của khóa là BTNếu có FOR thì chỉ những bản ghi thỏa mãn biểu thức logic mới được coi là có mặt trong tệp và tham gia sắp xếp.934.5.1. Lệnh INDEXChú ý: Nếu các bản ghi có cùng giá trị khóa sắp xếp thì fox sẽ sắp xếp các bản ghi theo trật tự đã có.Ví dụ 1: In danh sách lớp CQ47/21.01 theo thứ tự Abc của tên.USE QLSVINDEX ON ten+hodem TO vd1 FOR Lop=“CQ47/21.01”LIST TO PRINTERUSE944.5.1. Lệnh INDEXVí dụ 2: In danh sách khóa 46 xếp theo lớp, cùng lớp xếp theo điểm trung bình tăng dầnUSE QLSVINDEX ON LOP + STR(DTB,5,2) TO SX1.idx FOR LEFT(Lop,4)=“CQ46”DISP all TO PRINTERUSE- Để sắp xếp danh sách theo DTB giảm dần ta làm như sauINDEX ON – DTB To sx2.idx954.5.1. Lệnh INDEXVí dụ 3: In danh sách khóa 46 xếp theo lớp, cùng lớp xếp theo ngày sinh tăng dầnUSE QLSVINDEX ON LOP + STR(YEAR(NS),4) + STR(MONTH(NS),2) + STR(DAY(NS),2) TO sx3.idx FOR LEFT(Lop,4)=“CQ46”DISP all TO PRINTERUSELưu ý: Khi sắp xếp theo một trường thì viết tên trường sau ON, nhiều trường thì biến tất cả thành kiểu xâu để ghép.964.5.1. Lệnh INDEX4.5.2. Lệnh SORT (sắp xếp)Tác dụng: Dùng sắp xếp các bản ghi trong tệp đang mở và gửi kết quả sang tệp mới.Dạng lệnh: SORT TO Tên_tệp.DBF ON Trường1 [/A| /D] [/C] [, Trường2 [/A | /D] [/C]..] [ FIELDS DS_Trường ] [ FOR BtLg ]Tác động: Lệnh sẽ sắp xếp các bản ghi dựa theo khóa là các trường, và gửi kết quả sang tệp dữ liệu xác định bởi tên tệp.Nếu có /A thì sắp xếp tăng dần, /D thì sắp xếp giảm dần (ngầm định là /A), /C thì không phân biệt chữ hoa, chữ thườngNếu có FIELDS thì chỉ có các trường trong ds trường mới được gửi sang tệp kết quả.Nếu có FOR thì chỉ các bản ghi thỏa mãn mới được sắp xếp974.5. Sắp xếp và tìm kiếmChú ý:Không đặt tên tệp kết quả trùng với tệp gốcKhông sắp xếp trường kí ức và trường logicSau khi sắp xếp, muốn xem kết quả phải mở tệp kết quảLệnh Sort có tốc độ chậm hơn so với lệnh IndexCó nhiều lệnh không thực hiện được trên tệp xếp bằng lệnh Sort984.5.2. Lệnh SORT994.5.2. Lệnh SORTVí dụ 1: In danh sách toàn trường theo lớp, điểm trung bình giảm dầnUSE QLSVSORT TO VD1.DBF ON LOP, DTB /DUSE VD1LIST TO PRINTERVí dụ 2: In danh sách lớp CQ47/21.01 với tên đã được xếp theo alphabeUSE QLSVSORT TO VD2.DBF ON TEN /AC, HODEM/AC FOR LOP=“CQ47/21.01”USE VD2LIST TO PRINTER4.5.3. Lệnh LOCATETác dụng: Dùng để tìm kiếm và định vị con trỏ đến bản ghi thỏa mãn điều kiện nào đó.Dạng lệnh: LOCATE FOR BtLgTác động: Lệnh sẽ duyệt tuần tự từ đầu tệp để tìm bản ghi đầu tiên thỏa mãn biểu thức logicNếu thấy sẽ đặt con trỏ tại bản ghi đóNếu không thấy sẽ đặt con trỏ tại bản ghi EOFChú ý: Có thể dùng hàm FOUND( ) để kiểm tra sự thành công của lệnh LOCATE1004.5. Sắp xếp và tìm kiếmVí dụ:Tìm sinh viên có mã là “44410036”USE QLSVLOCATE FOR MASV=“44410036”DISPLAYTìm sinh viên nữ sinh ngày 20/10/1990USE QLSVLOCATE FOR NOT(GT) .AND. NS={^1990-10-20}DISPLAYUSE1014.5. Sắp xếp và tìm kiếm4.6.1. Lệnh COUNTTác dụng: Dùng để đếm số bản ghi trên tệp Dạng lệnh: COUNT [TO Biến] [FOR BtLg]Trong đó: Biến: là biến nhớ dùng để lưu kết quả sau khi đếmTác động: Lệnh sẽ đếm số bản ghi thỏa mãn biểu thức logic và gửi kết quả vào biến Chú ý: Để in kết quả lên màn hình ta dùng lệnh:? Tên_biến? “Nội dung thông báo”, Tên_biến1024.6 Lệnh tính toánVí dụ: Tính tỷ lệ khá và giỏi của khóa 47USE QLSVCOUNT TO TSO FOR LEFT(LOP,4)=’CQ47’COUNT TO TGIOI FOR LEFT(LOP,4)=’CQ47’ AND DTB>=8.0COUNT TO TKHA FOR LEFT(LOP,4)=’CQ47’ AND DTB=7.0? ’Tỷ lệ sv giỏi: ’, TGIOI/TSO *100 , ‘%’? ’Tỷ lệ sv khá: ’, TKHA/TSO *100 , ‘%’1034.6 Lệnh tính toán4.6.2. Lệnh SUMTác dụng: Dùng để tính tổng các trường số trên tệpDạng lệnh: SUM DS_Trường [TO DS_Biến] [FOR BtLg]Trong đó: + Ds_trường gồm các trường số cần tính tổng, ngầm định là mọi trường số + Ds_biến là các biến lưu kết quả sau khi tính tổng.Tác động: Lệnh duyệt từ đầu tệp tới cuối tệp để tính tổng các trường số trên các bản ghi thỏa mãn BtLg, rồi gửi kết quả vào các biến trong DS_biến (nếu có).1044.6 Lệnh tính toán105Thuộc tínhNameTypeWidthLoạiLpL1.T. (Nhập)Số phiếuSpC5Ngày lậpNlD8Nội dungNDC30Tên vật tưTENVTC15Mã vật tưMAVTC6Đơn vị tínhDVTC4Khối lượngKLN10Đơn giáDGN10Số tiềnSTN12Mã khoMAKHC2Ví dụ: Tệp dữ liệu quản lý vật tư có cấu trúc như sau:Ví dụ 1: Tính tổng khối lượng, số tiền nhập xi măng mã “XM30” trong quí I năm 2010USE QLVT.DBFSUM KL,ST TO TKL,TST FOR LP AND MAVT=“XM30” AND MONT(NL)<4 AND YEAR(NL) =2010?’ Tổng khối lượng: ‘, TKL?’ Tổng số tiền: ‘, TST1064.6.2. Lệnh SUMVí dụ 2: Giả sử có 2 loại đơn vị tính là KG và Tấn chưa chuẩn hóa, yêu cầu tính tổng khối lượng xi măng XM30 còn lại trong các khoCác bước:- Đổi đơn vị từ tấn sang kg (khối lượng, đơn giá)- Tính tổng nhập- Tính tổng xuất- Kết quả bằng tổng nhập – tổng xuất1074.6.2. Lệnh SUMVí dụ 2: (tiếp)USE QLVT.DBFREPL KL WITH KL*1000, DG WITH DG/1000, DVT WITH “KG” FOR DVT=“TAN”SUM KL TO TN FOR LP .AND. MAVT=“XM30”SUM KL TO TX FOR NOT(LP) .AND. MAVT=“XM30”? “Khối lượng còn lại là: ”, TN - TX1084.6.2. Lệnh SUM4.6.3. Lệnh AVERAGETác dụng: Dùng để tính trung bình cộng các trường số trên tệpDạng lệnh: AVERAGE [DSBT] [TO DS_biến] [FOR BtLg]Trong đó: + DSBT gồm các trường số cần tính trung bình cộng, ngầm định là mọi trường số + Ds_biến là các biến lưu kết quả sau khi tính trung bình cộng.Tác động: Lệnh duyệt từ đầu tệp tới cuối tệp để tính trung bình cộng các trường số trên các bản ghi thỏa mãn BtLg, rồi gửi kết quả vào các biến trong DS_biến (nếu có).1094.6 Lệnh tính toánVí dụ: Tính khối lượng bình quân của vật tư có mã XM30:USE QLVT.DBFAVER KL TO KLBQ FOR MAVT=“XM30”? KLBQ1104.6 Lệnh tính toán4.6.4. Lệnh TOTALTác dụng: Dùng để tính tổng trên các nhóm con các bản ghi của tệp.Nhóm bản ghi: Là các bản ghi thỏa mãn: 1. Liên tiếp nhau 2. Cùng tiêu thức phân nhóm1114.6 Lệnh tính toánMAVTTENVTKLST01Sắt3502Gạch5801Sắt26MAVTTENVTKLST01Sắt3501Sắt2602Gạch58 Để phân nhóm ta phải sắp xếp (Index)Dạng lệnh:TOTAL ON Biểu_Thức TO TenTep.DBF FIELDS Ds_trườngTrong đó: + Biểu_Thức: là biểu thức bất kỳ dùng làm tiêu thức phân nhóm của lệnh Index trước đó. + TenTep.DBF: là tên của tệp kết quả. + Ds_trường: là tên các trường số cần tính tổng.1124.6.4. Lệnh TOTALTác động: Fox sẽ duyệt các bản ghi từ đầu tới cuối tệp mà thỏa mãn BtLg, để chia các bản ghi thành các nhóm căn cứ vào:Vị trí trên tệpTiêu thức phân nhómSau đó tính tổng các trường số trên từng nhóm bản ghi và gửi kết quả của mỗi nhóm vào một bản ghi của tệp dữ liệu kết quả.1134.6.4. Lệnh TOTALNhận xét: Tệp ghi kết quả có:Cấu trúc giống tệp ban đầu Số bản ghi bằng số nhóm conGiá trị ở trường được tính tổng là tổng nhóm tương ứngGiá trị ở trường không được tính tổng là giá trị của trường nằm trên bản ghi đầu tiên của nhómSự khác nhau giữa Sum và Total:Sum tính tổng trên một nhóm bản ghi cụ thểTotal tính tổng trên nhiều nhóm bản ghi1144.6.4. Lệnh TOTALVí dụ 1: - Báo cáo tổng khối lượng, tổng số tiền Nhập của từng loại vật tư trong khoCác bước:- Sắp xếp vật tư theo từng nhóm dùng INDEX- Tính tổng các nhóm dùng TOTAL- Mở tệp kết quả- Hiển thị kết quả1154.6.4. Lệnh TOTALVí dụ 1: (tiếp)USE QLVTINDEX ON MAVT TO VD1.IDX FOR LPTOTAL ON MAVT TO KQ1.DBF FIELDS KL, STUSE KQ1LIST FIELDS MAVT, TENVT, KL, ST1164.6.4. Lệnh TOTALVí dụ 2: - Báo cáo tồn kho từng loại vật tư (đơn vị đã chuẩn hóa)Các bước:- Gán KL của chứng từ xuất là số âm- Sắp xếp vật tư theo từng nhóm dùng INDEX- Tính tổng các nhóm dùng TOTAL- Mở tệp kết quả- Hiển thị kết quả1174.6.4. Lệnh TOTALVí dụ 2: (tiếp)USE QLVTREPL KL WITH –KL FOR NOT(LP)INDEX ON MAVT TO VD2.IDX TOTAL ON MAVT TO KQ2.DBF FIELDS KLUSE KQ2LIST FIELDS MAVT, TENVT, KLUSE QLVTREPL KL WITH –KL FOR NOT(LP)1184.6.4. Lệnh TOTALVí dụ 3: - Tính tổng số tiền Nhập của từng loại Vật tư trong từng kho của tháng 9 năm 2011Các bước:- Sắp xếp vật tư theo từng nhóm dùng INDEX- Tính tổng các nhóm dùng TOTAL- Mở tệp kết quả- Hiển thị kết quả1194.6.4. Lệnh TOTALVí dụ 3: (tiếp)USE QLVTINDEX ON MAVT+MAKH TO VD3.IDX FOR LP .AND. MONTH(NL)=9 .AND. YEAR(NL)=2011TOTAL ON MAVT+MAKH TO KQ3.DBF FIELDS STUSE KQ3LIST FIELDS MAVT, MAKH, TENVT, STUSE1204.6.4. Lệnh TOTAL
Các file đính kèm theo tài liệu này:
- thud_chuong2_5569_2054510.pptx