PDA

View Full Version : سوال: جستجوی اطلاعات ميان دو تاريخ خاص



niloofar norouzi
شنبه 30 شهریور 1387, 23:05 عصر
سلام
کسی یه مثال کوچیک در این مورد داره که بین 2 تاریخ جستجو کرد
و فیلد تایخ از نوع varchar باشه
search کردم اما کمکی بهم نکرد
با تشکر

esmartiz_red
شنبه 30 شهریور 1387, 23:22 عصر
برای این کار باید از دستور between توی sql استفاده کنید البته اگه بازم صبر کنید می تونم بیشتر کمکتون کنم

niloofar norouzi
شنبه 30 شهریور 1387, 23:57 عصر
سلام
لطف کردید ،حل شد
فقط یه چیزی وقتی من تاریخ را به این صورت وارد می کنم (05/02/1387) مشکلی نیست
اما وقتی به این صورت insert می شه(5/2/1387) نتایج search غلط می شه
چطور می تونم کاربر را ملزم کنم درست وارد کنه؟

esmartiz_red
شنبه 30 شهریور 1387, 23:10 عصر
خوب می تونید 3 تا combobox بزارین یکی برای روز - یکی برای ماه و یکی هم برای سال
و مقادیر مورد نظر خودتون رو توش قرار بدین
بعد هم به هم اتصالشون بدید و بعد تو db ذخیره کنید

SMRAH1
یک شنبه 31 شهریور 1387, 00:25 صبح
به نظر من بهتره داده های درون پایگاه دادتون رو بطوری که اون رو به شکل استاندار (یعنی 01/01/1387) در بیارید.چون در آینده ممکن است این مشکل به ظاهر کوچک تبعات زیادی (و همین طور پیچیدگی های زیادتری) ایجاد کنه. تا اینکه مشکل رو موقت حل کنید ....

niloofar norouzi
یک شنبه 31 شهریور 1387, 09:07 صبح
به نظر من بهتره داده های درون پایگاه دادتون رو بطوری که اون رو به شکل استاندار (یعنی 01/01/1387) در بیارید.چون در آینده ممکن است این مشکل به ظاهر کوچک تبعات زیادی (و همین طور پیچیدگی های زیادتری) ایجاد کنه. تا اینکه مشکل رو موقت حل کنید ....
خوب باید چه جوری این کارو کنم؟

esmartiz_red
یک شنبه 31 شهریور 1387, 13:55 عصر
خوب باید اطلاعات دریافتی کاربر رو هر طوری که وارد کرده بگیرین و با کدی که می نویسین اونو به فرمت درست تبدیل کنید و ذخیره کنید
ولی راهی هم که من گفتم فکر نمی کنم مشگلی براش پیش باید - خیلی از برنامه ها دارن با استفاده از همین روش کار می کنن

SMRAH1
یک شنبه 31 شهریور 1387, 15:33 عصر
سلام
يک برنامه کوچک مي نويسي که مراحل زير رو داره:
1) اول به پايگاه داده متصل مي شه
2) تمام رکورد هاي جدول مورد نظر رو بار مي کنه
3) تک تک رکورد ها رو براي ويرايش آماده کرده و در آن تمام رشته هاي تاريخ (که حتما نام اون فيلد ها رو ميدونيد) را به شکل مناسب در مي آورد (بايد يک تابع براي اين کار بنويسي که تاريخ فعلي را بگيره و شکل استاندارد رو برگردونه که در پايين توضيح مي دهم)
4) هر رکود رو به روز مي کنه
5) تمام

در مورد تابع هم با فرض اينکه تاريخ فعلا به شکل 1/1/87 است و مي خواهيم به 01/01/87 تبديل کنيم:
اول تاريخ رو روي کاراکتر / ، Split مي کنيد تا سه تا عدد بدست بياد.بعد دوباره سه عدد را ترکيب مي کنيد البته به شکل استاندار (اگر اعداد کوچکتر از 10 بودن بايد يک صفر بيشتر چاپ بشه).در ضمن بهتره عدد سال رو هم 4 رقمي بگيري چون تا 10 سال ديگه ممکنه است سال 01 به معني 1401 باشد که برنامه احتمال قاطي کردن داده(به عبارت ديگه بايد 01 بيشتر 87 باشد که بربنامه قاطي مي کنه).در رابطه با اين تابع،اين حالت هاي خاص رو هم بايد مد نظر داشته باشيد:
1) ممکن است رشته حاوي تاريخ تهي باشد (null).البته اين بستگي به پياده سازي و ورود داده ها در پايگاه دادتون داره
2) ممکن است رشته هاي تاريخ درست نباشند مثلا 87//1
3) ممکن است رشته ها معتبر نباشند مثلا 31/12/87 (اسفند 29 يا 30 روزه است نه 31 روزه)
در هر کدام از حالات (اگر موجود باشد)بايد سناريوي از پيش طراحي شده اي را در نظر بگيري (مثلا به کاربر پيغام بده که ايرادي وجود داره،يا يک تاريخ پيش فرض رو درج کنه يا تاريخ رو يک جور ديگه محاسبه کنه و ..)

حتما فرم ورود اطلاعاتت رو تصحيح کن که در هنگام بارگذاري تاريخ اون رو به شکل استاندارد در بياره

موفق باشي

s_ahmadneya
جمعه 01 آذر 1387, 18:11 عصر
کار با تاریخ در سی شارپ خیلی راحته این راه حل بالا خیلی processایجاد می کنه بهتر تاریخ را در بانک میلادی باشه .بهتر بانک تاریخ را به شمسی تبدیل کنه بهتر شمادر سطح برنامه هم با تاریخ میلادی کار کنید وفقط موقع نمایش به شمسی تبدیل کنید.مثلا تاریخ را شمسی از کاربر دریافت تبدیل به میلادی کنید در سطح بانک جستجو وسپس از بانک بخواهید رکوردها را با تاریخ شمسی برگرداند .در یک تاپیک نحو کار توضیح داده ام .لطفا" جستجو کنید پیدا میکنید.موفق باشید