ورود

View Full Version : مشکل در ارسال پارامترها به SP



eyelash
یک شنبه 01 شهریور 1388, 16:41 عصر
سلام دوستان
من توی سایتم یه صفحه جستجو گذاشتم که کاربر می تونه هر فیلدی را که خواست مقدار دهی کنه و بر اساس اونها عمل جستجو را انجام بده. داده ها هم تو یه بانکSQL 2005 نگهداری می کنم و برای جستجو ازStored Procedure استفاده می کنم.
مشکل اینجاست که اونtextBoxهای که مقداری براشون وارد نمی شه چیزی به جز null برای SP ارسال می کنند و در نتیجه عمل جستجو همیشه بدون نتیجه خواهد بود. :عصبانی++::عصبانی++::عصبانی++:
من تعریف SP و SQLdataSourceمختصر برنامه را می ذارم. ممنون می شم دوستان کمک کنن تا بفهمم مشکل از کجاست که داده ارسال شده null و یا داده ای با طول صفر نیست.

SqlDataSource


<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:BlueShopConnectionString %>"
SelectCommand="SpSearch1" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="TxtName" Name="Name" PropertyName="Text"
Type="String" />
<asp:ControlParameter ControlID="txtMark" Name="ma" PropertyName="Text" Type="String"/>
</SelectParameters>
</asp:SqlDataSource>

Store Producer


ALTER PROCEDURE [dbo].[SpSearch1]
@Name as nvarchar(15),
@ma as nvarchar (10)
AS
BEGIN
Declare @SelectCommand as Nvarchar(1000)
Set @SelectCommand= N'Select * from Product Where ('

if (len (@Name) <> 0)
Set @SelectCommand = @SelectCommand +
N' Product.[Name] = @N'
if (@ma is null)
Set @SelectCommand = @SelectCommand +
N' and Product.Producer = @m'

set @SelectCommand = @SelectCommand + ')'
Execute SP_Executesql @SelectCommand,
N'@N Nvarchar (15), @m nvarchar(10)'
,@N = @Name, @m = @ma
END


ممنون

eyelash
یک شنبه 01 شهریور 1388, 22:56 عصر
کسی چیزی نمی دونه:افسرده::افسرده::افسرده:

eyelash
دوشنبه 02 شهریور 1388, 00:46 صبح
اونقدر جواب ندادین تا من کچل شدم و موندم رو دست مادرم......
ولی در عوض مشکل حل شد، مشکل به خاطر عدم تعریف defult Value برای کنتر هایی بود که به عنوان پارامـتر به SQLDataSource داده بودم.
کدی که درست شده اینه




asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:BlueShopConnectionString %>"
SelectCommand="SpSearch1" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="TxtName" Name="Name"
PropertyName="Text" DefaultValue="NotValue"
Type="String" />
<asp:ControlParameter ControlID="txtMark" Name="ma"
PropertyName="Text" DefaultValue="NotValue" Type="String"/>
</SelectParameters>
</asp:SqlDataSource>



ALTER PROCEDURE [dbo].[SpSearch1]
@Name as nvarchar(15),
@ma as nvarchar (10)
AS
BEGIN

Declare @SelectCommand as Nvarchar(1000)
Set @SelectCommand= N'Select * from Product Where ('

if (@Name Not Like 'NotValue')
Set @SelectCommand = @SelectCommand +
N' Product.[Name] = @N'
if (@ma Not Like 'NotValue')
Set @SelectCommand = @SelectCommand +
N' and Product.Producer = @m'

set @SelectCommand = @SelectCommand + ')'
Execute SP_Executesql @SelectCommand,
N'@N Nvarchar (15), @m nvarchar(10)'
,@N = @Name, @m = @ma
END
[/LEFT]

ممنون از خودم ولی با سر کچلم چه کار کنم؟؟؟:متفکر: