ĐỀ CƯƠNG ÔN TẬP MÔN TIN HỌC ỨNG DỤNG (Tham khảo) MỤC LỤC Trang PHẦN I CÁC VẤN ĐỀ CƠ BẢN VỀ FOXPRO 2 1 Một số khái niệm 2 2 Một số hàm cơ bản 3 3 Một số lệnh cơ bản 4 PHẦN II CÁC DẠNG BÀI TẬP VỀ FOXPRO.
Trang 1ĐỀ CƯƠNG ÔN TẬP MÔN TIN HỌC ỨNG DỤNG
PHẦN IV: MỘT SỐ CÂU HỎI TRẮC NGHIỆM TỔNG HỢP 45
Trang 2 Các đặc trưng của trường:
- Tên trường: dùng để đặt tên cho các tiêu thức Quy định:
Không quá 10 ký tự
Không phân biệt chữ hoa hay thường
Không bắt đầu từ chữ số
Không chứa các ký tự đặc biệt: /, \, space,…
- Kiểu trường: Dùng để xác định loại thông tin chứa trong trường Foxpro sử dụng 1 số kiểu sau:
Kiểu số: N - Numeric: điểm, khối lượng, số lượng, thành tiền, đơn giá,…
Kiểu ký tự: C - Character: họ tên, mã hàng, số phiếu,…
Kiểu ngày: D - Date: ngày sinh, ngày nhập, xuất,…
Kiểu logic: L - Logical: giới tính
- Độ rộng: Xác định số ký tự nhiều nhất được ghi trong trường Quy định:
Trang 3.NOT.(year(ngaysinh)>1993): tức là năm sinh không vượt quá 1993
Year(ngaysinh)>1993 AND year(ngaysinh)<2009: tức 1993 < năm sinh <
Trang 44
SUBSTR(tên trường cần lấy, vị trí cần lấy, số ký tự cần lấy): C: trả về kết quả
là ký tự cần lấy tính từ vị trí cần lấy (giống hàm MID trong Excel)
- Ví dụ: ?SUBSTR(“123456”, 3, 2) = 34
LTRIM, RTRIM(tên trường): C: Loại bỏ phần thừa bên trái hoặc bên phải của các bản ghi trong trường
- Ví dụ: LTRIM(“˽˽˽˽˽˽˽Ha Tinh”) = Ha Tinh
RTRIM(“Ha Tinh˽˽˽˽˽˽˽”) = Ha Tinh
ALLTRIM(tên trường): C: loại bỏ phần thừa 2 bên
- Ví dụ: ALLTRIM(“˽˽˽˽˽˽Ha Tinh˽˽˽˽˽˽˽”) = Ha Tinh
* Mục đích của LTRIM, RTRIM, ALLTRIM là cắt bỏ những phần thừa để sử dụng hàm LEFT, RIGHT, SUBSTR được chính xác Ví dụ:
- DATE(năm, tháng, ngày): Trả về ngày tháng năm
+ Có 3 cách hiển thị ngày tháng năm Ví dụ: ngày 10/04/1993 được biểu diễn như sau: DATE(2014,04,10) hoặc {^1993-04-10} hoặc {^1993/04/10}
+ Có thể trừ 2 ngày tháng năm với nhau Ví dụ:
Trang 55
(1) Lệnh mở tệp: USE tên tệp
Nếu không có tên tệp thì đó là lệnh đóng tệp đang mở
Nếu có tên tệp thì máy sẽ mở tệp đó
Nếu mở tệp mới thì sẽ đóng tệp đang mở
Ví dụ: USE qlsv
USE qlvt
Lúc này tệp đang mở là qlvt
(2) Lệnh di chuyển (GOTO, SKIP):
GOTO n (n: vị trí cần di chuyển): dùng để di chuyển con trỏ bản ghi tới 1 vị trí thứ n
- Trường hợp đặc biệt: GOTO˽top/bottom: di chuyển lên đầu hoặc cuối bản ghi
SKIP n (n: số lượng cần di chuyển): dùng để di chuyển n bản ghi kể từ bản ghi hiện thời Trong đó: n>0: chuyển về phía cuối tệp (xuống dưới), n<0: chuyển về phía đầu tệp (lên trên)
* Vì sao có NEXT xem lại phần phạm vi ở mục 1 và cấu trúc hàm LIST
(3) Lệnh hiển thị (LIST, DISPLAY): dùng để hiển thị các bản ghi của tệp đang
mở ra màn hình (hoặc máy in)
LIST [phạm vi] [FIELDS tên trường cần hiển thị] [FOR điều kiện] [TO
Trang 66
- Phạm vi: xem lại mục 1
- Điểm khác nhau cơ bản giữa LIST và DISPLAY: Nếu DISPLAY không có điều kiện (FOR) và phạm vi thì chỉ hiện thị bản ghi hiện thời Các trường hợp còn lại đều hiển thị tất cả các bản ghi nếu không viết phạm vi cụ thể
Ví dụ:
- VD1: Liệt kê các sinh viên khóa 49:
LIST ALL FIELDS hodem,ten,khoa,lop FOR khoa=“49”
- VD2: Liệt kê các sinh viên nam lớp 49/01.01:
DISPLAY ALL FIELDS hodem,ten,gioitinh,khoa,lop FOR gt=.F AND
(khoa=“49” AND lop=“01.01”)
- VD3: Xem danh sách sinh viên không phải thi lại 3 môn:
DISPLAY FIELDS hodem,ten,d1,d2,d3 FOR d1>=4 AND d2>=4 AND d3>=4
- VD4: In danh sách sinh viên thi lại ít nhất 1 môn:
LIST FOR d1<4 OR d2<4 OR d3<4 TO PRINTER
- VD5: Xem danh sách sinh viên thi lại đúng 1 môn:
LIST FOR (d1<4 AND d2>=4 AND d3>=4) OR (d2<4 AND d1>=4 AND d3>=4) OR (d3<4 AND d1>=4 AND d2>=4)
- VD6: Hiển thị sinh nhật tháng 4 và 20 tuổi:
LIST FIELDS hodem,ten,ngaysinh FOR month(ngaysinh) = 4 AND
(year(date()) - year(ngaysinh) = 20)
(4) Lệnh chỉnh sửa (REPLACE): dùng để sửa (hay thay thế) nội dung các bản
ghi trong dữ liệu Mục đích dùng để tính toán các trường như tính đơn giá, thuế, thành tiền,…
Dạng lệnh: REPLACE [phạm vi] trường cần thay thế hoặc tính toán WITH nội dung thay thế hoặc công thức tính toán [FOR điều kiện]
Ví dụ:
- VD1: Chuyển quê quán từ Hà Tây sang Hà Nội:
REPLACE ALL quequan WITH “Ha Noi” FOR upper(quequan)=“HA TAY” Hoặc:
REPLACE ALL quequan WITH “Ha Noi” FOR lower(quequan)=“ha tay”
* Lưu ý: Ở đây phải dùng thêm UPPER hoặc LOWER vì trong trường quê quán
có những bản ghi không hiển thị đúng Hà Tây mà có thể là HÀ Tây hoặc Hà TÂy,… do lỗi đánh máy nên phải chuyển đổi sang cùng 1 kiểu in hoa hoặc thường để hiển thị đúng
Trang 77
- VD2: Tính điểm trung bình 3 môn trên trường dtb:
REPLACE ALL dtb WITH (d1 + d2 + d3)/3
- VD3: Phân loại học tập trên trường phanloai dựa vào trường dtb vừa tính được:
Cách 1: REPLACE ALL phanloai WITH “Gioi” FOR dtb>=8
REPLACE ALL phanloai WITH “Kha” FOR dtb>=7
REPLACE ALL phanloai WITH “TB” FOR dtb<7
Cách 2: REPLACE ALL phanloai WITH IIF(dtb>=8, “Gioi”, IIF(dtb>=7,
“Kha”, “TB”)
* Lưu ý: Hàm IIF sử dụng giống hàm IF trong Excel: có bao nhiêu điều kiện thì
có (n-1) hàm IIF lồng nhau
IIF(điều kiện hoặc biểu thức logic, kết quả đúng, kết quả sai)
- VD4: Tính thành tiền biết: TT=SL*DG + TT*10%VAT Nếu bán trong tháng
10 và 12 thì đơn giá tăng 3%
REPLACE ALL tt WITH sl*dg*1.1
REPLACE tt WITH sl*dg*1.1*1.03 FOR month(ngay)=10 or
month(ngay)=12
* Lưu ý: Nếu lệnh REPLACE có FOR mà không ghi phạm vi thì chỉ các bản
ghi làm biểu thức logic đúng (.T.) mới được thay thế
(5) Lệnh sắp xếp (INDEX): Tạo ra 1 tệp chỉ dẫn để sắp xếp các tệp đang mở
Hoặc: INDEX ON 1/dtb TO vd2.idx
- VD3: Sắp xếp theo lớp có điểm trung bình tăng dần:
Trang 8- VD6: Sắp xếp theo ngày sinh giảm dần:
INDEX ON date() - ngaysinh TO vd6
- VD7: Sắp xếp theo lớp và ngày sinh tăng dần với các trường lop, ns:
INDEX ON lop+str(year(ns),4)+str(month(ns),2)+str(day(ns),2) TO vd7
- VD8: Sắp xếp cùng lớp và ngày sinh có năm sinh vào 1993:
INDEX ON lop+dtoc(ns) TO vd8 FOR year(ns)=1993
* Trường hợp này dùng được hàm DTOC vì so sánh tháng đúng theo tăng dần
Đa số dùng DTOC là không chính xác nếu ghép xâu
(6) Các lệnh tính toán trên tệp dữ liệu:
* Lưu ý: Sau khi tính toán muốn hiển thị kết quả ta dùng dấu ?
a, Lệnh đếm số lượng bản ghi: COUNT TO tên biến nhớ [FOR điều kiện]
Ví dụ: Tệp qlsv có 39 bản ghi, trong đó có 16 bản ghi có giới tính nam (quy ước nam là T trên trường giới tính)
COUNT TO a
?“Số lượng sinh viên trong lớp là:”, a
COUNT TO b FOR gt=.T
?“Số lượng sinh viên nam trong lớp là:”, b
b, Lệnh tính tổng (SUM), trung bình cộng (AVERAGE): Dùng để tính tổng,
trung bình cộng của các bản ghi trong trường số
Dạng lệnh: SUM/AVERAGE [trường cần tính tổng hoặc tính trung bình cộng] TO tên biến nhớ [FOR điều kiện]
Ví dụ:
Trang 99
- VD1: Tính điểm trung bình của môn 1 các sinh viên nữ trong lớp (quy ước nữ
là F trên trường giới tính):
Cách 1: AVERAGE d1 TO a FOR gt=.F
?a hoặc ?“Diem trung binh mon 1 của sinh vien nu la:”, a
Cách 2: SUM d1 TO b FOR gt=.F
COUNT TO c FOR gt=.F
?“Diem trung bình mon 1 cua sinh vien nu la:”, b/c
- VD2: Tính khối lượng tồn của S01 đến hết ngày 15/07/2010 (giả sử số dư đầu
kỳ = 0)
Ta có: Khối lượng tồn = Tổng nhập - Tổng xuất
+ Tổng nhập: SUM kl TO a FOR mavt=“S01” AND left(sp,2)=“PN” AND ngay<={^2010-07-15}
+ Tổng xuất: SUM kl TO b FOR mavt=“S01” AND left(sp,2)=“PX” AND ngay<={^2010-07-15}
?“Khối lượng tồn của S01 là:”, a-b
- VD3: Tính đơn giá xuất bình quân của mã S02?
SUM tt,kl TO tongtt, tongkl FOR mavt=“S02” AND left(sp,2)=“PX”
?“Đơn giá xuất bình quân là:”, tongtt / tongkl
Lưu ý: Có thể viết ghép được khi có điều kiện (FOR) giống nhau
c, Lệnh tính tổng theo nhóm (TOTAL): dùng để tính tổng các trường số trên
từng nhóm bản ghi
Nhóm: kế tiếp nhau
cùng tiêu thức phân nhóm Ví dụ: cùng mã vật tư là S02
* Lưu ý: Khi sử dụng lệnh TOTAL, bắt buộc phải sắp xếp dữ liệu theo tiêu thức
ta muốn phân nhóm để Foxpro hiểu được đúng trong dữ liệu có bao nhiêu nhóm Ví dụ:
Trang 1010
+ Tệp kết quả có cấu trúc giống tệp dữ liệu (đuôi dbf) Trong tệp kết quả có chứa các nhóm và tổng nhóm
* Note: Cách nhận biết: phiếu thu/chi; phiếu nhập/xuất; phiếu mua/bán
+ Có 1 trường loại nghiệp vụ (lnv) kiểu Logical
Ví dụ: Liệt kê phiếu thu biết trong trường lnv: T phiếu thu, nhập; F phiếu chi, xuất: LIST FOR lnv=.T
+ 1 thành phần của 1 trường Ví dụ: Left(sp,2)=“PN” hoặc “PX”
+ Đưa thêm 2 trường TK Nợ (tkno) và TK Có (tkco) Ví dụ: Phiếu nhập: tkno=“152”; Phiếu chi: tkco=“111”
Ví dụ:
- VD1: Lập báo cáo về kl, tt xuất của các vật tư trong năm 2013 Giả sử có 2 trường tkno, tkco với tài khoản 152
+ Tiêu thức phân nhóm: mavt
INDEX ON mavt TO a FOR left(tkco, 3)=“152” AND year(ngay)=2013 + Tính tổng theo nhóm:
TOTAL ON mavt TO kq1.dbf FIELDS kl,tt
+ Mở bảng để xem:
USE kq1
LIST mavt, kl, tt
- VD2: Lập báo cáo về kl, tt xuất trong từng tháng của năm 2013
+ Tiêu thức phân nhóm: month(ngay)
INDEX ON month(ngay) TO a FOR left(tkco, 3)=“152” AND year(ngay)=2013 + Tính tổng theo nhóm:
TOTAL ON month(ngay) TO kq2.dbf FIELDS kl,tt
+ Mở bảng để xem:
USE kq2
LIST month(ngay), kl, tt
Trang 11Dạng 2: In, liệt kê theo điều kiện
Sử dụng lệnh: LIST hoặc DISPLAY
Ví dụ 1: In các phiếu nhập kho trong quý 4/2010
LIST FOR tkno="152" AND (MONTH(ngay)>=10) AND (YEAR(ngay)
=2010) TO PRINTER
Ví dụ 2: Hiển thị những người sinh nhật tháng 11 và trên 20 tuổi
LIST FIELDS hodem,ten,ngaysinh FOR MONTH(ngaysinh)=11 AND (YEAR(date())-YEAR(ngaysinh)>20)
Dạng 3: In và liệt kê theo trình tự
Sử dụng 2 lệnh: INDEX và LIST TO PRINTER
Ví dụ: In các phiếu nhập trong năm 2010 theo trình tự từng loại vật tư và thành
Note: - Nếu có FOR thì ko cần viết ALL
- Cách dùng lệnh IIF giống hàm IF trong Excel
Ví dụ 1: Tính điểm trung bình và phân loại học tập:
- Tính điểm trung bình: REPLACE ALL dtb WITH (d1+d2+d3)/3
- Phân loại học tập: REPLACE ALL phanloai WITH IIF(dtb>=8.0, “Gioi”, IIF(dtb>=7.0, “Kha”, “TB”))
Dạng 5: Tăng, giảm, sửa trường nào đó
Sử dụng lệnh: REPLACE
Trang 1212
Ví dụ 1: Giảm đơn giá xuất 12% trong ngày 10/04/2013 cho tất cà các vật tư
REPLACE dg WITH dg*0.88 FOR (tkco = "152") AND ngay={^2013-04-10}
Ví dụ 2: Chuyển quê quán từ Hà Nội -> Hà Tĩnh
REPLACE ALL quequan WITH “Ha Tinh” FOR UPPER(quequan)=“HA NOI” Dạng 6: Xóa và phục hồi
Sử dụng lệnh: DELETE (xóa tạm thời), PACK (xóa hoàn toàn), ZAP (xóa tất
cả bản ghi) và RECALL (phục hồi)
Ví dụ: Xóa hoàn toàn các phiếu mua mặt hàng có mã phiếu bắt đầu là chữ H và
Ví dụ: Tính đơn giá xuất bình quân của mã vật tư S15 trong quý II/2011
SUM kl,tt TO T1,T2 FOR (Tkco="152") AND (mavt="S15") AND month(ngay)>=4 AND month(ngay)<=6 AND year(NGAY)=2011
? "Đơn giá xuất bình quân của mã vật tư S15 trong quý II/2011 là:", T2/T1
Dạng 8: Tính tổng theo từng nhóm
Sử dụng lệnh: TOTAL
Ví dụ 1: Tính tổng tiền xuất của từng loại vật tư năm 2010
- Bước 1: Phân nhóm: Sắp xếp theo mã vật tư (Tiêu thức phân nhóm là mavt) INDEX ON mavt TO sx.idx (ko có đuôi idx cũng đc) FOR (Tkco="152") AND (year(ngay)=2010)
- Bước 1: Sắp xếp theo từng năm và từng tháng
INDEX ON STR(year(ngay),4)+STR(month(ngay),2) TO sx1.idx FOR tkco="156" AND year(ngay)>=2009
- Bước 2: Tính tổng theo nhóm:
TOTAL ON STR(year(ngay),4)+STR(month(ngay),2) TO kq1 FIELDS tt
Trang 1313
- Bước 3: Mở bảng để xem:
USE kq
- Bước 4: Đếm (Sử dụng lệnh COUNT)
COUNT TO vd2 FOR tt>10000000000 (Viết số ko đc viết 10 tỉ)
?"Số tháng kể từ năm 2009 tới nay tổng doanh thu bán hàng vượt 10 tỉ là:",vd2
Ví dụ 3: Lập báo cáo tồn kho của từng loại vật tư
- Bước 1: Chuyển dấu khối lượng của các phiếu bán hàng sang dấu âm:
REPLACE kl WITH -kl FOR tkco= "152"
- Bước 2: Chọn tiêu thức phân nhóm: mavt
INDEX ON mavt TO sx2.idx
- Bước 3: Tính tổng theo nhóm:
TOTAL ON mavt TO kq2 FIELDS kl
- Bước 4: Mở bảng để xem hoặc in:
USE kq2
LIST mavt,kl [TO PRINTER]
- Bước 5: Chuyển lại dấu:
USE Qlvt
REPLACE kl WITH - kl FOR tkco ="152"
* Giải thích: Nếu chúng ta cho phiếu mua là số dương, phiếu bán là số âm, sau
đó sắp xếp theo đối tượng và thực hiện lệnh TOTAL thì nó sẽ trừ cho nhau, kết quả cuối cùng là tổng chênh lệch thu, chi của từng loại vật tư
Trang 1414
PHẦN III: BÀI TẬP VỀ FOXPRO Bài 1: Để quản lý bán hàng người ta sử dụng các phiếu bán hàng, trên các phiếu
có các thông tin sau:
1 Tính thành tiền biết: TT=SL*DG + TT*10%VAT Nếu bán trong tháng 10 và
12 thì đơn giá tăng 3%
2 In danh sách người bán của đại lý có mã hàng HN1 và HN2
3 In các phiếu bán mặt hàng MH01 trong tháng 9 năm 2010 theo thứ tự giảm dần về số lượng
4 Tính tổng số tiền bán được của từng nhân viên trong năm 2010 và cho biết 3 nhân viên có doanh thu bán hàng cao nhất
5 Tính đơn giá bình quân của mặt hàng MH02 trong quý 2 năm 2010
Bài làm
1 REPLACE ALL tt WITH sl*dg*1.1
REPLACE tt WITH sl*dg*1.1*1.03 FOR month(ngay)=10 OR
Trang 1515
4 INDEX ON tennb TO cau4a FOR year(ngay)=2010
TOTAL ON tennb TO tst FIELDS tt
USE tst
INDEX ON -tt TO cau4b
GO TOP
LIST NEXT 3 tennb,tt
5 SUM tt TO tongtt FOR mh=“MH02 AND ngay>={^2010/04/01} AND ngay<={^2010/06/30}
SUM sl TO tongsl FOR mh=“MH02 AND ngay>={^2010-04-01} AND ngay<={^2010-06-30}
?“Đơn giá bình quân của mặt hàng MH02 trong quý 2 năm 2010 là:”, tongtt/tongsl
* Hàm ngày tháng có thể biểu diễn {^2010/04/01} hoặc {^2010-04-01} đều đúng
Bài 2: Để quản lí thu chi tiền mặt ở 1 đơn vị, người ta lưu trữ các phiếu thu và
phiếu chi trong 1 tệp, gồm các thông tin: Số phiếu (SP - C), Ngày lập (NGAY - D), Nội dung (ND - C), Số tiền (ST - N), Tài khoản ghi Nợ (TKNO - C), Tài khoản ghi Có (TKCO - C)
(Phiếu thu ghi Nợ TK 111, phiếu chi ghi Có TK 111 Tài khoản 111 có các TK chi tiết để ghi cho từng đối tượng thu chi bằng cách bổ sung 3 kí hiệu, ví
dụ tk 111001 để theo dõi thu và chi của đối tượng có mã 001)
Yêu cầu:
1 Nhập thông tin vào tệp
2 In các phiếu chi trong quý 1 năm 2010 có số tiền trên 5 triệu trở lên, đã xếp theo ngày, cùng ngày theo mã đối tượng
3 Sửa lại số tiền trên phiếu số 2772/TT thành 10 triệu đồng
4 In 1 danh sách tổng tiền chi của từng đối tượng trong tháng 4 năm 2010
5 Lập 1 thông báo về tổng chênh lệch thu chi của từng đối tượng trong đơn vị
Trang 1616
TOTAL ON STR(day(ngay), 2)+SUBSTR(tkco,4,3) TO kq2 FIELDS st
USE kq2
LIST FOR st>=5000000 TO PRINTER
3 REPLACE st WITH 10000000 FOR SP=“2772”
4 INDEX ON substr(tkco,4,3) TO cau4 FOR left(tkco,3)=“111” AND
month(ngay)=4 AND year(ngay)=2010
TOTAL ON substr(tkco,4,3) TO kq FIELDS st
USE kq
LIST ALL TO PRINTER
5 Lập 1 thông báo về tổng chênh lệch thu chi của từng đối tượng trong đơn vị
- Bước 1: Gán số tiền chi ra dấu âm đằng trước:
REPLACE st WITH -st FOR left(tkco,3)=“111”
- Bước 2: Phân nhóm: Tiêu thức phân nhóm: Từng đối tượng trong đơn vị
INDEX ON IIF(left(tkno,3)=“111”, substr(tkno,4,3), substr(tkco,4,3)) TO sx.idx
REPLACE ALL st WITH -st FOR left(tkco,3)='111'
* Giải thích: Nếu chúng ta cho tiền thu về là số dương, tiền chi là số âm, sau đó sắp xếp theo đối tượng và thực hiện lệnh TOTAL thì nó sẽ trừ cho nhau, kết quả cuối cùng là tổng chênh lệch thu, chi của từng đối tượng
Bài 3: Bài thực hành số 1
Tạo tệp QLVT với cấu trúc như sau:
Trang 17Đơn vị tính quy chuẩn theo Kg
2 Nhập dữ liệu như sau:
REPLACE tt WITH KL*DG*1.05 FOR LEFT (MAVT,1)="X"
REPLACE tt WITH KL*DG*1.1 FOR LEFT (MAVT,1)<>"X"
LIST FIELDS SP,MAVT,NGAY,KL,DG,TT
Hoặc
REPLACE ALL tt WITH kl*dg* IIF ( LEFT (mavt,1)="X",1.05,1.1)
LIST FIELDS SP,MAVT,NGAY,KL,DG,TT
Trang 18 Các dòng phiếu xuất vật tư có mã S01 theo trình tự khối lượng tăng dần? giảm dần?
INDEX ON kl TO cd1 FOR mavt="S01" AND LEFT (SP,2)=”PX”
LIST FIELDS SP,MAVT,NGAY,KL,DG,TT
INDEX ON -kl TO cd2 FOR mavt="S01" AND LEFT (SP,2)=”PX”
LIST FIELDS SP,MAVT,NGAY,KL,DG,TT
Các dòng phiếu xuất vật tư theo trình tự số phiếu, cùng số phiếu thì theo
5 Tính toán, sửa dữ liệu
Sửa đơn giá X03 trên phiếu xuất PX002 thành 22 nghìn
USE qlvt
REPLACE dg WITH 22000 FOR sp="PX002" AND mavt="X03"
REPLACE tt WITH kl*dg* IIF ( LEFT (mavt,1)="X",1.05,1.1) FOR sp="PX002"
Giảm 5% đơn giá nhập Sắt trong tháng 5 và tháng 7
REPLACE dg WITH dg*0.95 FOR LEFT (mavt,1)="S" AND ( MONTH (ngay)=5 OR MONTH (ngay)=7) AND LEFT (SP,2)=”PN”
REPLACE tt WITH kl*dg*1.1 FOR LEFT (mavt,1)="S" AND ( MONTH (ngay)=5
OR MONTH (ngay)=7) AND LEFT (SP,2)=”PN”
6 Hãy cho biết
Tổng số tiền trên phiếu xuất PX003?
SUM tt TO tongp1 FOR sp="PX003"
?"TOng thanh tien tren phieu xuat PX003 la:",tongp1
Tổng số tiền nhập Xi măng trong tháng 5 và 6?
SUM tt TO tongp2 FOR LEFT (mavt,1)="X" AND ( MONTH (ngay)=5 OR MONTH (ngay)=6) AND LEFT (SP,2)=”PN”
Trang 1919
?"TOng tien nhap xi mang trong thang 5 va 6 la:",tongp2
Khối lượng còn lại của S01 tính đến hết ngày 15/7/2010?
- Tính khối lượng tồn = Tổng nhập - Tổng xuất
?“Khối lượng tồn của S01 là:”, tn - tx
Đơn giá xuất bình quân của S01?
- Bước 1: Tính tổng thành tiền:
SUM tt TO tongtt FOR mavt=“S02” AND left(sp,2)=“PX”
- Bước 2: Tính tổng khối lượng:
SUM kl TO tongkl FOR mavt=“S02” AND left(sp,2)=“PX”
- Bước 3: Tính đơn giá xuất bình quân = Tổng thành tiền / Tổng khối lượng
?“Đơn giá xuất bình quân là:”, tongtt / tongkl
INDEX ON mavt TO cd4 FOR LEFT (sp,2)="PN"
TOTAL ON mavt TO tongvt FIELDS kl,tt
USE tongvt
LIST FIELDS mavt,kl,tt
o Vật tư nào có tổng tiền nhập cao nhất?
USE tongvt INDEX ON -tt TO cd44
?"Vat tu co tong tien nhap cao nhat la:"
GO TOP DISPLAY FIELDS mavt,tenvt,tt
o Có bao nhiêu vật tư có tổng khối lượng nhập vượt 10000?
COUNT TO cau7 FOR kl>10000 AND left(sp,2)=“PN”
Trang 2020
?“So vat tu co tong khoi luong nhap vuot 10000 la:”, cau7
Lập báo cáo về tổng tiền xuất của từng loại mặt hàng (sắt, xi măng…)
Cho biết tháng nào của năm 2010 có tổng tiền xuất cao nhất?
INDEX ON month(ngay) TO cau7d FOR year(ngay)=2010 AND left(sp,2)=“PX”
TOTAL ON month(ngay) TO kq FIELDS tt USE kq
GO BOTTOM LIST FIELDS month(ngay),tt
Bài 4: Bài thực hành số 2
Tạo tệp QLBH với cấu trúc như sau:
MAHH C 6 - Mã hàng hóa (2 kí tự đầu chỉ mã loại hàng, 2 kí tự kế
tiếp chỉ mã nhà cung cấp)
NGAYLAP C 10 - Ngày lập phiếu (được viết theo dạng 2 kí tự đầu chỉ
ngày, 2 kí tự tiếp theo chỉ tháng, 4 kí tự tiếp chỉ năm)
(Người ta phân biệt phiếu mua/bán qua tài khoản 156 Tài khoản 156 được
chia chi tiết dưới dạng 156xxx trong đó xxx là mã cửa hàng)
Trang 2121
Yêu cầu:
1 Tính thành tiền theo công thức TT=DG*KL+VAT(10%) nếu bán trong tháng 12 khuyến mãi 10%
2 Đổi dvt của các phiếu có dvt là tấn sang kg
3 Xóa các phiếu có dvt là tec
4 Tăng đơn giá của các phiếu bán mã hàng DTSN02 của cửa hàng ACB trong tháng 1 lên 10%
5 In các phiếu bán mặt hàng DTSN01 trong năm 2013
6 In các phiếu bán mặt hàng DTSN01 trong năm 2013 theo trình tự thời gian lập phiếu
7 In các phiếu mua hàng của nhà cung cấp TC trong năm 2013
8 In các phiếu mua hàng của nhà cung cấp TC trong năm 2013 theo trình tự giảm dần của thành tiền
9 In các phiếu mua trong năm 2013 sắp xếp theo mã hàng, cùng mã theo khối lượng mua giảm dần
10 In các phiếu mua trong năm 2013 sắp xếp theo mã hàng, cùng mã theo ngày mua
11 Tính tổng số lượng mua hàng của cửa hàng ABG trong tháng 1/2013
12 Tính đơn giá mua bình quân của mặt hàng DTSN01và DTSN02
13 Đếm số phiếu bán có thành tiền trên một triệu
14 In ra báo cáo về tổng số tiền mua của các cửa hàng trong năm 2013
15 In ra báo cáo về tổng số tiền bán của các cửa hàng trong năm 2013 Cho biết
5 cửa hàng có doanh thu cao nhất
16 In ra báo cáo về tổng khối lượng mua từng mặt hàng của từng cửa hàng trong quý I /2013
17 In ra báo cáo về khối lượng tồn của từng mặt hàng ở các cửa hàng tính đến ngày hiện tại (giả sử ban đầu tồn các mặt hàng là 0)
Bài làm
1 USE qlbh
REPLACE ALL tt WITH kl*dg*1.1
REPLACE tt WITH sl*dg*1.1*0.9 FOR left(ngaylap,2)="12" and left(tkco,3)="156"
2 REPLACE dvt WITH “kg”, kl WITH kl*1000,dg WITH dg/1000 FOR
dvt=“tan”
REPLACE ALL tt WITH dg*kl
Trang 2222
3 DELETE FOR dvt=“tec”
4 REPLACE dg WITH dg*1.1 FOR mahh=“DTSN02” AND substr(ngaylap,3,2)=“01” AND tkco=“156ACB”
5 LIST FOR mahh=“DSTN01” AND left(tkco,3)=“156” AND substr(ngaylap,5,4)=“2013” TO PRINTER
6 INDEX ON substr(ngaylap,3,2)+left(ngaylap,2) TO cau6 FOR mahh=
“DTSN01” AND substr(ngaylap,5,4)=“2013” AND left(tkco,3)=“156”
10 INDEX ON mahh+substr(ngaylap,3,2)+left(ngaylap,2) TO cau10 FOR
left(tkno,3)=“156” AND right(ngaylap,5,4)=“2013”
LIST TO PRINTER
11 SUM kl TO cau11 FOR tkno=“156ABG” AND substr (ngaylap,3,6)
=“012013”
?”Tổng số lượng mua hàng cửa hàng ABG tháng 1/2013 là:”, cau11
12 SUM tt TO tongtt FOR left(tkno,3)=“156” AND (mahh=“DTSN01” OR
mahh=“DTSN02”)
SUM kl TO tongkl FOR left(tkno,3)=“156” AND (mahh=“DTSN01” OR mahh=“DTSN02”)
?“Đơn giá mua bình quân của DTSN01 và DTSN02 là:”, tongtt/tongkl
13 COUNT TO cau13 FOR left(tkco,3)=“156” AND tt>1000000
?“Số phiếu bán có thành tiền trên 1 triệu là:”, cau13
14 INDEX ON substr(tkno,4,3) TO cau14 FOR left(tkno),3)= “156” AND
substr(ngaylap,5,4)=“2013”
TOTAL ON substr(tkno,4,3) TO kq14 FIELDS tt
USE kq14
LIST substr(tkno,4,3),tt TO PRINTER
15 Tương tự như câu 14 nhưng thay “tkno” thành “tkco”
Trang 23LIST NEXT 5 FIELDS substr(tkco,4,3),tt
16 INDEX ON tenhh+right(tkno,3) TO cau16 FOR substr(ngaylap,5,4)=
"2013" AND VAL(substr(ngaylap,3,2))<=3 AND left(tkno,3)="156"
TOTAL ON tenhh+right(tkno,3) TO kq FIELDS kl
USE kq
LIST FIELDS tenhh,right(tkno,3),kl TO PRINTER
17 In báo cáo khối lượng tồn của từng mặt hàng ở các cửa hàng tính đến ngày
hiện tại? (Khối lượng tồn = KL nhập (phiếu thu) - KL xuất (phiếu bán)
- Bước 1: Chuyển dấu khối lượng của các phiếu bán hàng sang dấu âm:
REPLACE kl WITH -kl FOR left(tkco,3)=“156”
- Bước 2: Tiến hành phân nhóm: Tiêu thức phân nhóm: mặt hàng+cửa hàng INDEX ON mahh+IIF(left(tkno,3)=“156”, substr(tkno,4), substr(tkco,4)) TO cau17
- Bước 3: Tính tổng theo nhóm:
TOTAL ON mahh+ IIF(left(tkno,3)=“156”,substr(tkno,4),substr(tkco,4)) TO klt
USE klt
LIST mahh,kl,tkno,tkco TO PRINTER
- Bước 4: Chuyển lại dấu:
Trang 2424
BHXH N 6 0 Trừ bảo hiểm xã hội
BHYT N 6 0 Trừ bảo hiểm y tế
TSTDL N 7 0 Tổng số tiền được lĩnh trong tháng
Yêu cầu:
1 Tạo tệp và nhập dữ liệu với cấu trúc đã xây dựng
2 Đóng tệp
3 Mở tệp và xem lại cấu trúc của tệp
4 Xem HODEM, TEN, MPCT của các cán bộ nam
5 Xem HODEM, TEN, MPCT của các cán bộ nam thuộc phòng có mã “P01”
6 Xem HODEM, TEN, MPCT của các cán bộ về hưu trong năm 2012 (Biết rằng: tiêu chuẩn về hưu là: nam tính đến tuổi 60, nữ tính đến tuổi 55)
7 Xem 5 bản ghi đầu tiên trong tệp
8 Xem 5 bản ghi cuối cùng trong tệp
9 Xem các cán bộ nam có chức vụ
10 Xem bản ghi số hiệu 3
11 Tạo tệp LL2012 để lưu bản ghi của các cán bộ được lên lương trong năm
2012 (Biết rằng: Nếu HSL<3 thì 3 năm được lên lương một lần; Nếu HSL>=3 thì 4 năm được lên lương một lần)
12 Mở tệp LL2012 và cho xem họ tên và mã phòng của các cán bộ được lên lương trong năm 2012
13 Mở lại tệp QLLCB Sửa giá trị của bản ghi số hiệu 3 trên trường MPCT thành “P01”
14 Tính PCAT, BHXH, BHYT, và TSTDL cho từng cán bộ theo công thức:
- PCAT = 800.000 - BHYT = 1% x Lương chính
- BHXH = 5% x Lương chính - Lương chính = 830.000xHSL
- TSTDL = Lương chính + PCAT - BHXH - BHYT
15 Đánh dấu xoá bản ghi số hiệu 3 Sau đó phục hồi lại bản ghi số 3
16 Đánh dấu xoá 5 bản ghi cuối cùng
17 Phục hồi lại 5 bản ghi cuối cùng
Trang 2525
18 Xoá hẳn 5 bản ghi cuối cùng
19 Xóa hẳn tất cả các bản ghi
20 Sắp xếp các bản ghi theo thứ tự TSTDL tăng dần Hiển thị kết quả sắp xếp
21 Mở lại tệp QLLCB Sắp xếp các bản ghi của phòng ‘P01’ theo thứ tự HSL giảm dần
22 Sắp xếp các bản ghi theo thứ tự Alphabet của MPCT, cùng MPCT sắp xếp theo thứ tự TSTDL tăng dần
23 Sắp xếp các bản ghi theo thứ tự Alphabet của MPCT, cùng MPCT sắp xếp theo thứ tự tuổi giảm dần
24 Hiển thị lên màn hình danh sách bao gồm Họ tên và Mã phòng công tác của
5 cán bộ có hệ số lương cao nhất trong đơn vị
25 Đếm số cán bộ của phòng “P02”
26 Đếm số cán bộ dưới 25 tuổi của phòng “P01”
27 Đếm số cán bộ nam, số cán bộ nữ và xác định chệnh lệch về số lượng giữa nam và nữ
28 Tính tổng số tiền được lĩnh của toàn đơn vị
29 Tính tổng PCAT, tổng BHXH, tổng BHYT, tổng TSTDL của phòng có mã
“P02”
30 Tính TSTDL bình quân của một cán bộ trong đơn vị
31 Tính hệ số lương bình quân của mỗi cán bộ phòng “P01”
32 Tính thu nhập bình quân của mỗi cán bộ dưới 25 tuổi
33 Tính tổng số tiền được lĩnh của từng phòng
34 Xác định mã của phòng có TSTDL toàn phòng cao nhất
4 LIST FIELDS hodem,ten,mpct FOR nam=.T
5 LIST FIELDS hodem,ten,mpct FOR nam=.T AND mpct=“P01”
6 LIST FIELDS hodem,ten,mpct FOR (nam=.T AND 2012-year(ns)=60) OR
(nam=.F AND 2012-year(ns)=55)
7 GO TOP
LIST NEXT 5
Trang 26- PCAT: REPLACE ALL pcat WITH 800000
- BHYT: REPLACE ALL bhyt WITH 830000 x hsl x 0.01
- BHXH: REPLACE ALL bhxh WITH 830000 x hsl x 0.05
- TSTDL: REPLACE ALL tstdl WITH 830000 x hsl + pcat - bhyt - bhxh
Trang 27LIST NEXT 5 FIELDS hodem,ten,mpct
25 COUNT TO cau25 FOR mpct=“P02”
?“Số cán bộ phòng “P02” là:”, cau25
26 COUNT TO cau26 FOR mpct=”P02” AND 2012-year(ns)<25
?“Số cán bộ dưới 25 tuổi phòng “P02” là:”, cau26
27 COUNT TO cbnam FOR nam=.T
COUNT TO cbnu FOR nam=.F
?“Số chênh lệch nam nữ là:”, cbnam - cbnu
28 SUM tstdl TO cau28
?“Tổng số tiền được lĩnh toàn đơn vị là:”, cau28
29 SUM pcat TO cau29a FOR mpct=“P02”
Tương tự cho bhxh, bhyt,tstdl
30 AVERAGE tstdl TO cau30
?“Số tiền được lĩnh bình quân 1 cán bộ trong đơn vị là:”, cau30
31 AVERAGE hsl TO cau31 FOR mpct=“P01”
?“Số tiền được lĩnh bình quân 1 cán bộ phòng P01 là:”, cau31
32 AVERAGE tstdl TO cau32 FOR 2012-year(ns)<25
?“Thu nhập bình quân 1 cán bộ dưới 25 tuổi là:”, cau32
Trang 2828
Bài 6: Xét bài toán quản lý việc sử dụng điện của các hộ gia đình qua các Phiếu
sử dụng điện với cấu trúc như sau:
HOTEN C 30 - Họ tên chủ hộ
MACN C 10 - Mã chi nhánh cung cấp điện
DM N 3 0 Định mức sử dụng điện trong tháng
CSD N 5 0 Chỉ số công tơ đầu tháng
CSC N 5 0 Chỉ số công tơ cuối tháng
SSD N 3 0 Số điện sử dụng trong tháng
STPT N 7 0 Số tiền phải trả trong tháng
Yêu cầu:
1 Tính số điện sử dụng (SSD) cho mỗi phiếu
2 Tính số tiền phải trả (STPT) cho mỗi phiếu? (Biết rằng: Đơn giá sử dụng điện được tính như sau:
Đơn giá =
700đ cho mỗi kW trong định mức 1000đ cho mỗi kW vượt định mức từ 50kW đến 100kW 1400đ cho mỗi kW vượt định mức trên 100kW đến 150kW 2000đ cho mỗi kW vượt định mức trên 150kW
Sau đó cộng số tiền thêm 10% thuế VAT
3 In các phiếu điện trong tháng 2 năm 2011 của chi nhánh có mã “CN01”
4 Liệt kê 5 bản ghi đầu tiên có số điện sử dụng cao nhất
5 Liệt kê 5 bản ghi cuối cùng có số điện sử dụng ít nhất
6 Sửa lại giá trị trên trường MACN của bản ghi số hiệu 10 thành “CN01”
7 Sắp xếp các phiếu sử dụng điện theo thứ tự Alphabet của Mã chi nhánh, cùng mã chi nhánh thì sắp xếp theo thời gian và cho xem kết quả
8 Đếm số phiếu có số sử dụng vượt định mức của chi nhánh “CN01” trong quý I năm 2011
9 Tính số điện sử dụng bình quân 1 tháng trong năm 2010 của hộ gia đình có
mã công tơ là “CT01”
10 Tính tổng số sử dụng vượt định mức của chi nhánh có mã “CN01”
Bài làm
Trang 2929
1 REPLACE ALL ssd WITH csc-csd
2 REPLACE ALL stpt WITH 1.1* IIF (ssd<=dm, 700*ssd, IIF(ssd<=(dm+50),
(dm*700+(ssd-dm)*1000), IIF(ssd<=dm+100, 50)*1400, (dm*700+50*1000+50*1400+(ssd-dm-100)*2000)))
(dm*700+50*1000+(ssd-dm-3 LIST FOR thang=2 and nam=2011 and macn=“CN01” TO PRINTER
REPLACE macn WITH “CN01”
7 INDEX ON macn+str(nam,2,0)+str(thang,2,0) TO cau7
LIST
8 COUNT TO cau8 FOR macn=“CN01” AND nam=2011 AND thang<=3
AND ssd>50
?“Số phiếu vượt định mức là:”, cau8
9 SUM ssd TO cau9 FOR mact=“CT01” AND nam=2010
?“Số điện sử dụng bình quân là:”, cau9/12
10 SUM ssd TO cau10 FOR macn=“CN01”
Trang 3030
GO TOP
DISPLAY month(ngay)
2 Có bao nhiêu ngày trong quý I/2013 có tổng thu vượt 5 tỷ?
INDEX ON ngay TO cau2 FOR left(tkno,3)=“111” AND month(ngay)<=3 AND year(ngay)=2013
TOTAL ON ngay TO tongq1
USE tongq1
COUNT TO kq FOR st>=5000000000 (hoặc 5E9)
?“Số ngày tổng thu vượt 5 tỷ là:”, kq
3 Lập báo cáo tổng chi cho từng đối tượng năm 2013? (Mã đối tượng là 3
ký tự cuối trong tkno, tkco)
Tiêu thức phân nhóm: Từng đối tượng: substr(tkco,4,3)
INDEX ON substr(tkco,4,3) TO cau3 FOR left(tkco,3)=“111” AND year(ngay)=2013
TOTAL ON substr(tkco,4,3) TO tongchi
(Biết rằng 3 ký tự đầu của MACT là mã quốc gia)
1 Tính tổng số tiền đầu tư bằng EUR của từng quốc gia vào từng lĩnh vực?
Trang 31Bài 8: Đề thi tự luận (5)
Có tệp dữ liệu QLDT.DBF để quản lý số tiền đầu tư của các công ty nước ngoài vào Việt Nam có cấu trúc như sau:
Name Type Width Dec Giải thích
MALVDT C 10 - Mã lĩnh vực đầu tư
STDT N 15 0 Số tiền đầu tư
STCGD N 15 2 Số tiền cuối giai đoạn đầu tư
Giả sử trong tệp đã đủ dữ liệu Hãy viết các lệnh FOX để:
1 In danh sách các công ty đầu tư thuộc quốc gia có mã JP
2 Tính số tiền có được ở cuối giai đoạn đầu tư cho từng công ty theo công thức:
Số tiền cuối giai đoạn = Số tiền đầu tư * (1 + số năm đầu tư * lãi suất/1 năm)
3 Tính tổng số tiền đã đầu tư bằng đôla Mỹ (USD) của công ty thuộc quốc gia
LIST ALL fields tenct,maqg FOR maqg = “JP” TO PRINTER
2 REPLACE ALL stcgd WITH stdt*(1 + snam*lsnam)
3 SUM stdt TO cau3 FOR ltt= “USD” AND maqg = “AUS”
Trang 3232
?“Tổng số tiền đã đầu tư bằng USD của công ty thuộc quốc gia có mã AUS là:”, cau3
4 USE qldt
INDEX ON maqg+ltt TO cau4
TOTAL ON maqg+ltt TO tong.dbf FIELDS stdt
USE tong
LIST maqg,ltt,stdt TO printer
5 INDEX ON maqg TO cau5a.idx FOR ltt= “USD”
TOTAL ON maqg to tongtien.dbf FIELDS stdt
USE tongtien
INDEX ON stdt TO cau5b
GOTO bottom
SKIP -4
LIST NEXT 5 FIELDS maqg,stdt TO PRINTER
Bài 9: Đề kiểm tra điều kiện (12)
Xét bài toán quản lý chứng từ tiền mặt tại 1 doanh nghiệp thông qua phiếu thu
& chi theo cấu trúc như sau:
2 Tính tổng số tiền chi trong tháng 4 năm 2014
3 Xóa các phiếu thu được lập trong ngày hôm nay và ngày 10/04/2014
4 Tính tổng số tiền chi của từng tháng trong năm 2013 và cho biết tháng nào có tổng tiền chi lớn nhất
Trang 3333
5 Xác định tổng số tiền chi bình quân cho từng năm 2011-2014 với nội dung là
“Công tác phí”
6 Có bao nhiêu ngày trong quý II năm 2013 có tổng tiền thu vượt 5 tỷ đồng
7 Lập báo cáo tổng tiền chi cho từng đối tượng năm 2013
?“Tong so tien chi trong thang 4/2014 la:”, cau2
3 DELETE FOR (nl=date() OR nl={^2014-04-10}) AND left(tkno,4)=“1111”
4 INDEX ON month(nl) TO cau4a.idx FOR left(tkco,4)=“1111” AND
DISPLAY ALL FIELDS nl,sotien
5 INDEX ON year(nl) TO cau5.idx FOR left(tkco,4)=“1111” AND nd=“Công
tác phí” AND (year(nl)>=2011 and year(nl)<=2014)
TOTAL ON year(nl) TO kq5.dbf FIELDS sotien
AVERAGE sotien TO abc
?“Số tiền chi bình quân cho từng năm là:”, abc
6 INDEX ON day(nl) TO cau6.idx FOR nl>={^2013-04-01} AND
Trang 3434
?“Số ngày trong quý II năm 2013 có tổng tiền thu vượt quá 5 tỷ là:”, a
7 INDEX ON substr(tkco,5,2) TO cau7.idx FOR year(nl)=2013 AND
left(tkco,4)=“1111”
TOTAL ON substr(tkco,5,2) TO kq7.dbf FIELDS sotien
USE kq7
LIST ALL FIELDS substr(tkco,5,2), sotien
Bài 10: Đề thi tự luận (4)
Có tệp cơ sở dữ liệu QLLSP.DBF để quản lý lương sản phẩm hàng tháng cho công nhân trong xí nghiệp, có cấu trúc như sau:
KYLUONG C 6 - Ghi tháng và năm tính lương, có dạng:
mmyyyy HOTEN C 25 - Họ tên công nhân
MACN C 10 - Mã công nhân (2 ký tự đầu là mã phân xưởng, 2 ký tự tiếp theo chỉ mã nghề)
DGSP N 8 1 Đơn giá lương 1 sản phẩm
DUOCLINH N 10 1 Số tiền được lĩnh trong kỳ
Hãy viết các lệnh của FOX để:
1 In danh sách công nhân của phân xưởng có mã S2 trong tháng hiện tại
2 Tính các khoản Thưởng, Phạt, Được lĩnh công nhân, biết:
Được lĩnh = SSP trong định mức x Đơn giá + Thưởng - Phạt
Thưởng = SSP vượt định mức x Đơn giá x 75%
5 Lập bảng kê tổng tiền được lĩnh, tiền thưởng, tiền phạt của 3 phân xưởng có
số tiền thưởng cao nhất trong tháng 9/2014
Bài làm
Trang 3535
1 USE qllsp.dbf
LIST ALL FIELDS hoten,macn,kyluong FOR left(macn,2)=“S2” AND
val(left(kyluong,2))=month(date()) TO PRINTER
2 REPLACE ALL thuong WITH dgsp*0.75*IIF(spld>spdm, spld-spdm, 0)
REPLACE ALL phat WITH dgsp*1.5*IIF(spld<spdm, spdm-spld, 0)
REPLACE ALL duoclinh WITH spdm*dgsp+thuong-phat
3 USE qllsp.dbf
INDEX ON str(duoclinh,10,1)+str(1/thuong, 10,1) TO cau3.idx FOR
left(macn,2)=“S2” AND kyluong=“092014”
INDEX ON left(macn,2) TO cau5.idx FOR kyluong=“092014”
TOTAL ON left(macn,2) TO kq.dbf FIELDS thuong,phat,duoclinh
LIST NEXT 3 FIELDS left(macn,2),thuong,phat,duoclinh
Bài 11: Đề kiểm tra điều kiện (3)
Xét bài toán quản lý chứng từ tiền mặt tại một đơn vị thông qua các Phiếu thu - chi với cấu trúc của têp QLTC.dbf như sau:
Trang 3636
NO C 10 - Số hiệu tài khoản ghi nợ
CO C 10 - Số hiệu tài khoản ghi có
(Lưu ý: Phân biệt phiếu thu/chi thông qua Tài khoản ghi nợ, Tài khoản ghi
có Ba kí tự đầu của trường SOCT chỉ mã phòng ban Kí tự thứ 5 và 6 của trường NO, CO chỉ mã đối tượng)
Yêu cầu:
1 In các phiếu được lập trong năm 2012 và 2 quý đầu năm 2013 theo trình tự thời gian
2 Tính tổng số tiền chi cho phòng có mã P01 trong tháng 8/2013
3 Xóa các phiếu thu được lập trong ngày 19/08/2013 và các phiếu thu của phòng P02 được lập trong ngày 21/08/2013
4 Có bao nhiêu phiếu chi cho đối tượng có mã 01 có tổng số tiền vượt 100 triệu trong quý II/2013
5 Tính tổng số tiền chi cho từng phòng ban trong tháng 8 năm 2013 và cho biết phòng nào có tổng số tiền chi cao nhất
6 Tính tổng chênh lệch thu chi cho từng đối tượng
SUM st TO cau2 FOR left(soct,3)=“P01 AND year(ngay)=2013 AND
month(ngay)=8 AND left(co,4)=“1111”
3 USE qltc.dbf
DELETE FOR left(no,4)=“1111” AND ngay={^2013-08-19} OR
(left(soct,3)=“P02” AND ngay={^2013-08-21}
4 USE qltc.dbf
Trang 3737
COUNT TO cau4 FOR co=“111101” AND st>100000000 AND
(ngay>={^2013-04-01} AND ngay<={^2013-06-30})
?“Số phiếu chi cho mã 01 có tổng tiền vượt 100 triệu trong quý II/2013 là:”, cau4
5 USE qltc.dbf
INDEX ON left(soct,3) TO cau5a.idx FOR year(ngay)=2013 AND
month(ngay)=8 AND left(co,4)=“1111”
TOTAL ON left(soct,3) TO kq1.dbf FIELDS st
REPLACE ALL st WITH -st FOR left(co,4)=“1111”
INDEX ON IIF(left(no,4)=“1111”, substr(no,5,2), substr(co,5,2)) TO sx.idx TOTAL ON IIF(left(no,4)=“1111”, substr(no,5,2), substr(co,5,2)) TO kq.dbf FIELDS st
USE kq.dbf
LIST IIF(left(no,4)=“1111”, substr(no,5,2), substr(co,5,2)),st
USE qltc.dbf
REPLACE st WITH -st FOR left(co,4)='1111'
Bài 12: Đề kiểm tra điều kiện (5)
Để quản lý việc bán hàng của một công ty kinh doanh có nhiều đại lý bán hàng, người ta sử dụng các Phiếu bán hàng; trên mỗi phiếu chi tiết có các thông tin sau:
Trang 38100 thì giảm đơn giá 6%
2 In danh sách các nhân viên của đại lý có mã HN1 và HN2
3 In các phiếu bán mặt hàng MH01 trong tháng 9/2010 theo trình tự thời gian
và thứ tự giảm dần của số lượng
4 Tính tổng số tiền bán của từng nhân viên trong năm 2010 và cho biết tên của
3 nhân viên có doanh thu bán hàng cao nhất
5 Tính đơn giá bán bình quân của mặt hàng MH02 trong quý II/2010
6 Đếm số mặt hàng có tổng tiền bán trong năm 2009 vượt 10 tỷ
Bài làm
1 REPLACE ALL tt WITH sl*dg*1.1
REPLACE ALL tt WITH sl*(dg*1.03)*1.1 FOR month(ngay)=10 OR month(ngay)=12
REPLACE ALL tt WITH sl*(dg*0.94)*1.1 FOR sl>100
2 LIST FIELDS tennb,mh FOR left(manb,3)=“HN1” OR left(manb,3)=“HN2”
TO PRINTER
3 INDEX ON str(year(ngay),4)+str(month(ngay),2)+str(day(ngay),2)+ str(1/sl,10,0) TO cau3 FOR mh=“MH01” AND month(ngay)=9 AND year(ngay)=2010
LIST TO PRINTER
4 INDEX ON tennb TO cau4a FOR year(ngay)=2010
TOTAL ON tennb TO kq4 FIELDS tt
USE kq4
INDEX ON -tt TO cau4b
GO TOP
LIST NEXT 3 tennb,tt
5 SUM tt,sl TO tongtt,tongsl FOR mh=“MH02 AND ngay>={^2010-04-01} AND ngay<={^2010-06-30}
Trang 39COUNT TO cau6b FOR tt>10000000000
?“Số mặt hàng có tổng tiền bán trong năm 2009 vượt 10 tỷ là:”, cau6b
Bài 13: Đề kiểm tra điều kiện (11)
Quản lý hàng hóa: Để quản lý việc kinh doanh của một công ty, người ta
sử dụng các Phiếu mua/bán hàng, trên mỗi phiếu chi tiết có các thông tin sau:
2 In các phiếu mua hàng trong tháng 9/2014 theo thứ tự từng mặt hàng và số lượng giảm dần
3 Tính tổng số tiền bán mặt hàng M01 trong quý II/2014
4 Tính đơn giá bán bình quân của mặt hàng H02 trong quý III/2014
5 Tính số lượng còn lại của mặt hàng N06 cho đến hết ngày 31/08/2014
6 Có bao nhiêu mặt hàng có tổng tiền bán trong năm 2013 vượt 8 tỷ
Trang 40INDEX ON left(mh,1) + str(10000000 - sl, 7, 0) TO cau2.idx FOR
year(ngay)=2014 AND month(ngay) = 9 AND left(tkno,3)=“156”
LIST ALL sp, mh, ngay, sl TO PRINTER
REPLACE sl WITH -sl FOR left(tkco,3)= "156"
SUM sl TO cau5 FOR left(tenh,3)= “N06” AND ngay<={^2014-08-31}
? “Số lượng còn lại của mặt hàng N06 cho đến hết ngày 31/08/2014 là:”, cau5 USE qlhh
REPLACE sl WITH -sl FOR left(tkco,3)= "156"
COUNT TO cau6b FOR tt>8000000000
?“Số mặt hàng có tổng tiền bán trong năm 2013 vượt 8 tỷ là:”, cau6b