نمایش نتایج 1 تا 28 از 28

نام تاپیک: ثبت تمامی فعالیتهای کاربر در یک جدول

  1. #1
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178

    Question ثبت تمامی فعالیتهای کاربر در یک جدول

    سلام خدمت دوستان
    چطوری میشه اضافه کردن یک رکورد توسط کاربر رو فهمید؟
    من یک جدول دارم که تمامی فعالیت های کاربر باید در اون ثبت بشه. مثلا وقتی که وارد برنامه میشه، کاربر وارد شده، ساعت ورود و تاریخ ورود رو در اون جدول ثبت می کنم. حالا می خوام وقتی رکوردی رو اضافه کرد و یا حذف کرد، اون رو هم ثبت کنم. چطوری میشه این کار رو انجام داد؟

    ممنون

  2. #2
    شما می تونی یک ایونت از روی آبجکتت بسازی
    Dim rs WithEvent As ADODC.RecordSet
    و سپس وارد ایونتهای مربوطه شده

    مثلا ایونتی داره زمانی که رکوردی حذف می شه
    زمانی که رکوردی اضافه می شه
    زمانی که رکوردی آپدیت می شه

  3. #3
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    نقل قول نوشته شده توسط mpmsoft مشاهده تاپیک
    شما می تونی یک ایونت از روی آبجکتت بسازی
    Dim rs WithEvent As ADODC.RecordSet
    و سپس وارد ایونتهای مربوطه شده

    مثلا ایونتی داره زمانی که رکوردی حذف می شه
    زمانی که رکوردی اضافه می شه
    زمانی که رکوردی آپدیت می شه
    من تا به حال این کار رو نکردم. میشه لطفا یه نمونه کوچیک بذارین؟

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    شما یه جدول بساز با فیلدهای :
    زمان ورود ،زمان خروج ،زمان حذف ،زمان اضافه کردن ،زمان ویرایش و........
    در رویداد مربوط به هرکدوم این الگوریتم رو اضافه کن
    1- یه رکورد جدید در جدول بالا ایجاد کنه
    2- بسته به نوع عمل مقدار فیلد مربوطه رو مساوی تابع :
    now()

  5. #5
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    شما یه جدول بساز با فیلدهای :
    زمان ورود ،زمان خروج ،زمان حذف ،زمان اضافه کردن ،زمان ویرایش و........
    در رویداد مربوط به هرکدوم این الگوریتم رو اضافه کن
    1- یه رکورد جدید در جدول بالا ایجاد کنه
    2- بسته به نوع عمل مقدار فیلد مربوطه رو مساوی تابع :
    now()
    من هم دقیقا همین کار رو انجام دادم و زمان های ورود به فرم و خروج از برنامه و ... رو در همین جدول ثبت می کنم. مشکلم اینجاست که نمی دونم چگونه میشه وقتی کاربر یک رکورد اضافه می کنه و یا حذف می کنه، اون ساعت رو بردارم.
    در حقیقت من با کدوم ایونت می تونم این کار رو انجام بدم؟

  6. #6
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    شما ساعت رو بر نمیداری برای هر عمل یه رکورد جدید اضافه میشه و زمان در ان درج میشه
    اما اگه منظورت اخرین زمان و بصورت تک رکوردیه با یه آپدیت کوئری زمان روبه =() now.
    اپدیت کن

  7. #7
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    دوست عزیز ظاهرا من نتونستم هنوز مشکل رو درست شرح بدم. مشکل اینجاس که من از کجا بفهمم که کاربرم یک رکورد اضافه کرد و یا اینکه یک رکورد حذف کرد؟ مشکل اینجاس، بقیه چیزها حل شده.

  8. #8
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    مگه شما در فرمت دکمه حذف ،ویرایش ،اضافه ،ذخیره و ....... نذاشتی ؟!!!!!
    پس کاربر چطوری کارها فوق رو انجام میدهده ؟ مستقیما از روی جدول ؟
    شما باید شیفت رو قفل کنی وکاربر فقط از طریق فرم رو اطلاعات مانور بده بقیه کارها هم که ساده
    منظورم حذف ،اضافه و غیره خود اکسس دکمه های ویزارد برای هر مورد داره وشما الگوریتم گفته شده رو هم بهش اضافه کن

  9. #9
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    مگه شما در فرمت دکمه حذف ،ویرایش ،اضافه ،ذخیره و ....... نذاشتی ؟!!!!!
    پس کاربر چطوری کارها فوق رو انجام میدهده ؟ مستقیما از روی جدول ؟
    شما باید شیفت رو قفل کنی وکاربر فقط از طریق فرم رو اطلاعات مانور بده بقیه کارها هم که ساده
    منظورم حذف ،اضافه و غیره خود اکسس دکمه های ویزارد برای هر مورد داره وشما الگوریتم گفته شده رو هم بهش اضافه کن
    من دکمه شیفت رو بستم. منظورتون رو از مستقیم روی جدول کار کردن نمی فهمم. من هم مثل بقیه، جداولم رو پشت فرم قرار می دم و کاربرم با فرمها کار می کنه.
    روی فرم های برنامه هم دکمه حذف ،ویرایش ،اضافه ،ذخیره و ....... ندارم. حالا میشه بگین چطوری میشه بفهمم کاربرم یک رکورد اضافه کرده و یا یک رکورد حذف کرده؟

  10. #10
    تو کافیه یه فیلد به جدولت اضافه کنیم به نام مثلا edit_time بعد دیفالت ولیوی اون رو بذاری برابر ()now=
    خوب هر تغییری این زمان رو توی اون رکورد خاص تغییر می‌ده

  11. #11
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    گفتم که در فرمت با استفاده از ویزارد دکمه های مربوط به حذف ،اضافه و...... رو بذار و الگوریتم مربوطه رو بهش اضافه کن
    اگه نتونستی برنامه ات رو اپلود کن

  12. #12
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    نقل قول نوشته شده توسط samaneh_h مشاهده تاپیک
    تو کافیه یه فیلد به جدولت اضافه کنیم به نام مثلا edit_time بعد دیفالت ولیوی اون رو بذاری برابر ()now=
    خوب هر تغییری این زمان رو توی اون رکورد خاص تغییر می‌ده
    ببین، من یه جدول دارم که فیلدهاش ایناس: فرم، عمل انجام شده، کاربر، زمان، تاریخ
    حالا وقتی کاربر من فرم "شماره 1" رو باز میکنه، من توی این جدولم، کاربری که این فرم رو باز کرده، تاریخ و زمان باز شدن فرم رو ثبت می کنم. (در فیلد فرم می نویسم: فرم شماره 1، در فیلد عمل انجام شده می نویسم: باز کردن فرم)
    برای انجام این کار (کاری که بالا شرحش دادم)، من روی ایونت on open کد مورد نظرم رو می نویسم.
    دقیقا وقتی کاربرم فرم رو می بنده، من همون کارهای بالا رو انجام می دم و فیلد عمل انجام شده رو با "بستن فرم" پر میکنم. این کد رو هم روی ایونت on close می نویسم.
    حالا من دارم دنبال جایی می گردم که وقتی کاربرم رکوردی رو اضافه کرد و یا حذف کرد، اون جدول مذکور رو پر کنم. ولی هرچی می گردم جایی پیدا نکردم که اون کد رو اونجا بنویسم.
    برای اینکه یه خورده از بحث جدولی دور بشیم، اینطوری مثال می زنم. فرض کنید می خوایم وقتی کاربرمون یک رکورد اضافه کرد بهش پیغام بدیم که یک رکورد اضافه شد. این کد رو کجا بنویسم؟

  13. #13
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    after insert
    on delete
    after update
    همگی این رویدادها در فرم هستند

  14. #14

    درخواست فایل نمونه

    با تشکر از دوستان در خصوص این مبحث اگر امکان دارد یک نمونه فایل نیز پیوست گردد تا موضوع قابل فهم تر باشد

  15. #15

    نمونه فایل

    یک نمونه فایل می گزارم فکر کنم مشکل دوستان تا حدودی حل بشه
    فایل های ضمیمه فایل های ضمیمه

  16. #16
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    اینم یه نمونه
    Private Sub Form_AfterInsert()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("table1")
    rs.AddNew
    rs!tim = Now()
    rs!action = "insert"
    rs.Update
    rs.Close

    Set rs = Nothing

    End Sub

    Private Sub Form_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("table1")
    rs.AddNew
    rs!tim = Now()
    rs!action = "update"
    rs.Update
    rs.Close

    Set rs = Nothing

    End Sub

    Private Sub Form_Delete(Cancel As Integer)
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("table1")
    rs.AddNew
    rs!tim = Now()
    rs!action = "delete"
    rs.Update
    rs.Close

    Set rs = Nothing

    End Sub

    اگر unbondکار می کنید کدهای بالا را به کلید مربوطه اضافه کنید
    فایل های ضمیمه فایل های ضمیمه

  17. #17
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    دوستان اگه از سطح دسترسی اکسس استفاده شه اون موقع چطوری نام کاربر وارد اون جدول بشه ؟

  18. #18
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    نقل قول نوشته شده توسط moustafa مشاهده تاپیک
    دوستان اگه از سطح دسترسی اکسس استفاده شه اون موقع چطوری نام کاربر وارد اون جدول بشه ؟
    مقدار بازگشتی توسط CurrentUser همان کاربر در سطح اکسس است. می توان با استفاده از دستور:
    ()me.user= currnetuser
    فیلد user که در جدول مورد نظر پیش بینی شده رو مقدار دهی کرد.

  19. #19
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    نقل قول نوشته شده توسط mmha_85 مشاهده تاپیک
    مقدار بازگشتی توسط CurrentUser همان کاربر در سطح اکسس است. می توان با استفاده از دستور:
    ()me.user= currnetuser
    فیلد user که در جدول مورد نظر پیش بینی شده رو مقدار دهی کرد.
    ممنون
    در این مواقع دیگه مجبوریم از سطح دسترسی استفاده کنیم تا کاربران عادی نتونند به ویرایش جدول فوق بپردازند

  20. #20
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    الیته می تونین با قرار دادن حالت start up برنامه در وضعیتی که در عکس آمده، یک فرم رو به عنوان فرم اصلی برنامه در موقع اجرا باز کنید (مانند فرم main در عکس ذکر شده) تا کاربر نتونه به حالت design جداول و فرم ها دسترسی داشته باشه و بنابر این کاربر عادی نمی تونه اون جدول رو ویرایش کنه.
    البته راه های دیگر مثل هیدن کردن جدول هم وجود داره و البته طبعا یکی از راه ها هم همونطور که خودتون گفتین استفاده از سطح دسترسی است
    عکس های ضمیمه عکس های ضمیمه
    • نوع فایل: jpg 12.jpg‏ (35.5 کیلوبایت, 342 دیدار)

  21. #21
    کاربر دائمی
    تاریخ عضویت
    آذر 1384
    محل زندگی
    هر کجا هستم باشم آسمان مال من است پنجره -فکر- هوا- عشق- زمین مال من است.
    پست
    997
    غیر از سطح دسترسی فایل رو mde کنی بعدش هم shifte قفل کنی که نشه به پنجره دیتابیس دسترسی پیدا کرد بازم یه کاربر یه مقدار از اکسس چیزی بلد باشه براحتی جداول رو import link می کنه به یه فایل دیگه و هر مانوری که خواست انجام میده
    حتی خود سطح دسترسی هم ثبات نداره چون recovery میشه

  22. #22
    کاربر دائمی
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    Tehran
    پست
    178
    خوشبختانه کاربرای من اینقدرها هم از اکسس سر در نمیارن...!!!
    اما به هر حال حق با شماس. من که فعلا راهی به ذهنم نمی رسه. مگر اینکه دوستانی که در این زمینه تجربه دارن راهنمایی کنن.

  23. #23
    کاربر دائمی آواتار mohammadgij
    تاریخ عضویت
    آبان 1382
    محل زندگی
    ایران-اهواز-شهرک نفت
    سن
    42
    پست
    441
    ببین من فکر می کنم هیچ راهی در اکسس معمولی وجود نداره که نشه جداول رو لینک کرد. مگر اینکه شما لینک جداول رو در ابتدای لود شدن MainForm برنامتون برقرار کنید و در هنگام بستن برنامه تمام لینک ها رو پاک کنید که این عملیات زمان بره و بهتره به نظر من از اکسس پروجکت و SQL استفاده کنید

  24. #24
    سلام به همه دوستان
    آیا میشه از یک mdb به صورت multi userاستفاده کرد. اگه میدونید کمکم کنید خدا خیرتون بده!!!!!!!!!

  25. #25
    کاربر دائمی آواتار davood-ahmadi
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    568

    Smile

    بله من خودم تا 6 کاربر را دیدم که جواب می دهد.

  26. #26
    نقل قول نوشته شده توسط davood-ahmadi مشاهده تاپیک
    بله من خودم تا 6 کاربر را دیدم که جواب می دهد.
    داوود جان دست درد نکنه اما ظاهرا باید تنظیماتی رو انجام داد شما میدونی چه تنظیماتی لازمه

  27. #27
    کاربر دائمی آواتار davood-ahmadi
    تاریخ عضویت
    بهمن 1385
    محل زندگی
    تهران
    پست
    568

    Smile

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

  28. #28
    دستت درد نکنه خیلی عالی بود حل شد

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •