PDA

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



asd_moghadas
جمعه 19 فروردین 1390, 22:35 عصر
سلام
من در برنامه ام (به زبان #C)در دیتا بیس sql2005زمان ورود وزمان خروج ونام کاربر را ثبت میکنم حالا میخواهم آخرین زمان ورود کاربر را در یک لیبل نمایش دهم در فرم اصلی چه کار باید بکنم ولطفا کمک ....

habib_namvar
جمعه 19 فروردین 1390, 22:57 عصر
سلام به نظرم یک رکورد از نوع Identity تعریف کن که هر رکورد که افزوده میشه یکی بهش اضافه شه بعد اون زمانی که بزرگترین identity رو داره میشه آخرین زمان استفاده:متفکر:

asd_moghadas
شنبه 20 فروردین 1390, 00:24 صبح
میشه بیشتر توضیح بدی درقالب کد که چکونه هربار +1بشه

shahab_software
شنبه 20 فروردین 1390, 00:34 صبح
نیاز نیست کد بنویسید (در مورد روشی که دوستمان گفت). شما یک فیلد با نوع int توی sql قرار بده (توی همان جدول اطلاعاتتون) بعد آن را بصورت identity تنظیم کن. حالا هر وقت اطلاعات یه کاربر را به بانک می فرستی این عدد یکی افزایش پیدا می کنه.

asd_moghadas
شنبه 20 فروردین 1390, 07:03 صبح
وطریقه خواندن اطلاعات از دیتابیس وشرطی که این Identityرا بخونه توسط کوئری ودر یک لیبل نمایش بده چیه ؟کمک فوری......

habib_namvar
شنبه 20 فروردین 1390, 10:11 صبح
ببخشید نتونستم بیشتر توضیح بدم منظورم همون بود که دوستمون گفت

f4rib0rz
شنبه 20 فروردین 1390, 11:36 صبح
سلام به نظرم یک رکورد از نوع Identity تعریف کن که هر رکورد که افزوده میشه یکی بهش اضافه شه بعد اون زمانی که بزرگترین identity رو داره میشه آخرین زمان استفاده:متفکر:

این روش کاملا اشتباه نه از نظر عملی نشدن ، عملی میشه ولی افزونگی رو خیلی میبره بالا .
اونطوری که من فهمیدم از سوال دوستمون اینه که اخرین زمان ورود هر کاربر رو داشته باشه . برای این کار یه فیلد به جدول کاربر اضافه کن بعد هر دفعه که کاربر login کرد این فیلد رو با زمان جاری update کن .
هیچ مسئله خاصی تو پیاده سازی و کد کردن نداره ولی بازم اگه نتونستی بهم بگو تا کدش بنویسم برات.

asd_moghadas
شنبه 20 فروردین 1390, 11:43 صبح
اگه زحمتی نیست کد اون را بگذارید چون من ازبس روشهای دیگه را امتحان کردم دیگه هنگ کردم

shahab_software
شنبه 20 فروردین 1390, 12:27 عصر
ببینید دوست من، بستگی به عملکرد برنامتون داره. اگر کل اطلاعات لاگین هر کاربر رو نیاز دارید یعنی می خواید بدونید کاربر چه زمانایی وارد برنامه شده از روش اول استفاده کنید. ولی اگر فقط زمان آخرین ورود را می خواید همان طور که دوستمون گفت توی جدول اطلاعات کاربرتون (همان جدولی که نام کاربری و پسورد و... توش هست) یه فیلد برای آخرین زمان ورود قرار بدید و هر وقت کاربر وارد برنامه می شه زمان آن را ویرایش کن.

javad_r_85
شنبه 20 فروردین 1390, 12:29 عصر
یه فیلد به جدول اضافه کن با نام last datetime زمانی که کاربر لاگین کرد مقدار این فیلد را دربیار که آخرین زمان ورود کاربر به برنامه هست و یه جایی در برنامه نیز مثلا هنگام خروج این فیلد را با تاریخ جاری سیستم به روز کن

f4rib0rz
شنبه 20 فروردین 1390, 12:55 عصر
اگه زحمتی نیست کد اون را بگذارید چون من ازبس روشهای دیگه را امتحان کردم دیگه هنگ کردم
خب اینم کدش . من دیگه قسمت login رو ننوشتم به صورت دستی user رو admin وارد کردم تو باید وقتی که login شد کاربر username رو بفرستی برای تابع تو کد هم نشون دادم .
با vs2010 نوشتم framwork 3 گذاشتم که تو باز کردنش مشکل نداشته باشی(شایدم اگه 2008 استفاده می کنی به مشکل بر بخوری ) اگه مشکل داشتی باز بگو .
سه لایه هم نوشتم که که به قول خودت هنگ نکنی :چشمک:

asd_moghadas
شنبه 20 فروردین 1390, 13:24 عصر
ممنون دوست عزیز امامن کدی در سایت ندیدم

shadi khanum
شنبه 20 فروردین 1390, 13:32 عصر
اگه تنها log که میخوای از کاربرانت داشته باشی آخرین زمان ورود به سیستم، این روش که یه فیلد داشته باشی که هربار لاگین کرد کاربر ، update بشه روش خوبیه ولی اگه میخوای بتونی بیشتر lig بگیری که مثلا کی وارد شد، کی خارج شد، یا مثلا چه کارایی تو سیستم کرده، باید یه جدول مستقل داشته باشی مثلا به اسم Log که ID کاربر و نام کامپیوتر و IP و تاریخ انجام اون کار و شرح کاری که انجام داده رو توش نگه داری. اینجوری همه کارای کاربر رو میتونی پیگیری کنی

f4rib0rz
شنبه 20 فروردین 1390, 13:35 عصر
اگه زحمتی نیست کد اون را بگذارید چون من ازبس روشهای دیگه را امتحان کردم دیگه هنگ کردم
برنامه رو با vs 2010 نوشتم .
دیگه قسمت login رو ننوشتم به صورت دستی username رو admin دادم تو کد نشون دادم کجاست تو باید وقتی login شد کاربر username رو بگیری بفرستی برا تابع.

f4rib0rz
شنبه 20 فروردین 1390, 13:36 عصر
ممنون دوست عزیز امامن کدی در سایت ندیدم
اره سایت مشکل داشت پیوست نمی شد ... الان گذاشتم

asd_moghadas
شنبه 20 فروردین 1390, 17:59 عصر
اگه تنها log که میخوای از کاربرانت داشته باشی آخرین زمان ورود به سیستم، این روش که یه فیلد داشته باشی که هربار لاگین کرد کاربر ، update بشه روش خوبیه ولی اگه میخوای بتونی بیشتر lig بگیری که مثلا کی وارد شد، کی خارج شد، یا مثلا چه کارایی تو سیستم کرده، باید یه جدول مستقل داشته باشی مثلا به اسم Log که ID کاربر و نام کامپیوتر و IP و تاریخ انجام اون کار و شرح کاری که انجام داده رو توش نگه داری. اینجوری همه کارای کاربر رو میتونی پیگیری کنی
منظرم دقیقا همین مورد بود

asd_moghadas
شنبه 20 فروردین 1390, 18:15 عصر
نوشتم framwork 3 گذاشتم که تو باز کردنش مشکل نداشته باشی(شایدم اگه 2008 استفاده می کنی به مشکل بر بخوری ) اگه مشکل داشتی باز بگو . اگه امکان داره با sql2005 وvs2008 ....چون به vs2010وsql2008دسترسی ندارم

f4rib0rz
شنبه 20 فروردین 1390, 20:29 عصر
اگه امکان داره با sql2005 وvs2008 ....چون به vs2010وsql2008دسترسی ندارم
منم که نمی تونم Vs2008 نصب کنم :لبخند:
با notepad باز کن کدرو ببین کد خیلی رون نوشتم مشکل نیست
کلاس dataacess لایه سه دسترسی به بانکه
کلاس user لایه دو منطق برنامه
فرم main , login لایه سه
اینا رو باز کن با notepad متوجه میشی چی کار کردم .
موفق باشی....

asd_moghadas
دوشنبه 22 فروردین 1390, 10:51 صبح
سلام
اگر بخواهم تشخیص دهم که کاربر در کدام صفحه وipونام کامپیوتر شخص چیست وذخیره کنم چه کار کنم ؟

shadi khanum
دوشنبه 22 فروردین 1390, 11:32 صبح
سلام
اگر بخواهم تشخیص دهم که کاربر در کدام صفحه وipونام کامپیوتر شخص چیست وذخیره کنم چه کار کنم ؟
واسه اینکار یه جدول به دیتابیست اضافه میکنی به اسم مثلا User_Log، با فیلدهای : یه آیدی از نوع Identity، آیدی یوزر به عنوان primary key ، computer_name ، Log_Descr، UserIP ،Log_Datetime
یه تابع هم بنویس مثلا به اسم AddLog که ورودیش این اطلاعات باشه(آیدی کاربر - آی پی سیستمش - نام کامپیوتر - شرحی از کاری که انجام شده - زمان جاری) و توی تابع یه insert ساده بر اساس ورودیهای تابع بنویس
و تابع رو جاهیی که میخوای log بگیری فراخوانی کن

asd_moghadas
دوشنبه 22 فروردین 1390, 12:31 عصر
برای گرفتن ip , نام کامپیوتر از چه کدی استفاده کنم

asd_moghadas
دوشنبه 22 فروردین 1390, 17:37 عصر
کسی نیست جواب بده

sarbaz_esf
دوشنبه 22 فروردین 1390, 18:01 عصر
سلام دوست عزیز
برای سیستم لوکال
using System.Net;
IPAddress[] ipList = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress ip in ipList )
MessageBox.Show(ip.ToString());
برای یک سیستم خاص با دانستن نام آن
IPAddress[] ipList = Dns.GetHostAddresses("نام سیستم");
foreach (IPAddress ip in ipList )
MessageBox.Show(ip.ToString());
موفق باشی

shadi khanum
دوشنبه 22 فروردین 1390, 19:30 عصر
این اسم کامپیوتر رو میده
Environment.MachineName.ToString()

asd_moghadas
چهارشنبه 07 اردیبهشت 1390, 10:44 صبح
"select count(*) from users where username='{0}' and password='{1}'"
کد فوق دیتاتیبل را پرنمی کنه وارورمیده وبه دستور

string msg = dt.Rows[0][0].ToString();
ایراد میگیره حتی در برنامه خودتون به [0][0] لطفا راهنمایی مشکل کجاست

arta.nasiri
چهارشنبه 07 اردیبهشت 1390, 11:19 صبح
کد فوق دیتاتیبل را پرنمی کنه وارورمیده وبه دستور

string msg = dt.Rows[0][0].ToString();
ایراد میگیره حتی در برنامه خودتون به [0][0] لطفا راهنمایی مشکل کجاست

سلام

در این کد

"select count(*) from users where username='{0}' and password='{1}'"

چه آرگومان هایی رو ارسال میکنید ؟

واضحه که اگه DataTable پر نشه دستور

dt.Rows[0][0]
ارور خواهد داد.

asd_moghadas
پنج شنبه 08 اردیبهشت 1390, 07:06 صبح
سلام
من از برنامه دوستمان F4riborz استفاده کردم درپست 14

EndLoinTime2.zip‏ (409.2 کیلوبایت, 26 دیدار)
ظاهرا مشکل داره لطف کنید بگید مشکل در کجاست وچرا این ارور داده می شود.