تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 5 از 5

نام تاپيک: گزارش دادن تاریخهای نامرتب در دیتابیس

  1. #1
    پروفشنال gonbad city's Avatar
    تاريخ عضويت
    Jul 2009
    محل سكونت
    گلستان گنبد کاووس
    پست ها
    648

    پيش فرض گزارش دادن تاریخهای نامرتب در دیتابیس

    اولا سلام دوستان عزیز
    بنده یه دیتابیس دارم با sql server compact که این عکس یه قسمتشه


    دیتابیسم یه جوریه که باید کنترلهای سخت امنیتی بر روی کاربر انجام بشه به همین خاطر بسیار بسیار مهمه که کاربر که تاریخ رو عقب جلو میبره برنامه منم ثبت کنه و هر رکورد که ثبت میشه تاریخش هم ثبت بشه .


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

  2. #2
    اگه نباشه جاش خالی می مونه pezhmax's Avatar
    تاريخ عضويت
    May 2007
    محل سكونت
    رشت
    پست ها
    333

    پيش فرض

    اگه امنیت اطلاعات اینقدر تو این پروژه مهم هست. اول باید سرور بانک اطلاعاتی رو از بقیه کامپیوترها جدا کنی. طبیعتا کسی نباید بدون اجازه به این سرور دسترسی داشته باشه. تاریخ و ساعت سرور همیشه باید تاریخ و ساعت واقعی باشه. جاهایی که قراره ساعت رو تو دیتابیس ذخیره کنی، از ساعت سرور استفاده کن. این کار با یه تابع ساده GETDATE() تو خود SQL-Server قابل انجامه.

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    ولی اگه تاریخ تو جاهای دیگه برنامه ات استفاده میشه، من توصیه میکنم تاریخ سیستمها رو با تاریخ سرور Sync کنی.(البته راه استانداردی نیست و همون روش اول امن تره و خطاهاش هم کمتره). این کار با دریافت ساعت سرور از همون تابعی که گفتم شروع میشه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    این دستور رو با استفاده از اجرای تابع ExecuteScalar از کلاس SqlCommand میتونی به یه متغیر تاریخ نسبت بدی. بعد با استفاده از Win32 API میتونی تاریخ سیستم طرف رو تغییر بدی. این API رو باید اینجوری وارد برنامه کنی :



    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    فقط باید به جاری DateTime.Now تاریخ خودت رو جایگزین کنی.
    Last edited by pezhmax; 07-10-2010 at 10:12.

  3. #3
    پروفشنال gonbad city's Avatar
    تاريخ عضويت
    Jul 2009
    محل سكونت
    گلستان گنبد کاووس
    پست ها
    648

    پيش فرض

    دوست عزیز ممنونم از توجهتون
    اما متاسفانه پروژه من سروری نداره و برنامه کاملا در دست کاربره و روی سیستم خودش نصب میشه.
    به همین خاطر تنها کاری که میتونم انجام بدم اینه که تخلفاشو مخفیانه ثبت کنم جهت پیگیری های بعدی فرد متخلف

  4. #4
    حـــــرفـه ای Ultimator's Avatar
    تاريخ عضويت
    May 2007
    محل سكونت
    NetFrameWork.
    پست ها
    3,239

    پيش فرض

    سلام

    اگه درست متوجه شده باشم میتونین یه تریگر تعریف کنین که هر وقت یکی از سلول ها آپدیت شد تاریخ رو با تاریخ قبل از آپدیت مقایسه کنه و اگه این دو مقدار برابر نبود تو یه تیبل ثانویه مثلا با اسم updatelog ثبتش کنه !

  5. این کاربر از Ultimator بخاطر این مطلب مفید تشکر کرده است


  6. #5
    اگه نباشه جاش خالی می مونه pezhmax's Avatar
    تاريخ عضويت
    May 2007
    محل سكونت
    رشت
    پست ها
    333

    پيش فرض

    انوقت داده ای که امروز (بدون تخلف) ثبت شده رو با داده ای که دیروز (بدون تخلف) ثبت شده چه جوری تشخیص میدی؟

    اگه نمیتونی سرور رو جدا کنی (که باید می کردی) ، راهی که به نظر من میرسه اینه که قبل از درج داده هات تو دیتا بیس تشخیص بدی که کاربر ساعت و تاریخ سیستم رو تغییر داده یا نه. البته یه کم سخت میشه. چون باید به جای یه برنامه یه Windows Service بنویسی که بتونه مخفیانه همیشه رو سیستم در حالت اجرا باشه.
    تشخیص تغییر تاریخ توسط کاربر تو NET. از طریق کلاس SystemEvents که تو فضای نام Microsoft.Win32 هست قابل انجامه. این کلاس یه Event داره به نام TimeChanged که میشه براش یه Handler ساخت و ازش استفاده کرد :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    البته خط اول رو باید تو یه رویداد برنامه اجرا کنی. مثل Constructor کلاس اجراییت یا اگه تو برنامه ویندوز فرم (که من توصیه نمیکنم) هست مثلا تو رویداد Load فرم.

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •