PDA

View Full Version : سوال حرفه ای در مورد select خاص در گرید؟



نیما حتمی
چهارشنبه 18 خرداد 1390, 13:22 عصر
با سلام
من نیاز به یک select خاص در گرید دارم که هم براساس یک فیلد باید سورت کنه گریدو و هم براساس یک سری فیلتری که نوشتم بیاد گریدو فیلتر کنه.کسی میتونه کمک کنه؟اینم کدمه:


if (checkBox1.Checked == true)
condition += "and (yearDateDoc Between '" + Convert.ToInt32(textBox1.Text) + "' AND '" + Convert.ToInt32(textBox2.Text) + "')";
if (checkBox2.Checked == true)
condition += "and (DateDoc Between '" + dateBox1.TextDate + "' AND '" + dateBox2.TextDate + "')";
if (checkBox3.Checked == true)
condition += "and (NumReceipt Between '" + Convert.ToInt32(textBox3.Text) + "' AND '" + Convert.ToInt32(textBox4.Text) + "')";
SqlDataAdapter d1 = new SqlDataAdapter("select * from EmissionDocView where order by (DateDoc) " + condition, connect);
DataTable dt = new DataTable();
این ایراد داره خودمم می دونم
کسی میدونه چطوریه؟

Reza_Yarahmadi
چهارشنبه 18 خرداد 1390, 19:07 عصر
دستور Select رو بصورت زیر تغییر بدید. در صورتیکه به جواب مورد نظرتون نرسید بیشتر توضیح بدید.
"Select * From EmissionDocView Where " + condition.Substring(4) + " Order By DateDoc"

نیما حتمی
شنبه 21 خرداد 1390, 08:44 صبح
متاسفانه ارور زیر رو میده:
70990

Reza_Yarahmadi
شنبه 21 خرداد 1390, 18:27 عصر
متاسفانه ارور زیر رو میده:
این خطل زمانی داده میشه که مقدار Condition خالی باشه. میتونید با یک شرط ساده مثل زیر اونو برطرف کنید.
"Select * From EmissionDocView" +
(condition != "" ? " Where " + condition.Substring(4) : "") +
" Order By DateDoc"
نیما جان توصیه میکنم خطا یابی و رفع خطا رو بیشتر کار کنید تا با دیدن خطا سریعا متوجه بشید کجای کار ایراد داره. این موضوع خیلی در سرعت دیباگ کردن برنامه تاثیر داره.

نیما حتمی
یک شنبه 22 خرداد 1390, 07:54 صبح
حتما به توصیه تون عمل میکنم.بازم ممنونم

نیما حتمی
یک شنبه 22 خرداد 1390, 08:03 صبح
اقا رضا ایراد از



.Substring(4)

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

Reza_Yarahmadi
یک شنبه 22 خرداد 1390, 17:48 عصر
اقا رضا ایراد از



.Substring(4)

قطعه کد هست.این چیه؟نبودش چی میشه بودنش چطور؟
توی کدی که گذاشتید condition مسلما با and شروع میشه ، یعنی دستور Select بصورت زیر در میاد
Select * From EmissionDocView Where and yearDateDoc Between ...
که این حالت باعث ایجاد خطا میشه. در صورتی که condition ساختار شرطی درستی رو در نهایت تولید میکنه نیازی به نوشتن Substring نیست.

نیما حتمی
دوشنبه 23 خرداد 1390, 08:03 صبح
خیلی ممنونم