Root

Welcome to Root.niceboards.org
Chào mừng bạn đến với 4rum học tập, chia sẻ kinh nghiệm và Tài liệu, Ebook miễn phí
Nếu đã có tài khoản vui lòng đăng nhập hoặc chỉ mất 30s để Đăng ký
Thanks!
Root

Hôm qua là quá khứ - Ngày mai là bí ẩn - Hôm nay là một món quà


You are not connected. Please login or register

Viết Store PROCEDURE phần 2

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down  Thông điệp [Trang 1 trong tổng số 1 trang]

1 Viết Store PROCEDURE phần 2 on Tue Sep 28, 2010 2:11 am

Admin


Admin
1. Hàm lấy tên miền của ứng dụng

Bạn cần viết một hàm lấy thông tin domain của bạn để tiện cho việc viết các Store proceduce

-- ================================
-- Author: [You must be registered and logged in to see this link.]
-- ================================
CREATE FUNCTION dbo.ufDomainName()
RETURNS VarChar(100)
AS
BEGIN
RETURN 'http://www.hmweb.com.vn'
END
2. Thủ tục hiển thị menu đa cấp

-- Bạn có thề nhấn vào đây sẽ dễ đọc hiểu hơn
Thủ tục sau sẽ thực hiện việc hiển thị menu đa cấp, tất cả sẽ được thực hiện bằng Store, Trong code khi muốn hiển thị menu đa cấp bạn chỉ cần dùng Gridview để hiển thị.
-- Trong thủ tục này mình chỉ viết đến cấp 3. Nếu website của bạn có nhiều hơn 3 cấp bạn có thể sửa lại cho phù hợp (website của mình hmweb.com.vn cũng đến cấp 3)

-- ================================
-- Author: [You must be registered and logged in to see this link.]
-- ================================
CREATE PROCEDURE [dbo].[spTB_Category_LeftMenu]
@TabID int,
@CateID int
AS
-- Nếu @TabID=0 thì Menu chỉ gồm cấp 1
IF @TabID=0
BEGIN
SELECT
TB_Category.CateID,
TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' >'+ CateName +'</A>' AS CateName,
TB_Category.Decen,
TB_Category.Depth,
TB_Category.Link,
TB_Category.CssClass
FROM TB_Category
WHERE TB_Category.Decen=0 ORDER BY TB_Category.Depth
END
ELSE
-- Nếu @TabID>0 thì hiển thị các cấp phụ thuộc vào @CateID
BEGIN
-- Nếu @CateID=0 thì hiển thị đến Menu cấp 2
IF @CateID=0
BEGIN
SELECT
TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass FROM TB_Category
WHERE TB_Category.Decen=0 AND ParentID=@TabID
UNION
SELECT
TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass FROM TB_Category
WHERE TB_Category.Decen=1 AND TB_Category.ParentID=@TabID
UNION
SELECT TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass
FROM TB_Category
WHERE TB_Category.Decen=0 AND TB_Category.CateID<>@TabID
ORDER BY TB_Category.Depth
END
ELSE
-- Ngược lại @CateID>0 hiển thị đến Menu cấp 3
BEGIN
SELECT TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass
FROM TB_Category
WHERE TB_Category.Decen=0 AND TB_Category.CateID=@TabID
UNION
SELECT TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass
FROM TB_Category
WHERE TB_Category.Decen=1 AND TB_Category.ParentID=@TabID
UNION
SELECT TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass
FROM TB_Category
WHERE TB_Category.Decen=2 AND TB_Category.ParentID=@CateID
UNION
SELECT TB_Category.CateID, TB_Category.ParentID,
'<A href='''+ dbo.ufDomainName()+Link +''' class='''+CssClass+'''>'+CateName +'</A>' AS CateName,
TB_Category.Decen, TB_Category.Depth, TB_Category.Link, TB_Category.CssClass FROM TB_Category
WHERE TB_Category.Decen=0 AND TB_Category.CateID<>@TabID
ORDER BY TB_Category.Depth
END
END

Bạn hãy chạy thử với câu lệnh sau EXEC spTB_Category_LeftMenu 5,9 --> khi đó kết quả sẽ được hiển thị như bảng sau



Trong kết quả trên bạn thấy trong trường CateName có đầy đủ cả liên kết và class đã được định nghĩa trong Bảng TB_Category như những bài trước đã viết (Trường ClassName theo cấp menu được sinh tự động bằng spTB_Categoey_Edit). Trong code bạn chỉ cần viết các ClassName trong css để hiển thị cho phù hợp. Trường Link của bạn nếu có sẽ hiển thị trong trường CateName ví dụ với CateID=5 có Link=?Tab=5 khi đó trường CateName trong store trên sẽ như sau:
<A href='http://www.hmweb.com.vn?Tab=5' class='MenuLevel_1'>Thể thao</A>

3. Thủ tục GetSubTree
Tiếp theo là thủ tục để hiển thị tất cả các phần tử là con của một cấp menu. Bạn viết Procedure như sau:

-- =============================================
-- Author: [You must be registered and logged in to see this link.]
-- Description: <GetSubTree>
-- =============================================
CREATE PROCEDURE [dbo].[spTB_Category_GetSubTree]
@CateID int
AS
BEGIN
SELECT CateID,
ParentID,
CASE Decen
WHEN 0 THEN CateName
WHEN 1 THEN '* '+ CateName
WHEN 2 THEN '* * '+ CateName
WHEN 3 THEN '* * :: ' + CateName
WHEN 4 THEN '* * :: -- ' +CateName
WHEN 5 THEN '* * :: -- --' +CateName
END AS CateName,
Decen,
Depth,
Link,
Target,
CssClass,
Active
FROM TB_Category WHERE ParentID=@CateID
ORDER BY Depth
END

Vậy là đã có các thủ tục cơ bản của bảng Category. Website của bạn có thể có những yêu cầu khác, bạn có thể viết thêm các thủ tục theo yêu cầu. Tiếp theo chúng ta sẽ viết các hàm và procedure cho bảng TB_News

Xem lý lịch thành viên http://root.nicetopic.net

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang  Thông điệp [Trang 1 trong tổng số 1 trang]

Permissions in this forum:
Bạn không có quyền trả lời bài viết