PDA

View Full Version : سوال: ایجاد نام کاربری و رمز عبور و view های مربوط به هرکدام



amirjz
شنبه 16 بهمن 1389, 08:26 صبح
سلام
من میخواستم بپرسم چطوری میشه در یک دیتابیس، در بدو ورود، فرمی ایجاد کرد که نام کاربری و رمز عبور رو از کاربر بگیره و با توجه به سطح کاربری تعریف شده برای تمام کاربران پیش بینی شده، دید (view) مخصوص به همون کاربر رو نمایش بده؟

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

خلاصه هر راهنمایی در این زمینه، موجب تشکر فراوان خواهد بود.
ممنون

محمد رضا انوری
یک شنبه 17 بهمن 1389, 16:36 عصر
با سلام
اساتید لطفاً جواب بدین. . .

sajjad_eb
یک شنبه 17 بهمن 1389, 20:43 عصر
با سلام
اساتید لطفاً جواب بدین. . .

موافقم
جواب بدید لطفا

mahdisk1
یک شنبه 17 بهمن 1389, 21:32 عصر
اول اینکه امیر عزیز اگه فکر کردی میتونی مثل نرم افزارهایی که تو بازار پیدا میشه و برای هر کاربر منو و صفحه و دسترسی و... تعریف میشه بتونی همون کاراور انجام بدی اشتباه میکنی.اکسس همچین توانایی رو نداره.
اما برای ایجاد کاربر:
باید یه جدول جداگانه طراحی کنی و توی اون برای هر کاربر نام و یه فیلد کد هم بذاری برای سطح دسترسی (استفاده در فرم های مختلف برنامه ت).
بعد از اینکه فرم ورود به نرم افزار رو طراحی کردی بیای و کد کاربر رو توی فرم های مختلفی که باز میشه قرار بدی.
برای کارهای مختلفی که میخوای سطح دسترسی تعریف کنی قبل از اجرای دستور این شرط رو چک کنه.
اگه کد کاربر 1 هست دستور اجرا بشه
اگه مثلا 2 هستش پیغام بده و دستور رو اجرا نکنه.
اگه 3 بود....
اما اگه منو و یا نوار ابزار برای بانک ت تعریف کرده باشی برای همه یکسانه و نمیتونی سطح دسترسی بذاری براش.

id1385
یک شنبه 17 بهمن 1389, 22:54 عصر
با سلام
برای اینکاتر راههای مختلفی وجود داره، من یه روش ساده استفاده می کنم اونم اینکه یه جدول دارم و توی اون یوزرها رو سیو می کنم و به تعداد فرمهای موجود فیلد با همون نام فرم دارم، وقتی کسی وارد برنامه میشه با یوزر خودش که وارد می شه کد یوزر رو می گیرم و توی یک رشته نگه میدارم بعد هر کدوم از فرمها رو که خواست یک فاکنشن دارم که کد یوزر رو می گیره با نام فرمی که می خواد باز بشه و جستجو می کنه که آیا مقدار چکس باکس این فرم نیم چی هستش، true or false و به نسبت همون این کار فرم رو برای یوزر نمایش می ده.
نمونشو می تونید توی برنامه انبارداری ببینید.
ورژن اصلاح شدشو از آخرین برگ این تایپیک دانلود کنید.
http://barnamenevis.org/showthread.php?221938-%D9%86%D9%85%D9%88%D9%86%D9%87-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%A7%D9%86%D8%A8%D8%A7%D8%B1%D8%AF%D8%A7%D8%B1%D B%8C-%DA%A9%D8%A7%D9%85%D9%84

روال کار :

تعریف رشته توی یک ماژول


Option Compare Database
Public ActiveUser As String


کنترل فعال بودن کاربر برای ورود به برنامه


Dim isactiv As Boolean
isactiv = DLookup("active", "user", "id=" & txt_user.Column(2))
If IsNull(isactiv) = True Then
MsgBoxFa Space(40) & " ÎØÇíí ÏÑ ÇÌÑÇí ÈÑäÇãå ÑÎ ÏÇÏå ÇÓÊ¡ áØÝÇð í˜ ÈÇÑ ÏíÑ ÇãÊÍÇä äãÇííÏ " & Space(50), vbExclamation
Exit Sub
ElseIf isactiv = False Then
MsgBoxFa Space(35) & " ˜ÇÑÈÑ ÜÜÑÇãí ÍÓÇÈ ˜ÇÑÈÑí ÔãÇ ÛíÑ ÝÚÇá ÇÓÊ¡ áØÝÇð ÈÇ ãÏíÑíÊ ÈÑäÇãå ÏÑãíÇä ȐÐÇÑíÏ " & Space(50), vbApplicationModal, txt_user.Value
Exit Sub
ElseIf isactiv = True Then
Select Case txt_pas
...



دریافت کد کاربر و ذخیره اون توی رشته بالا


ActiveUser = txt_user.Column(2)


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


Private Sub Form_Open(Cancel As Integer)
Cancel = 1
If UserCanUseThisForm(Me.name) = True Then
Cancel = 0
If whstStt.Value <> "edit" Then
Call ReSetFormSetting(True)
End If
End If
End Sub


در قسمت بالا قبل از اینکه فرم باز بشه یک فانکشن که از نوع بولین هستش چک میکنه که یوزر میتونه این فرم رو اشتفاده کنه یا نه؟ درصورتی که مثبت بود باز میشه و اگه هم نه که اصلاً باز شدن فرم کنسل شده.



Public Function UserCanUseThisForm(Formname As String) As Boolean
On Error GoTo RR
'abality = select formname where userid = USERID
Dim DoualCou As String, IsAbale As Boolean
'DoualCou = DLookup("chart", "phars", "id=1")
IsAbale = DLookup(Formname, "user", "id=" & ActiveUser)
If IsAbale = False Then
UserCanUseThisForm = False
MsgBox Space(35) & " ˜ÇÑÈÑ ÜÜÑÇãí ÍÓÇÈ ˜ÇÑÈÑí ÔãÇ ÈÑÇí ÇäÌÇã Çíä ÝÚÇáíÊ ãÍÏæÏ ãí ÈÇÔÏ " & Space(50), vbApplicationModal, "ãÍÏæÏíÊ"
DoCmd.Close acForm, Formname
Else
UserCanUseThisForm = True
End If
Exit Function
RR:
DoCmd.Close
MsgBox Space(40) & "ÎØÇíí ÏÑ ÑæÓå ÈÑäÇãå ÈæÌæÏ ÂãÏå ÇÓÊ áØÝÇð ãæÇÑÏ ÑÇ í˜ ÈÇÑ ÏíÑ ÈÑÑÓí äãÇííÏ" & Space(55), vbExclamation, "ÎØÇ"
Exit Function
End Function


با اینکه این روش بسیار بسیار شاده و مبتدیانه هست ولی کار آمده. :چشمک:

موفق باشید.

amirjz
دوشنبه 18 بهمن 1389, 08:06 صبح
از تمامی دوستان متشکرم. خوشحالم ازینکه سوال رو طوری پرسیده بودم که دقیقا همون چیزی که میخواستم رو برام توضیح دادین:چشمک:
id1385 فکر کنم این کدهایی که برام گذاشتی دقیقا همون کاریه که میخوام بکنم. الان امتحانشون میکنم و اگه مشکلی بود، دوباره بهتون زحمت میدم.
مهدیس عزیز، ممنون از راهنماییت. فکر کنم id1385 کاملترش کرد.
ممنونم. فعلا