PDA

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



meysamg
جمعه 23 مرداد 1388, 12:48 عصر
با سلام :

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

با تشکر از همه دوستان.

HjSoft
جمعه 23 مرداد 1388, 20:33 عصر
سلام :
اولا _ به فرض شما برنامه 10 تا يوزر داره اما : اكسس اين قابليت رو نداره كه 10 يوزر همزمان استفاده كنند .
دوما _ روش پيشنهادي : از دستور sql براي جدا كردن اطلاعات از يكديگر استفاده كنيد و در حين برنامه از Filter استفاده كنيد . اين روشيه كه خودم استفاده ميكنم . براي مثال ما يكسري افراد داريم كه شعبه هاي مختلف ثبت مي كنند و ما يك كد شعبه داريم كه با افراد ذخيره ميشوند . بعد ما ميتونيم ، بيايم در زمان بازشدن برنامه افرادي رو كه در اونجا ثبت نام كرده اند رو با دستورات Sql مثل select استفاده كنيم و بعد در نرم افزار از Seek و Filter استفاده كنيم تا در همان شعبه جستجو شود .

meysamg
جمعه 23 مرداد 1388, 20:57 عصر
با تشکر از پاسخ شما .
1. خوب sql چقدر ظرفیت داره ؟ من سیستمی رو سراغ دارم که همزمان صد ها نفر بهش کانکت هستند.

2. منظور من این بود که برای هر کاربر باید جدول جدا داشته باشیم ؟
من میخوام سیستم به این صورت باشه که نرم افزار نوشته شده ای که به دست مشتریان داده میشه همیشه ثابت هست و تغییری نمیکنه اما من در دیتابیس یه یوزر جدید بسازم و به کابر خاصی بدم که بتونه کانکت کنه و اطلاعاتی رو خودش وارد کنه و فقط با همان یوزر آن اطلاعات نمایش داده بشه.
هر یوزر به همین ترتیب .

3. لطفا دستور جستجو برای صحیح بودن نام کاربری و رمز عبور را با adodc و دیتابیس اکسس یا مای اس کیو ال را هم بگید . مثلا در جدول login ما دو فیلد user و pass داریم که هر سطر یک یوزر خاص را مشخص میکند. حالا میخوایم یوزر چک بشه و پسورد مربوطه هم چک بشه اگه صحیح بود فرو1 را نمایش بده. این کار را اگر فقط یک یوزر در جدول باشه میتونم انجام بدم و برای چندین یوزر هم فقط با combobox که یوزر ها را نمایش میده بلدم ولی بدون اینها رو نمیدونم چطوریه.

لطفا راهنمایی کنید و اگر نمونه برنامه ای برای این دو مورد دارید لطفا بزارید با تشکر فراوان.

mmssoft
جمعه 23 مرداد 1388, 21:37 عصر
. لطفا دستور جستجو برای صحیح بودن نام کاربری و رمز عبور را با adodc و دیتابیس اکسس یا مای اس کیو ال را هم بگید . مثلا در جدول login ما دو فیلد user و pass داریم که هر سطر یک یوزر خاص را مشخص میکند. حالا میخوایم یوزر چک بشه و پسورد مربوطه هم چک بشه اگه صحیح بود فرو1 را نمایش بده. این کار را اگر فقط یک یوزر در جدول باشه میتونم انجام بدم و برای چندین یوزر هم فقط با combobox که یوزر ها را نمایش میده بلدم ولی بدون اینها رو نمیدونم چطوریه.این هم یک نمونه کامل برای شما. لذت ببرید و موفق باشید.

Babak.Hassanpour
جمعه 23 مرداد 1388, 22:09 عصر
این هم یک نمونه کامل برای شما. لذت ببرید و موفق باشید.

لطفا فایل بی ارزش آپلود نکنید.
این چیزی که شما آپلود کردی یه ماژوله با این کد:




Public Declare Function RegisterHotKey Lib "user32" (ByVal hwnd As Long, _
ByVal ID As Long, ByVal fsModifiers As Long, ByVal vk As Long) As Long
Public Declare Function UnregisterHotKey Lib "user32" (ByVal hwnd As Long, _
ByVal ID As Long) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd _
As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal _
lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal _
wParam As Long, ByVal lParam As Long) As Long

Public Const WM_HOTKEY = &H312
Public Const GWL_WNDPROC = -4
Public Const MOD_CTRL = &H2
Public Const MOD_SHFT = &H4
Public Const MOD_ALT = &H1
Public GlWinRet As Long

Dim HotKey1 As Boolean
Dim HotKey2 As Boolean
Dim HotKey3 As Boolean
Dim HotKey4 As Boolean
Public Function CallbackMsgs(ByVal wHwnd As Long, ByVal wMsg As Long, _
ByVal Wp_ID As Long, ByVal Lp_ID As Long) As Long
If wMsg = WM_HOTKEY Then
Call DoFunctions(Wp_ID)
CallbackMsgs = 1
Exit Function
End If
CallbackMsgs = CallWindowProc(GlWinRet, wHwnd, wMsg, Wp_ID, Lp_ID)
End Function
Public Sub DoFunctions(ByVal VKeyID As Byte)
Select Case VKeyID
Case 1:
jadid.Show

End Select
End Sub





که نمی دونم چه ربطی به سوال اون دوستمون داره.
mmssoft عزیز ... دقت کن





--------------------------------------------------------------
نه محقق بود نه دانشمند ...... چهار پایی بر او کتابی چند

mmssoft
جمعه 23 مرداد 1388, 22:34 عصر
واقعا معذرت میخوام. چه اشتباه بزرگی!! :خجالت: فایل رو درست کردم.
لطفا من رو ببخشید. آدمه دیگه اشتباه میکنه!! :اشتباه:

meysamg
شنبه 24 مرداد 1388, 00:20 صبح
این هم یک نمونه کامل برای شما. لذت ببرید و موفق باشید.

با تشکر از شما - متاسفانه برنامه ای که گذاشتید به این صورتی که من گفتم نیست.
همین برنامه رو شما یه یوزر نیم و پسورد جدیدمثلا 5678 به دیتابیس اضافه کنید در این صورت برنامه دیگه نمیتونه اونو بشناسه و پیام خطا میده. در واقع برنامه فقط اولین یوزر ( سطر اول جدول لاگین ) رو میشناسه و بقیه یوزر هارو نمیشناسه .

vahidm
شنبه 24 مرداد 1388, 00:54 صبح
سلام
شما می تونید با استفاده از یک حلقه تکرار نام کاربری و رمز عبورهای ثبت شده با نام کاربری و رمز عبوری که کاربر وارد کرده است رو چک کنید و هر کدوم که درست بود اجازه ورود بدید
در مورد اینکه سطح دسترسی کاربران مشخص هم باشه شما می تونید با یکسری علائم در ثبت یوزر و چک کردن اون علائم در هنگام ورود سطح دسترسی رو به راحتی تعیین کنید در صورتی که متوجه نشدید پیام بذارید تا نمونه برنامه براتون بذارم

meysamg
شنبه 24 مرداد 1388, 08:32 صبح
سلام
شما می تونید با استفاده از یک حلقه تکرار نام کاربری و رمز عبورهای ثبت شده با نام کاربری و رمز عبوری که کاربر وارد کرده است رو چک کنید و هر کدوم که درست بود اجازه ورود بدید
در مورد اینکه سطح دسترسی کاربران مشخص هم باشه شما می تونید با یکسری علائم در ثبت یوزر و چک کردن اون علائم در هنگام ورود سطح دسترسی رو به راحتی تعیین کنید در صورتی که متوجه نشدید پیام بذارید تا نمونه برنامه براتون بذارم

با تشکر از پاسختون دوست عزیز

1. اگر امکان دارد کد یا نمونه برنامه مورد نظر حلقه ی تکراری که گفتید را بذارید . :لبخندساده:

2. هنوز کسی متوجه سوال من نشده ! من نمیخوام سطح دسترسی برای کاربر تعریف کنم !
ببین وحید جان من میخوام پس از ساختن برنامه و تحویل آن به کاربر ها ، به آنها یوزر و پسورد بدم و کاربر ها که از قبل مشخص نیستند و تعدادشون ممکنه کم و زیاد بشه نرم افزار را روی کامپیوتر خودشان نصب میکنند و از طریق اینترنت به دیتابیس لاگین میکنند . من همه این مراحل رو انجام دادم از جمله اتصال از طریق اینترنت و ... که مشکلی ندارم به جز 2 چیز !

الف- من میخوام کاربر که لاگین کرد به صفحه شخصی خودش وارد بشه و اطلاعاتی که خودش قبلا در دیتابیس وارد کرده رو ببینه. خوب وقتی کاربر ها مشخص نیستند و امکان تغییر برنامه بعد از تحویل به مشتری نیست این کار چطور امکان پذیره ؟ آیا میشه هر کاربر به دیتابیس خاصی که اسمش با اسم یوزرش یکی است متصل بشه ؟ امیدواردم که منظور من رو فهمیده باشید. :لبخندساده:

ب - مشکلی که قبلا دوستمون وحید جان بهش اشاره کرد که در مورد 1 ذکر شد.


با تشکر از همه دوستانی که وقت میزارن .

Tasiyan
شنبه 24 مرداد 1388, 08:50 صبح
من میخوام کاربر که لاگین کرد به صفحه شخصی خودش وارد بشه و اطلاعاتی که خودش قبلا در دیتابیس وارد کرده رو ببینه.
شما یه بانک دیگه که میتونه اکسس هم باشه به نام Setting بزار رو سرور بعد به محض اینکه کاربر لاگین کرد بانک از سرور لود بشه تو هارد و تمام تنظیمات یوزر داخلش ذخیره بشه و دفعه بعد برنامه چک کنه اگه بانک تو هارد موجود بود اونو لود کنه تنظیمات یوزر بیاد
امیدوارم متوجه منظورم شده باشی
موفق باشید/:لبخند:

meysamg
شنبه 24 مرداد 1388, 09:11 صبح
شما یه بانک دیگه که میتونه اکسس هم باشه به نام Setting بزار رو سرور بعد به محض اینکه کاربر لاگین کرد بانک از سرور لود بشه تو هارد و تمام تنظیمات یوزر داخلش ذخیره بشه و دفعه بعد برنامه چک کنه اگه بانک تو هارد موجود بود اونو لود کنه تنظیمات یوزر بیاد
امیدوارم متوجه منظورم شده باشی
موفق باشید/:لبخند:

با تشکر از شما .

اما چیزی که من میخوام و من دیدم به نظر نمیرسه اینطوری باشه. عذر میخوام ولی این کار یکم غیر منطقیه و دور از چیزی که من میخوام :لبخند:

meysamg
شنبه 24 مرداد 1388, 10:21 صبح
دوستان و اساتید راه حلی سراغ ندارید ؟ :لبخندساده:

meysamg
شنبه 24 مرداد 1388, 17:52 عصر
همچنان منتظر راهنمایی دوستان هستم :لبخندساده:

vahidm
یک شنبه 25 مرداد 1388, 01:29 صبح
با تشکر از پاسختون دوست عزیز

1. اگر امکان دارد کد یا نمونه برنامه مورد نظر حلقه ی تکراری که گفتید را بذارید . :لبخندساده:

2. هنوز کسی متوجه سوال من نشده ! من نمیخوام سطح دسترسی برای کاربر تعریف کنم !
ببین وحید جان من میخوام پس از ساختن برنامه و تحویل آن به کاربر ها ، به آنها یوزر و پسورد بدم و کاربر ها که از قبل مشخص نیستند و تعدادشون ممکنه کم و زیاد بشه نرم افزار را روی کامپیوتر خودشان نصب میکنند و از طریق اینترنت به دیتابیس لاگین میکنند . من همه این مراحل رو انجام دادم از جمله اتصال از طریق اینترنت و ... که مشکلی ندارم به جز 2 چیز !

الف- من میخوام کاربر که لاگین کرد به صفحه شخصی خودش وارد بشه و اطلاعاتی که خودش قبلا در دیتابیس وارد کرده رو ببینه. خوب وقتی کاربر ها مشخص نیستند و امکان تغییر برنامه بعد از تحویل به مشتری نیست این کار چطور امکان پذیره ؟ آیا میشه هر کاربر به دیتابیس خاصی که اسمش با اسم یوزرش یکی است متصل بشه ؟ امیدواردم که منظور من رو فهمیده باشید. :لبخندساده:

ب - مشکلی که قبلا دوستمون وحید جان بهش اشاره کرد که در مورد 1 ذکر شد.


با تشکر از همه دوستانی که وقت میزارن .

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

vahidm
یک شنبه 25 مرداد 1388, 01:34 صبح
سلام مجدد
یه سوال : چه کسی قرار کاربران رو تعریف کنه ؟ شما یا ؟

meysamg
یک شنبه 25 مرداد 1388, 01:36 صبح
ممنون وحید جان .
اگر نمونه ای دارید لطف کنید بذارید ولی من فکر کنم بهتر باشه که بر اساس یوزری که لاگین میکنه به جدول همنام آن یوزر وصل بشه . نظرتون چیه ؟ در این مورد اگر برنامه ای دارید بذارید . راستی my sql همزمان چند نفر را ساپورت میکنه ؟
تعریف کاربرها هم دست خودم هست.
راستی وحید جان اگه الان بیای یاهو خیلی ممنون میشم راحت تر میتونیم صحبت کنیم.
با تشکر فراوان

vahidm
یک شنبه 25 مرداد 1388, 01:42 صبح
سلام اینم برنامه چندین کاربره ...
خیلی ساده هست البته برنامه از یکی از دوستان بود که در همین سایت گذاشته بودند ولی من تغییراتی در برنامه انجام دادم رمز بانک هم 20 می باشد .
سوالی بود هستیم ....

meysamg
یک شنبه 25 مرداد 1388, 02:09 صبح
وحید جان منتظر پاسخ های خوب و کاملت هستم . مرسی

HjSoft
یک شنبه 25 مرداد 1388, 10:43 صبح
. خوب sql چقدر ظرفیت داره ؟
خوب sql نامحدود . ولي شما گفتي
دیتابیس ترجیحا اکسس هست.

منظور من این بود که برای هر کاربر باید جدول جدا داشته باشیم ؟
نه ، ميتونيم از يك جدول براي همه استفاده كنيم و اون ها رو با يك فيلد فيلتر از هم جدا كنيم . شما فكرشو بكن برنامه شما 100 تا كاربر داشته باشه . 100 جدول هم بايد داشته باشي و كارت خيلي سخت ميشه و براي كاربر ها هم همينطور ، چون هر دفعه كه بخوان ديتابيس رو سيستم شون دانلود كنن :عصبانی++:. اونم يك بانك براي مثال 1Gig رو كافيه 5 بار دانلود كنن و ADSl بي ADSl

--------- جدا از اين مسائل ، يك سوال فني ؟ چرا ارزيابي همه ي ما از بالاي صفحه ي اول تا پايين صفحه ي اول 0 از 1 ( يعني گفتن به درد نميخوره ) ، به جز پست شماره 6 ) برام خيلي جالبه ، آيا كسي واقعا اين كار رو كرده يا قصدي داشته ؟ -------:متعجب::متعجب::متعجب::متعجب:: تعجب::متعجب::متعجب::متعجب::م عجب::متعجب::متعجب::متعجب::مت جب:

meysamg
یک شنبه 25 مرداد 1388, 13:58 عصر
با تشکر از شما.
مگه لازمه در هر بار ارتباط کل بانک دانلود بشه ؟؟!! هرکاربر به جدول خودش وصل میشه .

شما اگه جواب این سوال منو بدید من دیگه مشکلی ندارم :

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

با تشکر

HjSoft
سه شنبه 27 مرداد 1388, 17:26 عصر
اگر درست متوجه شده باشم ، شما چرا اينطوري كار نميكني ؟

"select * from " & username

meysamg
سه شنبه 27 مرداد 1388, 17:35 عصر
اگر درست متوجه شده باشم ، شما چرا اينطوري كار نميكني ؟

"select * from " & username

دستور بالا چه چیزی رو نشون میده ؟ یوزر ها رو ! درسته ؟

اما من میخوام از تیبلی هم نام نام کاربری که لاگین کرده اطلاعات گرفته بشه . من خود یوزر رو که نمیخوام . در ضمن برای یک کاربر ثابت میشه ولی وقتی تعداد زید باشه چطوریه ؟

HjSoft
سه شنبه 27 مرداد 1388, 20:50 عصر
نه عزيزم ، يك تيبل رو طبق نام كاربري انتخاب ميكنه مثلا اگر نام كاربري كه من وارد كردم حامد باشه ، تيبل حامد باز ميشه .

meysamg
سه شنبه 27 مرداد 1388, 23:16 عصر
ممنون تستش میکنم

vbhamed
چهارشنبه 28 مرداد 1388, 00:07 صبح
سلام

دوست عزيز

روش استفاده از فيلد كد كاربري در هر جدول و فيلتر كردن اون جدول موقع استفاده، كه دوستان هم اشاره كردن معمولا بهترين روش هست

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

به نظرم مياد حداقل كاري كه كنيد اين باشه كه بانكهاي اطلاعاتيتون مختلف باشه و براي هر كاربر يك بانك اطلاعاتي جدا استفاده كنيد، هر چند در اين روش هم مشكلات جديد مثل روش دسترسي به تغيير جداول مشترك رو داريد ولي حداقل براي استفاده در شبكه و همچنين از نظر سرعت برنامه بهينه تر هست

meysamg
چهارشنبه 28 مرداد 1388, 01:22 صبح
ممنون میشه راهنمایی کنید چطور میشه هر کاربر به بانک sql خودش ( همنام خودش ) وصل بشه ؟

HjSoft
چهارشنبه 28 مرداد 1388, 09:53 صبح
توي sql كه راحته كافيه ، فقط نام بانك رو بدي . اما بازم اصولي نيست .همونطور كه من و vbhamed گفتيم . استفاده از يك جدول بهتره . فقط كافيه اطلاعات كاربر فيلتر بشه .

meysamg
چهارشنبه 28 مرداد 1388, 12:20 عصر
توي sql كه راحته كافيه ، فقط نام بانك رو بدي . اما بازم اصولي نيست .همونطور كه من و vbhamed گفتيم . استفاده از يك جدول بهتره . فقط كافيه اطلاعات كاربر فيلتر بشه .

1. ببینید ما نمیتونیم اسم بانک رو بدیم به نرم افزار چون بعد از اینکه نرم افزار رو دادیم دست مشتری اونوقع تازه بانک رو به ازای کاربر های جدید اضافه میکنم پس نام بانک و تعداد کاربر ها پیش بینی شده نیست.

2. در کد قبلی که گذاشتید آیا username نام جدول هست ؟ نام فیلد هست ؟ نام کاربر هست ؟
لطفا یه کد کاملتر و یا اگر ممکن هست یه نمونه برنامه قرار بدید .

3. روش تشخیص اینکه فرد با چه username لاگین کرده رو هم لطفا توضیح بدید .

4. روش فیلتر کردن اطلاعات رو برای 2 کاربر اگر توضیح بدید و ترجیحا یه کدی یا نمونه برنامه ای قرار بدید خیلی ممنون میشم.

با تشکر از همه دوستان

runttx
چهارشنبه 28 مرداد 1388, 19:47 عصر
با سلام خدمت دوستان بسياردوست داشتني !
خيلي خوشحال ميشم وقتي ميبينم كسي كه مشكلي داره ، هر كسي به نحوي تلاش در رفع مشكل روداره !
دوست عزيز آقاي meysamg !
تا اونجايي كه من متوجه شدم از سوال شما بهترين راه حل رو در پست 14 از دوستمون vahidm ديديم.
بعد از ثبت نام هر كاربر بايد به هركاربر يه كد يكتا اختصاص داده شود و بعد با ورود هر كاربر شما اطلاعات نمايشي را بر حسب همون كد يكتاي كاربري SELECT كنيد . من سورس دوستمون رو نديدم ولي فكر ميكنم با توضيحاتي كه داده بودند درسته و در سورس هم اعمال شده!
روش تشخيص اينكه فرد با چه UserName وارد شده خيلي راحته ! مگه شما در اول برنامه از كاربر نام و رمز عبور رو دريافت نمي كنيد و با ديتابيس برنامه چك نمي كنيد . خوب بعد از درست بودن شناسه و رمز كد آن كاربري كه شناسه آن انتخاب شده را بدست آوريد و بعد در فرم اول برنامه كارها را بر حسب آن كد كاربري يكتا چك كنيد. ميتونيد اطلاعات رو فيلتر كنيد ، دسترسي رو براي فلان كاربر محدود كنيد و غيره.

اميدوارم تا حدي مشكل شما رو حل كرده باشم.

meysamg
چهارشنبه 28 مرداد 1388, 21:57 عصر
با تشکر از شما دوست عزیز

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

HjSoft
پنج شنبه 29 مرداد 1388, 08:54 صبح
1. ببینید ما نمیتونیم اسم بانک رو بدیم به نرم افزار چون بعد از اینکه نرم افزار رو دادیم دست مشتری اونوقع تازه بانک رو به ازای کاربر های جدید اضافه میکنم پس نام بانک و تعداد کاربر ها پیش بینی شده نیست.
نميدونم ، شما گفتين اگر به ازاي هر كاربر يك بانك باز كنيم ، ميشه و من هم راهش رو گفتم / البته با توجه به اين نوشته شما :

ممنون میشه راهنمایی کنید چطور میشه هر کاربر به بانک sql خودش ( همنام خودش ) وصل بشه ؟

-------

2. در کد قبلی که گذاشتید آیا username نام جدول هست ؟ نام فیلد هست ؟ نام کاربر هست ؟
لطفا یه کد کاملتر و یا اگر ممکن هست یه نمونه برنامه قرار بدید .
username در كد بالا : فرض كنيد ، كاربر نام كاربريش رو از يك ليست باكس انتخاب ميكنه ، بعد روي لاگين كليك ميكنه و اگر پسوردش درست بود ، به جدولي مطابق نام كاربري كه از ليست انتخاب ميكنه ، به جدول مربوطه وصل ميشه . مثال براي ليست باكس: البته خودم تست نكردم ولي بايد كار كنه .

"select * from " & list_username.text



3. روش تشخیص اینکه فرد با چه username لاگین کرده رو هم لطفا توضیح بدید .
ميشه ، بيشتر در مورد نحوه لاگين شدن به سيستمتون بگين . چون معمولا كاربر نام كاربري و پسورد رو وارد ميكنه و لاگين ميشه و ديگه لازم نيست كه شما نام كاربري رو بياي پيدا كنيد و فقط كافيه صحت اون رو تاييد كنيد .


4. روش فیلتر کردن اطلاعات رو برای 2 کاربر اگر توضیح بدید و ترجیحا یه کدی یا نمونه برنامه ای قرار بدید خیلی ممنون میشم.
يعني چي ؟ _ ميخواين اطلاعات يك جدول رو فيلتر كنيد ؟ منظورتون رو واضح تر توضيح بدين .

meysamg
پنج شنبه 29 مرداد 1388, 13:59 عصر
با تشکر از شما.

1. در مورد اينکه هر کاربر به بانک sql همنام خودش وصل بشه :
هنوز دوستان منظور من رو نفهميديد ببينيد منظور من اين بود که ما برنامه رو که داديم دست کاربر ها ، بعد از اون بريم در بانک يک يوزر جديد ايجاد کنيم ( توجه کنيد که بانک در اينترنت هست ) سپس کاربر با آن نام کاربري لاگين ميکنه و اگر يوزر و پسورد صحيح بود آنوقت برنامه اطلاعات رو از بانکي با نام همان نام کاربري (يوزر نيم ) کاربري که لاگين کرده بگيره ديگه از اين واضح تر نميشه گفت خدايي

2. در مورد اينکه شخص با چه يوزر نيم وارد سيستم شده :
روش لاگين کردن من عين همين برنامه اي هست که در پست هاي قبلي گذاشتيد (password) . من ميخوام ببينم کدوم کاربر به سيستم وارد شده ؟ با چه يوزري ؟ اين رو براي 2 منظور ميخوام :
الف - بالاي نرم افزار بنويسه : خوش آمديد [ نام کاربري ]
ب- همان مورد 1 که عرض کردم - يعني اتصال به بانک همنام نام کاربري .

3. منظور من روش فيلتر کردن اطلاعات براي کاربر بر حسب نام کاربريش هست. توجه کنيد که من نميخوام محدوديت براي کاربر ايجاد کنم ! يا سطح دسترسي تعريف کنم. نه ! مثلا شما برنامه زير رو در نظر بگيريد اين در واقع چيزي هست که من ميخوام :

ما يه برنامه داريم که که بانک sql آن در هاست هست. و هيچ کاربري هنوز در آن ثبت نشده است. ما برنامه رو تحويل افرادي ( نماينده ها ) ميديم . نماينده ها هم تعدادشون مشخص نيست ممکنه يه هفته يه بار يه کاربر اضافه بشه. توجه داشته باشيد ما برنامه رو ديگه در اختيار نداريم.
حالا من 3 تا يوزر با نام هاي ali hassan mohammad اضافه ميکنم. وقتي علي لاگين کرد در ديتاگريد اطلاعاتي رو وارد ميکنه. بقيه يوزر ها هم همينطور. اما نکته مهم اينه که کاربر ها اطلاعات همديگر رو مشاهده نميکنند و هر کاربر اطلاعات خودشو ميبينه. به اين صورت که ali به بانکي با نام ali و همينطور بقيه به بانک ها وصل ميشن. يادآوري ميکنم که يوزر ها بعد از تحويل نرم و ساخت نرم ايجاد ميشن.

خواهشا اگر ممکنه يه نمونه برنامه کوچيک بذاريد . با تشکر فراوان از همه.

HjSoft
پنج شنبه 29 مرداد 1388, 17:36 عصر
هنوز دوستان منظور من رو نفهميديد ببينيد منظور من اين بود که ما برنامه رو که داديم دست کاربر ها ، بعد از اون بريم در بانک يک يوزر جديد ايجاد کنيم ( توجه کنيد که بانک در اينترنت هست ) سپس کاربر با آن نام کاربري لاگين ميکنه و اگر يوزر و پسورد صحيح بود آنوقت برنامه اطلاعات رو از بانکي با نام همان نام کاربري (يوزر نيم ) کاربري که لاگين کرده بگيره ديگه از اين واضح تر نميشه گفت خدايي
چرا واضح تر هم ميشه گفت ، پس منظور شما بانك نيست ، يك Table است و دوست من فرق اين دوتا زياده بانك به فايل فيزيكي كه شما در اينترنت قرار ميدهيد ميگويند و تيبل ( كه مثلا نام يوزنيم است ) را درون بانك ايجاد ميكنند و يك سري فيلد ها و مقدار هاي خاصي داره . اما بانك به تنهايي هيچ خاصيتي براي استفاده نداره و با Table هست كه معنا دار ميشه .


روش لاگين کردن من عين همين برنامه اي هست که در پست هاي قبلي گذاشتيد (password) . من ميخوام ببينم کدوم کاربر به سيستم وارد شده ؟ با چه يوزري ؟ اين رو براي 2 منظور ميخوام :
الف - بالاي نرم افزار بنويسه : خوش آمديد [ نام کاربري ]
ب- همان مورد 1 که عرض کردم - يعني اتصال به بانک همنام نام کاربري .http://twitter.com/favicon.icohttp://www.google.com/favicon.icohttp://static.smarterfox.com/media/wiki-favicon-sharpened.pnghttp://static.smarterfox.com/media/popup_bubble/oneriot-favicon.ico
خوب ، اين رو من واضح تر براتون شرح ميدم . بر فرض كه ما برنامه پسورد رو نديديم .
يك تيبل داريم با مقدار هاي NAME_USERNAME_PASSWORD_LASTVISIT
صفحه ي لاگين باز ميشه از كاربر كلمه عبور و نام كاربري درخواست مي كنه . كاربري براي مثال با مشخصات زير وارد ميشه : USERNAME = Hjsoft و Password = 75
بعد ميايم عبارت HjSoft رو باد كد زير فيلتر ميكنيم . ( اين عبارت در cmb_user انتخاب شده است .

rst.filter = "username='" & cmb_user.Text & "'"

If rst.RecordCount = 0 Then

MsgBox ("You Haven't Select A vaild username."), vbExclamation

End If
بعد ميايم صحت پسورد رو با كد زير بررسي ميكنيم :
If rst.RecordCount = 1 Then

If txt_pass.Text = rst.Fields("password") Then

'PASS Accepted , please rember this line MeysamG

Else

MsgBox ("You Haven't Enterd a vaild password"), vbExclamation

End If

End If

اگر درست بود با كد هاي زير تاريخ آخرين بازديد و نام اصلي و نام بانك كاربر رو دريافت ميكنيم : ( البته در اينجا فقط نام كاربري دقيقا در يك Status ريخته ميشه . شما خودت فيلد هاي ديگه رو اضافه كن / در ضمن اينو بعد از تاييد كلمه عبور جايي كه نوشتم Remember Here MeysamG بزار . )



MM.StatusBar1.Panels.Item(3).Text = "Active User : " & rst.Fields("username")

در ضمن با اين كد هم adodc صفحه ي بعد رو كه مربوط به جدول است را به نام كاربري كاربر تغيير بدين . يعني از تيبل مخصوص كاربر بخونين .
adodc1.recordsource = "select * from " & cmb_username
بعد هم صفحه ي بعد كه مربوط به نمايش است را نمايش مي دهيم . اين ديگه نهايت سعي من در تفهيم و راهنمايي بود . سوال ديگه اي بود در خدمتيم .

meysamg
پنج شنبه 29 مرداد 1388, 18:32 عصر
سلام :

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

خوب راهنمایی های خوبی کردید حتما سعی میکنم ازشون استفاده کنم ولی هنوز احساس میکنم دوستان متوجه منظور من نشدند و نمیدونن من چه جور برنامه ای رو میخوام :ناراحت:

runttx
پنج شنبه 29 مرداد 1388, 23:16 عصر
با سلام !
دوستان بزرگ ! منو ببخشيد كه فضولي ميكنم
نييييييييگاه دوست عزيز :

حرف بقيه هم به گونه اي درسته ! چون نميشه كه براي هر كاربري يه جدول درست كني ! نه كه نميشه ، ميشه ولي صد درصد يه كار اضافي هست كه بعد ها به مشكل بر ميخوري .

من ميگم شما يه جدول ورود اطلاعات كه داري توش يه كد كاربري ايجاد كن و بعد در جدول يوزها هم يه كد يكتا براي هر كاربر تعيين كن (AutoNumber-PK). بعدش هر كاربري كه وارد ميشه در ثبت اطلاعات اون كد كاربر رو در جدول اطلاعات ثبت كن به همراه بقيه اطلاعات لازمه . بعد هم براي نمايش خيلي راحت ميتوني با اون كد كاربري اطلاعات همان كاربر رو نمايش بدي .

در مورد اينکه شخص با چه يوزر نيم وارد سيستم شده :
اول پنجره لاگين باز ميشه كه شما اطلاعات شناسه و رمز عبور هر كاربر رو ميگيره و در صورت درست بودن صفحه اصلي برنامه نمايش داده ميشه . تا اينجا OK.

SELECT * FROM user_login WHERE name LIKE '" & Combo1.Text & "' AND pass LIKE '" & Text1.Text & "'"
بعد هم ميتوني كد كاربر انتخابي رو در يك TextBox روي فرم اصلي قرار بدي كه وقتي كابر كليد ورود رو زد در صورت صحيح بودن كد كاربري كه نام آن در combo1 و رمز آن در text1 قرار دارد رو مياره.
به عنوان مثال :
Form2.text2.text=rs.fields("code_karbary")
بعد از بدست اوردن اون كد ميتوني همه كار انجام بدي براي اون يوزر.

SELECT * FROM Jadval WHERE code_karbary LIKE '" & Text2.Text &

با اين شرط بعد از ورود كاربر با داشتن كد كاربري آن ميتوني اطلاعات رو بر حسب همون كاربر نمايش بدي نه اطلاعات همه رو يه ديگران رو.
:لبخندساده:

vahidm
پنج شنبه 29 مرداد 1388, 23:44 عصر
سلام
دوست عزیزم چرا اینقدر این کار رو بر خود سخت گرفتی ؟
تا حالا چند تا روش پیشنهاد شده خب دیگه انجامش بده و اگر در انجامش مشکلی بود پیام بذار .
برای هر کاربر یک کد منحصر به فرد در نظر بگیر و اطلاعات جدولتو با همون کد فییلتر کن . مشکلی بود در ادامه راهنمایی می کنیم .

meysamg
پنج شنبه 29 مرداد 1388, 23:59 عصر
با تشکر از همه دوستان .
اگر یکی یه برنامه کوچیک بذاره که من بفهمم فکر کنم مشکلم حل بشه.
مشکل اصلی من همونه که runttx براش خیلی توضیح داد اما میگم تا برنامه نباشه نمیشه فهمید .
اگر یه برنامه با 2 کاربر و یه فیلد اطلاعات و یه دیتاگرید با adodc بذارید من 80% مشکلاتم حل میشه.

runttx
جمعه 30 مرداد 1388, 13:02 عصر
يه وقت كوچولو بده برات يه نمونه درست كنم.

vahidm
جمعه 30 مرداد 1388, 15:22 عصر
سلام
من هم فعلا سرم شلوغه ولی سعی می کنم زود تحویلت بدم

runttx
جمعه 30 مرداد 1388, 15:50 عصر
سلام.
فايل رو دريافت كن . اميدوارم مشكلت تا حدي حل بشه.
http://www.mediafire.com/file/1mn2lymm15z/sample.rar

meysamg
جمعه 30 مرداد 1388, 19:08 عصر
با تشکر ویژه از runttx و vahidm

runttx من برنامه شما رو دیدم متاسفانه وقتی روی ورود کلیک میکنم ارور can,t find project or library میداد که با حذف Ucase مشکل حل شد. خیلی این برنامه کمکم کرد اما اگر کمی در مورد بانک آن و اینکه مثلا ID_U به tel وصل هست توضیح بدید و اینکه در sql چطور اینکارو میشه کرد ؟
مثلا اگر کاربر بخواد یه اطلاعات جدید وارد کنه چطوری میشه ؟ من به روش معمول نتونستم کار کنم و بانک اجازه اضافه کردن رو نمیده . :اشتباه:

runttx
جمعه 30 مرداد 1388, 22:12 عصر
با سلام

البته دوست عزيز ، من كه تستش ميكنم اون مشكل رو نداره . حالا باز هم خوبه كه مشكل اونو حل كردي و بهت كمك كرد .
منظور شمارو از اينكه ميگيد "مثلا ID_U به tel وصل هست توضیح بدی" نميدونم چي هست . اين دوتا فيلد به هم وصل نيستند . من به عنوان مثال اين فيلد ها رو گذاشتم . شما در بانك خودتون ميتونيد كلي فيلد دلخواه خودتان را اضافه كنيد . من ميخواستم شما با روش كار آشنا بشيد.
در مورد اينكه كاربر بخواد اطلاعات جديدي رو وارد كنه :
وقتي كاربر وارد با نام و رمز خود وارد شد شما ميتونيد اطلاعات دلخواهتان رو گرفته و ذخيره كنيد . مثلا در همين مثال شما ميتونيد دو تا TextBox بزاريد كه اولي براي كد كاربري باشه كه بعد از ورود كاربر كد اون در آن قرار بگيره و كاربر حق عوض كردن اونو نداشته باشه و دومي هم به عنوان مثال تلفن . بعد از زدين كليد ذخيره طلاعات text1 و text2 به ترتيب در ID_U و tel فرار بگيره. به همين راحتي . من نميدونم شما با كجاش مشكل داريد؟.

من روي اضافه كردن به بانك هم گذاشتم . ميتوني از لينك زير دانلود و اونو نگاه كني و از روشي كه استفاده كردم .
http://www.mediafire.com/file/onmjth2zoi1/sample2.rar
براي Update , Del , Search روش كار مثل همينه . فقط يكم كار كن حتما درست ميشه.
موفق باشي .

meysamg
جمعه 30 مرداد 1388, 22:42 عصر
ممنون از شما .
منظور من از ID_U به tel وصل هست اینه که من در بانک در جدول login_user برای هر یوزر کنارش یه + هست که با زدن اون فیلد tel و اطلاعاتشو نشون میده ! وقتی در خود بانک در جدول data میخوام یه چیزی اضافه کنم ( منظورم به صورت دستی هست ) اکسس این ارور رو میده :


You Cannot add or change a record because a related record is required in table "Login_User"

runttx
شنبه 31 مرداد 1388, 17:58 عصر
سلام.
خوب معلومه كه به صورت دستي نميشه ! چون اون دو تا فيلد از جدول ها با هم به اصطلاح Join شدن . اين ارتباط ميتونه در جاهاييكه تعداد جدول ها و فيلدها زياده به درد بخوره . حتي در SELECT كردن هاي تودرتو براي استخراج اطلاعات از چند جدول.

meysamg
یک شنبه 01 شهریور 1388, 09:51 صبح
ممنون ولی نگفتید در sql و access چطوری عمل join رو انجام بدیم . :لبخندساده:

runttx
یک شنبه 01 شهریور 1388, 17:56 عصر
سلام.
در Access ميتوني از منوي ابزار گزينه Relashanship رو زده و جدول هاتو انتخاب ميكني و بعد فيلدي اولي رو ميگيري و با عمل درگ روي فيلد دومي از جدول مقابل .

در SQL هم به همين روش هست .

اگه وارد Relashanship بشي خودت بيشتر متوجه ميشي.

خدانگهدار شما دوست عزيز.

meysamg
یک شنبه 01 شهریور 1388, 18:45 عصر
ممنون runttx جان با کمک شما و دیگر دوستان 90 درصد مشکلاتم حل شد .

اگه بازم سوال داشتم باز مزاحم میشم.

با تشکر فراوان.