1. Trang chủ
  2. » Công Nghệ Thông Tin

SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps

36 318 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề SQL Server 2005 – Lập trình, thủ tục và hàm part 9 pps
Trường học University of Technology Vietnam
Chuyên ngành Database Programming
Thể loại Giáo trình
Năm xuất bản 2005
Thành phố Vietnam
Định dạng
Số trang 36
Dung lượng 17,75 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong trường hợp chỉ liệt kê thông tin của một phiếu thu, bạn khai báo gọi thủ tục nội tại tương tự như hình UD-12-1.. Đối với trường hợp xóa mẩu tin trong bảng Receipts, bạn có thể khai

Trang 1

& 290 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng

SELECT APB.SupplierID, CompanyNameInVietnamese,

BeginningAmount, PurchaseAmount, PaymentAmount ,

BeginningAmount + PurchaseAmount - PaymentAmount

AS EndAmount

FROM vwAPBAndPurchaseAmount APB

LEFT JOIN PaymentOfSuppliers PY

ON APB.SupplierID = PY.SupplierID

Where APB SupplierID= CASE @SupplierId

WHEN '' THEN APB.SupplierID

ELSE @SupplierId END

GO

Bạn có thể liệt kê số tiền chi cho nha cung cấp bằng cách gọi thủ tục

nội tại udsPaymentOfSuppliers như hình UD-11-10

Hình UD-I1-10: Chi cho nhà cung cấp

Tuy nhiên, bạn có thể liệt kê số tiền chỉ cho mỗi nhà cung cấp bằng

cách gọi thủ tục nội tại udsPaymentOfSuppliers như hình UD-11-11

Trang 2

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 291

Chú ý: Bạn có thể tham khảo chi tiết về đối tượng View có tên

vwAPBAndPurchaseAmount trong phần ứng dụng của tập: bập trình T_SQL

Để cho phép liệt kê công nợ chỉ cho nhà cung cấp của tháng hiện

hành, bạn phải khai báo thủ tục nội tại như ví dụ ỦD-11-7

FROM CloseAccount PayableDetails

WHERE CloseMonth = @MonthYear

UNION ALL

SELECT SupplierID, 0,

SUM (Quantity*Price* (1+VATRate/100) -Discount) As

PurchaseAmount, 0

FROM PurchaseInvoices §, PurchaseInvoiceDetails D

WHERE S InvoiceNo = D InvoiceNo

SELECT C.SupplierID, CompanyNameInvVietnamese,

SUM (BeginningAmount} AS BeginningAmount,

SUM(PurchaseAmount) AS PurchaseAmount,

SUM (PaymentAmount) AS PaymentAmount,

SUM (BeginningAmount) + SUM(PurchaseAmount)

- SUM(PaymentAmount) AS EndAmount

FROM Suppliers ¢

LEFT JOIN APBAndPurchaseAmount APY

ON C.SupplierID = APY.SupplierID

WHERE C.SupplierID= CASE @Supplierid

WHEN '' THEN C.SupplierID

ELSE @SupplierIda END

GROUP BY C.SupplierID, CompanyNameInVietnamese

GO

Để liệt kê công nợ chỉ cho nhà sản xuất, bạn có thể gọi thủ tục nội tai

udsÁP như hình UD-11-12

Trang 3

Hình UD-11-12: Công nợ phải chỉ cho nhà cung cấp

Tuy nhiên, khi liệt kê công nợ phải chỉ của một nhà cung cấp, bạn có

Hình UD-11-13: Công nợ phải chỉ của nhà cung cấp S0003

Tương tự như trường hợp phần công nợ phải thu của khách hàng, cuối

vì vậy bạn cần khai báo thủ tục để chuyển thông tin công nợ phải chỉ cho nhà cung cấp vào

hai bang CloseAccountPayable va CloseAccountPayableDetails nhằm cung

tháng người sử dụng cần thực hiện chức năng đóng sổ, chính

cấp thông tin công nợ chỉ đầu kỳ của nhà cung cấp cho tháng kế tiếp

Ngoài ra, sau khi đóng sổ thì bạn phải xóa tất cả dữ liệu của các bảng liên quan như: Payments, PurchaselnvoiceBatchs, PurchaseInvoices, PurchaselnvoiceDetails dựa vào cờ ứng với tham số có tên @DeleteData

Dé lam diéu nay, trước tiên bạn khai báo thủ tục

udsCloseMonthForAP với cấu trúc như ví dụ UD-11-8

Trang 4

DELETE FROM CloseAccount Payable

WHERE CloseMonth = @CurrentMonth;

Thêm dữ liệu vao bang CloseAccountPayable

INSERT INTO CloseAccount Payable

VALUES (@CurrentMonth, GETDATE(), CURRENT_USER) ;

~ Thêm dữ liệu vao bing CloseAccountPayableDetails

FROM CloseAccount PayableDetails

WHERE CloseMonth = @MonthYear

Thêm dit ligu vio bang CloseAccountPayableDetails

INSERT INTO CloseAccount PayableDetails

SELECT C.SupplierID, @CurrentMonth,

SUM(BeginningAmount) AS BeginningAmount,

SUM (PurchaseAmount) AS PurchaseAmount,

SUM (PaymentAmount) AS PaymentAmount,

PRINT 'Delete all data'

DELETE FROM Payments;

~-DELETE FROM PurchaseInvoiceBatchs;

DELETE FROM PurchaseInvoices;

~-DELETE FROM PurchaseInvoiceDetails;

Trang 5

294 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng

END

GO

Luu ý: Nếu bạn thực thi 4 phát biểu DELETE ứng với trường hợp tham

số @DeleteData có giá trị là 1 để xóa dữ liệu trong bảng liên quan là Payments, PurchaseInvoiceBatchs, Purchaselnvoices, PurchaselnvoieeDetails thì dữ

liệu thêm vào sẽ tính toán cho tháng kế tiếp

Trong trường hợp cho phép người sử dụng tạm thời tính lại công nợ

phải chi cho một nhà cung cấp sau khi đã thực hiện việc đóng sổ tạm thời

thì khai báo như ví dự UD-11-9,

ho nhà cun APOfSupplier

bit CREATE PROC udsCloseMonthFor

@CurrentMonth CHAR (7),

@SupplierId@ CHAR (5)

AS

DECLARE @MonthYear CHAR (7 )

SET @MonthYear = dbo udfPreviousMonth (@CurrentMonth)

IF @SupplierId !=''

BEGIN

¬ Xóa dữ liệu trong bằng CloseAccountPayable

DELETE FROM CloseAccount PayapleDetai 18

WHERE CloseMonth = @CurrentMonth

AND SupplierId = @Supplierid;

FROM CloseAccount PayableDetails

WHERE CloseMonth = @MonthYear

AND SupplierId = @SupplierId

Trang 6

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 295

Thêm dữ liệu uào bảng CloseAccountPoyablelDetails

INSERT INTO CloseAccount PayableDetails

SELECT C.SupplierID, @CurrentMonth,

SUM (BeginningAmount) AS BeginningAmount,

3 PHAN KE TOAN TONG HGP

Tương tự như hai phan trên, chúng ta cần khai báo thủ tục nội tại cho

các bảng dữ liệu liên quan như: Receipts, ReceiptTypes, Payments, PaymentTypes, CloseMonthCashBalances va CloseMonthCashBalanceDetails

Chú ý: Bạn có thể tim thấy các ví dụ trình bày của chương này nằm

trong tập tin có tén StoredProcedureForGL.sql

3.1 Bảng Receipts

Dựa vào yêu cầu thống kê thu tiền của bộ phận làm kế toán tổng hợp, bạn có thể khai báo một số thủ tục nội tại nhằm đáp ứng các yêu cầu như: Liệt kê, thêm mới, cập nhật, xóa, tổng hợp tiên thu theo thời gian, tổng thu

theo khách hàng

Chẳng hạn, bạn khai báo thủ tục nội tại để liệt kê danh sách mẩu tin

trong bang Receipts nhu vi du UD-12

ReceiptNo = CASE @ReceiptNo

WHEN '' THEN ReceiptNo

ELSE @ReceiptNo END

6O

Trang 7

f° 296 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng

Nếu muốn liệt kê tất cả danh sách phiếu thu trong bảng Receipts thì bạn gọi thủ tục nội tại trên như hình UD-12

Hình UD-12: Danh sách phiếu thu

Trong trường hợp chỉ liệt kê thông tin của một phiếu thu, bạn khai báo gọi thủ tục nội tại tương tự như hình UD-12-1

Hình UD-12-1: Liệt kê một phiếu thu

Nếu cho phép người sử dụng liệt kê danh sách phiếu thu trong khoảng thời gian, bạn có thể khai báo thủ tục nội tại như ví dụ UD-12-1

ReceiptDate >= CASE @StartDate

WHEN '' THEN CAST('1/1/1900' as SMALLDATETIME)

ELSE CAST (@StartDate AS SMALLDATETIME) END

AND ReceiptDate <= CASE @EndDate

WHEN '' THEN CAST('1/1/2079' aS SMALLDATETIME)

Trang 8

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng

ELSE CAST (@EnđdDate AS SMALLDATETIME) END

3 RPT000103 BR000002 2071011000000 R01 A01 ND 1065000)

Hình UD-12-2: Liệt kê danh sách phiếu thu trong khoảng thời gian

Đối với trường hợp xóa mẩu tin trong bảng Receipts, bạn có thể khai

báo thủ tục nội tại như ví dụ UD-12-2

: Khai báo xóa mẩu tin trong bảng

CREATE PROC udsDeleteReceipt

Rhi cần xóa tất cả mẩu tin trong bang Receipts, ban c6 thé khai báo

gọi thủ tục nội tại udsDeleteReceipt như ví dụ UD-12-3

Ví dụ UD-12-3: Khai báo xóa toàn bộ các mẩu tin

udsDeleteReceipt '’

GO

Trong trường hợp xóa một mẩu tin trong bảng Receipts, bạn có thể khai báo gọi thủ tục nội tại udsDeleteReceipt với tham số ứng với mã phiếu thu như ví dụ UD-12-4

Ví dụ UD-12-4: Khai báo xóa một mẩu tin

Trang 9

Ung dung: Sir dụng thủ tục nội tại trong ứng dụng

INSERT INTO Receipts

VALUES (@ReceiptNo, @ReceiptBatchNo, @ReceiptDate,

@ReceiptTypeID, @CustomerID, @CurrencyID,

@Amount, @ExchangeRate, @ReceiptAmount,

Trang 10

Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng 299

Nếu muốn tổng hợp tiên thu của mọi khách hàng trong tháng thì bạn

khai báo gọi thủ tục nội tại trên như ví dụ UD-12-7

udsReceiptByCustomer ''

GO

Khi thực thi khai báo trong ví dụ trên, ban có thé tim thấy kết quả

trình bày như hình UD-12-3

Resuts |[ Messages| te |

Hình UD-12-3: Tình hình thu trong tháng

Trong trường hợp tổng hợp tiển thu của từng khách hàng thì bạn

khai báo gọi thủ tục nội tại trên như ví dụ UD-12-8

Khi thực thi khai báo trong ví dụ trên, bạn có thể tìm thấy kết quả

trình bày như hình UD-12-4

Trang 11

Ví dụ UD-13: Khai báo thủ tục nội tại truy vấn|

CREATE PROC udsViewReceiptTypes

@ReceiptTypeld CHAR (3)

AS

SELECT * FROM ReceiptTypes

WHERE

ReceiptTypeld = CASE @ReceiptTypeTd

WHEN '' THEN ReceiptTypeld

ELSE @ReceiptTypelId END

&H Resutts | [y Messages

| ReceiptTypelD | ReceiptTypelnVietnamese aac esnasippinnn eee cel ae ee nl 8

Thu tiền bán hàng Thụ tiền nở mua hàng của khách hàng

Thu tiền đặc cọc mua hàng

Hình UD-13: Loại phiếu thu

Đố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

phiếu thu được chọn, bạn khai báo gọi thủ tục nội tại như ví dụ UD-13-2

Trang 12

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng soi [M?

Khi thuc thi thủ tục trên, bạn có thể tìm thấy thông tin của loại phiếu

thu như hình UD-13-1

Hình UD-18-1: Thông tin một mã loại phiếu thu

Đối với trường hợp xóa mẩu tin trong bảng ReceiptTypes, bạn có thể

khai báo thủ tục có tên udsDeleteReceiptTypes như ví dụ UD-13-3

ReceiptTypeld = CASE @ReceiptTypelId

WHEN '' THEN ReceiptTypeId

ELSE @ReceiptTypeId END

GO

Bạn có thể gọi thủ tục nội tại có tên udsDeleteReceiptTypes với hai

trường hợp, trường hợp xóa tất cả mẩu tin trong bảng Receipts bạn khai

báo như ví dụ UD-13-4

Ngoài ra, khi thêm mới hay cập nhật dữ liệu vào bảng Receipts, 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ã loại phiếu thu như ví dụ UD-13-6

Trang 13

Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng

INSERT INTO ReceiptTypes

VALUES (@ReceiptTypeld, @ReceiptTypeNameInVietnamese,

@Receipt TypeName InSecondLanguage, 1)

@Receipt TypeName InSecondLanguage

WHERE ReceiptTypeld = @ReceiptTypeld

Go

3.3 Bang ReceiptBatchs

Tuong tự như trên, khi làm việc với bảng ReceiptBatchs, đối với hành động truy vấn dữ liệu trong bảng ReceiptBatchs, chúng ta cần khai báo thủ tục nội tại như ví dụ UD-14

í dụ UD-14: Khai báo thủ tục nội tại truy vấn|

CREATE PROC udsViewReceiptBatchs

@ReceiptBatchNo VARCHAR (10)

AS

SELECT * FROM ReceiptBatchs

WHERE

ReceiptBatchNo = CASE @ReceiptBatchNo

WHEN '‘ THEN ReceiptBatchNo

ELSE @ReceiptBatchNo END

Trang 14

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 308 pa”

Hình UD-14: Danh sách lô phiếu thu

Trong trường hợp muốn liệt kê một mẩu tin ứng với một lô phiếu thu

được chọn, bạn khai báo gọi thủ tục nội tại như ví dụ UD-14-2

udsViewReceiptBatchs ' BR000004'

GO

Khi thực thi thủ tục trên, bạn có thể tìm thấy thông tin của lô phiếu

thu như hình UD-14-1

ff Results là Messages |

| | ReceiptBatchNo | ReceiptBatchDate | UserName | Discontinued |

1 [BR000004 ^ 20071014000000 khag 0

Hình UD-14-1: Thông tin một lô phiếu thu

Trong trường hợp xóa mẩu tin trong bảng ReceiptBatchs, bạn có thể khai báo thủ tục có tên udsDeleteReceiptBatchs như ví dụ UD-14-3

ReceiptBatchNo = CASE @ReceiptBatchNo

WHEN '' THEN ReceiptBatchNo

ELSE @ReceiptBatchNo END

GO

Trang 15

304 Ung dụng: Sử dụng thủ tục nội tại trong ứng dụng Nếu tạo thủ tục nội tại trong ví dụ trên thành công, bạn 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

RteceiptBatchs bạn khai báo như ví đụ UD-14-4

Ví dụ UD-14-4: Khai báo xóa tất cả mẩu tin

udsDeleteReceiptBatchs ''

GO

Đối với trường hợp xóa một mẩu tin, bạn khai báo gọi thủ tục

udsDeleteReceiptBatchs như ví đụ UD-14-5

Ví dụ UD-14-5: Khai báo xóa một mẩu tin

udsDeleteReceiptBatchs ' BR000014"

Go

Tuy nhiên, nếu cho phép người sử dụng thêm mới hay cập nhật dữ liệu vào bảng ReceiptBatchs, 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ã lô phiếu thu như ví du UD-14-6

Ví dụ UD-14-6: Khai báo thêm và cậ

CREATE PROC udsInsUpdReceiptBatchs

Tương tự như phần phiếu thu, để thống kê tiển chỉ của bộ phận làm

kế toán tổng hợp cho nhà cung cấp, bạn có thể khai báo một số thủ tục nội tại nhằm đáp ứng các yêu câu như: Liệt kê, thêm mới, cập nhật, xóa, tổng hợp tiền chi theo thời gian, tổng chỉ theo từng nhà cung cấp

Chẳng hạn, bạn khai báo thủ tục nội tại để liệt kê danh sách mẩu tin

trong bảng Payments nhu vi du UD-15

Trang 16

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 305 MP?

PaymentNo = CASE @PaymentNo

WHEN '' THEN PaymentNo

ELSE @PaymentNo END

Hình UD-1ð: Danh sách phiếu chỉ

Đối với trường hợp chỉ liệt kê thông tin của một phiếu chi, bạn khai báo gọi thủ tục nội tại tương tự như hình UD-15-1

Trang 17

I sos Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng

Hình UD-1ð-1: Liệt kê một phiếu chỉ

Nếu cho phép người sử dụng liệt kê danh sách phiếu chỉ trong khoảng thời gian, bạn có thể khai báo thủ tục nội tại như ví dụ UD-15-1

Payment Date >= CASE @StartDate

WHEN '' THEN CAST('1/1/1900' AS SMALLDATETIME)

ELSE CAST(@StartDate AS SMALLDATETIME) END

AND PaymentDate <= CASE @EndDate

WHEN '' THEN CAST('1/1/2079' AS SMALLDATETIME)

ELSE CAST (@EndDate AS SMALLDATETIME) END

Hình UD-1ð-2: Liệt kê danh sách phiếu thu trong khoảng thời gian

Trong trường hợp xóa mẩu tin trong bang Payments, bạn có thể khai

báo thủ tục nội tại như ví dụ UD-15-2.

Trang 18

Ứng dụng: Sử dụng thủ tục nội tại trong ứng dụng 307

Ví dụ UD-15-2: Khai bâo xóa mẩu (in trong bang Payments

CREATE PROC udsDeletePayment

DELETE FROM Payments

WHERE Payment No=@PaymentNo

Go

Khi cần xóa tất cả mẩu tin trong bang Payments, ban có thể khai bâo

gọi thủ tục nội tại udsDeletePayment như ví đụ UD-15-3

Ví dụ UĐ-15-3: Khai bâo xóa mẫu tỉn|

udsDeletePayment’’

GO

Trong trutng hgp x6a mĩt mau tin trong bang Payments, bạn có thĩ

khai bâo gọi thủ tục nội tại udsDeletePayment với tham số ứng với mê phiếu chỉ như ví dụ UD-15-4

Ví dụ UĐ-15-4: Khai bâo xóa mầu tin

udsDe1letePaymernr ' PAD0000109°

GO

Nếu cho phĩp người sử dụng thím mới hay cập nhật mẩu tin trong

bảng Payments, bạn khai bâo thủ tục dùng chung hai trường hợp năy dựa văo tham số @Fflag như ví dụ 15-5

Ví dụ UD-L5-5: Khai bầ thím mới bay cập nhật mẩu tin

CREATE PROC udsInsAnđUpdPayment

INSERT INTO Payments

VALUES (@PaymentNo, @PaymentBatchNo, @PaymentDate,

@PaymentTypelD, @SupplierID, @CurrencyID,

Ngày đăng: 11/08/2014, 00:24

HÌNH ẢNH LIÊN QUAN

Hình  UD-11-12:  Công  nợ  phải  chỉ  cho  nhà  cung  cấp. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-11-12: Công nợ phải chỉ cho nhà cung cấp (Trang 3)
Hình  UD-12:  Danh  sách  phiếu  thu. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-12: Danh sách phiếu thu (Trang 7)
Hình  UD-12-2:  Liệt  kê  danh  sách  phiếu  thu  trong  khoảng  thời  gian.  Đối  với  trường  hợp  xóa  mẩu  tin  trong  bảng  Receipts,  bạn  có  thể  khai  báo  thủ  tục  nội  tại  như  ví  dụ  UD-12-2 - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-12-2: Liệt kê danh sách phiếu thu trong khoảng thời gian. Đối với trường hợp xóa mẩu tin trong bảng Receipts, bạn có thể khai báo thủ tục nội tại như ví dụ UD-12-2 (Trang 8)
Hình  UD-12-3:  Tình  hình  thu  trong  tháng. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-12-3: Tình hình thu trong tháng (Trang 10)
Hình  UD-12-4:  Tình  hình  thu  của  khách  hàng  A0007. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-12-4: Tình hình thu của khách hàng A0007 (Trang 11)
Hình  UD-18-1:  Thông  tin  một  mã  loại  phiếu  thu. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-18-1: Thông tin một mã loại phiếu thu (Trang 12)
Hình  UD-14-1:  Thông  tin  một  lô  phiếu  thu. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-14-1: Thông tin một lô phiếu thu (Trang 14)
Hình  UD-15-3:  Tình  hình  thu  trong  tháng. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-15-3: Tình hình thu trong tháng (Trang 20)
Hình  UD-16-1:  Thông  tin  một  mã  loại  phiếu  chỉ. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-16-1: Thông tin một mã loại phiếu chỉ (Trang 21)
Hình  UD-17:  Danh  sách  lô  phiếu  chỉ. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-17: Danh sách lô phiếu chỉ (Trang 23)
Hình  UD-17-1:  Thông  tin  một  lô  phiếu  chỉ. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-17-1: Thông tin một lô phiếu chỉ (Trang 24)
Hình  UD-18-2:  Tình  hình  cân  đối  thu  uè  chỉ. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-18-2: Tình hình cân đối thu uè chỉ (Trang 30)
Hình  UD-19:  Liệt  kê  mẩu  tin  trong  bảng  ImportTypes. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-19: Liệt kê mẩu tin trong bảng ImportTypes (Trang 33)
Hình  UD-20:  Liệt  kê  mẩu  tin  trong  bang  ImportBatchs. - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
nh UD-20: Liệt kê mẩu tin trong bang ImportBatchs (Trang 35)
Bảng  ImportBatchsj - SQL server 2005 – Lập trình, thủ tục và hàm part 9 pps
ng ImportBatchsj (Trang 36)
w