PDA

View Full Version : سوال: مشکل در دیتابیس اکسس



Arashdn
جمعه 17 شهریور 1391, 23:26 عصر
سلام
من برنامه ام رو به شکل زیر نوشتم تا در دیتابیس اکسس بر اساس تاریخ بگرده
ولی تاریخ های موجود در نتایج یه کم جابجا هستن
دلیل چی میتونه باشه؟
DateTime start = dateTimePicker1.Value;
DateTime end = dateTimePicker2.Value;
try
{
OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM sellinfo WHERE (((sellinfo.selldate) Between #" + start.ToShortDateString() + "# And #" + end.ToShortDateString() + "#));"
, my_cn);
DataSet ds = new DataSet();

da.Fill(ds);

dataGridView1.DataSource = ds;

}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
ممنون

matin.soft
شنبه 18 شهریور 1391, 08:02 صبح
منظورتون از جابجا چی هست؟ لطفاً خروجی نتایج رو قرار بدید تا بررسی بشه

matin.soft
شنبه 18 شهریور 1391, 08:14 صبح
شما می خواهید بین دو تاریخ مقایسه انجام بدید. درسته؟ اگه منظورتون این باشه یه راه حل اینه که در دیتابیس نوع داده تاریخ رو به فرمت استرینگ ذخیره کنین و سپس عمل مقایسه رو انجام بدین. مثلا بصورت 13910118 که در ذخیره تاریخ نباید علامت / ذخیره بشه چون عمل مقایسه رو مختل می کنه.و در جستجو بصورت زیر عمل کنید.DateTime start = dateTimePicker1.Value;DateTime end = dateTimePicker2.Value;try{OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM sellinfo WHERE selldate <13910120 AND selldate>13910115, my_cn);DataSet ds = new DataSet();da.Fill(ds);dataGridView1.DataSource = ds;}catch (Exception ex){MessageBox.Show(ex.Message);}
کد بالا عمل جستجو بر حسب تاریخ رو برای مقادیر بین 15/01/1391و20/01/1391 انجام می ده.
البته برای حذف کاراکتر های / از تاریخت در زمان جستجو یا ذخیره در دیتابیس می تونی از کد زیر استفاده کنی:
dateTimePicker2.Value.ToString.Replace("/","");
موفق باشی دوست عزیز

Arashdn
شنبه 18 شهریور 1391, 09:30 صبح
شما می خواهید بین دو تاریخ مقایسه انجام بدید. درسته؟ اگه منظورتون این باشه یه راه حل اینه که در دیتابیس نوع داده تاریخ رو به فرمت استرینگ ذخیره کنین و سپس عمل مقایسه رو انجام بدین. مثلا بصورت 13910118 که در ذخیره تاریخ نباید علامت / ذخیره بشه چون عمل مقایسه رو مختل می کنه.و در جستجو بصورت زیر عمل کنید.DateTime start = dateTimePicker1.Value;DateTime end = dateTimePicker2.Value;try{OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM sellinfo WHERE selldate <13910120 AND selldate>13910115, my_cn);DataSet ds = new DataSet();da.Fill(ds);dataGridView1.DataSource = ds;}catch (Exception ex){MessageBox.Show(ex.Message);}
کد بالا عمل جستجو بر حسب تاریخ رو برای مقادیر بین 15/01/1391و20/01/1391 انجام می ده.
البته برای حذف کاراکتر های / از تاریخت در زمان جستجو یا ذخیره در دیتابیس می تونی از کد زیر استفاده کنی:
dateTimePicker2.Value.ToString.Replace("/","");
موفق باشی دوست عزیز
سلام
ممنون از کمکتون
دو تا مسئله
1- تاریخ ها بصورت شمسی ذخیره نشدن و میلادی هستن
2- نوع ذخیره داده ها از نوع استرنیگ نیست و DateTime هست ...
با شرایط چطور باید گشت؟

hosseinenayati_2009
شنبه 18 شهریور 1391, 17:08 عصر
سلام دستور select شما باید اینجوری بنویسی.
cmd.CommandText = "select * from factor where tarikhf >= '" + tarikh1.Text + "' and tarikhf <= '" + tarikh2.Text + "' ";

Yanehsar
شنبه 18 شهریور 1391, 19:21 عصر
سلام
بهتره نوع تاریخ از نوع استرینگ بگیرید.
من با این خط کد و نوع استارینگ برای تاریخ بین دو بازه زمانی رو واکشی میکنم.فکر کنم هدف شما هم واکشی اطلاعات بین دو بازه باشه :

"select * from table1 where name='" + Name + "' and Date_az between '" + dateaz + "' and '" + dateta + "' order by name_Dr";
اگر هم از دو تا فیلد استفاده کردید میتونید از AND استفاده کنید
موافق باشید