Phát triển HTTT kế toán bằng MS Access - Chương 9 - Form nhập biên bản giải ngân
James Perry, Richard Newmark
Chương
9
Qui trình mua hàng - chi tiền
Form nhập biên bản giải ngân
Chính
sách chi trả của Pipefitters Supply Company là trả tối đa $5,000 trong vòng mười
ngày rồi trả phần còn lại trong vòng mười ngày sau đợt trả đầu. Khi kế toán viên
của Pipefitters viết chi phiếu cho nhà cung ứng, họ cần có thể xem trị giá biên
bản nhận hàng và tổng các lần trả trước cho biên bản nhận hàng đó cũng như dư nợ
(balance due). Nếu tổng các lần trả trước lớn hơn trị giá biên bản nhận hàng, kế
toán viên cần tìm nguyên nhân gây lỗi. Ngoài ra, sẽ hữu ích nếu xem được lịch sử
chi trả của biên bản nhận hàng. Nếu tổng các lần trả trước nhỏ hơn trị giá biên
bản nhận hàng, kế toán viên sẽ áp dụng chính sách chi trả của Pipefitters. Bạn
sẽ tạo truy vấn để tính dư nợ hiện thời theo biên bản nhận hàng. Dư nợ sẽ được
dùng trong form nhập biên bản nhận hàng để kiểm soát. Vì dư nợ sẽ không được cập
nhật cho đến khi thi hành truy vấn dư nợ một lần nữa bằng cách đóng rồi mở form,
bạn sẽ thêm một nút lệnh trên form để thi hành macro cập nhật dư nợ.
BÀI
TẬP 9.43: TẠO HAI TRUY VẤN ĐỂ TÍNH DƯ NỢ ĐỐI VỚI NHÀ CUNG ỨNG
Hai
truy vấn bạn sẽ tạo trong bài tập này rất giống các truy vấn bạn đã tạo cho form
nhập biên bản thâu ngân ở các Bài tập 8.40 và 8.41. Do tương tự, các bước trong
Bài tập 9.43 sẽ cô đọng. Hãy tham khảo các Bài tập 8.40 và 8.41 để được hướng
dẫn thêm. Trong bài tập này bạn sẽ tạo hai truy vấn. Truy vấn đầu tiên sẽ dùng
hàm gộp để tính tổng các lần giải ngân cho từng biên bản nhận hàng từ thời điểm
giải ngân hiện thời trở về trước. Truy vấn thứ hai sẽ dùng tính toán hàng ngang
để trừ tổng số tiền đã trả khỏi trị giá biên bản nhận hàng để được dư nợ với nhà
cung ứng.
Hãy
tạo truy vấn đầu tiên.
1.
Kích Create tab rồi kích Query
Design trong nhóm Queries.
Thêm tblCashDisbursement vào Table Pane.
Thêm InventoryReceiptID và CashDisbursementAmount vào
Criteria Pane.
2.
Kích Totals trong nhóm Show/Hide, để ô Total
cho InventoryReceiptID được đặt là Group By, sửa ô Total cho
CashDisbursementAmount thành Sum.
3.
Mở Property Sheet. Gõ Prior
Payments làm phụ đề Caption cho tổng các lần chi trả. Đóng
Property Sheet.
4.
Lưu truy vấn là qrySumOfCDByInventoryReceipt. Đóng truy
vấn.
5.
Hãy tạo truy vấn thứ hai.
6.
Tạo truy vấn mới bằng Query Design.
Thêm tblPurchase và qrySumOfCDByInventoryReceipt vào
Table Pane. Thêm vào Criteria
Pane InventoryReceiptID, InventoryReceiptAmount,
và VendorID từ danh sách trường tblPurchase;
thêm SumOfCashDisbursementAmount từ danh sách
trường qrySumOfCDByInventoryReceipt vào
Criteria Pane.
7.
Sửa các thuộc tính nối của liên kết giữa các danh sách
trường tblPurchase và qrySumOfCDByInventoryReceipt để
bao gồm TẤT CẢ các bản ghi từ tblPurchase và chỉ những bản ghi nào từ
qrySumOfCDByInventoryReceipt có InventoryReceiptID bằng nhau (nút radio thứ hai
trong hộp thoại Join Properties). Liên kết, phép nối ngoại, bây giờ cần là mũi
tên trỏ đến danh sách
trường qrySumOfCDByInventoryReceipt (xem Hình
9.47).
Hình
9.47 qryBalanceDueToVendor ở góc nhìn
Design.
8.
Lưu truy vấn là qryBalanceDueToVendor.
9.
Kích ô Field ở cột trống đầu tiên trên Criteria Pane.
Dùng Builder để thêm biểu thức sau vào Criteria
Pane: BalanceDue:
[InventoryReceiptAmount]-Nz([SumOfCashDisbursementAmount],0).
Mở Property Sheet, gõ Balance
Due vào ô Caption cho trường BalanceDue vừa tạo.
10.
Lưu và đóng truy vấn.
Form
nhập biên bản giải ngân sẽ dùng thiết kế form/subform. Phần trên của form nhập
thông tin giải ngân chứa dữ liệu liên quan biên bản nhận hàng
từ qryBalanceDueToVendor. Các trường này không thể sửa vì
chúng chỉ để tham khảo. Form chính còn hiển thị thông tin nhà cung ứng (tên và
địa chỉ), mà bạn sẽ thêm vào truy vấn đằng sau form. Subform chứa tất cả các
trường từ tblCashDisbursement. Các trường VendorID và
InventoryReceiptID sẽ được liên kết với form chính. Liên kết sẽ tự động điền
các trường trên subform với dữ liệu từ form chính và đảm bảo các đợt giải ngân
được ghi nhận đúng nhà cung ứng và biên bản nhận hàng. Việc dùng dữ liệu từ bảng
Purchase sẽ đóng vai trò kiểm soát vì các đợt giải ngân chỉ có thể được ghi nhận
nếu biên bản nhận hàng xuất hiện trong tblPurchase. Vì form
nhập thông tin thâu ngân tương tự form nhập thông tin giải ngân, bạn sẽ bắt đầu
với các bản sao
của frmCashReceipt và fsubCashReceipt thay
vì dùng Form Wizard.
BÀI
TẬP 9.44: TẠO FORM NHẬP BIÊN BẢN GIẢI NGÂN –
SỬA FSUBCASHRECEIPT
1.
Kích fsubCashReceipt ở Navigation Pane,
nhấn Ctrl+C, rồi Ctrl+V. Trong hộp thoại
Paste As, gõ fsubCashDisbursement.
Mở fsubCashDisbursement ở góc nhìn Design. Thu
nhỏ Navigation Pane.
2.
Mở Property Sheet.
Chọn Form từ combo box ở đỉnh Property Sheet.
Trên Data tab, sửa Record Source
thành tblCashDisbursement (cuộn danh sách lên
trên). Trên Format tab, sửa Caption
thành fsubCashDisbursement.
3.
Sửa các thành phần điều khiển và nhãn trong phần Detail của subform theo Hình
9.48.
Hình 9.48 Các sửa đổi về thành phần điều khiển và nhãn
trong fsubCashDisbursement.
4.
Xem form ở góc nhìn Datasheet. Đây là hiển thị của subform
trong form chính. Kích nút chọn Datasheet.
Kích More menu trong nhóm Records trên dải lệnh
Home. Kích Field Width rồi kích
nút Best Fit để có thể thấy được các đầu đề cột
và dữ liệu.
5.
Đóng subform.
BÀI
TẬP 9.45: TẠO FORM NHẬP BIÊN BẢN GIẢI NGÂN –
SỬA FRMCASHRECEIPT
Hãy
sửa qryBalanceDueToVendor để dùng làm Record
Source cho form.
1.
Tạo một bản sao của qryBalanceDueToVendor ở
Navigation Pane rồi lưu với tên qryFormCDRecordSourceData.
Mở qryFormCDRecordSourceData ở góc nhìn
Design.
2.
Kích Show Table trong nhóm Query Setup rồi
thêm qryVendorInfo vào Table Pane. Liên
kết qryVendorInfo với tblPurchase bằng
cách kích và kéo VendorID từ danh sách
trường qryVendorInfo đến danh sách
trường tblPurchase. Thêm các trường sau vào Criteria
Pane: InventoryReceiptDate, VendorName, VendorAddress1, VendorAddress2, CityStateZip, VendorTelephone,
và VendorPrimaryContact. Lưu các thay đổi rồi đóng truy
vấn.
3.
Sao chép frmCashReceipt để làm điểm khởi đầu để
tạo frmCashDisbursement.
4.
Kích frmCashReceipt ở Navigation Pane,
nhấn Ctrl+C, rồi Ctrl+V. Trong hộp thoại
Paste As, gõ frmCashDisbursement.
Mở frmCashDisbursement ở góc nhìn Design. Thu
nhỏ Navigation Pane.
5.
Sửa Form Header thành Cash Disbursement Entry.
Sửa
các data sources của form và các thành phần điều khiển của nó.
6.
Mở Property Sheet.
Chọn Form từ combo box ở đỉnh Property Sheet.
Trên Data tab, sửa Record Source
thành qryFormCDRecordSourceData.
Trên Format tab, sửa Caption
thành frmCashDisbursement.
7.
Sửa các thành phần điều khiển và nhãn trong phần Detail của form theo Hình 9.49.
Trước khi bắt đầu sửa, hãy chọn tất cả các thành phần điều khiển và nhãn ở trên
subform rồi dời chúng sang phải 1/4-inch để tạo khoảng trống cho các tên nhãn
dài.
Hình 9.49 Các sửa đổi về thành phần điều khiển và nhãn
trong frmCashDisbursement.
Hãy
sửa subform.
8.
Chọn fsubCashReceipt từ combo box ở đỉnh
Property Sheet. Trên Data tab, sửa Source
Object thành fsubCashDisbursement.
Trên Other tab, sửa Name
thành fsubCashDisbursement.
9.
Liên kết InventoryReceiptID và VendorID từ subform với form.
Trên Data tab, kích
nút Builder bên cạnh ô thuộc tính Link Master
Fields để mở Subform Field Linker. Kích OK trên
hộp thoại thông báo.
Thêm InventoryReceiptID vào dòng đầu tiên ở cả
hai cột Master Fields và Child Fields, rồi
thêm VendorID vào dòng thứ hai ở cả hai cột;
kích OK.
10.
Đóng Property Sheet. Chuyển sang góc
nhìn Layout. Giảm độ rộng của subform để loại bớt khoảng
trống.
11.
Lưu form. Form cuối cùng cần giống form nhập biên bản giải ngân ở Hình 9.50.
Hình 9.50 Form nhập biên bản giải ngân ở góc nhìn
Form.
Không
cần sửa nút lệnh Update Balance Due vì macro đằng sau nút, Requry, sẽ chạy lại
truy vấn đằng sau form đang mở. Như đã đề cập ở Chương 8, hành động Requery
Macro sẽ trả về bản ghi đầu của form sau khi chạy lại truy vấn đằng sau form.
Việc trả về bản ghi hiện thời sẽ cần kỹ năng lập trình vượt quá phạm vi của tài
liệu này.
THỬ
NGHIỆM
Hãy
kiểm thử form nhập biên bản giải ngân và nút lệnh Update Balance Due. Kích kép
frmCashDisbursement trong Navigation Pane. Đến bản ghi cuối cùng (Inv. Receipt #
100027). Trị giá hóa đơn Inv. Receipt Amount là $1,860.35. Các lần chi trả trước
Prior Payments là $1,860.35, vì vậy dư nợ Balance Due là $0.00. Hãy thêm một bản
ghi kiểm thử: Check # 99999, Cash Acct.
# 101, Employee # 136, Amount
$500, và Date 9/9/2099. Kích
nút Update Balance Due. Để ý là form trở về bản ghi đầu
tiên. Hãy đến bản ghi cuối. Prior Payments bây giờ là $2,360.35. Balance Due đã
được cập nhật về số dư hiện thời ($500.00), nghĩa là ta đã trả quá $500.00 đối
với biên bản nhận hàng này. Xóa Check #99999 bằng cách kích nút chọn bản ghi rồi
nhấn phím Delete.




0 nhận xét