PDA

View Full Version : جستجو بین دو تاریخ



hesam_dj10
شنبه 02 اسفند 1393, 12:46 عصر
سلام من میخام یه گزارشگیری بنوسیم بین دو تاریخ

اینم کدش
SqlConnection conn = new SqlConnection(@"Data Source=192.168.2.15,1433;Network Library=DBMSSOCN;Initial Catalog=fazelab;User ID=hesam;Password=123456"); SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM moshtarak where date_moraje Between @date1 And @date2", conn);
da.SelectCommand.Parameters.AddWithValue("@date1", maskedTextBox1.Text);
da.SelectCommand.Parameters.AddWithValue("@date2", maskedTextBox2.Text);
DataTable dt = new DataTable();
da.Fill(dt);


if (dt.Rows.Count > 0)
{
dataGridView1.DataSource = dt;
}
else
{
MessageBox.Show("اطلاعات وجود ندارد");
}

البته چند نکته تاریخ بدین شکل توی دیتا بیس ذخیره میشه
02/05/1393
و نوعش توی sql از نوع nvarchar هستش
حالا این کد فقط زمانی جواب میده که دو رنج تاریخ رو یکی بزنم یعنی بزنم
از 02/05/1393 تا 02/05/1393
بعدش تمام اطلاعات همون روزو میده ولی وقتی رنج رو بیشتر کنم مثلا
از 02/05/1393 تا 05/05/1393
دیگه جواب نمیده
لطف بفرمایید یه کمک کوچک کنید ممنون میشم..

البته یه نکته که متوجه شدم اینه که فقط یه ماه رو میبینه یعنی فقط ماه 11 رو میگیره
اگه بزنم
از 01/11/1393 تا 08/11/1393
برام میاره
ولی اگه بزنم
از 01/11/1393 تا 08/12/1393
برام نمیاره
چه کنم

golbafan
شنبه 02 اسفند 1393, 13:20 عصر
سلکت کامندتون رو بزارید ببینم مشکلش چیه :متعجب:

golbafan
شنبه 02 اسفند 1393, 13:38 عصر
سلام فهمیدم مشکلت چیه
شما از فرمت dd/mm/yyyy داری استفاده میکنی

باید فرمت اینطوری بشه: yyyy/mm/dd :لبخند:

فکر کنم خودتون بدونید چرا ...

SabaSabouhi
شنبه 02 اسفند 1393, 13:43 عصر
سلام
دوست عزیز، شما مسیر رو اشتباه رفتی و می‌خوای با زحمت زیاد مشکلی رو که خودت ایجاد کردی
حل کنی. تاریخ رو میلادی نگهداری کن. هنگام نمایش تبدیلش کن به تاریخ شمسی.
تنها راه درست اینه.

صبا صبوحی

hesam_dj10
یک شنبه 03 اسفند 1393, 07:00 صبح
سلام فهمیدم مشکلت چیه
شما از فرمت dd/mm/yyyy داری استفاده میکنی

باید فرمت اینطوری بشه: yyyy/mm/dd :لبخند:

فکر کنم خودتون بدونید چرا ...
اره مشکل همین بود
ممنون

hesam_dj10
یک شنبه 03 اسفند 1393, 07:02 صبح
سلام
دوست عزیز، شما مسیر رو اشتباه رفتی و می‌خوای با زحمت زیاد مشکلی رو که خودت ایجاد کردی
حل کنی. تاریخ رو میلادی نگهداری کن. هنگام نمایش تبدیلش کن به تاریخ شمسی.
تنها راه درست اینه.
صبا صبوحی
ممنون از راهکارت ولی وقتی اینجوری خیلی راحت میشه انجام داد چرا دوباره کاری کنم
نکنه بخاطر حجم زیادی که nvarchar میگیره میگی؟؟؟؟؟؟

hesam_dj10
یک شنبه 03 اسفند 1393, 07:06 صبح
اره مشکل همین بود
ممنون

دستور select هم این بود
"SELECT * FROM moshtarak where date_moraje Between @date1 And @date2"

SabaSabouhi
یک شنبه 03 اسفند 1393, 08:46 صبح
ممنون از راهکارت ولی وقتی اینجوری خیلی راحت میشه انجام داد چرا دوباره کاری کنم
نکنه بخاطر حجم زیادی که nvarchar میگیره میگی؟؟؟؟؟؟

سلام
نه دوست من، حجم اهمیت زیادی نداره.
چرا عددها رو به صورت رشته‌ی حرفی نمی‌گیری؟
تاریخ جنسش تاریخه، تمامی عملیات مقایسه و غیره رو مستقیم می‌تونی انجام بدی
تو گزارش‌گیری ( فیلترینگ ) کمکت می‌کنه و . . .
این که در حال حاضر امکان نمایش تاریخ به صورت شمسی تو ویندوز وجود نداره دلیل
نمی‌شه که کار اشتباه رو انجام بدی. ( گویا قراره ویندوز 10 تاریخ شمسی رو پشتیبانی کنه )

اما اگه اصرار به ادامه‌ی کار اشتباه داری من دیگه حرفی ندارم.

صبا صبوحی

hesam_dj10
یک شنبه 03 اسفند 1393, 18:44 عصر
سلام
نه دوست من، حجم اهمیت زیادی نداره.
چرا عددها رو به صورت رشته‌ی حرفی نمی‌گیری؟
تاریخ جنسش تاریخه، تمامی عملیات مقایسه و غیره رو مستقیم می‌تونی انجام بدی
تو گزارش‌گیری ( فیلترینگ ) کمکت می‌کنه و . . .
این که در حال حاضر امکان نمایش تاریخ به صورت شمسی تو ویندوز وجود نداره دلیل
نمی‌شه که کار اشتباه رو انجام بدی. ( گویا قراره ویندوز 10 تاریخ شمسی رو پشتیبانی کنه )

اما اگه اصرار به ادامه‌ی کار اشتباه داری من دیگه حرفی ندارم.

صبا صبوحی
منظورتو از --عددها رو به صورت رشته‌ی حرفی- بگیرم -نفهمیدم
ولی قهر نکن چشم درستش میکنم