PDA

View Full Version : سوال: عمل جستجو با استفاده از پروسیجر



hosseines
یک شنبه 17 آذر 1392, 22:01 عصر
سلام
من یه برنامه نوشتم کد قسمت سی شارپ آن بصورت زیر می باشد


private void txtFind_TextChanged(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("SelectNameBiogerafi", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@Name", txtFind.Text);
DataTable dt = new DataTable();
da.Fill(dt);
DgwList.DataSource = dt;
{


و کد پروسیجر


CREATE PROC SelectNameBiogerafi
(Name nvarchar(400@
as
'%select * from Tbl_biogerafi where Name like '%@Name
GO


ولی وقتی در تکست باکس چیزی می نویسم عمل جستجو انجام نمیشه علتش چیه؟ لطفا راهنمایی کنید.

dashkeyvan
دوشنبه 18 آذر 1392, 06:43 صبح
تو تکست چنج باید یه if بزاری که اگه داخل تکست باکس خالی نبود حالا بیا عملیات سرچ رو برام انجام بده و یه برو سیژور دیگه بنویس که وقتی خالی شد کله اطلاعات نشون داده بشه مثله این


if (txt_info_Search.Text != "")
{
SqlDataAdapter da = new SqlDataAdapter("SearchMember_lname", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("l_name",txt_info_Search.Text.Trim().ToString());
DataTable dt = new DataTable();
da.Fill(dt);
grd_view_member.DataSource = dt;
}
else
{
SqlDataAdapter da = new SqlDataAdapter("SelectAllMember", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
DataTable dt = new DataTable();
da.Fill(dt);
grd_view_member.DataSource = dt;
}




create proc SearchMember_lname
@l_name nvarchar(50)
as
select *from tbl_member where l_name like @l_name + '%'
RETURN




create proc SelectAllMember
as
select * from tbl_member
RETURN

hosseines
دوشنبه 18 آذر 1392, 09:56 صبح
خیلی ممنون دوست عزیز

sorena2000
دوشنبه 18 آذر 1392, 16:43 عصر
پروسیجرت رو به این صورت بنویس دیگه نیاز به شرط هم نداره فکر کنم اینجور راحت تر باشه!!!!



create procedure SearchMember_lname
@l_name nvarchar(50)=null
as
select *from tbl_member where
@l_name is null or l_name like '%'+ @l_name +'%'
RETURN

hosseines
دوشنبه 18 آذر 1392, 17:57 عصر
ممنون دوست عزیز ولی ج نداد پروسیجرت.

sgh_programer
دوشنبه 18 آذر 1392, 20:08 عصر
بنام خدا سلام دوست عزیز

اول استور پروسیجر رو به این شکل بنویس(همون خودت با کوچولو تغیر)


CREATE PROC SelectNameBiogerafi
@Name nvarchar(400)
as
select * from Tbl_biogerafi where Name like @Name
GO


و حالا کد های برنامه ات رو اینجوری بنویس


private void txtFind_TextChanged(object sender, EventArgs e)
{
SqlDataAdapter da = new SqlDataAdapter("SelectNameBiogerafi", con);
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.Parameters.AddWithValue("@Name","%"+ txtFind.Text+"%");
DataTable dt = new DataTable();
da.Fill(dt);
DgwList.DataSource = dt;
}



موفق باشی

sorena2000
دوشنبه 18 آذر 1392, 20:26 عصر
ممنون دوست عزیز ولی ج نداد پروسیجرت.

من به این صورت می نویسم .


ALTER PROCEDURE [dbo].[Searchranande]
@name NVARCHAR(20),
@family NVARCHAR(30)

AS

BEGIN
SELECT * FROM Tbtest WHERE
(@name IS NULL OR name LIKE '%' + @name + '%')
AND (@family IS NULL OR family LIKE '%' + @family + '%' )
END




دستور C# هم به شکل زیر



string connection =(
"Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirecto ry|\\DB\\Dbtest.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");


using (SqlConnection conn = new SqlConnection(connection))
{
using (SqlCommand cmd = new SqlCommand("Searchranande"))
{
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add(new SqlParameter("@name", item1));

cmd.Parameters.Add(new SqlParameter("@family", item2));


conn.Open();
cmd.Connection = conn;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();

adapter.Fill(ds, "Searchranande");

DGV1.DataSource = ds;

DGV1.DataMember = "Searchranande";
conn.Close();

}

}