Tải bản đầy đủ (.docx) (21 trang)

Báo cáo môn SQL Server - Hệ thống quản lý bán hàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (313.49 KB, 21 trang )

HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA: CNTT
O0O
BÁO CÁO ĐỒ ÁN
MÔN: CÔNG NGHỆ CLIENT – SERVER
ĐỀ TÀI:
HỆ THỐNG QUẢN LÝ BÁN HÀNG
Giáo viên hướng dẫn : NGUYỄN MẠNH HÙNG
Sinh viên thực hiện : NGUYỄN HUY LINH (TH9A)
LÊ THỊ DUYÊN (TH9B)
NGUYỄN TUẤN ANH (TH9B)
Hà Nội, tháng 12 năm 2013
Trang số: 1/18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
BÁO CÁO CÔNG NGHỆ CLIENT – SERVER
Đề tài: HỆ THỐNG QUẢN LÝ BÁN HÀNG
LỜI NÓI ĐẦU
Giới thiệu chung:
Ngày nay, khi cuộc sống của mỗi người dân đang từng bước được nâng cao
thì nhu cầu về mua sắm, vui chơi giải trí ngày càng được chú trọng. Do đó, các
doanh nghiệp cũng quan tâm ưu tiên cho việc phát triển các khu thương mại mua
sắm, nhằm đáp ứng nhu cầu của người dân. Và siêu thị là một hình thức mua sắm
có hiệu quả trong việc đáp ứng các nhu cầu tiêu dùng của mọi người.
Với sự phát triển ngày càng rộng, yêu cầu tin học hóa các quy trình nghiệp
vụ trong siêu thị là tất yếu, nhằm mục đích làm đơn giản hóa các nghiệp vụ cũng
như làm cho khả năng phục vụ khách hàng trở nên nhanh chóng, hiệu quả.
Giới thiệu đề tài:
Chương trình Quản lý bán hàng kế thừa mô hình hoạt động của các siêu thị
hiện trên thực tế. Đồng thời, ứng dụng công nghệ mới vời mục đích làm cho
chương trình có thể đáp ứng được nhu cầu quản lý ngày càng phức tạp với khối
lượng thông tin ngày càng lớn, dễ dàng trong triển khai cũng như trong ứng dụng.


LỜI CẢM ƠN
Chúng em xin trân thành cảm ơn thầy giáo Nguyễn Mạnh Hùng – giảng viên
môn Công nghệ Client – Server, Học viện KTQS đã giúp đỡ chúng em nhiều kiến
thức quý giá trong quá trình thực hiện bản báo cáo này.
Trang số: 2 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
I. KHÁI QUÁT NGHIỆP VỤ CHÍNH TRONG SIÊU THỊ:
1. Nghiệp vụ nhập hàng
Khi nhập hàng từ nhà cung cấp, nhân viên nhập hàng sẽ tiến hành lập
phiếu nhập và cập nhật hàng hóa vào cơ sở dữ liệu.
2. Nghiệp vụ xuất hàng
Khi có yêu cầu xuất hàng lên quầy, nhân viên xuất hàng sẽ kiểm tra hàng
trong kho, tiến hàng lập phiếu xuất hàng và cập nhật hàng vào cơ sở dữ
liệu.
3. Nghiệp vụ bán hàng
Khi khách tới mua hàng và yêu cầu thanh toán, nhân viên thu ngân sẽ
tính tiền cho khách, lập hóa đơn và cập nhật vào cơ sở dữ liệu.
II. YÊU CẦU XÂY DỰNG ĐỀ TÀI
1. Đặc điểm của hệ thống:
- Có khả năng đáp ứng đầy đủ và hỗ trợ thực hiện tốt các nghiệp vụ lưu
trữ dữ liệu chính trong siêu thị.
- Có khả năng tra cứu thông tin cho từng đối tượng.
2. Phân tích các đối tượng sử dụng:
a) Người quản lý
Mô tả Là giám đốc hoặc những người quản lý các bộ phận trong
siêu thị
Vai trò Chịu trách nhiệm quản lý hoạt động của siêu thị hay bộ
phận riêng lẻ.
Quyền Sử dụng toàn bộ hoặc một phần chức năng (Bảng dữ liệu)
của hệ thống

b) Nhân viên nhập hàng
Mô tả Nhân viên làm việc ở bộ phận nhập hàng.
Thực hiện nghiệp vụ nhập hàng vào kho.
Vai trò Chịu trách nhiệm trong khâu nhập hàng từ nhà cung cấp,
lập phiếu nhập hàng.
Quyền Sử dụng các chức năng: lập phiếu nhậ, quản lý thông tin
nhóm hàng, ngành hàng, hàng hóa và nhà cung cấp.
c) Nhân viên xuất hàng
Mô tả Nhân viên làm việc ở bộ phận xuất hàng (bầy hàng hóa
Trang số: 3 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
lên quầy).
Vai trò Chịu trách nhiệm trong khâu xuất hàng từ kho lên quầy,
lập phiếu xuất hàng.
Quyền Sử dụng chức năng: lập phiếu xuất, xem thông tin hàng
hóa, kiểm tra hàng tồn.
d) Nhân viên bán hàng
Mô tả Nhân viên thực hiện nghiệp vụ thu ngân.
Vai trò Chịu trách nhiệm trong khâu thanh toán cho khách hàng.
Quyền Sử dụng chức năng: lập hóa đơn, xem thông tin hàng hóa,
kiểm kê hàng tồn.
e) Nhân viên tin học
Mô tả Nhân viên làm việc trong bộ phận tin học.
Vai trò Chịu trách nhiệm trong việc lập báo cáo thống kê, quản
trị hệ thống.
Quyền Sử dụng chức năng: lập báo cáo thống kê, xem thông tin
các phiếu nhập, xuất, phiếu kiểm kê.
3. Các chức năng của hệ thống:
- Lưu trữ dữ liệu theo nghiệp vụ siêu thị.
- Xây dựng các hàm, thủ tục, trigger, các check, default, … phù hợp với

nghiệp vụ.
- Đóng vai trò các người dùng khác nhau để thực hiện phân quyền.
III. THIẾT KẾ CƠ SỞ DỮ LIỆU
Các bảng dữ liệu:
1. Bảng HoaDonBanHang
Column
Name
Description Datatype Length
Allow
Null
MaHD Mã hóa đơn Int Notnull
NgayBan Ngày bán datetime Null
TongTienHD Tổng tiền hóa đơn Float Null
MaNV Mã nhân viên bán Int Null
Trang số: 4 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
Trang số: 5 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
2. Bảng CT_HoaDon
Column
Name
Description Datatype Length
Allow
Null
MaHD Mã hóa đơn Int Notnull
MaHH Mã hàng hóa Int Notnull
SoLuong Số lượng Int Null
DonGia Đơn giá Float Null
TiLeVAT Tỉ lệ VAT Float Null
ThanhTien ThanhTien Float null

3. Bảng HangHoa
Column
Name
Description Datatype Length
Allow
Null
MaHH Mã hàng hóa Int Notnull
MaNhom Mã nhóm Int Null
TenHH Tên hàng hóa Nvarchar 50 Null
DonViTinh Đơn vị tính Nvarchar 50 Null
HanSD Hạn sử dụng NgayThang(date) Null
TrongLuong Trọng lượng Float Null
NoiSX Nơi sản xuất
DiaChi(nvarchar(50)
)
50 Null
4. Bảng NganhHang
Column
Name
Description Datatype Length
Allow
Null
MaNganh Mã ngành Int Notnull
TenNganh Tên ngành Nvarchar 50 Null
5. Bảng NhomHang
Column
Name
Description Datatype Length
Allow
Null

MaNhom Mã nhóm Int Notnull
Trang số: 6 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
MaNganh Mã ngành Int Null
TenNhom Tên nhóm Nvarchar 50 Null
6. Bảng PhieuNhap
Column
Name
Description Datatype Length
Allow
Null
MaPN Mã phiếu nhập Int Notnull
MaNCC Mã nhà cung cấp Int Notnull
NgayNhap Ngày nhập Datetime Null
MaChungTu Mã chứng từ Nvarchar 50 Null
LoaiHoaDon Loại hóa đơn Nvarchar 50 Null
TongPhaiTra Tổng phải trả Float Null
MaNV Mã nhân viên Int Null
7. Bảng CT_PhieuNhap
Column
Name
Description Datatype Length
Allow
Null
MaPN Mã phiếu nhập Int Notnull
MaHH Mã hàng hóa Int Notnull
SoLuong Số lượng Int Null
DonGia Đơn giá Float Null
ChietKhau Chiết khấu Float Null
NgayCapNhat Ngày cập nhật Datetime Null

8. Bảng NhaCungCap
Column
Name
Description Datatype Length
Allow
Null
MaNCC Mã nhà cung cấp Int Notnull
TenNCC
Tên nhà cung
cấp
Nvarchar 50 Null
DiaChi
Địa chỉ nhà cung
cấp
DiaChi(nvarchar(50)
)
50 Null
SoDT Số ĐT Nvarchar 25 Null
Trang số: 7 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
Fax Fax Nvarchar 50 Null
Email Email Nvarchar 50 Null
Trang số: 8 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
9. Bảng ChucVu
Column
Name
Description Datatype Length
Allow
Null

MaCV Mã chức vụ Int Notnull
TenCV Tên chức vụ Nvarchar 50 Null
10. Bảng NhanVien
Column
Name
Description Datatype Length
Allow
Null
MaNV Mã nhân viên Int Notnull
MaCV Mã chức vụ Int Null
MaQuanLy
Mã người quản
lý trực tiếp
Int Null
TenNV Tên nhân viên Nvarchar 50 Null
GioiTinh Giới tính Nchar 1 Null
NgaySinh Ngày sinh NgayThang(date) Null
DiaChi Địa chỉ
DiaChi(nvarchar(50)
)
50 Null
SoDT Số ĐT Nvarchar 25 Null
11. Bảng QuyenDangNhap
Column Name Description Datatype Length
Allow
Null
TenDangNhap Tên đăng nhập Nvarchar 50 Notnull
MaCV Mã chức vụ Int 50 Null
MatKhau Mật khẩu Nvarchar 50
12. Bảng PhieuXuat

Column
Name
Description Datatype Length
Allow
Null
MaPX Mã phiếu xuất Int Notnull
NgayXua Ngày xuất Datetime
Trang số: 9 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
t
MaNV Mã nhân viên xuất Int Null
13. Bảng CT_PhieuXuat
Column
Name
Description Datatype Length
Allow
Null
MaPX Mã phiếu xuất Int Notnull
MaHH Mã hàng hóa Int Notnull
SoLuong Số lượng Int Null
Quan hệ giữa các bảng dữ liệu:
BanHang:
Trang số: 10 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
Trang số: 11 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
HangHoa:
Trang số: 12 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
NhapHang:

Trang số: 13 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
QuanLy:
Trang số: 14 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
XuatHang:
Trang số: 15 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
IV. MÔ TẢ CÁC THỦ TỤC, HÀM VÀ TRIGGERS:
1. Hàm tính tuổi của nhân viên
Tính tuổi của nhân viên
CREATE FUNCTION FNC_TinhTuoi(@ngay smalldatetime)
RETURNS int
AS
BEGIN
DECLARE @KetQua int
SET @KetQua = YEAR(GETDATE()) - YEAR(@ngay)
RETURN @KetQua
END
Tên hàm: FNC_TinhTuoi
Kết quả thực hiện:
Dựa vào năm sinh của nhân viên, tính ra tuổi hiện thời của nhân viên
đó.
Các bước thực hiện:
[1] Lấy ra năm sinh của nhân viên
[2] Thực hiện hàm với năm sinh lấy được: Hàm sẽ lấy năm hiện thời trừ
đi năm sinh của nhân viên.
2. Thủ tục hiển thị thông tin cấp trên trực tiếp của một nhân viên
ALTER PROC [dbo].[ThongTin_QuanLy_TrucTiep]
@MaNV int

AS
BEGIN
SELECT * FROM QuanLy.NhanVien WHERE MaNV = (SELECT MaQuanLy FROM
QuanLy.NhanVien WHERE MaNV= @MaNV)
END
Tên thủ tục: ThongTin_QuanLy_TrucTiep
Kết quả thực hiện:
Hiển thị các thông tin của người quản lý trực tiếp của một nhân viên.
Các bước thực hiện:
[1] Lấy ra mã quản lý nhân viên đó trong bảng NhanVien.
[2] Lấy ra thông tin có mã nhân viên là mã quản lý vừa lấy được trong
bảng NhanVien.
3. Thủ tục lấy ra tất cả các nhân viên cấp trên của một nhân viên nào
đó
ALTER PROC [dbo].[TK_CapTren]
@MaNV int
AS
BEGIN
WITH Generation(MaNV) AS
(
Trang số: 16 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
SELECT MaQuanLy FROM QuanLy.NhanVien WHERE MaNV = @MaNV
UNION ALL First recursive member returns male ancestors of the
previous generation.
SELECT NhanVien.MaQuanLy FROM Generation, QuanLy.NhanVien WHERE
Generation.MaNV = NhanVien.MaNV
)
SELECT NhanVien.MaNV, TenNV, MaQuanLy
FROM Generation, QuanLy.NhanVien WHERE Generation.MaNV = NhanVien.MaNV;

END
Tên thủ tục: TK_CapTren
Kết quả thực hiện:
Hiển thị được tất cả các nhân viên cấp trên của một nhân viên.
Các bước thực hiện:
[1] Dựa vào MaNV, lấy ra MaQuanLy của nhân viên đó.
[2] Dựa vào MaQuanLy, lấy ra trong bảng NhanVien MaQuanLy của
nhân viên có MaNV bằng MaQuanLy vừa lấy ra.
[3] Nối các kết quả với nhau, ta được tất cả nhân viên cấp trên của nhân
viên ban đầu.
4. Trigger kiểm tra để không có nhân viên nào tự quản lý chính mình
CREATE TRIGGER QuanLy.NhanVien_Khac_QuanLy
ON QuanLy.NhanVien
AFTER Insert
AS
IF EXISTS (SELECT * FROM inserted WHERE MaQuanLy = MaNV)
BEGIN
ROLLBACK TRAN
RAISERROR('MaQuanLy <> MaNV !!!',16,1)
RETURN
END
GO
Tên trigger: QuanLy.NhanVien_Khac_QuanLy
Kết quả thực hiện:
Khi chèn thêm nhân viên vào bảng NhanVien, không cho phép nhân viên
nào chèn vào MaNV = MaQuanLy
Các bước thực hiện:
[1] Kiểm tra trang bản inserted, nếu MaQuanLy = MaNV thì phát sinh
lỗi, nếu sai thì cho phép chèn.
V. MÔ TẢ CÁC VIEWS THEO MẪU:

1. Kiểm tra bảng CT_HoaDon xem những mặt hàng nào bán chạy
SELECT MaHH, SUM(SoLuong)
FROM BanHang.CT_HoaDon
GROUP BY MaHH
HAVING SUM(SoLuong)>200
Trang số: 17 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
VI. QUẢN TRỊ CSDL:
Tạo thêm các login
EXEC sp_addlogin 'ten_login', 'password', ['du_lieu']
CREATE LOGIN S_GiamDoc WITH PASSWORD = 'giamdoc'
CREATE LOGIN S_NVQLBanHang WITH PASSWORD = 'nvqlbanhang'
CREATE LOGIN S_NVQLNhapHang WITH PASSWORD = 'nvqlnhaphang'
CREATE LOGIN S_NVQLXuatHang WITH PASSWORD = 'nvqlxuathang'
CREATE LOGIN S_NVBanHang WITH PASSWORD = 'nvbanhang'
CREATE LOGIN S_NVNhapHang WITH PASSWORD = 'nvnhaphang'
CREATE LOGIN S_NVXuatHang WITH PASSWORD = 'nvxuathang'
CREATE LOGIN S_KhachHang WITH PASSWORD = 'khachhang'
Xóa login:
EXEC sp_droplogin 'ten_login'
drop login 'ten_login'
Thay đổi người đăng nhập:
alter login {[enable | disable] with {password = '' | default_database = }}
Tạo ít nhất 03 database roles: dbr_GiamDoc, dbr_NVQLBanHang, dbr_NVQLNhapHang,
dbr_NVQLXuatHang, dbr_NVBanHang, dbr_NVXuatHang, dbr_NVNhapHang, dbr_KhachHang
Tạo ít nhất 06 database users:
CREATE USER US_GiamDoc FOR LOGIN S_GiamDoc
CREATE USER US_NVQLBanHang FOR LOGIN S_NVQLBanHang
CREATE USER US_NVQLNhapHang FOR LOGIN S_NVQLNhapHang
CREATE USER US_NVQLXuatHang FOR LOGIN S_NVQLXuatHang

CREATE USER US_NVBanHang FOR LOGIN S_NVBanHang
CREATE USER US_NhapHang FOR LOGIN S_NVNhapHang
CREATE USER US_XuatHang FOR LOGIN S_NVXuatHang
CREATE USER US_KhachHang FOR LOGIN S_KhachHang
Chỉ định nhóm cho các users:
EXEC sp_addrolemember 'db_owner', 'dbr_GiamDoc'
Phân quyền ở mức cột, bảng, schema:
Cấp quyền đối với mỗi schema:
GRANT permission [ , n ] ON SCHEMA :: schema_name
TO database_principal [ , n ]
[ WITH GRANT OPTION ]
[ AS granting_principal ]
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA :: BanHang
TO US_NVQLBanHang
WITH GRANT OPTION
Phân quyền ở mức bảng:
GRANT SELECT, INSERT, UPDATE, DELETE ON BanHang.CT_HoaDon TO US_NVQLBanHang
DENY SELECT ON BanHang.CT_HoaDon TO US_NVQLBanHang
GRANT SELECT, INSERT, UPDATE, DELETE ON NhapHang.CT_PhieuNhap TO US_NVQLNhapHang
DENY SELECT ON NhapHang.CT_PhieuNhap TO US_NVQLNhapHang
Trang số: 18 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
GRANT SELECT, INSERT, UPDATE, DELETE ON XuatHang.CT_PhieuXuat TO US_NVQLXuatHang
DENY SELECT ON XuatHang.CT_PhieuXuat TO US_NVQLXuatHang
Phân quyền ở mức cột:
GRANT SELECT ON BanHang.CT_HoaDon(MaHD, MaHH, SoLuong, DonGia, TiLeVAT, ThanhTien) TO
US_KhachHang
REVOKE GRANT OPTION FOR SELECT ON BanHang.CT_HoaDon TO US_KhachHang CASCADE
VII. MÃ NGUỒN MỘT SỐ THỦ TỤC, HÀM, TRIGGER
Phải có trigger theo dõi các thao tác trên CSDL

Trigger Kiểm tra trong bảng Nhân viên sao cho không có nhân viên nào làm Quản lý
cho chính mình
CREATE TRIGGER QuanLy.NhanVien_Khac_QuanLy
ON QuanLy.NhanVien
AFTER Insert
AS
IF EXISTS (SELECT * FROM inserted WHERE MaQuanLy = MaNV)
BEGIN
ROLLBACK TRAN
RAISERROR('MaQuanLy <> MaNV !!!',16,1)
RETURN
END
GO
Trigger Kiểm tra Chỉ có một Quản lý cao nhất
CREATE TRIGGER QuanLy.DuyNhat_QuanLy_CaoNhat
ON QuanLy.NhanVien
FOR INSERT, UPDATE
AS
IF EXISTS (SELECT * FROM inserted WHERE MaQuanLy IS NULL)
AND ((SELECT count(*) FROM QuanLy.NhanVien WHERE NhanVien.MaQuanLy IS NULL) >= 2)
BEGIN
ROLLBACK TRANSACTION
RAISERROR('Exit Header',16,1)
RETURN
END
GO
Trigger Kiểm tra trường hợp Nhân viên là Quản lý của chính mình thông qua những
Nhân viên khác
CREATE TRIGGER QuanLy.NhanVien_Tu_QuanLy_Minh
ON QuanLy.NhanVien

FOR INSERT, UPDATE
AS
IF UPDATE(MaQuanLy)
Thay doi thu truong cua nhan vien
BEGIN
DECLARE @x CHAR(2), @y CHAR(2), @xx CHAR(2)
Xac dinh ma cua nhan vien Emp_ID co thay doi thu truong
SELECT @xx = inserted.MaNV FROM inserted
Luu ma nhan vien vua bi sua doi MaNV
SELECT @x = @xx
SELECT @y= '*'
Tìm người lên trên
Trang số: 19 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
WHILE @y IS NOT NULL
BEGIN
SELECT @y = MaNV FROM Nhanvien WHERE MaNV = @x
IF @xx = @y
BEGIN
ROLLBACK TRAN
RAISERROR('Lỗi: Nhân viên là Quản lý của chính mình!',16,10)
RETURN
END
ELSE
SET @x = @y
END
END
GO
Trigger kiểm tra cấp trên có tồn tại hay không, nếu không tồn tại thì không cho
chèn

CREATE TRIGGER TonTai_CapTren ON QuanLy.NhanVien
FOR INSERT, UPDATE
AS
IF NOT EXISTS(SELECT * FROM QuanLy.NhanVien, inserted
WHERE QuanLy.NhanVien.MaNV = inserted.MaQuanLy OR inserted.MaQuanLy IS NULL)
BEGIN
ROLLBACK TRAN
RAISERROR('Không tồn tại cấp trên này!',16,1)
RETURN
END
Trigger Xóa hóa đơn bán hàng
Xóa trong bảng CT_HoaDon trước (vị trí có MaHD bị xóa trong bảng deleted)
Xóa trong bảng HoaDonBanHang (vị trí có MaHD bị xóa trong bảng deleted)
CREATE TRIGGER Xoa_HoaDonBanHang ON BanHang.HoaDonBanHang
FOR DELETE
AS
BEGIN
DELETE FROM BanHang.CT_HoaDon WHERE BanHang.CT_HoaDon.MaHD in (SELECT MaHD FROM
deleted)
DELETE FROM BanHang.HoaDonBanHang WHERE BanHang.HoaDonBanHang.MaHD in (SELECT MaHD
FROM deleted)
END
Trigger Xóa Phiếu nhập
Xóa trong bảng CT_PhieuNhap trước (vị trí có MaPN bị xóa trong bảng deleted)
Xóa trong bảng PhieuNhap (vị trí có MaPN bị xóa trong bảng deleted)
CREATE TRIGGER Xoa_PhieuNhap ON NhapHang.PhieuNhap
FOR DELETE
AS
BEGIN
DELETE FROM NhapHang.CT_PhieuNhap WHERE NhapHang.CT_PhieuNhap.MaPN in (SELECT MaPN

FROM deleted)
DELETE FROM NhapHang.PhieuNhap WHERE NhapHang.PhieuNhap.MaPN in (SELECT MaPN FROM
deleted)
END
Trigger Xóa Phiếu xuất
Xóa trong bảng CT_PhieuXuat trước (vị trí có MaPX bị xóa trong bảng deleted)
Xóa trong bảng PhieuXuat (vị trí có MaPX bị xóa trong bảng deleted)
Trang số: 20 / 18
Môn học: Công nghệ Client Server Báo cáo đồ án: Quản lý bán hàng
CREATE TRIGGER Xoa_PhieuXuat ON XuatHang.PhieuXuat
FOR DELETE
AS
BEGIN
DELETE FROM XuatHang.CT_PhieuXuat WHERE XuatHang.CT_PhieuXuat.MaPX in (SELECT MaPX
FROM deleted)
DELETE FROM XuatHang.PhieuXuat WHERE XuatHang.PhieuXuat.MaPX in (SELECT MaPX FROM
deleted)
END

Tìm tuổi của nhân viên
CREATE FUNCTION FNC_TinhTuoi(@ngay smalldatetime)
RETURNS int
AS
BEGIN
DECLARE @KetQua int
SET @KetQua = YEAR(GETDATE()) - YEAR(@ngay)
RETURN @KetQua
END
VIII. KẾT LUẬN
Do chưa được tiếp xúc thực tế nhiều, nên bài làm của chúng em còn

nhiều sai sót cần được sửa đổi, bổ sung.
Chúng em kính mong thầy cô cho chúng em đánh giá để chúng em hoàn
thiện hơn bài báo cáo của mình.
Chúng em xin trân thành cảm ơn!
Hà Nội, tháng 12 năm 2013
Trang số: 21 / 18

×