1. Trang chủ
  2. » Công Nghệ Thông Tin

Đề cương tin ứng dụng + bài tập có giả chi tiết

92 3 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 92
Dung lượng 1,22 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

ĐỀ 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 4

4

 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 5

5

(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 6

6

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

7

- 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 9

9

- 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 10

10

+ 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 11

Dạ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 12

12

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 13

13

- 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 14

14

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 15

15

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 16

16

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 19

19

?"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 20

20

?“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 21

21

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 22

22

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 23

LIST 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 24

24

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 25

25

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 27

LIST 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 28

28

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 29

29

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 30

30

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 31

Bà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 32

32

?“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 33

33

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 34

34

?“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 35

35

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 36

36

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 37

37

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 38

100 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 39

COUNT 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 40

INDEX 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

Ngày đăng: 02/11/2022, 20:50

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w