View Full Version : سوال: عمل جستجو با استفاده از پروسیجر
hosseines
یک شنبه 17 آذر 1392, 23: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, 07: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, 10:56 صبح
خیلی ممنون دوست عزیز
sorena2000
دوشنبه 18 آذر 1392, 17: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, 18:57 عصر
ممنون دوست عزیز ولی ج نداد پروسیجرت.
sgh_programer
دوشنبه 18 آذر 1392, 21: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, 21: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();
}
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.