Đối với trường hợp muốn liệt kê một mẩu tin ứng với một mã loại hóa đơn mua hàng được chọn, bạn khai báo gọi thủ tục nội tại như ví dụ UD-7-2.. 272 Ung dụng: Sử dụng thủ tục nội tại tron
Trang 1
254 Ung dung: Sit dụng thủ tục nội tại trong ứng dung
Chẳng hạn, bạn khai báo thủ tục nội tại cho phép liệt kê doanh thu
bán hàng theo ngày như ví dụ UD-5-7
Ơ doanh thu theo ngày|
CREATE PROC udsSalesByDate
AS
SELECT Convert (char (10) ,DueDate, 103) AS SalesDate,
SUM (Quantity*Price* (1+VATRate/100)-Discount) As
SalesAmount
FROM SalesInvoices S, SalesInvoiceDetails D
WHERE S.InvoiceNo = D.InvoiceNo
GROUP BY Convert (char (10) , DueDate, 103)
Hình UD-ð-2: Doanh thu bán hàng theo ngày
Tương tự như trên, bạn có thể khai báo thủ tục nội tại để liệt kê
doanh thu theo tuần trong tháng hiện hành như ví dụ UD-5-8
Báo cáo doanh thu theo tuần|
CREATE PROC udsSalesByWeek
AS
SELECT DATEPART (ww, DueDate) AS SalesWeek,
Trang 24 ù
Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 255 M SUM (Quantity*Price* (1+VATRate/100) -Discount) As
FROM SalesInvoices S, SalesInvoiceDetails D
WHERE S.InvoiceNo = D InvoiceNo
GROUP BY DATEPART (ww, DueDate)
GO
Bạn có thể gọi thủ tục trên và kết quả trình bày như hinh UD-5-3
udsSalesByWeek
Hình UD-ð-8: Doanh thu bán hàng theo tuân
Bạn cũng có thể khai báo thủ tục nội tại cho phép người sử dụng báo cáo doanh số bán hàng theo sản phẩm như ví dụ UD-5-9
CREATE PROC udsSalesByProduct
@ProductId VARCHAR (10)
AS
SELECT P.ProductID, ProductNameInVietnamese,
SUM (Quantity*Price* (1+VATRate/100)-Discount) As
SalesAmount
FROM Products P, SalesInvoiceDetails D
WHERE P Product ID = D Product ID
AND D ProductId = CASE @ProductId
WHEN '' THEN D ProductId
ELSE @ProductId END
GROUP BY P.ProductID, ProductNameInVietnamese
GO
Đối với trường hợp thủ tục trên, chúng ta có thể gọi nó bằng hai cách, cách thứ nhất là cung cấp mã sản phẩm là rỗng thì danh sách sản phẩm trình bày như hình UD-5-4 '
Trang 3
256 Ứng dụng: Sử dụng thủ tục nội tại trong ứng dung
uds5alesByProduct ''
GO
cre
Hình UD-ð-4: Doanh thu của sản phẩm
Nếu bạn muốn liệt kê doanh số bán hàng của một sản phẩm thì khai
báo như hình UD-5-5
Hinh UD-5-5: Doanh số bán hàng của một sản phẩm
Trong trường hợp liệt kê doanh thu theo khách hàng, bạn có thể khai báo thủ tục nội tại như ví dụ UD-B-10
CREATE PROC udsSalesByCustomers
@CustomerTđ CHAR (5)
AS
SELECT C.CugtomerID, CompanyNameInVietnamese,
SUM (Quantity*Price* (1+VATRate/100) -Discount) As
Trang 4Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 257 M?
ON S.InvoiceNo = D InvoiceNo `
AND C.CustomerTđ = CASE @CustomerTả
WHEN '' THEN C.CustomerId
ELSE @CustomerId END
GROUP BY C.CustomerID, CompanyNameInVietnamese
GO
Nếu bạn gọi thủ tục trên với mã khách hàng là rỗng thì danh sách
khách hàng cùng với doanh thu của họ trình bày như hình UD-ð-6
Công ty Cổ phần Sưzumi Vietnam ˆ 2397650.000000 Tập đoàn UCIA USA : 2185000.000000 Công ty Đa quốc gia UFCA 1 ` 879500.000000) Công ty Cổ phần ReruiVietnam | 726250,000000
Hình UD-B-6: Doanh thu theo khách hàng
Trong trường hợp liệt kê doanh số bán hàng cho một khách hàng, bạn có thể khai báo tương tự như hình UD-ð-7
Hinh UD-5-7: Doanh sé ban hàng cho một khách hàng
Bạn cũng có thé liệt kê doanh thu bán hàng theo tỉnh thành bằng cách khai báo như ví du UD-5-11
Trang 5Hình UD-6-1: Thông tin một nhà cung cấp
Ứng với trường hợp xóa mẩu tin trong bảng Suppliers, bạn có thể khai báo thủ tục có tên udsDeleteSuppliers như ví dụ UD-6-3
SupplierlId = CASE @SupplierId
WHEN '' THEN SupplierId
ELSE @SupplierId END
GO
Bạn có thể gọi thủ tục nội tại có tên udsDeleteSuppliers với hai
trường hợp, trường xóa tất cả mẩu tin trong bảng Suppliers thì bạn khai
báo như ví dụ UD-6-4
Nếu cho phép người sử dụng thêm mới hay cập nhật thông tin nhà
cung cấp, bạn có thể khai báo thủ tục nội tại dùng chung cho hai trường hợp
này dựa và mã nhà cung cấp như ví dụ UD-6-6
Trang 6INSERT INTO Suppliers
VALUES (@SupplierID, @CompanyNameInVietnamese,
@CompanyNameInSecondLanguage, 1, @ContactName,
@ContactTitle, @Address, @ProvinceID,
@Telephone, @FaxNumber, @SupplierTypeID,
Discont inued = @Discontinued
WHERE SupplierID = @SupplierID
GO
2.2, Bang PurchaseInvoiceTypes
Tuong tu nhu bang SalesInvoiceTypes, đối với hành động truy vấn dữ liệu cho bảng PurchaselnvoiceTypes, chúng ta cần khai báo thủ tục nội tại như ví dụ UD-7
Trang 7
Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng 271
Ví dụ UD-7: Khai báo thủ tục nội tại truy vấn
CREATE PROC udsViewPurchaseInvoiceTypes
@InvoiceTypeld CHAR (3)
AS
SELECT * FROM PurchaseInvoiceTypes
WHERE
InvoiceTypeld = CASE @InvoiceTypeId
WHEN '' THEN InvoiceTypeId
ELSE @InvoiceTypeId END
Hình UD-7: Loại hóa đơn mua hàng
Đối với trường hợp muốn liệt kê một mẩu tin ứng với một mã loại hóa đơn mua hàng được chọn, bạn khai báo gọi thủ tục nội tại như ví dụ UD-7-2
Hoá đớn mua hàng khuyến mãi
Hình UD-7-L: Thông tin một mã loại hóa đơn mua hang
Trang 8
272 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng Trong trường hợp xóa mẩu tin trong bảng PurchaselnvoiceTypes, bạn có thể khai báo thủ tục có tên udsDeletePurchaselnvoiceTypes như ví
InvoiceTypeld = CASE @InvoiceTypeld
WHEN '' THEN InvoiceTypeId
ELSE @InvoiceTypelId END
GO
Bạn có thể xóa loại hóa đơn mua hàng bằng cách gọi thủ tục nội tại
có tên udsDeletePurchaselnvoiceTypes với hai trường hợp, đối với trường hợp xóa tất cả mẩu tín trong bảng thì bạn khai báo như ví dụ UD-7-4
Ví dụ UD-7-4: Khai báo xóa tất cả NI TU]
` 6: Khai báo thêm và cập nhật
CREATE PROC udsInsUpdPurchaseInvoiceTypes
Trang 9Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 273 MP?
Ví dụ UD-8: Khai báo thủ tục nội tai truy vấn|
CREATE PROC udsViewPurchaseTnvoiceBatchs
@InvoiceBatchNo VARCHAR (10)
AS
SELECT * FROM PurchaseInvoiceBatchs
WHERE
InvoiceBatchNo = CASE @InvoiceBatchNo
WHEN '' THEN InvoiceBatchNo
ELSE @InvoiceBatchNo END
Khi thực thi thủ tục trên, bạn có thể tìm thấy danh sách mẩu tin
trong bảng PurchaseInvoiceBatchs như hình UD-8
Hình UD-8: Danh sách lô hóa đơn mua hàng
Nếu liệt kê một mẩu tin ứng với một lô hóa đơn mua hàng được chọn,
bạn khai báo gọi thủ tục nội tại như ví dụ UD-8-2
Trang 10Hình UD-8-1: Thông tin một lô hóa đơn mua hàng
Đối với trường hợp xóa mẩu tin trong bảng PurchaseInvoiceBatchs, bạn có thể khai báo thủ tục có tên udsDeletePurchaselnvoiceBatchs như ví
InvoiceBatchNo = CASE @InvoiceBatchNo
WHEN '' THEN InvoiceBatchNo
ELSE @InvoiceBatchNo END
GO
Sau khi tạo thủ tục nội tai udsDeletePurchaseInvoiceBatchs, ban có
thể gọi thủ tục nội tại này với hai trường hợp, nếu xóa tất cả mẩu tin trong bảng bạn khai báo như ví dụ UD-8-4
Ví dụ UD-8-4: Khai báo xóa €ất cả mẩu tin
udsDeletePurchaseInvoiceBatchs ''
GO
Nếu xóa một mẩu tin, bạn khai báo gọi thủ tục
udsDeletePurchaseInvoiceBatchs nhu vi du UD-8-5
Trang 11Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 275 °
INSERT INTO PurchaseInvoiceBatchs
VALUES (@InvoiceBatchNo, @InvoiceBatchDate,
Ví dụ UD-9: Khai báo thủ tục nội tại truy vấn|
CREATE PROC udsViewPurchaseTnvoices
@InvoiceNo VARCHAR (10)
AS
SELECT * FROM PurchaseInvoices
WHERE
InvoiceNo = CASE @InvoiceNo
WHEN '' THEN InvoiceNo
ELSE @InvoiceNo END
Nếu thực thi thủ tục trên, bạn có thể tìm thấy danh sách mẩu tin ứng
với danh sách hóa đơn mua hàng như hình UD-9
Trang 12
276 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng
Hình UD-9: Danh sách hóa đơn mua hàng
Tuy nhiên, trong một vài trường hợp người sử dụng muốn liệt kê một mẩu tin ứng với một hóa đơn mua hàng với mục đích trình bày hay cập nhật, bạn khai báo gọi thủ tục nội tại như ví dụ UD-9-2
Ví dụ UD-9-2: Khai báo liệt kê một hóa đơn mua hàn
udsViewSalesInvoices 'PI00000002'
GO
Khi thực thi thủ tục trên, bạn có thể tìm thấy thông tin của hóa đơn
mua hàng như hình UD-9-1
Hình UD-9-1: Thông tin một hóa đơn mua hàng
Nếu cho phép người sử dụng tìm kiếm hóa đơn mua hàng theo mã nhà cung cấp, bạn có thể khai báo thủ tục như ví dụ UD-9-3
Ví dụ UD-9-3: Khai báo liệt kê danh sách hóa don mu
ima nha cung cap
CREATE PROC udsViewPurchaseInvoicesBySupplier
Trang 13Ung dung: Sit dụng thủ tục nội tại trong ứng dụng
InvoiceNo = CASE @InvoiceNo
WHEN '' THEN InvoiceNo
ELSE @InvoiceNo END
AND SupplierId = CASE @SupplierId
WHEN '' THEN SupplierId
ELSE @SupplierId END
PI00000009 PBI004 2007-10-04 00:00:00 PB1 S0001
Hình UD-9-2: Dan], sách nhà cung cấp uà hóa don mua hang
Ngoài ra, bạn cũng có thể gọi thủ tục trên với mã nhà cung cấp là
Trang 14Hình UD-9-3: Hóa đơn bán hàng của nhà cung cấp
Tương tự như phần quản lý hóa đơn bán hàng, chúng ta quản lý hóa đơn mua hàng theo lô, bạn cần khai báo thủ tục nội tại để liệt kê danh sách
hóa đơn mua hàng theo từng lô như ví dụ UD-9-6
Ví dụ UD-9-6: Khai báo liệt kê hóa đơn mua hàng
CREATE PROC udsViewPurchaseInvoicesByBatch
@InvoiceBatchNo VARCHAR (10)
AS
SELECT * FROM PurchaseInvoices
WHERE InvoiceBatchNo = @InvoiceBatchNo
Khi thực thi ví dụ trên, bạn có thể tìm thấy danh sách hóa đơn mua
hàng trình bày như hình UD-9-4
Hình UD-9-4: Danh sách hóa đơn mua hàng theo lô
Ứng với trường hợp xóa mẩu tin trong bảng PurchaseInvoices, bạn có thể khai báo thủ tục có tên udsDeletePurhcaselnvoices như ví dụ UD-9-8
CREATE PROC udsDeletePurchaseInvoices
@InvoiceNo VARCHAR (10)
Trang 15WHEN '' THEN InvoiceNo
ELSE @InvoiceNo END
GO
Ban có thể gọi thủ tục nội tại có tên udsDeletePurchaselnvoices với
hai trường hợp, trường hợp xóa tất cả mẩu tin trong bảng bạn khai áo như
vi dy UD-9-9
udsDeletePurchaseInvoices ''
So
Đối với trường hợp xóa một mẩu tin, bạn khai báo gọi thủ tục
udsDeletePurchaseInvoices nhu vi du UD-9-10
Ví dụ UD-9-10: Khai báo xóa một mâu tín
uđsDeletePurchaseInvoices 'P100000015'
GO
Ngoài ra, bạn cũng có thể khai báo thủ tục nội tại dùng cho trường hợp thêm mới hay cập nhật thông tin hóa đơn mua hàng như ví dụ UD-9-11,
Ví dụ UD-9-11; Khai báo thêm và cập nhật
CREATE PROC udsInsUpdPurchaselInvoices
INSERT INTO PurchaseInvoices
VALUES (@InvoiceNo, @InvoiceBatchNo,
@DueDate, @InvoiceTypeld, @SupplierId,
Trang 16Ví dụ UD-10: Khai báo thủ tục nội tại truy vấn|
CREATE PROC udsViewPurchaseInvoiceDetails
@InvoiceNo VARCHAR (10)
AS
SELECT * FROM PurchaseInvoiceDetails
WHERE InvoiceNo = @InvoiceNo
GO
Khi thực thi thủ tục nội tại trên, để liệt kê danh sách chỉ tiết hóa đơn
mua hàng, bạn cân sử dụng phát biểu gọi thủ tục nội tại như ví dụ UD-10-1
Ví dụ UD-10-1: Khai báo gọi thủ tục nội tai
udsViewPurchaseInvoiceDetails 'PI00000002'
GO
Nếu thực thi thủ tục trên, bạn có thể tìm thấy danh sách mẩu tin ứng
với danh sách hóa đơn mua hàng như hình UD-10
44 PII0000002 P0004 50 9500 0 10
Hình UD-10: Danh sách chỉ tiết hóa đơn mua hàng
Trang 17Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 281 MP?
Tuy nhiên, trong trường hợp người sử dụng muốn liệt kê một mẩu tin
ứng với một hóa đơn mua hàng bao gồm thông tin chỉ tiết, bạn khai báo thủ tục nội tại như ví dụ UD-10-2
Ví dụ UD-10-2: Khai báo liệt kê một hóa đơn mua hi
CREATE PROC udsViewPurchaseInvoiceDetail
@InvoiceNo VARCHAR (10),
@ProductId VARCHAR (10),
@OrdinalNumber tinyint
AS
SELECT * FROM PurchaseInvoiceDetails
WHERE InvoiceNo = @InvoiceNo
AND ProductId = @ProductId
AND OrdinalNumber = @OrdinalNumber
GO
àng
Để liệt kê tất cả thông tin của hóa đơn mua hàng, bạn cân khai báo
gọi thủ tục nội tại vừa tạo trong ví dụ trên như ví dụ UD-10-3
Ví dụ UD-10-3: Khai báo gọi thủ tục nội tại udsViewPurchaseInvoice
theo, do chúng ta cài đặt Cascade khi thiết lập quan hệ giữa chúng
Tuy nhiên, để cho phép người sử dụng xóa một mẩu tin trong bảng
PurchaselnvoiceDetails, bạn có thể khai báo thủ tục có tên udsDeletePurchaselInvoiceDetails như ví dụ UD-10-4
Ví dụ UD-10-4: Khai báo xóa một mẩu tỉn|
CREATE PROC udsDeletePurchaseInvoiceDetail
@InvoiceNo VARCHAR (10),
@ProductId VARCHAR (10),
Trang 18
282 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng
@OrdinalNumber tinyint
AS
DELETE FROM PurchaseInvoiceDetails
WHERE InvoiceNo = @InvoiceNo
AND ProductId = @Productid
AND OrdinalNumber = @OrdinalNumber
í dụ UD-10-6: Khải báo thêm và cập nhật
CREATE PROC udsInsUpdPurchaseInvoiceDetails
INSERT INTO PurchaseInvoiceDetails
VALUES (@OrdinalNumber, @InvoiceNo,
@ProductId, @Quantity, @Price,
WHERE InvoiceNo = @InvoiceNo
AND ProductId = @ProductId
AND OrdinalNumber = @OrdinalNumber
GO
Trang 19kê theo thời gian, nhà cung cấp hay sản phẩm
Chẳng hạn, bạn khai báo thủ tục nội tại cho phép liệt kê doanh thu mua hàng theo ngày như ví dụ UD-11
: Báo cáo chỉ phí mua hang theo n
CREATE PROC udsPurchaseByDate
AS
SELECT Convert (char (10) ,DueDate, 103) AS SalesDate,
SUM (Quantity*Price* (1+VATRate/100) -DiscounE) As
PurchaseAmount
FROM PurchaseInvoices S, PurchaseInvoiceDetails D
WHERE S.InvoiceNo = D InvoiceNo
GROUP BY Convert (char (10) ,DueDate, 103)
GO
Bạn có thể gọi thủ tục trên và kết quả là danh sách chi phí mua hàng trình bày như hình UD-11
udsPurchaseByDate
Hình UD-11: Chỉ phí mua hàng theo ngày
Tương tự như trên, bạn có thể khai báo thủ tục nội tại để liệt kê chỉ
phí mua hàng theo tuân trong tháng hiện hành như ví dụ UD-11-1
Trang 20
284 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng
SUM (Quantity*Price* (1+VATRate/100) -Discount) As
PurchaseAmount
FROM PurchaseInvoices §,
PurchaseInvoiceDetails D
WHERE S.InvoiceNo = D.TnvoiceNo
GROUP BY DATEPART (ww, DueDate)
GO
Ban có thể gọi thủ tục trên và kết quả là danh sách chi phí mua hàng
theo tuần trình bày như hình UD-11-1
udsPurchaseByWeek
Hình UD-11-1: Chỉ phi mua hang theo tuân
Bạn cũng có thể khai báo thủ tục nội tại cho phép người sử dụng báo
cáo chỉ phí mua hàng theo sản phẩm như ví dụ UD-11-2
CREATE PROC uds PurchaseByProduct
@Product Id VARCHAR (10)
AS
SELECT P ProductID, ProductNameInVietnamese,
SUM (Quantity*Price* (1+VATRate/100) -Discount) As
PurchaseAmount
FROM Products P, PurchaseInvoiceDetails D
WHERE P ProductID =D ProductID
AND D ProductId = CASE @ProductId
WHEN '' THEN D Productid
ELSE @ProductId END
GROUP BY P Product ID, ProductNameInVietnamese