PDA

View Full Version : سوال: اطلاعات ثبت شده بين دو تاريخ



navid1n2000
چهارشنبه 04 آذر 1388, 19:54 عصر
من يك ديتابيس دارم كه توي يكي از جدولهاش وام هايي كه به اعضا داده شده رو ثبت مي كنه.
من حالا مي خوام بدونم وام هايي كه بين دو تاريخ داده شده رو بدست بيارم . فيلد تاريخ از نوع varchar هست . كه ديگه هم عوض نميشه .
اينم كدمه :


SqlConnection objConnection = new SqlConnection("Server=ASAD-2DB92FD23F;Database=VamDB;Integrated Security = True");
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataView objDataView;
DataSet objDataSet;
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.Connection = objConnection;
objDataAdapter.SelectCommand.CommandText = "Select * From Vam WHERE TrikhVam >=" + barbod1.IrDate.ToString() + " and TrikhVam <=" + barbod1.IrDate.ToString() + " ";
objDataAdapter.SelectCommand.CommandType = CommandType.Text;
objDataSet = new DataSet();
objConnection.Open();
objDataAdapter.Fill(objDataSet, "Vam");
objConnection.Close();
objDataView = new DataView(objDataSet.Tables["Vam"]);

اون (باربد) هم يك ديتاتايم پيكر هست كه تاريخ شمسي داره . و يك رشته تاريخيه . مثل : 03/5/1387
اينم ارورش :
http://up.iranblog.ir/4/1259213723.jpg
چاره چيه ؟

shahab_ss
چهارشنبه 04 آذر 1388, 22:55 عصر
این خط رو به اینصورت تغییر بده ببین مشکلت حل میشه ؟

objDataAdapter.SelectCommand.CommandText = "Select * From Vam WHERE TrikhVam >='" + barbod1.IrDate.ToString() + "' and TrikhVam <='" + barbod1.IrDate.ToString() + "'";کد Sql شما به شکلی نوشته شده که جاهایی که داری تاریخ اضافه میکنی رو بصورت عددی میبینه ،در صورتی که فرمت تاریخ رو نمی تونه به یک عدد تبدیل کنه و نتیجه میشه خطایی که میبینی!

slashslash2009
پنج شنبه 05 آذر 1388, 10:46 صبح
از between هم میتونی استفاده کنی


dt = consql.MySelect("Select * from input where date BETWEEN'" + faDatePicker2.Text + "'AND'" + faDatePicker3.Text + "'");


البته فیلد تاریخ من در دیتابیسم به صورت رشته است نه تاریخ چون تاریخ فارسی نمیگرفت sqlserver

navid1n2000
پنج شنبه 05 آذر 1388, 19:56 عصر
این خط رو به اینصورت تغییر بده ببین مشکلت حل میشه ؟

objDataAdapter.SelectCommand.CommandText = "Select * From Vam WHERE TrikhVam >='" + barbod1.IrDate.ToString() + "' and TrikhVam <='" + barbod1.IrDate.ToString() + "'";کد Sql شما به شکلی نوشته شده که جاهایی که داری تاریخ اضافه میکنی رو بصورت عددی میبینه ،در صورتی که فرمت تاریخ رو نمی تونه به یک عدد تبدیل کنه و نتیجه میشه خطایی که میبینی!
من اين كاريو كه شما گفتين انجام دادم
اما اين بار فقط اطلاعاتي رو آورد كه برابر barbod1 هست رو نشون داد
من چكار كنم؟

navid1n2000
جمعه 06 آذر 1388, 18:06 عصر
يعني راهي نداره مشكلم؟؟؟؟؟؟؟؟؟

slashslash2009
جمعه 06 آذر 1388, 23:12 عصر
خوب اگه میخوای بین دو تاریخو در بیاری از همون روش من استفاده کن این که سوال نداره !!!!!!!! به جای fadatepicker,از کتنرل خودت استفاده کن barbod1.IrDate.ToString()

navid1n2000
جمعه 06 آذر 1388, 23:23 عصر
خوب اگه میخوای بین دو تاریخو در بیاری از همون روش من استفاده کن این که سوال نداره !!!!!!!! به جای fadatepicker,از کتنرل خودت استفاده کن barbod1.IrDate.ToString()
من اون بالا هم گفتم مشكل من اينه كه تاريخ ديتا بيسم از نوع char‌هست نه از نوع int???????
از روش شما هم يعني between چيزي دستگيرم نشد . اونم اطلاعاتي نشون نميده

seven7777777
شنبه 07 آذر 1388, 10:56 صبح
فکر کنم اگه یه StoredProcedure بنویسی که برات اینکارو انجام بده ، کارت راحت تره .
توی اون هم بیا و تاریخ رشته ای تو تکه تکه کن و بعد مقایسه های لازم رو انجام بده .

و البته توصیه می کنم اگه تو برنامه هات مقایسه های اینچنینی داره ، هرگز از تاریخ با قالب رشته ای استفاده نکن و حتی اگه الان برات مقدوره زودتر به DateTime تبدیلش کن تا بیشتر از این اذیت نشی و وقتت تلف نشه .
موفق باشی

slashslash2009
شنبه 07 آذر 1388, 11:20 صبح
من اون بالا هم گفتم مشكل من اينه كه تاريخ ديتا بيسم از نوع char‌هست نه از نوع int???????
از روش شما هم يعني between چيزي دستگيرم نشد . اونم اطلاعاتي نشون نميده
ببین دوست من تاریخی رو که خودمم ذخیره کردم از نوع char هست آخه چطور میشه یه تاریخو از نوع int گرفت من دارم از between استفاده میکنم مشکلی هم ندارم. ولی باید مواظب باشی مقدار اولی باید تاریخ کوچکتریعنی12/03/1388 باشه و دومی بزرگتر12/06/1388