PDA

View Full Version : فیلتر کردن بر اساس تاریخ ...



Mahmood_M
یک شنبه 06 فروردین 1385, 17:31 عصر
چه طور می شه بانک اطلاعاتی رو طوری فیلتر کرد که فیلد هایی ( از نوع تاریخ ) رو که تاریخشون از تاریخ فعلی کامپیوتر بیشتره نشون بده ؟

shayan_delphi
یک شنبه 06 فروردین 1385, 19:51 عصر
تاریخ شمسیه یه میلادی؟
هر چی باشه داخل متغیر بریزید و با عملگرهای >=< و تاریخ فعلی که توسط Now بدست میاد مقایسه کنید.

Mahmood_M
یک شنبه 06 فروردین 1385, 23:28 عصر
دوست عزیز مگه فیلتر نباید به صورت String پر بشه؟ ( بانک اطلاعاتی من ClientDataSet است )
مثلا کد زیر :


ClientDataSet1.Filter:= 'PayDate< ? ';

به جای علامت سئوال باید یک تاریخی که بر روی یک لابل نوشته شده قرار بگیره، با توجه به این که داخل '' نمی شه از تبدیلات استفاده کرد !! ( تاریخ روی لابل ، تاریخ فعلی کامپیوتر هست که به تاریخ هجری تبدیل شده و نمایش داده می شه )
اگه راهنماییم کنید ممنون می شم...

champion
یک شنبه 06 فروردین 1385, 23:44 عصر
دوست عزیزم سلام سال نو مبارک
من پیشنهاد میکنم از filter استفاده نکنید
و اگر بتوانید از یک Query استفاده کنید نتیجه بهتری خواهید گرفت
که در ان شرط تاریخ یا به صورت پارامتر پاس شود و یا قسمتی از sql باشد

ehsane
دوشنبه 07 فروردین 1385, 07:37 صبح
بنظرم من هم بهترین روش استفاده از query است که میتوانید در آن براحتی هر گونه شرطی را تعریف و نتایج را براحتی مشاهده کنید.

saeed_d
دوشنبه 07 فروردین 1385, 13:53 عصر
سلام
تاریخ رو بصورت رشته ذخیره کردی یا Date؟
چون تاریخ شمسی رو نمی توان به صورت Date ذخیره کرد. اگه بصورت رشته باشه:

ClientDataSet1.Filter:='PayDate<'+QuotedStr(NowDate);
که NowDate در کد بالا همان تبدیل شده تاریخ کنونی سیستم به شمسی می باشد.

shayan_delphi
دوشنبه 07 فروردین 1385, 18:52 عصر
سلام
از DateToStr و QuotedToStr استفاده کنید.
چند تا پیشنهاد:
بهتره از ADO و WHERE استفاده کنید،فیلتر زمانی استفاده کنید که کاربر بطور مکرر از یه مجموعه،داده های مورد نظرش را فیلتر می کنه.
تاریخ را تبدیل نکنید فقط زمانی که به کاربر نشان داده می شود تبدیل کنید.

Mahmood_M
چهارشنبه 09 فروردین 1385, 11:56 صبح
از تمام دوستان به خاطر جواب هاشون ممنونم ، مشکلم حل شد ...