PDA

View Full Version : سوال: ردگیری اصلاحات کاربر توسط مدیریت



hana2064
شنبه 17 اسفند 1387, 11:03 صبح
توی برنامه ام نیاز به طراحی قسمت ردگیری اصلاحاتی که کاربر انجام میده مثل ویرایش و حذف داده ها توسط مدیر دارم اما روند کارو نمیدونم که چطو ر باید باشه .
دوستان اگه نظری دارن و تجربیاتی که در زمینه طراحی این قسمت دارن دریغ نکنن. ممنونم:ناراحت::ناراحت::نارا ت:

hana2064
شنبه 17 اسفند 1387, 12:47 عصر
کسی تا بحال این مسئله رو توی سیستم هاش پیاده سازی نکرده؟؟
دوستان چه پیشنهادی دارن؟؟؟؟؟
من منتظرررررررررررررمممممممم مم.

mohsen306
شنبه 17 اسفند 1387, 14:03 عصر
با سلام :
من قبلا توی یک برنامه یک همچین چیزی می خواستم ، اینطوری انجامش دادم که یک Table نشانه تعریف کردم به قول خودمون tblflag بعدش توی این Table ابتدا نام کاربری رو قرار میدادم بعد Table که عملیات روش صورت گرفته ، بعد نوع عملیات صورت گرفته و در نهایت رکوردی که عملیات روش رخ داده بعد با ایجاد یک View به Admin ام Report میدادم که چه شده و چه نشده

البته از این کار اضافه کاریه یعنی 100 در صد درست نیست و هر بار باید دو بار کار ها رو تکرار کنی یعنی یکبار عملیات کاربر و یک هم عملیات رو Tableای که حرفشه

موفق باشی:لبخند:

hana2064
شنبه 17 اسفند 1387, 15:10 عصر
نظر من اینه که یه کاربر میتونه تو یه فرم که دکمه های معمول ثبت و ویرایش و حذف وجود داره یه فیلد رو یکبار ثبت کنه و ده یا صد بار ویرایش کنه و یا فیلدهایی رو ایجاد و حذف کنه .
ایا همه این ویرایش ها و حذف ها رو مدیر میتونه ببینه ؟؟ در این صورت تعداد فیلدهای این جدول خیلی زیاد میشه .
راه درست تر این مسئله چیه ؟

mehdi.mousavi
شنبه 17 اسفند 1387, 16:22 عصر
توی برنامه ام نیاز به طراحی قسمت ردگیری اصلاحاتی که کاربر انجام میده مثل ویرایش و حذف داده ها توسط مدیر دارم اما روند کارو نمیدونم که چطو ر باید باشه. دوستان اگه نظری دارن و تجربیاتی که در زمینه طراحی این قسمت دارن دریغ نکنن. ممنونم

سلام.
یکی از بهترین مقالات در این زمینه، مقاله Scott Mitchell هستش (در دو قسمت) که می تونید اونو اینجا بخونید. (http://www.4guysfromrolla.com/webtech/041807-1.shtml)

hana2064
یک شنبه 18 اسفند 1387, 08:55 صبح
داداشی من از این لینک چیزی نگرفتم . فقط دنبال یه ایده درست و حسابی و منطقی هستم که پیاده سازیش کنم . اگه خود تو ن نظری دارین در مورد این قضیه ممنون میشم:ناراحت::ناراحت:

mehdi.mousavi
یک شنبه 18 اسفند 1387, 09:34 صبح
داداشی من از این لینک چیزی نگرفتم . فقط دنبال یه ایده درست و حسابی و منطقی هستم که پیاده سازیش کنم . اگه خود تو ن نظری دارین در مورد این قضیه ممنون میشم:ناراحت::ناراحت:

سلام.
تقریبا تمام ایده های موجود در مقاله مذکور مطرح شده. کافیه یه خرده به خودتون زحمت بدید و مقاله رو بخونید.

پاورقی: نابرده رنج گنج میسر نمی شود!

Ali_Mor
یک شنبه 18 اسفند 1387, 11:12 صبح
یک روش که البته بسیار کار برنامه نویس و حجم اطلاعات رو افزایش میده، log گرفتن اطلاعات در خود تیبل یا در تیبلی دیگر است. فرض کنید بخواهیم در خود تیبل اطلاعات رو log بگیریم: آنگاه باید به هر تیبل اینچنین فیلدهائی اضافه کنیم: نام کاربر، عملیات،.... . در این روش در هنگام حذف رکورد حذف نمی شود بلکه در فیلد عملیات آن فلگ حذف درج میگردد و اسم کاربری که حذف را انجام داده نیز در همین رکورد درج میگردد. هنگام ویرایش نباید رکورد را ویرایش کرد بلکه باید به آن فلگ ویرایش را ست نمود و یک رکورد دیگر با مقادیر ویرایش شده جدید در تیبل اینسرت نمود. لازم بذکر است برای واکشی باید دقت شود که رکوردهائی که تگ حذف یا ویرایش دارند واکشی نشوند.
با این روش که البته بسیار طاقت فرسا است تغییرات در اطلاعات بصورت کامل قابل پیگیری می باشد.

shaki_phd
یک شنبه 18 اسفند 1387, 11:35 صبح
سلام يكي از متداول ترين روشها و بهترين روشها استفاده از تريگر است به اين صورت كه شما ابتدا يك جدول طراحي مي كنيد كه درون اين جدول تمامي اطلاعات لاگ شده را ذخيره مي كنيد البته بهتر است اطلاعات رو به صورت باينري سيو كني چون اينجوري اطلاعات رو هم ميتوني قبل از ذخيره كردن فشره كني
(من كامپوننت lzo) رو پيشنهاد مي كنم البته اگه در اين حد بخواي بنويسي تريگرها رو حتما بايد با CLR بنويسي اما اگه ساده ساده بخواي بنويسي با همون Query نوشتن هم ميتوني تريگرها رو بنويسي زياد نگران نباش ما اين قضيه رو تو شركت خودم عملياتي كردم و از لحاظ سرعت هم هيچ مشكلي نداره البته ما اين اطلاعات رو براي Replication لاگ مي كنيم اميدوارم جواب سوالت رو داده باشم

hana2064
دوشنبه 19 اسفند 1387, 08:04 صبح
سلام از توجه شما ممنونم.
من تا حالا تریگر ننوشتم .

اين جدول تمامي اطلاعات لاگ شده را ذخيره مي كنيد البته بهتر است اطلاعات رو به صورت باينري سيو كني چون اينجوري اطلاعات رو هم ميتوني قبل از ذخيره كردن فشره كني


خوب من این قسمت رو هم متوجه نشدم.
میخوام که امروز اینطور روش کار کنم که تو یه جدول دیگه وقتی کاربر تو فرم edit میکنه مقادیر قبلی وجدید توی این جدول inset بشه و وقتی که Delete میکنه مقدار جدید null بشه یعنی تمام عملیات کاربر ثبت بشه
البته یه مشکلاتی داره مثلا ممکنه یه فیلد دهها بار ویرایش بشه و نمیدونم که توی این جدول جدید چند تا فیلد تعریف کنم؟!؟

shaki_phd
دوشنبه 19 اسفند 1387, 08:52 صبح
نحوه نوشتن تريگر رو كه اگه يك سرچ در MSDN بزني ميتوني بفهمي چه جوري بايد بنويسي
اينو يادت باشه كه Sql 2005 از Xml پشتيباني مي كنه و وقتي شما تعداد فيلدهاتون متغيره ميتونيد ديتا رو در قالب Xml ذخيره كنيد البته اگه اينجوري بخوايد كار كنيد حتما بايد CLR Trigger كار كنيد

kiosksoft
دوشنبه 19 اسفند 1387, 09:01 صبح
دوست عزیز اگه میخواین کارتون سریع و درست پیش بره مقاله ای که یکی از دوستان(mehdi6755) در پست 5 گذاشته رو بخوانید. بخوانید .