Phát triển HTTT kế toán bằng MS Access - Chương 9 - Thêm thành phần điều khiển VendorID vào form nhập biên bản nhận hàng
James Perry, Richard Newmark
Chương
9
Qui trình mua hàng - chi tiền
Thêm thành phần điều khiển VendorID vào form nhập biên bản nhận hàng
Hệ
thống kế toán của Pipefitters Supply Company liên kết các biên bản nhận hàng với
những đơn mua hàng cụ thể. Mặc dù nhà cung ứng trong biên bản nhận hàng phải
giống nhà cung ứng trên đơn mua hàng tương ứng, form nhập biên bản nhận hàng
hiện thời không chứa kiểm soát nào để đảm bảo rằng nhà cung ứng trên đơn mua
hàng giống với nhà cung ứng ghi trên (các) biên bản nhận hàng tương ứng. Trong
các bài tập kế bạn sẽ thêm một nút lệnh
vào frmPurchase để cập nhật VendorID. Nó tương
tự nút lệnh cập nhật InventoryReceiptAmount.
BÀI
TẬP 9.35: TẠO MỘT TRUY VẤN CẬP NHẬT ĐỂ TRUYỀN VENDORID
TỪ TBLPURCHASEORDER VÀO TBLPURCHASE
1.
Trước khi tạo truy vấn cập nhật, bạn cần thêm một nhà cung ứng giả
vào tblVendor để người dùng biết rằng VendorID
chưa được nhập vào frmPurchase. Hãy
dùng frmVendor để thêm Vendor
9999 với thông tin được cung cấp ở Hình 9.35.
Hình 9.35 Thông tin nhà cung ứng giả 9999 được nhập
vào frmVendor.
2.
Kích Query Design để tạo một truy vấn mới.
Thêm tblPurchase và tblPurchaseOrder vào
Table Pane. Kích Update trong nhóm Query
Type.
3.
Thêm vào Criteria Pane VendorID từ tblPurchase
và PurchaseOrderID từ tblPurchaseOrder.
Gõ [tblPurchaseOrder].[VendorID] vào ô Update
To của VendorID, rồi gõ "9999" vào ô Criteria
(xem Hình 9.36).
Hình
9.36 qryUpdateVendorID ở góc nhìn
Design.
4.
Thêm InventoryReceiptID từ tblPurchase vào
Criteria Pane. Ở Chương 8, bạn đã tạo các truy vấn nợ phải trả accounts payable
bằng việc dùng tham biến thời điểm, cho phép người dùng tính nợ phải trả ở thời
điểm bất kỳ. Tuy nhiên, khi bạn dùng tham biến
trong qrySumOfPOLineExtensionsByPO và qrySumOfPurchLineExtensionsByIR,
hộp thoại Enter Parameter Value yêu cầu người
dùng gõ lại thông tin đã nhập vào bản ghi hiện thời của một form. Để tránh sai
sót, macro trong bài tập kế sẽ tạo một biến tạm từ dữ liệu trong bản ghi form
hiện thời và sẽ trở thành tiêu chí trong truy vấn này.
5.
Trong ô Criteria của InventoryReceiptID, gõ vị trí của biến tạm được tạo bởi
macro: [TempVars]![TempInventoryReceiptID] (xem
Hình 9.36). Việc dùng truy vấn tham biến để tìm một InventoryReceiptID cụ thể sẽ
tiết kiệm rất nhiều thời gian tính toán khi cơ sở dữ liệu trở nên lớn hơn. Nếu
không, Access sẽ tìm tất cả các bản ghi
trong tblPurchase có VendorID bằng 9999. Lưu
truy vấn là qryUpdateVendorID rồi đóng lại.
6.
Mở frmPurchase ở góc nhìn Design;
mở Property Sheet và thu nhỏ Navigation
Pane.
7.
Kích VendorID rồi sửa các thuộc tính của nó để
hiển thị như một trường tham chiếu chẳng hạn VendorName.
Trên Format tab sửa Back Style và Border Style
thành Transparent.
Trên Data tab, sửa Enabled
thành No và Locked
thành Yes. Đặt giá trị mặc định
là 9999 để thông tin nhà cung ứng giả được tự
động nhập, tương tự giá trị mặc định $0.00 được tự động nhập vào
PurchaseOrderAmount. Sửa Tab Stop
trên Other tab
thành No.
8.
Lưu rồi đóng form. Hồi phục Navigation Pane.
BÀI
TẬP 9.36: TẠO MACRO ĐỂ CẬP NHẬT VENDORID
TRONG FRMPURCHASE
Hãy
tham khảo Bài tập 9.24 cho thảo luận bổ sung về các Macro Actions SetWarnings,
OpenQuery, và RepaintObject.
1.
Kích Create tab rồi
kích Macro trong nhóm Macros & Code.
Kích Show All Actions trong nhóm Show/Hide vì
một số hành động bạn cần không có sẵn trong tập hành động mặc định.
2.
Gõ hay chọn SetWarnings trong ô Add New Action.
Để tham biến hành động mặc định là No để ngăn
các thông điệp hệ thống.
3.
Đặt hành động thứ hai là RunMenuCommand (thi
hành lệnh menu) và chọn SaveRecord (lưu bản
ghi) từ danh sách lệnh. Hành động này bước bản ghi hiện thời được lưu, tức lưu
dữ liệu bạn đã nhập vào frmPurchase vào
trong tblPurchase.
4.
Tạo một biến tạm cho InventoryReceiptID mà sẽ được dùng trong qryUpdateVendorID.
Gõ hay chọn SetTempVar trong ô Add New Action
mới. Đặt tên biến tạm là TempInventoryReceiptID. Kích
nút Builder cạnh ô Expression. Trong khung
Expression Elements, mở rộng các thành phần sau theo thứ tự bằng cách kích
dấu + cạnh chúng để đi
đến frmPurchase: Ch09.accdb, Forms, All
Forms. Kích frmPurchase; rồi kích
kép InventoryReceiptID trong khung Expression
Categories (xem Hình 9.37). Kích OK để đóng
công cụ tạo biểu thức, và thêm biểu thức vừa tạo vào ô tham biến Expression.
Biểu thức này sẽ chỉ thị Access đặt biến tạm, TempInventoryReceiptID, bằng giá
trị hiện thời trong thành phần điều khiển InventoryReceiptID bên
trong frmPurchase.
Hình 9.37 Công cụ tạo biểu thức cho tham biến biểu
thức trong hành động SetTempVar.
5.
Thêm hành động OpenQuery để thi
hành qryUpdateVendorID, rồi
chọn qryUpdateVendorID từ danh sách các Query
Names. Để nguyên các giá trị mặc định cho View (Datasheet) và Data Mode
(Edit).
6.
Chọn hay gõ RepaintObject vào ô Add New Action
kế. Chọn Form là Object Type
và frmPurchase là Object Name.
7.
Cuối cùng, loại bỏ biến tạm để ngăn việc dùng nó trong truy vấn hay macro khác.
Thêm hành động RemoveTempVar vào macro.
Gõ TempInventoryReceiptID cho Name là tên biến
tạm bạn muốn loại. Macro hoàn chỉnh được trình bày ở Hình 9.38.
Hình
9.38 mcrUpdateVendorIDAndInvItems ở góc nhìn
Design.
8.
Đóng macro. Trong hộp thoại Save As, đặt tên macro
là mcrUpdateVendorIDAndInvItems.
Phần AndInvItems (và các hàng tồn kho) là cần
thiết vì bạn sẽ thêm các hành động vào macro này ở các bài tập kế để chuyển các
hàng tồn kho đã đặt vào form nhập biên bản nhận hàng.
9.
Kiểm thử truy vấn và macro bằng cách mở tblPurchase, sửa
VendorID ứng với InventoryReceiptID 100002
thành 9999 rồi đóng bảng. Vì lệnh SaveRecord sẽ
không hoạt động trừ phi nó được kích hoạt bên trong form (SaveRecord sẽ lưu bản
ghi của đối tượng hiện hành, đó sẽ KHÔNG là form khi bạn kích kép trong
Navigation Pane), hãy xóa dòng đó khỏi macro của bạn trước khi tiếp tục việc
kiểm thử. Mở frmPurchase rồi đi đến bản ghi có
InventoryReceiptID 100002. Kích
kép mcrUpdateVendorIDAndInvItems trong
Navigation Pane để thi hành macro. VendorID ứng với InventoryReceiptID 100002
bây giờ phải là 1008. Đóng form và hồi phục macro (dùng macro hoàn chỉnh ở Hình
9.38 làm hướng dẫn).
BÀI
TẬP 9.37: THÊM NÚT LỆNH VÀO FRMPURCHASE ĐỂ THI
HÀNH MACRO
Các
bước tạo nút lệnh đã được trình bày chi tiết trong Bài tập 9.25 và Hình 9.23.
Bạn cần tham khảo chúng để được diễn giải chi tiết hơn.
1.
Mở frmPurchase ở góc nhìn Design.
Kích Button trong nhóm Controls. Di chuyển con
trỏ xuống ngay dưới nhãn Primary Contact rồi kích kép để khởi động Command
Button Wizard.
2.
Trong hộp thoại đầu tiên,
kích Miscellaneous trong danh sách Category,
rồi kích kép Run Macro để chọn Run Macro và đến
hộp thoại kế.
3.
Kích kép mcrUpdateVendorIDAndInvItems (không
được trình bày ở Hình 9.23) để chọn nó và đến hộp thoại kế.
4.
Kích nút radio Text, gõ Update Vendor # and
Inv. Items vào ô Text, rồi kích Next.
5.
Trong hộp thoại cuối cùng, gõ cmdUpdateVendorIDAndInvItems;
kích Finish.
6.
Kích Tab Order trong nhóm Tools (trên dải lệnh
Design); dời cmdUpdateVendorIDAndInvItems đến
vị trí ngay trên fsubPurchase. Kích OK.
7.
Nếu bạn không có khoảng trống cho nút lệnh mới, hãy dời subform và nút lệnh
Update Inv. Receipt Amount xuống dưới để tạo khoảng trống. Form hoàn tất ở góc
nhìn Design cần giống Hình 9.39. Lưu rồi đóng form.
Hình
9.39 frmPurchase ở góc nhìn Design sau khi hoàn
tất Bài tập 9.37.
8.
Kiểm thử nút lệnh mới. Mở tblPurchase, sửa VendorID ứng với
InventoryReceiptID 100004 thành 9999 rồi đóng
bảng. Mở frmPurchase rồi đi đến bản ghi có
InventoryReceiptID 100004. Kích nút lệnh mới để thi
hành mcrUpdateVendorIDAndInvItems. Kiểm chứng rằng VendorID
ứng với InventoryReceiptID 100004 đã sửa từ 9999 thành 1007. Đóng form.



0 nhận xét