bftarane
یک شنبه 08 بهمن 1391, 10:37 صبح
سلام و خدا قوّت
دوستان من می خوام با استفاده از لینک زیر Image Gallery درست کنم
http://www.aspsnippets.com/Articles/Image-Gallery-using-ASP.Net-DataList-Control-Part-I---Pagination.aspx
منتها با یه فرق اینکه می خوام
Image Gallery بر اساس گروه محصول باشه
یعنی اگه Cat_id مثلاً 15 باشه عکسهای پوشاک نشون داده بشه، اگه 14 باشه مثلاً کیف و کفش
بنابراین اومدم sp رو به این صورت نوشتم ولی با این ارور مواجه میشم دلیل چیه؟
Must declare the scalar variable "@cat_id".
USE [vo]
GO
/****** Object: StoredProcedure [dbo].[spx_Pager] Script Date: 01/27/2013 10:54:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spx_Pager]
@PageNo int = 1,
@cat_id int,
@ItemsPerPage int = 10,
@TotalRows int out
AS
BEGIN
SET NOCOUNT ON
DECLARE
@StartIdx int,
@SQL nvarchar(max),
@SQL_Conditions nvarchar(max),
@EndIdx int
IF @PageNo < 1 SET @PageNo = 1
IF @ItemsPerPage < 1 SET @ItemsPerPage = 10
SET @StartIdx = (@PageNo -1) * @ItemsPerPage + 1
SET @EndIdx = (@StartIdx + @ItemsPerPage) - 1
SET @SQL = 'SELECT pd_picname
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY pd_id) AS Row, *
FROM tbl_product ) AS tbl WHERE cat_id=@cat_id Row >= '
+ CONVERT(varchar(9), @StartIdx) + ' AND
Row <= ' + CONVERT(varchar(9), @EndIdx)
EXEC sp_executesql @SQL
SET @SQL = 'SELECT @TotalRows=COUNT(*) FROM tbl_product'
EXEC sp_executesql
@query = @SQL,
@params = N'@TotalRows INT OUTPUT',
@TotalRows = @TotalRows OUTPUT
END
در ضمن من این کد رو هم نوشتم منظورم اینه که cat_id رو مقدار دهی کردم (#C)
SqlCommand cmd = new SqlCommand("spx_Pager");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@cat_id", SqlDbType.Int).Value = 15;
من خودم فکر می کنم در این قسمت شاید اشتباهی کرده باشم
FROM tbl_product ) AS tbl WHERE cat_id=@cat_id Row >= '
لطفاً راهنماییم کنید.
دوستان من می خوام با استفاده از لینک زیر Image Gallery درست کنم
http://www.aspsnippets.com/Articles/Image-Gallery-using-ASP.Net-DataList-Control-Part-I---Pagination.aspx
منتها با یه فرق اینکه می خوام
Image Gallery بر اساس گروه محصول باشه
یعنی اگه Cat_id مثلاً 15 باشه عکسهای پوشاک نشون داده بشه، اگه 14 باشه مثلاً کیف و کفش
بنابراین اومدم sp رو به این صورت نوشتم ولی با این ارور مواجه میشم دلیل چیه؟
Must declare the scalar variable "@cat_id".
USE [vo]
GO
/****** Object: StoredProcedure [dbo].[spx_Pager] Script Date: 01/27/2013 10:54:50 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spx_Pager]
@PageNo int = 1,
@cat_id int,
@ItemsPerPage int = 10,
@TotalRows int out
AS
BEGIN
SET NOCOUNT ON
DECLARE
@StartIdx int,
@SQL nvarchar(max),
@SQL_Conditions nvarchar(max),
@EndIdx int
IF @PageNo < 1 SET @PageNo = 1
IF @ItemsPerPage < 1 SET @ItemsPerPage = 10
SET @StartIdx = (@PageNo -1) * @ItemsPerPage + 1
SET @EndIdx = (@StartIdx + @ItemsPerPage) - 1
SET @SQL = 'SELECT pd_picname
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY pd_id) AS Row, *
FROM tbl_product ) AS tbl WHERE cat_id=@cat_id Row >= '
+ CONVERT(varchar(9), @StartIdx) + ' AND
Row <= ' + CONVERT(varchar(9), @EndIdx)
EXEC sp_executesql @SQL
SET @SQL = 'SELECT @TotalRows=COUNT(*) FROM tbl_product'
EXEC sp_executesql
@query = @SQL,
@params = N'@TotalRows INT OUTPUT',
@TotalRows = @TotalRows OUTPUT
END
در ضمن من این کد رو هم نوشتم منظورم اینه که cat_id رو مقدار دهی کردم (#C)
SqlCommand cmd = new SqlCommand("spx_Pager");
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@cat_id", SqlDbType.Int).Value = 15;
من خودم فکر می کنم در این قسمت شاید اشتباهی کرده باشم
FROM tbl_product ) AS tbl WHERE cat_id=@cat_id Row >= '
لطفاً راهنماییم کنید.