Phát triển HTTT kế toán bằng MS Access - Chương 9 - Sửa frmPurchaseOrder và fsubPurchaseOrder để tạo form biên bản nhận hàng (frmPurchase)
James Perry, Richard Newmark
Chương
9
Qui trình mua hàng - chi tiền
Sửa frmPurchaseOrder và fsubPurchaseOrder để tạo form biên bản nhận hàng (frmPurchase)
Vì
form nhập biên bản nhận hàng tương tự form nhập đơn mua hàng; bạn sẽ sửa
frmPurchaseOrder và fsubPurchaseOrder để tạo frmPurchase và fsubPurchase. Form
chính sẽ dựa
trên tblPurchase và qryVendorInfo,
và subform sẽ theo qryPurchaseLineItem. Ngoài các thành phần
điều khiển được dùng trong form nhập đơn mua hàng, bạn sẽ thêm các thành phần
điều khiển vào form này để trả lời các câu hỏi sau: Làm sao nhân viên kho hàng
có thể nhớ rất nhiều mã số nhà cung ứng và tránh gõ sai nếu họ chỉ nhớ được một
phần? Làm sao nhân viên kho hàng có thể nhớ mọi mã số hàng tồn kho và làm sao
tránh việc gõ sai?
BÀI
TẬP 9.30: SỬA FSUBPURCHASEORDER ĐỂ
TẠO FSUBPURCHASE
1.
Tạo một bản sao của fsubPurchaseOrder trong Navigation Pane và đặt tên là
fsubPurchase. Mở fsubPurchase ở góc nhìn Design. Mở Property Sheet và che
Navigation Pane.
2.
Property Sheet cần ở trạng thái Form được chọn và Data tab cũng được chọn. Sửa
Record Source thành qryPurchaseLineItem.
3.
Kích Format tab. Sửa Caption thành fsubPurchase.
4.
Xóa thành phần điều khiển VendorItemID khỏi phần Detail và nhãn của nó khỏi phần
Form Header.
5.
Sửa Control Source trên Data tab và Name trên Other tab cho các thành phần điều
khiển sau:
6.
Sửa QuantityOrdered thành QuantityReceived.
7.
Sửa POPrice thành InventoryReceiptPrice.
8.
Sửa PurchaseOrderLineExtension thành PurchaseLineExtension.
9.
Điều chỉnh khoảng cách các thành phần điều khiển và nhãn. Đóng Property Sheet.
Nhấn Ctrl+A để chọn tất cả các thành phần điều khiển và nhãn. Nhấn và giữ phím
Shift rồi kích nhãn Our Item # và InventoryID combo box để khử việc chọn chúng.
Nhấn và giữ phím mũi tên trái, hay cứ nhấn nó liên tục để dời tất cả các mục đã
chọn sang trái để loại khoảng không được tạo ra do việc xóa thành phần điều
khiển VendorItemID và nhãn.
10.
Loại khoảng trống trong Form Header bằng cách dời các nhãn lên đỉnh Form Header
rồi kéo thanh Detail lên trên (xem Hình 9.29).
Hình
9.29 fsubPurchase ở góc nhìn
Design.
11.
Loại khoảng trống bên phải subform bằng cách kéo cạnh phải đến khắc 7
inches.
12.
Xem subform ở góc nhìn Form (xem Hình 9.29). Lưu và đóng subform.
BÀI
TẬP 9.31: SỬA FRMPURCHASEORDER ĐỂ
TẠO FRMPURCHASE – PHẦN 1
Các
nhiệm vụ chính bạn sẽ thực hiện ở Phần 1 là tạo một bản sao
của frmPurchaseOrder, sửa các phụ đề, và sửa nguồn dữ liệu
cho subform.
1.
Tạo một bản sao của frmPurchaseOrder trong
Navigation Pane rồi đặt tên là frmPurchase.
Mở frmPurchase ở góc nhìn Design.
2.
Kích tiêu đề trong Header hai lần (chậm hơn
kích kép) rồi sửa thành Inventory Receipt Entry.
3.
Giảm chiều rộng của thành phần điều khiển subform.
Kích subform, nắm lấy một trong những ô nhỏ bên phải nằm
trên đường bao quanh subform (con trỏ sẽ trở thành mũi tên hai đầu) rồi kéo sang
trái cho đến khi thanh cuộn đứng của subform chạm khấc “7” trên thước kẻ của
subform. Sau đó kéo cạnh phải của phần Detail đến cạnh của thành phần điều khiển
subform để loại khoảng trống (Hình 9.30).
Hình
9.30 frmPurchase ở góc nhìn Design sau khi hoàn
tất Bài tập 9.34.
4.
Tạo không gian để bổ sung một thành phần điều khiển trên đỉnh form. Nhấn và giữ
phím Shift. Kích subform và
nút lệnh Update PO Amount. Nhấn phím mũi tên xuống liên tục
cho đến khi bạn có khoảng trống để chèn thêm một thành phần điều khiển ở trên
subform.
5.
Che Navigation Pane và mở Property Sheet.
Chọn Form từ combo box ở đỉnh của Property
Sheet rồi kích Format tab nếu nó chưa hiển thị.
Sửa Caption thành frmPurchase.
6.
Sửa data source của subform.
Chọn fsubPurchaseOrder (bạn chưa sửa tên
thành fsubPurchase) từ combo box của Property Sheet.
Kích Data tab rồi sửa Source Object
thành fsubPurchase.
Gõ InventoryReceiptID vào thuộc tính Link
Master Fields và Link Child Fields (bạn không thể dùng nút Builder vì Data
Source của form chưa được sửa).
7.
Sửa tên subform trong Other tab
thành fsubPurchase.
8.
Lưu các thay đổi.
BÀI
TẬP 9.32: SỬA FRMPURCHASEORDER ĐỂ
TẠO FRMPURCHASE – PHẦN 2
Các
bước kế sẽ dẫn đi qua qui trình sửa truy vấn đằng sau form.
1.
Chọn Form từ Property Sheet combo box.
Kích Data tab. Kích
nút Builder trong thuộc tính Record Source. Bạn
cần thấy một cửa sổ truy vấn với tên tab là frmPurchaseOrder: Query Builder.
2.
Kích Show Table trong nhóm Query Setup.
Thêm tblPurchase vào Table Pane.
3.
Sửa tất cả các ô Table
từ tblPurchaseOrder thành tblPurchase,
đó là các ô
Field: PurchaseOrderID, EmployeeID, VendorID, PurchaseOrderDate,
và PurchaseOrderAmount.
4.
Sửa các ô Field sau:
- Từ PurchaseOrderID thành InventoryReceiptID
- Từ PurchaseOrderDate thành InventoryReceiptDate
- Từ PurchaseOrderAmount
thành InventoryReceiptAmount
5.
Kéo PurchaseOrderID từ khung tblPurchase vào
Criteria Pane bên phải InventoryReceiptID.
6.
Kéo VendorInvoiceID từ khung tblPurchase vào
Criteria Pane bên phải PurchaseOrderID.
7.
Xóa tblPurchaseOrder khỏi Table Pane. Để ý là
ExpectedDeliveryDate không còn xuất hiện trong Criteria Pane. Tại sao vậy?
8.
Kích Run trong nhóm Results. Cần thấy 27 bản
ghi trong tập động dynaset. Nhưng tại sao có đến 378 bản ghi? Hãy trở về góc
nhìn Design. Chưa có liên kết (phép nối nội)
giữa qryVendorInfo và tblPurchase nên
Access sẽ tạo danh sách gồm mọi tổ hợp khả dĩ các thuộc tính trên Criteria Pane.
Hãy tạo liên kết bằng cách kéo VendorID từ
qryVendorInfo đến VendorID trong tblPurchase. Chạy lại truy vấn để kiểm chứng
rằng tập động dynaset có 27 bản ghi. Trở về góc nhìn Design.
Đóng Query Builder. Kích Yes trong hộp thoại
Save Changes.
BÀI
TẬP 9.33: SỬA FRMPURCHASEORDER ĐỂ
TẠO FRMPURCHASE – PHẦN 3
Các
nhiệm vụ chính ở Phần 3 là sửa các nguồn dữ liệu và nhãn cho các thành phần điều
khiển đồng thời bổ sung các thành phần điều khiển và nhãn mới.
1.
Xóa thành phần điều khiển ExpectedDeliveryDate, nhãn của nó
cũng bị xóa theo.
2.
Dời tất cả các thành phần điều khiển và nhãn còn lại ở bên trái form xuống dưới
để tạo khoảng trống cho InventoryReceiptID.
3.
Thêm InventoryReceiptID vào form. Chọn PurchaseOrderID,
nhấn Ctrl+C, rồi nhấn Ctrl+V. Dời bản
sao PurchaseOrderID và nhãn của nó lên trên bản gốc.
4.
Kích bản sao PurchaseOrderID. Sửa Control Source
trên Data tab của Property Sheet
thành InventoryReceiptID.
Kích Other tab rồi sửa Name
thành InventoryReceiptID. Sửa nhãn
thành Inv. Receipt #.
5.
Kích và kéo con trỏ qua bốn thành phần điều khiển và nhãn dưới đáy để chọn
chúng. Dùng phím mũi tên xuống để dời chúng xuống dưới nhằm tạo khoảng trống cho
VendorInvoiceID.
6.
Tạo một bản sao nữa của PurchaseOrderID và nhãn
của nó. Dời chúng vào khoảng trống bạn vừa tạo. Sửa Control Source
trên Data tab của Property Sheet
thành VendorInvoiceID và xóa input mask. Sửa
nhãn thành Vendor Invoice #.
7.
Sửa các thành phần điều khiển và nhãn sau:
- Sửa Control Source và Name từ PurchaseOrderDate
thành InventoryReceiptDate. Sửa nhãn
thành Date Received.
- Sửa Control Source và Name từ PurchaseOrderAmount
thành InventoryReceiptAmount.
8.
Kích EmployeeID combo box. Sửa Row Source cho
EmployeeID trên Data tab
thành qryMaterialsHandler. Sửa Name
trên Other tab
thành cboMaterialsHandler.
9.
Sửa thứ tự tab. Kích Tab Order trong nhóm
Tools. Dời InventoryReceiptID đến vị trí đầu
tiên và VendorInvoiceID đến vị trí thứ ba.
Kích OK. Lưu các thay đổi.
10.
Dùng công cụ Align Top trên dải
lệnh Arrange sao cho form ở góc nhìn Design
giống với Hình 9.30. Chuyển sang góc nhìn Form. Form cần
giống Hình 9.31. Lưu các thay đổi rồi đóng form.
Hình
9.31 frmPurchase ở góc nhìn Form sau khi hoàn
tất Bài tập 9.34.
Form
nhập biên bản nhận hàng đã tạo trong vài bài tập vừa qua hoạt động tốt ngoại trừ
nút lệnh Update PO Amount. Trong Bài tập 9.34, bạn sẽ tạo tập hợp truy vấn mới
để cập nhật InventoryReceiptAmount trong frmPurchase,
sửa mcrUpdatePurchaseOrderAmount, và sửa nút
lệnh cmdUpdatePOAmount. Hãy dùng hướng dẫn chi tiết ở các
Bài tập 9.22 đến 9.24 cùng các diễn giải ngắn gọn ở Bài tập 9.34 dưới đây kèm
theo hình ảnh.
BÀI
TẬP 9.34: TẠO TRUY VẤN, MACRO, VÀ NÚT LỆNH ĐỂ CẬP
NHẬT INVENTORYRECEIPTAMOUNT
1.
Tạo một truy vấn tạo bảng tương
tự qrySumOfPOLineExtensionsByPO để tính tổng
các PurchaseLineExtensions theo InventoryReceiptID. Kích Query
Design trên dải lệnh Create,
thêm qryPurchaseLineItem từ hộp
thoại Show Table.
Kích Totals trong nhóm Show/Hide,
thêm InventoryReceiptID và PurchaseLineExtensions vào
Criteria Pane, rồi điều chỉnh Criteria Pane trông như Hình 9.32. Kích Make Table
trong nhóm Query Type rồi
nhập tblSumOfPurchLineExtensionsByIR (lưu ý
tiền tố tbl) như trình bày trong hộp thoại Make Table ở Hình
9.32. Lưu truy vấn
là qrySumOfPurchLineExtensionsByIR rồi đóng
lại. Kích
kép qrySumOfPurchLineExtensionsByIR trong
Navigation Pane để thi hành nó. Gõ 100001 vào
hộp thoại.
Mở tblSumOfPurchLineExtensionsByIR để kiểm
chứng giá trị tổng là $3,812.75.
Hình
9.32 qrySumOfPurchLineExtensionsByIR ở góc nhìn
Design.
2.
Tạo một truy vấn cập nhật tương
tự qryUpdatePurchaseOrderAmount. Kích Query
Design trên dải lệnh Create; Dùng Show
Table để
thêm tblPurchase và tblSumOfPurchLineExtensionsByIR vào
Table Pane. Kích Update trong nhóm Query Type.
Thêm InventoryReceiptAmount vào Criteria Pane.
Gõ [tblSumOfPurchLineExtensionsByIR].[SumOfPurchaseLineExtension] (xem
Hình 9.33). Truy vấn hành động này sẽ lấy giá trị
từ SumOfPurchaseLineExtension trong tblSumOfPurchLineExtensionsByIR rồi
lưu
vào InventoryReceiptAmount trong tblPurchase.
Lưu truy vấn là qryUpdateInventoryReceiptAmount. Kiểm thử
truy vấn bằng cách mở tblPurchase rồi sửa
InventoryReceiptAmount ứng với InventoryReceiptID 100001
thành 0 và đóng bảng. Kích
kép qryUpdateInventoryReceiptAmount trong
Navigation Pane để thi hành truy vấn. Kiểm
tra tblPurchase để thấy rằng
InventoryReceiptAmount ứng với InventoryReceiptID 100001 đã được sửa thành
$3,812.75.
Hình
9.33 qryUpdateInventoryReceiptAmount ở góc nhìn
Design.
3.
Sửa mcrUpdatePurchaseOrderAmount. Tạo một bản sao
của mcrUpdatePurchaseOrderAmount trong
Navigation Pane rồi đặt tên
là mcrUpdateInventoryReceiptAmount.
Mở mcrUpdateInventoryReceiptAmount ở góc nhìn
Design. Kích qrySumOfPOLineExtensionsByPO dưới hành động OpenQuery đầu tiên rồi
sửa thành qrySumOfPurchLineExtensionsByIR bằng
cách gõ hay chọn từ danh sách combo box. Sửa Query Name cho hành động OpenQuery
thứ hai thành qryUpdateInventoryReceiptAmount. Sửa Object
Name cho hành động RepaintObject
thành frmPurchase (xem Hình 9.34). Lưu rồi đóng
macro.
Hình
9.34 mcrUpdateInventoryReceiptAmount ở góc nhìn
Design.
4.
Sửa nút lệnh trong frmPurchase.
Mở frmPurchase ở góc nhìn Design.
Mở Property Sheet rồi
chọn cmdUpdatePOAmount. Sửa Caption
trên Format tab thành Update
Inv. Receipt Amount. Sửa thuộc tính On Click
trên Event tab
thành mcrUpdateInventoryReceiptAmount. Sửa Name
trên Other tab
thành cmdUpdateInvReceiptAmount. Kích nút
lệnh Command trong phần Detail của form rồi kéo
nút điều chỉnh bên phải sang phải để thấy toàn bộ Caption (xem Hình 9.30). Lưu
rồi đóng form.
5.
Kiểm thử nút lệnh mới. Mở tblPurchase; sửa
InventoryReceiptAmount ứng với InventoryReceiptID 100003
thành 0 và đóng bảng. Kích
kép frmPurchase trong Navigation Pane rồi dùng
nút chọn bản ghi của form để chuyển đến Inventory Receipt # 100003. Kích nút
lệnh Update Inv. Receipt Amount,
nhập 100003 rồi kích OK.
Kiểm chứng rằng trị giá nhận hàng InventoryReceiptAmount đã được sửa thành
$664.50.






0 nhận xét