View Full Version : سوال: خالی گذاشتن چندین پارامتر در هنگام select
esagraphic
یک شنبه 08 شهریور 1394, 02:32 صبح
سلام به همه من با این روش دیتا ها را select میکنم و پارامتر ها از تکس باکس می گیرم مشکلم اینه باید همه پارامتر ها را کامل بفرستم طبقی که نوشتم ایا به نظر شما کار میشه کرد اگر دو یا یک پارامتر را بنویسم همونارا سیلکت کنه باقیه را نکنه و یا یکی اگه نه من باید برای هر روش یک دستور سیلیکت بنویسم کارم کلی جنجالی میشه
string cnstr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection cn = new SqlConnection(cnstr);
SqlDataAdapter da = new SqlDataAdapter(" select * from weight where datefullmiladi >='"+Convert.ToDateTime(miladi1)+"' and datefullmiladi<='"+Convert.ToDateTime(miladi2)+"' and (Truckno='" + textBox1.Text + "' or truckno is null ) and (goods like N'" + textBox2.Text + "' or goods is null )", cn);
da.Fill(dtt);
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource repts = new ReportDataSource("weight",dtt);
reportViewer1.LocalReport.DataSources.Add(repts);
reportViewer1.RefreshReport();
کارم کلی گیره اگه میشه رهنمای کنید که چیطور چند پارامتر را خالی بزارم اونها را سرچ نکنه
محمد رضا فاتحی
یک شنبه 08 شهریور 1394, 08:22 صبح
سلام دوست عزیز...
شما می تونید قبل از اینکه کوئری رو کامل کنید بیاین با توجه به فیلدهای پر شده کوئری رو مدیریت کنید
این یه نمونه کد ساده که تمام پارامترها رو با And ترکیب می کنه که اگه خواستی حرفه ای تر باشه می تونی با کامبو باکس روابط فیلدها رو مدیریت کنی
string command = "";
string condition = "";
if (TxtName.Text != "")
{
condition += " name =N'" + TxtName.Text + "' And ";
}
if (TxtFamil != "")
{
condition += " famil =N'" + TxtFamil.Text + "' And ";
}
if (condition != "")
{
condition = condition.Remove(condition.Length - 4, 4);
command = "select * from stdtbl where " + condition;
}
else
{
command = "select * from stdtbl";
}
esagraphic
یک شنبه 08 شهریور 1394, 09:46 صبح
سلام دوست عزیز...
شما می تونید قبل از اینکه کوئری رو کامل کنید بیاین با توجه به فیلدهای پر شده کوئری رو مدیریت کنید
این یه نمونه کد ساده که تمام پارامترها رو با And ترکیب می کنه که اگه خواستی حرفه ای تر باشه می تونی با کامبو باکس روابط فیلدها رو مدیریت کنی
string command = "";
string condition = "";
if (TxtName.Text != "")
{
condition += " name =N'" + TxtName.Text + "' And ";
}
if (TxtFamil != "")
{
condition += " famil =N'" + TxtFamil.Text + "' And ";
}
if (condition != "")
{
condition = condition.Remove(condition.Length - 4, 4);
command = "select * from stdtbl where " + condition;
}
else
{
command = "select * from stdtbl";
}
روش خیلی خوبیه باشه من امتحان کنم
esagraphic
یک شنبه 08 شهریور 1394, 11:02 صبح
سلام دوست عزیز...
شما می تونید قبل از اینکه کوئری رو کامل کنید بیاین با توجه به فیلدهای پر شده کوئری رو مدیریت کنید
این یه نمونه کد ساده که تمام پارامترها رو با And ترکیب می کنه که اگه خواستی حرفه ای تر باشه می تونی با کامبو باکس روابط فیلدها رو مدیریت کنی
string command = "";
string condition = "";
if (TxtName.Text != "")
{
condition += " name =N'" + TxtName.Text + "' And ";
}
if (TxtFamil != "")
{
condition += " famil =N'" + TxtFamil.Text + "' And ";
}
if (condition != "")
{
condition = condition.Remove(condition.Length - 4, 4);
command = "select * from stdtbl where " + condition;
}
else
{
command = "select * from stdtbl";
}
سلام میشه بگین نظر به کدی که من نوشتم اینو چیطور پیاده کنم من از sqldataadapter استفاده میکنم شما از کامند کار گرفتین
محمد رضا فاتحی
یک شنبه 08 شهریور 1394, 11:23 صبح
مشکلی نیست که ادامش بدین
SqlDataAdapter da = new SqlDataAdapter(command, con);
DataTable dt=new DataTable();
con.Open();
da.Fill(dt);
con.Close();
esagraphic
یک شنبه 08 شهریور 1394, 12:22 عصر
مشکلی نیست که ادامش بدین
SqlDataAdapter da = new SqlDataAdapter(command, con);
DataTable dt=new DataTable();
con.Open();
da.Fill(dt);
con.Close();
سلام ببینید من به این روش عمل کردم اما در قسمت da.fill(dtt) ایرور میده میگه ExecuteReader: CommandText property has not been initialized
اینم از کل کدم
tring cnstr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection cn = new SqlConnection(cnstr);
SqlDataAdapter da = new SqlDataAdapter(command,cn);
DataTable dtt = new DataTable();
if (miladi1!="" || miladi2!="")
{
condation += "datefullmiladi>=N'" + Convert.ToDateTime(miladi1) + "' and datefullmiladi<=N'" + Convert.ToDateTime(miladi2) + "' and ";
}
if (textBox1.Text!="")
{
condation += "truckno=N'" + textBox1.Text + "' and ";
}
if (textBox2.Text!="")
{
condation += "goods=N'" + textBox2.Text + "' and ";
}
if (condation!="")
{
condation = condation.Remove(condation.Length - 4, 4);
command = " select * from Weight where " + condation;
}
else
{
command = "select * from Weight ";
}
cn.Open();
da.Fill(dtt);
cn.Close();
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource repts = new ReportDataSource("weight", dtt);
reportViewer1.LocalReport.DataSources.Add(repts);
reportViewer1.RefreshReport();
محمد رضا فاتحی
یک شنبه 08 شهریور 1394, 12:32 عصر
این خطا رو چرا داده؟؟
چون اومدید قبل از اینکه command رو مقدار دهی کنید ازش استفاده کردید
اینطوری تغییرش بده
string cnstr = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirec tory|\haic.mdf;Integrated Security=True;Connect Timeout=30";
SqlConnection cn = new SqlConnection(cnstr);
if (miladi1 != "" || miladi2 != "")
{
condation += "datefullmiladi>=N'" + Convert.ToDateTime(miladi1) + "' and datefullmiladi<=N'" + Convert.ToDateTime(miladi2) + "' and ";
}
if (textBox1.Text != "")
{
condation += "truckno=N'" + textBox1.Text + "' and ";
}
if (textBox2.Text != "")
{
condation += "goods=N'" + textBox2.Text + "' and ";
}
if (condation != "")
{
condation = condation.Remove(condation.Length - 4, 4);
command = " select * from Weight where " + condation;
}
else
{
command = "select * from Weight ";
}
SqlDataAdapter da = new SqlDataAdapter(command, cn);
DataTable dtt = new DataTable();
cn.Open();
da.Fill(dtt);
cn.Close();
reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource repts = new ReportDataSource("weight", dtt);
reportViewer1.LocalReport.DataSources.Add(repts);
reportViewer1.RefreshReport();
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.