سلام بچه ها من میخام بین دوتا تاریخ جستجو کنم و نتیجه رو درون دیتاگرید ویو بریزم
ولی برنامم این پیغام میده ( در ضمن درون sql نوع date بصورت text گذاشتم) :
0111111111111111.jpg
لطفا بگید چیکارش کنم درست شه؟
مرسی
سلام بچه ها من میخام بین دوتا تاریخ جستجو کنم و نتیجه رو درون دیتاگرید ویو بریزم
ولی برنامم این پیغام میده ( در ضمن درون sql نوع date بصورت text گذاشتم) :
0111111111111111.jpg
لطفا بگید چیکارش کنم درست شه؟
مرسی
اپراتور between جهت جستجوی دو تاریخ میلادی کاردبرد دارد نه شمسی و و وردی باید یک تاریخ باشد نه رشته یا استرینگ
شما ورودی هاتون بصورت رشته هست نه یک تاریخ معتبر
درصورتی تاریخ شمسی رشته و 10 رقم باشه مثلا 01/01/1398 مشکلی نداره روش شما جواب میده .
ds = new DataSet(); SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Table5 WHERE date BETWEEN @sdate AND @edate", con);
ad.SelectCommand.Parameters.AddWithValue("@sdate", maskedBox2.Text);
ad.SelectCommand.Parameters.AddWithValue("@edate", maskedBox3.Text);
ad.Fill(ds, "Table2");
فیلد تاریخ را در دیتابیس از نوع date قرار بدید و تاریخ هم بصورت میلادی ذخیره کنید
جهت جستجو تاریخ ورودی که از textbox میگیرید تبدیل به میلادی کنید و پاس بدید به select
var miladi1=textbox10.text.ToMiladi()
ad.SelectCommand.Parameters.AddWithValue("@sdate", miladi1);
این .ToMiladi() یک اکستنشن متد هست بر روی رشته ها
میتونید خودتون هم بنویسید
public static ToMiladi(this string str)
{
......کدهای تبدیل str به میلادی
}
یا میتونید بدون تبدیل کردن از کالچرها هم استفاده کنید و نیاز به متد اضافی ToMiladi()نیست
در ضمن مثل دوستمون جناب فتحی از پارامترها( sdate@)در دستورات استفاده کنید بجای نام بردن کنترل مثل textbox