PDA

View Full Version : سوال: چگونه می توان از عملکرد یک یوزر در اکسس گزارش تهیه نمود



محمد رضا فاطمی
شنبه 04 شهریور 1396, 17:58 عصر
با سلام خدمت همه عزیزان گرامی
در سایت و البته اینترنت خیلی در این مورد جستجو کردم و نتونستم موضوع مناسبی به دست بیارم.
من یه نرم افزار با اکسس نوشتم که چندین یوزر با سطح دستیرسی متفاوت داره.میخواستم ببینم چطور میشه یک گزارش از عملکرد هر کدوم از یوزرها تهیه نمود به شکلی که فعالیت هر کدوم از اونها مشخص باشه.از کوئری ها استفاده کردم اما جواب مناسب رو نتونستم بگیرم.
ممنون میشم یکی از دوستان راهنمایی بفرماید.
با تشکر

amirzazadeh
سه شنبه 07 شهریور 1396, 19:15 عصر
سلام.چيزي كه به ذهن من ميرسه اينه كه به عنوان روش اول در هنگام ثبت اطلاعات توسط كاربر در جدول مربوطه فيلدي با عنوان نام كاربر و يا كد كاربر و تاريخ ثبت به انتهاي ركورد مربوطه اضافه بشه .يه عنوان روش دوم ميتونيد يك جدول مستقل براي ثبت فعاليتهاي كاربران ايجاد كنيد كه يك كپي از ركورد ثبت شده توسط كاربر در هنگام ذخيره به همراه كد كاربر و زمان ثبت به جدول مربوطه انتقال داده بشه.
........................
موفق باشيد

Mehr@ban
سه شنبه 07 شهریور 1396, 23:23 عصر
سلام.چيزي كه به ذهن من ميرسه اينه كه به عنوان روش اول در هنگام ثبت اطلاعات توسط كاربر در جدول مربوطه فيلدي با عنوان نام كاربر و يا كد كاربر و تاريخ ثبت به انتهاي ركورد مربوطه اضافه بشه .يه عنوان روش دوم ميتونيد يك جدول مستقل براي ثبت فعاليتهاي كاربران ايجاد كنيد كه يك كپي از ركورد ثبت شده توسط كاربر در هنگام ذخيره به همراه كد كاربر و زمان ثبت به جدول مربوطه انتقال داده بشه.
........................
موفق باشيد

سلام
پیشنهاداتون رو بررسی کردم البته فقط تئوری

در مورد پیشنهاد اول جالب به نظر اومد
ولی در زمان ویرایش یک رکورد یا حذف اون تکلیف گزارش کار کاربر چی میشه؟

در مورد پیشنهاد دوم
خب قطعا هر جدولی یه سری ستون مجزا و مختلف و متفاوت دارن
چجوری اینا رو در یک جدول دیگه مشخص و تعریف و در نهایت ذخیره کنیم؟

ممنون میشم روی این مورد یکم بحث و راهنمایی بشه ...

amirzazadeh
چهارشنبه 08 شهریور 1396, 16:22 عصر
سلام و ممنون از توجهتون.
در مورد روش اول من خودم به اين صورت عمل كردم كه اولا تمامي فرم هاي ثبت اطلاعات به صورت باند نشده طراحي شده بنابراين كاربر امكان پيمايش اطلاعات و برگشت به ركورد قبلي رو بعد از ذخيره اطلاعات نخواهد داشت و فقط در صورت نياز به ويرايش از طريق دابل كليك بر روي اطلاعات جدول كه از طريق يك ليست باكس و يا فرم و ساب فرم نمايش داده ميشه قادر به اين كار خواهد بود.در زمان دابل كليك برروي ليست باكس به جاي فرم ثبت اطلاعات فرم ويرايش اطلاعات براي كاربر باز ميشه كه بعد از اعمال تغييرات زمان اعمال تغييرات و كد كاربر در فيلد ويرايش ذخيره خواهد شد. عيب اين روش اين هست كه ما صرفا ويرايش شدن ركورد رو ذخيره مي كنيم وبه محتواي قبلي دسترسي نداريم ولي در روش دوم يك جدول ثانويه با همان فيلد هاي جدول اصلي و چند فيلد اضافي براي ذخيره كد كاربر و زمان ايجاد و زمان ويرايش و نام فيلد ويرايش شده تعبيه شده كه دقيق تر هست ولي ايرادش اين هست كه حجم ديتابيس رو افزايش ميده.
يه تصوير از جدولي كه با متد اول ايجاد شده براتون اپلود كردم:

Mehr@ban
چهارشنبه 08 شهریور 1396, 17:24 عصر
از توضیحات و راهنمایی تون خیلی متشکرم

متاسفانه من فرمهام bound هست و به جداول متصل شده
برای روش اول روش جالبیه

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

ولی برای ویرایش چیزی به ذهنم نمیرسه

ممنون میشم در این مورد هم نظری بدین

amirzazadeh
چهارشنبه 08 شهریور 1396, 18:33 عصر
سلام .اگه يه نمونه كوچيك از برنامتون رو اپلود كنيد بهتر ميتونيم پيش بريم.
....................
موفق باشيد

Mehr@ban
چهارشنبه 08 شهریور 1396, 20:09 عصر
حتما

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

چون همین الان طراحی فرم ورود رو تموم کردم و کدنویسش تموم شد
میخوام برم سراغ اصلاح فیلدهای جدول

برا همین میخوام جلوتر یه پیشزمینه ای داشته باشم


میشه این تاپیک رو هم یه نگاهی بندازین؟
http://barnamenevis.org/showthread.php?540498

AbbasSediqi
پنج شنبه 09 شهریور 1396, 01:49 صبح
با سلام خدمت دوستان


در کل شما به دنبال روش کد نویسی pursuer یا همان تعقیب کننده اید که اولین بار در برنامه نویسی نظامی آمریکا استفاده شد


در ورژن های اولیه این روش دارای دو محور اصلی بود

1) تعقیب کننده صفحات
2) تعقیب کننده دستورات

در ورژن های بعدی فقط دارای یک محور و آن هم

تعقیب کننده دستورات

بود

روش کار به این صورت است که تمامی دستورات کاربر نخست برای بررسی مجوز دسترسی و سپس در صورت داشتن مجوز برای ذخیره سازی ارسال میشود


فرض کنید کاربر به دنبال باز کردن صفحه ایست

معادل دستور اکسل open form

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

دیتابیس دارای فیلد های زیر میباشد

ID
UserID
PageID
VisitDate
VisitTime
QuiteDate
QuiteTime
Command
CommandSendDate
CommandSendTime


حال اگر دستور دخیره سازی باشد ***** insert , اگر Delete , Update , View باشد باز هم دستور SQL مختص به خود را دارد

برای جستجو


فرض کنید میخواهید بدانید کدام کاربر اطلاعات کالای y را درخواست کرده

جستجوی شما باید فیلد Command را برابر با SELECT Product_Name From Products Where ID=Y قرار دهید

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

اگر برای یوزر خاصی جستو کنید در بازه زمانی خاصی تمامی صفخات دیده شده با تاریخ شروع و خروج و تمامی دستورات نیز برای شما به نمایش در [واهد آمد


امید وارم توضیحاتم گنگ نباشد

اگر مشکلی بود بفرمایید تا کمکی اگر در توان بود انجام دهم

یا حق

Mehr@ban
شنبه 11 شهریور 1396, 02:34 صبح
سلام


توضیحات مثل همیشه فوق العاده ای و کامل بود
یکی از مزیتهای توضیحات شما اینه که علاوه بر شرح مشکل یا مسئله مورد نظر، اطلاعاتی هم پیرامونش میدین که واقعا مفیده و کاربردی

چیزی که من متوجه شدم قطعا تمام مطالب نبوده
ولی در حد جزئی اینکه باید فرم ها به صورت غیرمتصل یا unbound باشن تا با استفاده از دستورات sql داده ها در جداول ذخیره بشن و در این بین این عمل گزارش گیری انجام بشه

متاسفانه بنده هنوز به این مهارت مسلط نشدم که با فرم های unbound کار کنم و فعلا با فرم های bound شده دارم کار میکنم
در این روش هم میشه کاری کرد به نظر شما؟

amirzazadeh
شنبه 11 شهریور 1396, 18:58 عصر
از توضیحات و راهنمایی تون خیلی متشکرم

متاسفانه من فرمهام bound هست و به جداول متصل شده
برای روش اول روش جالبیه

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

ولی برای ویرایش چیزی به ذهنم نمیرسه

ممنون میشم در این مورد هم نظری بدین

سلام
تو فرمهاي باند شده هم اين كار امكان پذير هست به اين صورت كه در نماي طراحي فرمتون نويگيشن باتون (Navigatin botton)رو غير فعال كنيد تا امكان پيمايش ركورد ها از بين بره وبراي ذخيره اطلاعات يك دكمه رو فرمتون طراحي كنيد كه علاوه ذخيره ركورد زمان ذخيره و نام كاربر رو هم ذخيره كنه.

محمد رضا فاطمی
دوشنبه 13 شهریور 1396, 16:15 عصر
سلام
بسیار سپاسگذارم بابت پاسخ های دوستان
راستش چند روز اول که پاسخی ارائه نشد بنده هم نا امید از پاسخ دادن خودم دست به کار شدم و کارهایی رو(نه البته حرفه ای) انجام دادم
من یک کوئری ایجاد کردم که تقریبا شامل فیلدهایی از تمام table های نرم افزار می شد(tbl هایی که اطلاعات آنها را نیاز داشتم)
از هر جدول هم تاریخ(جدول ها به گونه ای تنظیم شده اند که تاریخ جاری سیستم در زمان اعمال تغییر توسط کاربر به صورت خودکار در جدول ذخیره می شود) ،هم نام یوز و هم یکی از اعمالی که در جدول مهم بوده انتخاب شده
بعد از این کوئری گزارشی تهیه کردم و با دستور like اون گزارش رو فیلتر کردم
گزارش قبل از باز شدن از کاربر ارشد میخواد تا نام یوزر رو وارد کنه
نتیجه شده اینکه عملکرد یک یوز کلی اطلاعات دارم.
.
.
.

شاید این همون کلک مرغابی و باشه و اصلا هم حرفه ای به نظر نرسه،اما کار من رو راه انداخت !!!
گفم این رو مطرح کنم شاید دوستان دیگه هم استفاده کنن.

Mehr@ban
دوشنبه 13 شهریور 1396, 17:39 عصر
سلام
بسیار سپاسگذارم بابت پاسخ های دوستان
راستش چند روز اول که پاسخی ارائه نشد بنده هم نا امید از پاسخ دادن خودم دست به کار شدم و کارهایی رو(نه البته حرفه ای) انجام دادم
من یک کوئری ایجاد کردم که تقریبا شامل فیلدهایی از تمام table های نرم افزار می شد(tbl هایی که اطلاعات آنها را نیاز داشتم)
از هر جدول هم تاریخ(جدول ها به گونه ای تنظیم شده اند که تاریخ جاری سیستم در زمان اعمال تغییر توسط کاربر به صورت خودکار در جدول ذخیره می شود) ،هم نام یوز و هم یکی از اعمالی که در جدول مهم بوده انتخاب شده
بعد از این کوئری گزارشی تهیه کردم و با دستور like اون گزارش رو فیلتر کردم
گزارش قبل از باز شدن از کاربر ارشد میخواد تا نام یوزر رو وارد کنه
نتیجه شده اینکه عملکرد یک یوز کلی اطلاعات دارم.
.
.
.

شاید این همون کلک مرغابی و باشه و اصلا هم حرفه ای به نظر نرسه،اما کار من رو راه انداخت !!!
گفم این رو مطرح کنم شاید دوستان دیگه هم استفاده کنن.

بسیار عالی
خوبه باز همین کلک مرغابی به ذهنت رسیده
ما که همین رو هم نتونستیم در بیارم

شما هم اگه نمونه برنامه ای بذاری تا شاید برای بنده و آیندگان راهگشا باشد.

تشکر

Mehr@ban
جمعه 24 شهریور 1396, 22:07 عصر
سلام

روش ورود و خروج و باز کردن فرم ها و خروج ازشون رو برای هرکاربر با نام کاربری و زمان رو درست کردم

ولی اینکه داخل فرمها و با اطلاعات چیکار کرده رو هنوز نتونستم در بیارم

ممنون میشم از آقای فاطمی که نمونه رو با مقداری توضیح قرار بدین

eb_343
شنبه 25 شهریور 1396, 00:25 صبح
...............

mosaArabi
سه شنبه 28 شهریور 1396, 14:33 عصر
سلام
دوستان روشی که بنده انجام میدم اینه که یک تیبل مثلا با 10 تا ستون درست کردم . فرم هایی که دکمه حذف داره دستور گذاشتم که 1- تیبل را باز کنه 2- رکورد را انتخاب کنه 3- کل سطر را در فرم کپی کنه 4- در تیبل پیست کنه 5- عمل حذف را انجام بده 6- تیبل را ببنده.

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

موردیکه مورد توجه است اینه که در فرم هم یک تکس مخفی گذاشتم که با عملیات حذف یا کپی عبارت حذف یا گپی را هم در تیبا ذخیره میکنه و همچنین نام کاربر و نام سیستم را.

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

eb_343
چهارشنبه 29 شهریور 1396, 12:22 عصر
سلام
تصویر فرم کنترل کاربران یک برنامه حسابداری در دست تهیه تحت اکسس

Mehr@ban
جمعه 31 شهریور 1396, 15:39 عصر
با تشکر از آقای بهرامی

فرم کاربردی رو طراحی کردین
فقط میخواستم ببینم امکان داره در مورد طراحی این فرم یکم توضیح بدین؟