Professional Documents
Culture Documents
Lớp: 41.2_LT(1+2)
Lớp trưởng: Nguyễn Thái Dương, đt: 085.343.3401
Email: Nguyenthaiduong57.IT@gmail.com
(1) Giảng viên: Vũ Bá Anh
ĐT: 091.323.9292
Email: AnhvbHvtc@gmail.com
(2) Nội dung HP: Cơ sở dữ liệu – HP 2
Nd: Xây dựng phần mềm quản trị CSDL Tài chính – Kế toán
dựa trên Visual FoxPro
Gồm:
- Hệ thống hóa kiến thức về Visual FoxPro
- Bước đầu làm việc với Visual Foxpro
- Làm quen với các đối tượng và lớp trong VFP
- Tạo giao diện trong quản trị CSDL
- Tạo báo cáo trong quản trị CSDL
- [Kết hợp dữ liệu với các ứng dụng khác]
- Quy trình xây dựng phần mềm.
(3) Tài liệu học tập
- Giáo trình: CSDL hp2 (HVTC)
- Tài liệu tham khảo:
+ Các tài liệu Tin học về Visual FoxPro
+ Các tài liệu hướng dẫn xây dựng phần mềm quản lí
+ Các tài liệu Kế toán: Giáo trình Nguyên lí kế toán,
Giáo trình Kế toán tài chính 1, 2.
(4) Yêu cầu:
- Ghi chép nội dung cơ bản
- Cài đặt Visual Foxpro để tự thực hành.
Chương 1: Hệ thống hóa kiến thức về Visual FoxPro
I. Khái quát chung về Visual FoxPro
1- Giới thiệu sản phẩm
- VFP là sản phẩm của MicroSoft, phát triển qua nhiều phiên
bản:
+ FoxBase
+ FoxPro
+ FoxPro for Windows
+ Visual FoxPro (5.0 – 9.0)
- VFP là hệ quản trị CSDL, tích hợp cả 3 chức năng cơ bản
để viết phần mềm, gồm:
+ Quản trị CSDL (3 chức năng chính):
Create: Tạo lập CSDL (tạo ra các tệp dữ liệu và tạo
MQH giữa các tệp)
Update: Cập nhật dữ liệu (Thêm, sửa, xóa)
Query: Truy vấn – cung cấp thông tin.
+ Ngôn ngữ lập trình: VFP cung cấp hệ ngôn ngữ đủ để viết
trình trong quản trị CSDL.
+ Công cụ tạo lập báo cáo
Do đó, VFP là công cụ xây dựng phần mềm quản trị
CSDL rất phù hợp cho các đơn vị có quy mô nhỏ và vừa.
- VFP là sản phẩm phải cài đặt lên máy.
+ Tìm kiếm trên Google, từ khóa “Visual Foxpro Dowload”
+ Tải về máy
+ Cài đặt: Chạy tệp tệp chương trình Setup.exe hoặc Install
(Hiển thị: Done / Finish là xong)
+ Thư mục chứa: “Microsoft visual Foxpro 9” nằm trong thư
mục “Program files” của ổ đĩa chủ.
2- Môi trường làm việc của VFP
- Tệp chương trình chính để khởi động VFP: VFP9.EXE
- Khởi động xong: xuất hiện giao diện chính, quan tâm đến 2
thành phần chính, gồm:
+ Thanh thực đơn: Chứa hệ thống thực đơn để lựa chọn công
việc cần làm;
+ Cửa sổ lệnh (Command): Là nơi gõ lệnh vào để máy tính
thực hiện ở chế độ hội thoại.
- Thoát khỏi VFP: hoạt động trên Windows => có 5 cách
chung để thoát khỏi. Ngoài ra, dùng lệnh: QUIT
3- Một số khái niệm:
a. Tệp dữ liệu:
Có phần kiểu .DBF (Data Base File) gọi mỗi tệp là DBF, là
bảng, gồm các bản ghi (records – dòng chứa thông tin 1 đối
tượng) và Fields (cột), mỗi field chứa thông tin của 1 thuộc
tính.
Field được xác định nhờ 4 thuộc tính:
- Name (tên trường): không quá 10 kí tự
- Type (kiểu dữ liệu của trường), gồm:
+ Character (C): Chứa xâu
+ Numeric (N): Chứa số
+ Date (D): Chứa ngày
+ Logical (L): Chứa T/F – đúng/sai
+ General (G): Kiểu chung chứa tệp ảnh/ âm thanh/ vedeo.
- Width (độ rộng):Số kí tự tối đa ghi trong trường, quy định:
+ Kiểu C, đr <=254
+ Kiểu N, đr <=20
+ Kiểu D, đr = 8 (dd, mm, yyyy)
+ Kiểu L, đr = 1 (chứa T/F)
- Decimal (số chữ số thập phân)
b. Khóa quan hệ:
- ĐK trở thành khóa: Trường phải được index (sắp xếp tăng
hoặc giảm dần)
- Các loại khóa:
+ Khóa chính (Primery): Chỉ có 1 khóa chính trong 1 tệp, nó
đặc trưng cho phía 1 của quan hệ;
+ Khóa dự tuyển (Candidate): Tương tự như khóa chính, mỗi
bảng có thể có nhiều khóa Candidate;
+ Khóa thường (Regular): khóa đặc trưng cho phía nhiều
trong quan hệ 1-n Trong trường xác định là khóa
regular, có thể có nhiều bản ghi cùng giá trị.
c- Một số kiểu tệp sử dụng trong VFP
- .DBF (Data Base File) – tệp dữ liệu
- .IDX (Index) – Tệp chỉ dẫn để sắp xếp
- . PJX (Project) – Tệp dự án
- .DBC (Data Base Contain) – bộ chứa CSDL
….
Trong tệp DBF cho phép chứa không quá 1 tỉ bản ghi.
II. Các yếu tố cơ bản trong VFP
1- Bộ kí tự
VFP sử dụng cả 2 bộ kí tự: Bộ mã ASCII (8 bit) và mã Unicode
(16).
2- Từ khóa
VFP sử dụng các từ tiếng Anh, cho phép viết tắt đên 4 kí tự đầu.
Vd: Modify = MODI; Structure = STRU
Chú ý: VFP không phân biệt chữ in và chữ thường, trừ trong xâu
kí tự.
3- Lời chú thích
- Các dòng bắt đầu bằng dấu * là chú thích (bị máy bỏ qua)
- Trong 1 dòng, các kí tự viết sau && là chú thích.
4- Các đại lượng
a. Hằng
Cách viết:
- Hằng số (kiểu Numeric)
±n.m (hằng thực), ±n (hằng nguyên)
- Hằng xâu (Character)
‘Bác Hồ’ hoặc “Bác Tôn” hoặc [Vietnam]
- Hằng ngày (kiểu date)
{^yyyy-mm-dd}
Vd: {^2021-10-20}
- Hằng logic (kiểu Logical)
.T. – Đúng, .F. – sai
b. Biến
VFP có 2 loại biến:
- Biến trường (Field): Tên các trường trong tệp dữ liệu đang
mở (để làm việc). Tên trường <=10 kí tự, tệp trong CSDL
thì tên trường cho phép <=254 kí tự, bắt đầu phải là chữ
cái.
- Biến nhớ (Variable): Là biến trung gian do NSD đặt khi lập
trình, khác với tên trường. Tên biến nhớ <=254 kí tự, bắt
đầu không là số. Vd: x1, x2, hoten, _nhap
c- Hàm mẫu
Toàn bộ các hàm: Đọc giáo trình, chỉ giới thiệu 2 nhóm hàm
thường dùng trong xử lí dữ liệu quản lí.
(*). Các hàm xử lí xâu
- Left(xâu,n) và Right(xâu,n) trích trái / phải n kí tự từ xâu.
Vd: Left(‘ABC123’,2) = ‘AB’
Số hiệu SV có dạng: CQ|57|41|02|001 tên trường: sohieu C(10)
Đkiện sinh viện chính quy: Left(sohieu,2)=’CQ’
(đây là thuộc tính gộp – phức hợp)
5.Biểu thức
a- Bt số:
b- Bt xâu:
- Gồm các đlượng xâu liên kết bằng dpt ghép xâu: +
- Giá trị: Giá trị các đại lượng ghép lại tuần tự
“ABC” + Left(“XYZ123”,2) = “ABCXY”
c- BT ngày
- Dạng: Ngày ± số
- Giá trị: Hiểu ± bao nhiêu ngày => BT ngày nhận giá trị là
ngày.
Vd: {^2021-10-20} + 5 = {^2021-10-25}
d- BT quan hệ:
e. BT logic
- Là tập các đl logic và BT quan hệ liên kết bằng dpt logic, ( ). Các dpt
gồm: .NOT. (!) – phủ định, .AND. – Và, .OR. – hoặc
- Giá trị: .T. hoặc .F., tính theo trật tự ưu tiên: ( ), NOT, AND, OR
6- Phạm vi
- Kn: Phạm vi là một yếu cơ bản của VFP để xác định một
tập hợp các bản ghi trong tệp chịu tác động của lệnh.
- Các phạm vi thường dùng:
+ Các giá trị tường minh:
ALL – Tất cả các bản ghi trong tệp
(Vd: Delete ALL)
NEXT [n] - gồm n bản ghi kế tiếp kể từ bản ghi hiện tại
(ngầm định n = 1)
RECORD n - Chỉ gồm 1 bạn ghi thứ n
REST - Gồm các bản ghi kể từ hiện tại đến cuối tệp.
+ Các giá trị ngầm định: ALL hoặc bản ghi hiện thời, tùy mỗi
lệnh.
USE phieutc IN 1
USE danhmuctaikhoan IN 0 ALIAS dmtk && mở ở vùng 2
SELECT 3
USE dmdoituong ALIAS dmdt
SELECT 2 && hoặc sele dmtk
INDEX ON sohieu TO vd.idx
SELECT dmdt && hoặc viết sele 3
BROWSE
(xong: ^W)
c-Đóng tệp
-Nếu đóng tất cả: CLOSE ALL hoặc CLOSE DATABASE
-Nếu đóng từng tệp: Phải chọn vùng rồi đóng tệp trong vùng đó:
SELECT vùng/bí_danh
USE
-Vd: Đóng tệp dmtk:
SELECT 2 && hoặc sele dmtk
USE
d-Tham chiếu đến dữ liệu ở vùng khác (trong bảng khác)
-Nguyên tắc: Tham chiếu kiểu quan hệ: bí_danh.tên_trường
- Vd: Cần hiển thị chứng từ số 123456 trong đó tk nợ có kèm theo tên
(tên TK lấy trong bảng danhmuctk (tentk C(30), sohieutk C(10), loaitk
C(1))
USE phieutc IN 0
USE danhmuctk IN 0 ALIAS dmtk
SELECT 1
LOCATE FOR sophieu = ‘123456’
Nhap=tkno
SELECT dmtk
LOCATE FOR sohieutk=nhap
SELECT 1
DISPLAY FIELDS ngaylap, tkno, dmtk.tentk, sotien, nguyente
e-Thiết lập mối quan hệ giữa 2 bảng
-Hai bảng có thể có quan hệ với nhau (1-1 hoặc 1-n) thông qua khóa
quan hệ. Theo mức độ quan hệ, chia thành 2 loại quan hệ:
+ Quan hệ bền vững: Là quan hệ được thiết lập chặt chẽ từ khi tạo ra
CSDL. Có đặc điểm:
Luôn tồn tại khi mở CSDL
Khi con trỏ di chuyển trên bảng này không ảnh hưởng đến con
trỏ ở bảng quan hệ.
+ Quan hệ tạm thời: Là quan hệ được thiết lập bằng lệnh tạo quan hệ
SET RELATION. Có đặc điểm:
Chỉ tồn tại sau thiết lập, tự động mất khi 1 trong 2 bảng bị đóng.
Khi con trỏ di chuyển trên bảng này thì ở bảng có quan hệ sẽ tự
động di chuyển đến dòng tương ứng với khóa quan hệ.
-Thiết lập MQH
+ Tạo MQH bền vững: Xét trong phần tạo CSDL
+ Tạo MQH tạm thời
Để tạo MQH tạm thời, bảng được quan hệ (bảng con) phải được
INDEX theo khóa quan hệ.
Lệnh: SET RELATION TO khóa INTO bí_danh
Trong đó: Khóa là khóa quan hệ ở bảng cha; Bí_danh để xác định
bảng con (được đặt quan hệ). Khóa quan hệ ở bảng con chính là biểu
thức đã dùng để index nó.
-Ví dụ: Hiển thị nội dung một bảng gồm các cột: số phiếu, ngaylập, tk
nợ, số tiền, tên tk nợ (lấy từ bảng dmtk, gồm các trường: sohieutk
C(10), tentk C(30), loạitk C(10))
USE phieutc IN 0
USE dmtk IN 0
SELECT dmtk
INDEX ON sohieutk TO vd.idx
SELECT phieutc
SET RELATION TO tkno INTO dmtk
LIST FIELDS sophieu, phieutc.ngaylap, tkno, sotien, dmtk.tentk
9-Các lệnh tổ chức cấu trúc chương trình
a-Lệnh IF
- tổ chức cấu trúc điều kiện – rẽ nhánh)
-Dạng:
IF bt_logic
Các_lệnh_1
[ELSE
Các_lệnh_2]
ENDIF
-Ví dụ: Kiểm tra delta khi giải ptb2
IF delta <0
? “Phương trình ứ có nghiệm”
WAIT “Ấn phím bất kì để tiếp tục”
ELSE
? “x1 =”, (-b-sqrt(delta))/(2*a)
? “x2 =”, (-b+sqrt(delta))/(2*a)
Wait “Press any key to continue …”
ENDIF
b-Lệnh DO CASE (xử lí trường hợp)
Đọc giáo trình
c-Lệnh FOR
-Dùng: tổ chức chu trình có số lần lặp biết trước
- Dạng:
FOR biến = bt1 TO bt2 [STEP bt3]
Các lệnh trong thân chu trình
ENDFOR
-Vdụ: Chương trình tính n!
INPUT “Vào số nguyên n=?” TO n
p=1
FOR i=1 TO n STEP 1
p= p*i
ENDFOR
? n, “!=”, p
d-Lệnh DO WHILE
-Để tổ chức 1 chu trình bất kì
- Dạng:
DO WHILE bt_logic
Thân _ chu _trình
ENDDO
Chú ý: Trong thân chu trình (của For và Do while), lệnh Break sẽ
thoát khỏi chu trình; Lệnh Continue bỏ qua các lệnh từ sau Cont đến
cuối chu trình.
e-Lệnh SCAN
-Để quét (duyệt) lần lượt từng bản ghi của tệp từ đầu đến cuối tệp.
-Dạng:
SCAN
Các lệnh
ENDSCAN
Tương tự chu trình sau:
GO TOP
DO WHILE .not.EOF()
Các lệnh
SKIP
ENDDO
10-Các lệnh SET (đọc giáo trình)
-Nội dung: SET để thiết lập lại môi trường làm việc. Sau khi khởi
động VFP, máy đã thiết lập một môi trường ngầm định (theo thói
quen của người Mỹ). Nếu không phù hợp với NSD thì thiết lập lại.
- Một số SET hay gặp:
SET DATE TO american/FRENCH / ITALIAN
SET CENTURY off/ ON &&hiển thị 2/4 chữ số năm
SET SAFETY on/OFF && bật/tắt chế độ cảnh báo dl
SET DEFAU LT TO [path] && đặt lại địa chỉ ngầm định
SET DEFA TO c:\TH
….
Chương 2: Bước đầu làm việc với quản trị CSDL
I. Khởi tạo dự án xây dựng phần mềm
1-Khởi tạo dự án
Mỗi bài toán xdựng phần mềm quản trị CSDL được gọi là một
Project (dự án). Để bắt đầu xây dựng (từ giao diện chính của VFP),
tạo tạo Project:
File > New > Project > New Project: Cửa sổ để đặt tên tệp Project
(.PJX)
Xuất hiện cửa sổ Project Manager để quản lí các thành phần cần
triển khai của dự án.
2- Các thành phần của Project
a- Data: phần dữ liệu của bài toán, gồm:
- DataBase (CSDL): các bảng và mối quan hệ giữa các bảng;
- Free Table: Các bảng tự do – không có quan hệ với bảng nào
khác (bảng thông tin cơ quan, bảng người dùng, …)
- Query (truy vấn): các bảng trung gian cấu thành từ các bảng
đã có trong CSDL
b- Documents (tài liệu do NSD tạo ra), gồm:
- Forms: mỗi form là một giao diện người-máy (cửa sổ).
Thường gồm các loại cửa sổ: Cửa sổ nhập, xem, sửa dữ liệu;
Cửa sổ truy vấn thông tin; Giao diện chính (giao diện xuất
hiện sau khi khởi động phần mềm).
- Reports (báo cáo): Là truy vấn để cung cấp thông tin cho
người sử dụng theo mẫu định trước.
- Class Libraries (Thư viện lớp): Nơi chứa các lớp do NSD tự
định nghĩa, nhằm dễ dàng nhơn khi lập trình.
c- Code (mã): Gồm các tệp chương trình do NSD viết, lưu thành
tệp .PRG (Program). Tệp PRG được chạy bằng lệnh
DO tên_tệp_prg
Chú ý: Trong các prg, phải chọn một tệp làm chương trình chính (là
tệp được tự động chạy đầu tiên khi khởi động phần mềm).
Trình tự chọn: Code > chọn prg > chuột phải > Set main
d- Other (khác):
- Menu: Là hệ thống bảng chọn công việc cần thực hiện, gồm
2 loại:
+ Menu: Gắn lên Form, luôn hiển thị cùng form khi form
được kích hoạt.
+ Shortcut (Thực đơn tắt): Gắn lên đối tượng, chỉ xuất hiện
khi kích chuột phải tại đối tượng.
- Other files: Thường gồm tệp hướng dẫn sử dụng, hướng
dẫn cài đặt, giới thiệu/quảng cáo, …
3-Trình tự triển khai Project
- Phải triển khai thông qua cửa sổ Project manager
- Trình tự triển khai các thành phần:
+ Tạo phần Data;
+ Tạo Form nhập, xem, sửa dữ liệu
(nguyên tắc: mỗi bảng đều phải có các form để nhập, xem,
sửa dữ liệu)
+ Tạo các Report
(tạo mẫu report, tạo form để chạy report)
+ Ngoài ra, còn có các form để truy vấn dữ liệu
+ Tạo FORM dùng làm giao diện chính
+ Tạo Menu
+ Gắn các menu lên Form
- Build: Dịch toàn bộ phần mềm ra ngôn ngữ máy
(thực hiện sau khi đã hoàn tất các thành phần của Project)
Dịch xong, có tệp cùng tên với .PJX, mở rộng là: .EXE
Chú ý: Có thể chạy ngay từng thành phần trong quá trình xây
dựng (giúp cho việc test thuận lợi)
II.Triển khai phần DATA
1. Tạo CSDL
a- Tạo các bảng
b- Tạo mối quan hệ giữa các bảng
2. Tạo Free table
Chú ý: Khi tạo bảng, cần quan tâm đến 2 trang (trên cửa sổ Designer
Table): Fields và Index
- Trang Fields để thiết kế bảng: Những trường nào sử dụng
là khóa quan thì buộc phải Index.
- Trang Index: Mỗi khóa đã định nghĩa ở trang Fields (chọn
Index) là một thẻ sắp xếp (Tag) có tên ngầm định trùng tên
trường (không nên đặt lại). Mỗi khóa thuộc 1 trong 3 loại:
+ Khóa Primery (khóa chính): Mỗi bảng chỉ có thể có đúng
1 khóa chính, với đặc trưng: Không có hơn 1 giá trị trùng
nhau trên trường đó; Trong quan hệ, khóa chính đặc trưng
cho phía 1 trong MQH.
+ Khóa Candidate (dự tuyển ~ khóa ngoại): Tương tự như
khóa chính, nhưng, mỗi bảng có thể có nhiều khóa ngoại.
+ Khóa Regular (khóa thường): Khóa có thể xuất hiện
nhiều lần giá trị trên 1 cột.
+ Với giá trị lựa chọn là cột (trường) trong bảng dữ liệu:
Viết lệnh trong sự kiện Init (định nghĩa đối tượng) của combo:
SELECT vùng/Bí_danh
This.RowSourceType = 2 && loại nguồn của dòng chọn là 1 (cố định)
This.ColumnCount = Số_cột
This.RowSource = “ds_trường”
This.Refresh
thuộc lớp điều khiển để nhận một giá trị số qua việc tăng giảm.
Thuộc tính:
- Name
- Value: Giá trị mà Spinner nhận
k-Grid (ô lưới)
Thuộc lớp lưu trữ, dũng để hiển thị, sửa chữa dữ liệu giống
như một bảng Browse
Đọc giáo trình cách sử dụng Grid để nhập dữ liệu vào bảng.
ColumnCount = số cột
l-Page Frame
m- Image
n- OLE
Sự kiện (của đối tượng) là các tác động lên đối tượng bởi người
hay máy tính (Click, Init, Load, …); Sự phản ứng lại của đt đối với sự
kiện – phương thức(gắn liền với sự kiện). Mỗi phương thức là một tập
lệnh được viết trong mã phương thức. Các sự kiện thường dùng:
a- Sự kiện Activate
-Là sự kiện kích hoạt đối tượng (cho đối tượng hiển thị)
- Cú pháp gọi: Đt_chứa.Đối_tượng. Activate
b- Sự kiện Deactivate
-Là sự kiện hủy bỏ kích hoạt đối tượng
- Cú pháp gọi: Đt_chứa.Đối_tượng. Deactivate
-Là sự kiện định nghĩa đối tượng Gán giá trị các thuộc tính của
đtượng.
-Là sự kiện đặt quan tâm (tâm điểm) vào đối tượng.
- Cú pháp gọi: Đt_chứa.Đối_tượng. SetFocus
-Là sự kiện chuyển tâm điểm đến đối tượng bằng Click/
KeyPress/bấm TAB.
- Cú pháp gọi: Đt_chứa.Đối_tượng. GosForcus
Giao diện là mặt giao tiếp giữa người và máy (người cung cấp
thông tin cho máy và ngược lại). Mỗi giao diện là một cửa sổ được tạo
ra bởi một Form hoặc một đối tượng chứa khác. Trên giác độ mục
tiêu, giao diện chia thành 3 loại:
a- Giao diện chính: Là gd xuất hiện ngay sau khi khởi động phần
mềm, thường gồm các thành phần chủ yếu:
- Thanh thực đơn (menu bar): Chứa hệ thống thực đơn được
tổ chức phân cấp để lựa chọn các công việc mà phần mềm
có thể thực hiện;
- Thanh công cụ (Tool bar): Gồm các nút lệnh để thực hiện
các thao tác thường gặp nhất.
- Thanh trạng thái (không nhất thiết có): hiển thị thông tin về
một số trạng thái đang làm việc của máy.
b- Giao diện nhập dữ liệu: Là ghiao diện để thực hiện việc nhập,
xem, sửa dữ liệu trong các bảng dữ liệu.
Thông thường, mỗi bảng cần ít nhất 1 cửa sổ để
nhập+xem+sửa.
c- Giao diện truy vấn dữ liệu: Là cửa sổ để người sử dụng lựa
chọn các dữ liệu được kết xuất (đưa ra)
Bản chất: Tạo ra cửa sổ để nhập, xem, sửa dữ liệu trong các bảng.
1-Thiết kế bằng công cụ Form Wizard
Bản chất: Là sử dụng các Form được MS tạo sẵn rồi sửa lại cho phù
hợp với bài toán
-Trình tự: Từ cửa sổ Project Manager > Documents > Form > New
Form. Sẽ xuất hiện Form rỗng và mới để thiết kế hiao diện.
- Các đối tượng cần thiết cần đặt trên Form để nhập liệu, gồm:
+ Các Label: Để thông báo cho người nhập liệu (nội dung thuộc tính
Caption)
+ Các đối tượng có thể nhập thông tin người nhập vào: Text Box,
Combo box , Check Box, Option Group, Spinner, …
+ Các nút lệnh: Để điều khiển quá trình nhập liệu, chẳng hạn: Nhập
tiếp dữ liệu, Ghi dữ liệu vào tệp, Thoát khỏi việc nhập, …
- Chạy Form:
+ Nếu chạy trực tiếp để thử khi lập trình: Chọn Form > Chọn RUN
-Ví dụ: Tạo Form để nhập các phiếu thu và phiếu chi vào tệp
PhieuTC.dbf trong CSDL.
Chú ý: Phải viết code cho 4 sự kiện (ít nhất):
SELECT phieutc
*** co the dung lenh INSERT INTO (Thieu)
APPEND BLANK && Tao ban ghi trong cuoi bang
REPLACE sophieu WITH ThisForm.text1.Value, ngaylap
WITH ThisForm.text2.Value
REPLACE tkno WITH ThisForm.text3.Value, tkco WITH;
ThisForm.text4.Value, nd WITH ;
ThisForm.text5.Value, sotien WITH;
ThisForm.text6.Value, nguyente WITH;
ThisForm.text7.Value
ThisForm.Refresh
Bài tập: Thiết kế giao diện nhập liệu (các phiếu nhập kho và xuất kho)
vào tệp “Phieuvt.dbf”
Yêu cầu: Tạo Form và viết các code cần thiết, Copy ra bản Word (như
thầy đã làm ở trên), gửi cho thầy vào: AnhvbHvtc@Gmail.com
1- Thiết kế Form
Yêu cầu:
- Thuộc tính: ShowWindow = 2 (As top level Form)
- Trong sự kiện Init: dấu cửa sổ của ứng dụng
Application.Visible = .F.
- Trong sự kiện Destroy:
Application.Visible = .T.
2- Thiết kế menu
a-Tạo thực đơn: Tạo trực quan từ cửa sổ PM. >Other >Menu:
- Lựa chọn Menu: Tạo thực đơn để gắn lên Form
- Lựa chọn Shotcut: Thực đơn tắt để gắn lên đối tượng
(chỉ hiển thị khi kích chuột phải)
Chú ý: Thực đơn được thiết kế kiểu phân cấp, từ Menu Bar >
Sub menu > … > Lệnh (Command) hoặc thủ tục
(Procedure)
x= ThisForm.text1.Value
y= ThisForm.Text2.value
SELECT dmtk
INDEX ON sohieutk TO p.idx
SELECT phieutc
SET FILTER TO ngaylap>=x AND ngaylap<=
y AND LEFT(tkco,3)='111'
SUM sotien, nguyente TO _sotien,
_nguyente
SET RELATION TO tkno INTO dmtk
REPORT FORM bcchi PREVIEW
3-Tạo Report với dữ liệu trong phần Detail chưa có sẵn trong
bảng dữ liệu.
Ví dụ: Lập báo cáo tổng hợp nợ phải thu của khách hàng,
dạng (chú ý: chỉ xét đối tượng tiền mặt).
BÁO CÁO NỢ PHẢI THU CỦA KHÁCH HÀNG
Từ ngày: x đến ngày y
Về nguyên tắc: Phải tạo bảng trung gian để tập hợp dữ liệu
cho báo cáo. Bảng trung gian phải đủ số trường tương ứng với
số cột trong báo cáo.
(1) Về dữ liệu: Cần các bảng sau:
- Bảng danh mục khách hàng (Dmkh.dbd), cấu trúc:
(Tenkh C(50), Makh C(10), diachi C(60))
- Bảng số dư đầu kì (Dudk.dbf) chứa số dư từng
khách, cấu trúc:
(Makh C(10), duno N(15,1), duco N(15,1))
- Bảng phiếu thu chi (Phieutc.dbf), cấu trúc như bài
giảng.
Code sự kiện Click của nút “In báo cáo” viết như sau:
x=ThisForm.Text1.Value
y=ThisForm.text2.value
OPEN DATABASE ketoan
USE Phieutc IN 0
USE dmkh IN 0
USE dudk IN 0
CREATE TABLE trunggian (tenkh C(50), Makh C(10), Dudk
N(15,1), tang N(16,1), giam N(16,1), Duck N(16,1))
*** Bảng mới tạo đang được mở
SELECT trunggian
APPEND FROM dmkh
SELECT dudk
INDEX ON makh TO 1.idx
SELECT trunggian
SET RELATION TO makh INTO dudk
REPLACE ALL dudk WITH IIF(dudk.duno>0, duno, - duco)
*** Tính tổng nhóm theo Makh xác định số tăng của từng KH
SELECT phieutc
INDEX ON substr(tkno,4,3) TO 2.idx FOR ngaylap>=x AND
ngaylap<=y AND left(tkno,3)=’131'
TOTAL ON substr(tkno,4,3) TO tongtang
USE tongtang IN 0
SELECT tongtang
INDEX ON substr(tkno,4,3) TO 3.idx
SELECT trunggian
SET RELATION TO makh INTO tongtang
REPLACE ALL tang WITH tongtang.sotien
*** Tính tổng nhóm theo Makh xác định số giảm của từng KH
SELECT phieutc
INDEX ON substr(tkco,4,3) TO 4.idx FOR ngaylap>=x AND
ngaylap<=y AND left(tkco,3)=’131'
TOTAL ON substr(tkco,4,3) TO tonggiam
USE tonggiam IN 0
SELECT tonggiam
INDEX ON substr(tkco,4,3) TO 5.idx
SELECT trunggian
SET RELATION TO makh INTO tonggiam
REPLACE ALL giam WITH tonggiam.sotien
*** Xác định số nợ còn lại của KH
SELECT trunggian && Có thể không viết
REPLACE ALL duck WITH dudk + tang – giam
*** Xóa danh sách KH không nợ
SELECT trunggian
DELETE ALL FOR dudk =0 AND tang = 0 AND giam = 0
PACK
REORT FORM bcnopt PREVIEW
------------
Vẫn trong tệp này, các bài toán sau là tương tự:
- Lập báo cáo tổng hợp về tạm ứng của CNV;
- Lập báo cáo tổng hợp về trả nợ nhà CC
Bài tập: 1- Tìm hiểu mẫu một sổ kế toán (Sổ cái tài khoản
111), thiết kế report để in sổ cái tk 111.
2- Tìm hiểu mẫu sổ chi tiết vật tư, thiết kế report ínổ chi tiết
đó.
3- Lập báo cáo tổng hợp vật tư “Nhập – Xuất – Tồn”
(mẫu: Nhà nước ban hành – tra mạng)
Chú ý: Giao diện chính của PM luôn được chạy từ tệp chương
trình chính.