PDA

View Full Version : مشکل با دو شرط در پرویسجر



yavari
جمعه 07 مهر 1385, 08:08 صبح
سلام دوستان

نمی دونم چرا پیچ خورده ! :گریه:
من وقتی پروسیجرم رو با یه شرط بیان میکنم مشکلی ندارم اما همین که میگم یوزرنیمو هم چک کنه این گیرو یهم میده !
ممنون میشم یکی راهنمائیم کنه ضمن اینه من خیلی تازه کارم تو SQL .:گریه:

CREATE PROC cts_search(@tablename nvarchar(50),@where1 nvarchar (100),@where2 nvarchar (100)) AS
IF(LEN(@where1)>0 AND LEN(@where2)>0)
EXEC('SELECT * FROM '+@tableName+' WHERE Radif= '+@where1+'AND Username='+@where2)
else
EXEC('SELECT * FROM '+@tableName)
GO
اینم ارور :

Line 95: Dim da As New SqlDataAdapter
Line 96: da.SelectCommand = cmd ' New SqlDataAdapter("select * FROM Useres ", myConnection)
Line 97: da.Fill(ds)
Line 98: Cnn.Close()
Line 99: Return ds.Tables(0)


Source File: c:\inetpub\wwwroot\TinaSecurity\SearchPass.aspx.vb Line: 97

Stack Trace:


[SqlException: Invalid column name 'Yavari'.]
System.Data.SqlClient.SqlCommand.ExecuteReader(Com mandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) +723
System.Data.SqlClient.SqlCommand.ExecuteReader(Com mandBehavior behavior) +44
System.Data.SqlClient.SqlCommand.System.Data.IDbCo mmand.ExecuteReader(CommandBehavior behavior) +5
System.Data.Common.DbDataAdapter.FillFromCommand(O bject data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)
TinaSecurity.SearchPass.getAllIf(String Table, String where1, String where2) in c:\inetpub\wwwroot\TinaSecurity\SearchPass.aspx.vb :97
TinaSecurity.SearchPass.bSubmit_Click(Object sender, EventArgs e) in c:\inetpub\wwwroot\TinaSecurity\SearchPass.aspx.vb :69
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPo stBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEve ntHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCol lection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277

majid_afra222
جمعه 07 مهر 1385, 09:42 صبح
سلام
برای username این رو اضافه کن :


N'''+@where2+''' '

چون نوع داده اون کاراکتری هست.
یعنی این بشه.


CREATE PROC cts_search(@tablename nvarchar(50),@where1 nvarchar (100),@where2 nvarchar (100)) AS
IF(LEN(@where1)>0 AND LEN(@where2)>0)
EXEC('SELECT * FROM '+@tableName+' WHERE Radif= '+@where1+'AND Username=N'''+@where2+''' ')
else
EXEC('SELECT * FROM '+@tableName)
GO

yavari
سه شنبه 18 مهر 1385, 12:10 عصر
سلام

ببینید دوستان ، من خیلی دوست داشتم اون پروسیجرم رو تعمیم بدم برا همین اونو به این صورت نوشتم


CREATE PROC SearchForAll(@tablename nvarchar(50),@where nvarchar (100)) AS
IF(LEN(@where)>0)
EXEC('SELECT * FROM '+@tableName+' WHERE '+@where)
else
EXEC('SELECT * FROM '+@tableName)
GO
و اینجوری بهش دسترسی پیدا میکنم

TestRepeatUsername("Useres", "[Username]='N'" + txtUsername.Text)

اما این گیرو میده ! :گریه: :گریه: :گریه:


Line 1: Incorrect syntax near 'Yavari'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Line 1: Incorrect syntax near 'Yavari'.

Source Error:


Line 337: Dim da As New SqlDataAdapter
Line 338: da.SelectCommand = cmd
Line 339: da.Fill(ds)
Line 340: Cnn.Close()
Line 341: Return ds.Tables(0)

ممنون میشم بازم راهنمائیم کنید !

majid_afra222
سه شنبه 18 مهر 1385, 21:10 عصر
TestRepeatUsername("Useres", "[Username]='N'" + txtUsername.Text)

سلام
اینجوریش کن :



TestRepeatUsername("Useres", "[Username]=N'" + txtUsername.Text+"'")