نقل قول: صفحه بندی گریدویو
سلام به نظر من اول تست کن ببین sp جواب بر مي گردونه پارامترهای ورودی رو بررسی کن که درست ارسال بشند
نقل قول: صفحه بندی گریدویو
نقل قول:
نوشته شده توسط
taghi.km
سلام به نظر من اول تست کن ببین sp جواب بر مي گردونه پارامترهای ورودی رو بررسی کن که درست ارسال بشند
من خیلی سرچ کردم اما متوجه نشدم میشه لطفاً بگید چطور اینکارو بکنم؟
ممنون
نقل قول: صفحه بندی گریدویو
از Managment Studio خود SQL Server امتحان کنین
نقل قول: صفحه بندی گریدویو
نقل قول:
نوشته شده توسط
ahmad156
از Managment Studio خود SQL Server امتحان کنین
:لبخند:
میشه لطفاً بگید چطور اینکارو بکنم؟ من تا حالا اینکارو نکردم :خجالت:
نقل قول: صفحه بندی گریدویو
نقل قول: صفحه بندی گریدویو
رو این خط
SqlCommand cmd = new SqlCommand();
کلید F9 رو بزن بعد با کلید F10 برنامه رو Trace کن
پارامترهای ارسالی رو میتونی با راست کلیک روی پارامتر و انتخاب گزینه های watch را بررسی کنی
مقدار ds رو هم به همین ترنیب چک کن ببین table داره یا نه اگه داشت ببین table چند تا row داره
نقل قول: صفحه بندی گریدویو
نقل قول:
نوشته شده توسط
taghi.km
رو این خط
SqlCommand cmd = new SqlCommand();
کلید F9 رو بزن بعد با کلید F10 برنامه رو Trace کن
پارامترهای ارسالی رو میتونی با راست کلیک روی پارامتر و انتخاب گزینه های watch را بررسی کنی
مقدار ds رو هم به همین ترنیب چک کن ببین table داره یا نه اگه داشت ببین table چند تا row داره
اصلاً sp رو اجرا نمی کنه همون اول به go دوم که می رسه stop میشه و row صفر رو برمی گردونه
USE [MyWeblog]
GO
/****** Object: StoredProcedure [dbo].[CastumPaging] Script Date: 02/11/2013 13:48:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Batch submitted through debugger: SQLQuery1.sql|7|0|C:\Users\aria-pc\Documents\SQL Server Management Studio\Projects\SQLQuery1.sql
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[CastumPaging]
(
@SQLTableName nvarchar(100),
@name nvarchar(20),
@PageIndex int,
@PageSize int
)
AS
BEGIN
declare @SQLText nvarchar(500)
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY id) as RowNum FROM '+@SQLTableName+' where (NameItem='+@name+')) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
exec(@SQLText)
END
ds هم null هست:ناراحت:
نقل قول: صفحه بندی گریدویو
شما بهتر قدم به قدم پیش بری ابتدا sp رو از طریق sqlserver management چک کن فکر کنم کد زیر کمکت کنه
declare @SQLTableName nvarchar(100), @name nvarchar(20), @PageIndex int, @PageSize int
set @SQLTableName = 'tablename'
set @name = 'itemname'
set @PageIndex = 0
set @PageSize = 10
declare @SQLText nvarchar(500)
set @SQLText = 'SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY id) as RowNum FROM '+@SQLTableName+' where (NameItem='+@name+')) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
exec(@SQLText)
پارامتره رو من همینجوری مقدار دادم
نقل قول: صفحه بندی گریدویو
نقل قول:
نوشته شده توسط
taghi.km
شما بهتر قدم به قدم پیش بری ابتدا sp رو از طریق sqlserver management چک کن
ممنون از شما وقتی اجرا می کنم پیغام زیرو میده:
نقل قول:
Msg 201, Level 16, State 4, Procedure CastumPaging, Line 0
Procedure or function 'CastumPaging' expects parameter '@SQLTableName', which was not supplied.
(1 row(s) affected)
که داخل row مقدار null است
نقل قول: صفحه بندی گریدویو
شما باید داخل sp رو چک کنید اون تیکه کدی که گذاشتم رو تست کردی
مهم بدنه sp هست کاری به تعاریف اولش نداشته باش در ضمن فکر کنم شما دارید دستور ALTER PROCEDURE dbo.CastumPaging رو اجرا میکنید که sp رو تغییر میده و کاری با اجرای داخلش نداره
نقل قول: صفحه بندی گریدویو
نقل قول:
نوشته شده توسط
taghi.km
شما باید داخل sp رو چک کنید اون تیکه کدی که گذاشتم رو تست کردی
مهم بدنه sp هست کاری به تعاریف اولش نداشته باش در ضمن فکر کنم شما دارید دستور ALTER PROCEDURE dbo.CastumPaging رو اجرا میکنید که sp رو تغییر میده و کاری با اجرای داخلش نداره
اولش همین کارو میکردم:لبخند: اما بعدش روی sp کلیک راست کردم و گزینه "Execute Stored Procedure..." رو زدم بعد ok کردم بعد پیغام زیرو داد:
نقل قول:
Msg 201, Level 16, State 4, Procedure CastumPaging, Line 0
Procedure or function 'CastumPaging' expects parameter '@SQLTableName', which was not supplied.
(1 row(s) affected)
درسته؟
نقل قول: صفحه بندی گریدویو
من واقعا عذر می خوام مقادیرو در دستور ALTER PROCEDURE dbo.CastumPaging اضافه کرده بودم ولی اینبار در "Execute Stored Procedure..."وارد کردم و خطای زیرو داد:
نقل قول:
Msg 207, Level 16, State 1, Line 1
Invalid column name 'cpu'.
(1 row(s) affected)
همون خطای اولمو :خجالت::ناراحت:
نقل قول: صفحه بندی گریدویو
ببخشید مقدار @name چی پاس میشه و فیلدهای جدول TBaddItem چیه؟
نقل قول: صفحه بندی گریدویو
نقل قول:
نوشته شده توسط
taghi.km
ببخشید مقدار @name چی پاس میشه و فیلدهای جدول TBaddItem چیه؟
مقدار NAME با انتخاب کاربر از یک ddl با query string فرستاده میشه که نام قطعه است و جدولم شامل id,NameItem,model,brand,sale می باشد که من می خوام قطعات با شرط NameItem=@name نمایش داده بشه. امیدوارم منظورمو رسونده باشم
نقل قول: صفحه بندی گریدویو
بهتره این خط رو تجزیه کنید
SELECT * FROM (SELECT * , ROW_NUMBER() OVER(ORDER BY id) as RowNum FROM '+@SQLTableName+' where (NameItem='+@name+')) as DerivedTableName WHERE RowNum BETWEEN '+ str(@PageIndex) +' AND'+ str((@PageIndex+ @PageSize) - 1)
مثلا اول
SELECT * , ROW_NUMBER() OVER(ORDER BY id) as RowNum FROM '+@SQLTableName
رو امتحان کنی اگه جواب گرفتی قسمت های بعدی رو اضافه کنید
نقل قول: صفحه بندی گریدویو
ممنون از شما که با حوصله پرسشهامو پاسخ دادید این رو امتحان کردم و جواب داده بعداً قسمت where (NameItem='+@name+') رو اضافه کردم و مدام خطا گرفت
نقل قول: صفحه بندی گریدویو
سلام
به قسمت Where نگاه کنید
where (NameItem='+@name+')
اگه فرض کنیم مقدار name@ برابر Cpu باشه، بعد از جاگزاری قسمت Where میشه این
where (NameItem=Cpu)
چون تو دستور نهایی که قراره اجرا بشه، خبری از تک کوتیشن های اطراف Cpu نیست، Sql فکر میکنه Cpu اسم یه ستونه و پیغام
نقل قول:
Invalid column name 'cpu'.
رو میده. تو متغیر SQLText@ بخش Where رو اینجوری بنویسید
where (NameItem='''+@name+''')
نقل قول: صفحه بندی گریدویو
از همه دوستان ممنونم مشکلم حل شد و اشتباه همونی بود که دوست خوبمون karaji333 گفتند واقعاً از ایشون ممنونم :تشویق: