سلام
نوشته شده توسط:
zahmah
اگر از نوع date باشد به چه نحو در کوئری ام بکارگیری کنم؟
بله، پیشنهاد میکنم فیلد دیتابیس تان را بجای nvarchar به date/datetime تغییر دهید .
نوع
datetime
در SQL Server هم تاریخ و هم زمان/ساعت را ذخیره میکند
( روز فلان ساعت فلان ) نوع
date
در SQL Server فقط تاریخ بدون زمان/ساعت را ذخیره میکند
اگر ساعت و دقیقه و... ندارید بهتر است از date در SQL Server استفاده کنید.
اینطوری مقایسه و جستجو باز هم ساده تر میشود، دیگر نگران نابرابری ساعت نخواهید بود.
گمانم همان date کارتان را راه بیاندازد.
بعید هم میدانم DateTimeSelector نمایش یا ویرایش ساعت ودقیقه هم داشته باشد. سپس باید نوع tbl_Get.Date را در سی-شارپ از string به System.Datetime تغییر دهید
برای خواندن و نمایش اطلاعات از DateTimeSelector.Value استفاده کنید.
DateTimeSelector1.Value = row.Date ;
برای نوشتن و ذخیره اطلاعات هم همینطور ولی عکس رفتار کنید
row.Date = DateTimeSelector1.Value ;
حالا برای جستجو ومقایسه میتوانید به سادگی از اپراتور های == یا > و یا < و... استفاده کنید.
var query = ( from gets in Mydb.tbl_Get
where gets.Title.Contains(txtTitle.Text)
&& gets.Cat.Contains(cmbCategory.Text)
&& gets.SrcName.Contains(cmbSrc.Text)
&& gets.Pos.Contains(cmbPosition.Text)
&& gets.Date >= calGetFrom.Value
&& gets.Date <= calGetTo.Value
orderby gets.Date descending
select gets ).ToList() ;
یا فرم تابعی که مزیت هایی دارد
(در این روش میتوانید برخی فیلدها را برخی مواقع جستجوکنید و برخی موارد جستجو نکنید، در عمل خیلی به کار می آید)
var query = Mydb.tbl_Get.Where(gets =>
gets.Title.Contains(txtTitle.Text)
&& gets.Cat.Contains(cmbCategory.Text)
&& gets.SrcName.Contains(cmbSrc.Text)
&& gets.Pos.Contains(cmbPosition.Text)
&& gets.Date >= calGetFrom.Value
&& gets.Date <= calGetTo.Value)
.OrderByDescending(gets => gets.Date)
.ToList() ;
فقط کنترلر DateTimeSelector که انتخاب ساعت و دقیقه ندارد؟
چون اگر انتخاب ساعت ودقیقه هم دارد یک تغییر بسیار کوچک در دستورات فوق لازم است. موفق باشید.