PDA

View Full Version : سوال: گزارش دادن تاریخهای نامرتب در دیتابیس



gonbad city
پنج شنبه 15 مهر 1389, 00:37 صبح
اولا سلام دوستان عزیز
بنده یه دیتابیس دارم با sql server compact که این عکس یه قسمتشه
http://barnamenevis.org/forum/attachment.php?attachmentid=57865&stc=1&d=1286401021
دیتابیسم یه جوریه که باید کنترلهای سخت امنیتی بر روی کاربر انجام بشه به همین خاطر بسیار بسیار مهمه که کاربر که تاریخ رو عقب جلو میبره برنامه منم ثبت کنه و هر رکورد که ثبت میشه تاریخش هم ثبت بشه .


میخوام برنامه تاریخ هارو چک کنه و تاریخ هایی که بینشون عقب جلو رفته رو به من گزارش کنه
مثلا در عکس بالا 3 رکورد برای 2010/10/06 ثبت شده بعد تاریخ عوض شده و بطور کاملا مرتب رفته به 07 بعد باز تاریخ یه روز رفته جلو به 08 و توی رکورد بعدی برگشته به 07 در واقع این 08 تخلفه حالا من میخوام خود برنامه تشخیص بده و برام گزارش بده آیا این ممکنه؟
خواهش میکنم اگه حتی راهی به نظرتون میرسه که کوچکترین ربطی هم به سوال من داره دریغ نکنین ضمن اینکه چه با کد و چه با الگوریتم بهم یاری برسانین به هر صورت دعاگوی شما هستم.
پیشاپیش از همه دوستانی که این تاپیک رو میخونن و کمک هم میکنن ممنونم:قلب:

mmd2009
پنج شنبه 15 مهر 1389, 06:05 صبح
با سلام

با توجه به اینکه شما یم فیلد ID دارید که autoNumber هست البته از ظاهر برنامه مشخصه که هست اگر اینطوریه که :

میتونید همیشه اول بیایید مقدار MAX رو با یک کوئری بدست بیارید سپس مقدار فیلد moraje اونو بذارید تو یک دیتاتایم سپس پس کنید ببنید ایا داده ای که الان میخواد وارد بشه از قبلیه بیشتر یا خیر. اگر بیشتر بود که درسته ولی اگر کمتر بود پس مطمئنا ایراد داره و نباید ثبت بشه.

ali_najari
پنج شنبه 15 مهر 1389, 10:45 صبح
شما اگه ميخواي تاريخ تغيير دادن ها رو ثبت كني يا بايد يه فيلد اضافه كنيد كه در يك فيلد تاريخ ثبت و در يه فيلد ديگه تاريخ تغيير رو ثبت كنه يا اينكه يه جدول جداگانه تمامي تغييرات رو ثبت كني

ولي اگه ميخواي همينطور باشه دوستمان راهنمايي كردن كامل

gonbad city
پنج شنبه 15 مهر 1389, 15:02 عصر
با سلام

با توجه به اینکه شما یم فیلد ID دارید که autoNumber هست البته از ظاهر برنامه مشخصه که هست اگر اینطوریه که :

میتونید همیشه اول بیایید مقدار MAX رو با یک کوئری بدست بیارید سپس مقدار فیلد moraje اونو بذارید تو یک دیتاتایم سپس پس کنید ببنید ایا داده ای که الان میخواد وارد بشه از قبلیه بیشتر یا خیر. اگر بیشتر بود که درسته ولی اگر کمتر بود پس مطمئنا ایراد داره و نباید ثبت بشه.

در درجه اول ممنون از اینکه به سوالم جواب دادید اما جسارتا باید عرض کنم که روش شما درسته اما در اجرا غلطه چون یه مقدار پیچیدگی در تاریخش وجود داره مثلا اینکه از همش بعلاوه یک بشن بله و شدنیه اما به عنوان مثال در این تاریخ ها:
2010/01/05
2010/01/05
2010/01/06
2010/01/05
2010/01/05
2010/01/07
2010/01/07
2010/01/06
اونایی که قرمزن تخلفن اما برنامه چون فقط به علاوه یک میکنه تاریخ درست بعد از تخلف رو هم تخلف ثبت میکنه!

Hamishebahar
پنج شنبه 15 مهر 1389, 19:15 عصر
سلام من الان اس کیو ال در دسترس ندارم.
همونطور که دوستمون گفتن.
قبل از اینکه ثبت کنی.
بزرگترین تاریخ رو با query بدست بیار بعد با تاریخ وارد شده مقایسه کن اگه کمتر بود ثبت نکن و پیغام بده.

gonbad city
پنج شنبه 15 مهر 1389, 19:21 عصر
سلام من الان اس کیو ال در دسترس ندارم.
همونطور که دوستمون گفتن.
قبل از اینکه ثبت کنی.
بزرگترین تاریخ رو با query بدست بیار بعد با تاریخ وارد شده مقایسه کن اگه کمتر بود ثبت نکن و پیغام بده.
ممنون
اما این روش فقط برای عقب کشیدن تاریخ جواب میده ولی من میخوام برای جلو کشیدن تاریخ هم کار کنه