السلام عليكم
في الرابط نسخه من نظام المستخدمين والصلاحيات
اريد اضافة العنوان مثلاً بعد دخول المستخدم بحيث يظهر اسم المستخدم في الفورم .
وشكرا لكم
السلام عليكم
في الرابط نسخه من نظام المستخدمين والصلاحيات
اريد اضافة العنوان مثلاً بعد دخول المستخدم بحيث يظهر اسم المستخدم في الفورم .
وشكرا لكم
بارك الله فيك يابو محمد
ربما لم اوضح المطلوب بشكل جيد
ما اريده هو تعديل جذري بحيث يتم اضافة حقل جديد الى جدول المستخدمين مثلاً عنوان سكن المستخدم او الدولة بحيث انه عند اضافة مستخدم جديد يتم ادخال العنوان وبعد الدخول الناجح يظهر حقلين واحد لاسم المستخدم والآخر لعنوان السكن ويحتاج ذلك ربما الى تعديل الوحدة النمطية .
شكرا لك
للرفع
أخي الحبيب .. تم أضافة حقل العنوان في جدول (users)
وأصبح خيارا متاحاً في نموذج (frm-UserLogon)
بعد تحديث كلمة المرور يقوم الكود بأستدعاء العنوان المتوافق مع كلمة المرور وأسم المستخدم
في نموذج (frm-UserLogon)
عند الضغط على زر (أمر44) يفتح النموذج (frmEmp)
تجد أسفل النموذج خيارين:
1- اسم (من قام بالتعديل حسب اسم المستخدم عند الدخول للبرنامج)
2- عنوان هذه المستخدم كما و في جدول (users)
هذا ما فهمت من مطلبك
ولا أعلم حقيقة سبب هذا المطلب .. يبدو غريباً؟
بالتوفيق
تحياتي/ أبومحمد
بارك الله فيك أخي الكريم
تعبتك معايا
القصد هو كالتالي :
وضع العنوان كما تفضلت به ولكن أن يكون مدمج بشكل تام مع البرنامج بمعنى انه عندما اقوم باضافة مستخدم جديد ادخل اسم المستخدم وكلمة المرور والعنوان وهذا يتطلب التعديل على كود اضافة مستخدم من النموذج user name :
Dim N As Long
DoCmd.SetWarnings False
If IsNull([UN]) Then
MsgBox "ÃÏÎá ÇÓã ÇáãÓÊÎÏã", vbOKOnly + vbMsgBoxRight, "äÞÕ ÈÇáÅÏÎÇá"
Exit Sub
ElseIf IsNull([PW]) Or IsNull([CPW]) Or [PW] <> [CPW] Then
MsgBox "ßáãÉ ÇáãÑæÑ ÛíÑ ãÊØÇÈÞÉ" + vbCr + "Ãæ ÃäåÇ ÝÇÑÛÉ" + vbCr + "ÇáÑÌÇÁ ÅÚÇÏÉ ßÊÇÈÉ ßáãÉ ÇáãÑæÑ", vbOKOnly + vbMsgBoxRight + vbExclamation, "ÎØÃ ÈÇáÅÏÎÇá"
Exit Sub
ElseIf Nz(OpenArgs, "") = "Add" Then
DoCmd.RunSQL "INSERT INTO Users ( UName, PW ) SELECT '" & incode(UN, "User") & "' AS Expr1, '" & incode(PW, "Pass") & "' AS Expr2;"
N = DLast("[SN]", "users")
DoCmd.RunSQL "INSERT INTO [Frm Ability] (SN,FRM,FRM1) SELECT" & Str(N) & " AS Expr1,FRMS.FRM,FRM1 FROM FRMS;"
Else
DoCmd.RunSQL "UPDATE Users SET UName = '" & incode(UN, "User") & "' , PW = '" & incode(PW, "Pass") & "' WHERE ( SN=" & Str(UNUM) & ");"
End If
DoCmd.SetWarnings True
DoCmd.Closeعلى سبيل المثال قمت بالتعديل كالتالي :
Dim n As Long
DoCmd.SetWarnings False
If IsNull([UN]) Then
MsgBox "أدخل اسم المستخدم", vbOKOnly + vbMsgBoxRight, "نقص بالإدخال"
Exit Sub
ElseIf IsNull([PW]) Or IsNull([CPW]) Or [PW] <> [CPW] Then
MsgBox "كلمة المرور غير متطابقة" + vbCr + "أو أنها فارغة" + vbCr + "الرجاء إعادة كتابة كلمة المرور", vbOKOnly + vbMsgBoxRight + vbExclamation, "خطأ بالإدخال"
Exit Sub
ElseIf Nz(OpenArgs, "") = "Add" Then
DoCmd.RunSQL "INSERT INTO Users1 ( UName, PW, hos_name, mobile, hos_Num, em_name ) SELECT '" & incode(UN, "User") & "' AS Expr1, '" & incode(PW, "Pass") & "' AS Expr2, '" & hos & "' AS Expr3,'" & Mobile & "' AS Expr4,'" & hosnumber & "' AS Expr5,'" & emname & "' AS Expr6;"
n = DLast("[SN]", "users1")
DoCmd.RunSQL "INSERT INTO [Frm Ability] (SN,FRM,FRMAR) SELECT" & str(n) & " AS Expr1,FRMS.FRM,FRMAR FROM FRMS;"
Else
DoCmd.RunSQL "UPDATE Users1 SET UName = '" & incode(UN, "User") & "' , PW = '" & incode(PW, "Pass") & "' WHERE ( SN=" & str(UNUM) & ");"
End If
DoCmd.SetWarnings True
DoCmd.closeوقمت باضافة الحقول اللازمة في الجدول وكل شي تمام .
الطريقة التي تفضلت بها جيدة وتعمل ولكن ما اردته هو أن يتم التعديل على الموديل Cuser لتصبح هذه الحقول الجديدة متاحة ويمكن استدعائها من اي مكان وعلى أي نموذج اريده بعد عملية الدخول وهذا الأمر يفيدني في عملية تصفية البيانات في النماذج والاستعلامات حسب عنوان او رقم جوال المستخدم .
اضافة :
الكود الأصلي من المبرمج كالتالي :
Private Sub Form_Open(Cancel As Integer)
Refresh
Dim SF As control
With MyUser
If .GetAbility(Me.Name, OpenForm) Then
Me.AllowAdditions = .GetAbility(Me.Name, Add)
Me.AllowEdits = .GetAbility(Me.Name, Edit)
Me.AllowDeletions = .GetAbility(Me.Name, Del)
For Each SF In Me.Controls
If SF.ControlType = acSubform Then
SF.Form.AllowAdditions = Me.AllowAdditions
SF.Form.AllowEdits = Me.AllowEdits
SF.Form.AllowDeletions = Me.AllowDeletions
End If
mes = MyUser.username
Next
Else
DoCmd.OpenForm "noper"
Cancel = True
End If
End Withلاحظ انه تم استدعاء username من myuser الموجود في الموديل Cuser وجعله قيمة للحقل mes .
اريد نفس الأمر تماما ليصبح مثلا add=MyUser.Addressee
لا اعرف هل ما أفكر به منطقي وممكن أم الأكتفاء بالحل الذي تفضلت به ابو محمد .
جزاك الله خير
تم تعديل هذه المشاركة بواسطة ابو سلاف في 8 أغسطس 2014 في 20:13
أخي الفاضل
السلام عليكم ورحمة الله وبركاته
يبدو أنك لا تفصل بين الأمور بشكل منطقي لنظم قواعد البيانات
يتضح الأمر جلياً عند خلطك المفاهيم بقصد أو بدون قصد (لا أقصد الإهانة - محشوم)
ما تستخدمه هو تحت مسمى (صلاحيات المستخدمين)
وما تطلبه كإضافة هو في الأصل (بيانات المستخدمين)
وما تحاول أن تقوم به هو حقيقة (خلط الأوراق)
وذلك بتعشيش جدول الصلاحيات ببيانات المستخدمين
من وجهة نظري هذا أمر غير صحيح ومضلل ومنافي للبناء الصحيح
لنظم وقواعد البيانات
دعنا نتفق على أمر:
جدول الصلاحيات هو منح المستخدم الأذن في الإضافة أو التعديل أو الحذف أو الفتح
وهذا أمر ضابط لجودة البرنامج وتحديد المسؤوليات والصلاحيات وعدم تداخلها
والحصول على نتيجة مرضية عند ممارسة البرنامج لأصناف المستخدمين.
هل هذا صحيح ومنطقي بوجهة نظرك؟
...................................................................... :
ماذا يحدث عند تجاوز التصميم الجيد للجدول؟
تحميل جدول الصلاحيات الإجهاد وروتين دائم لاستدعاء البيانات للاستعلامات أو تصفية النماذج .. ألخ
سيكون هذا الجدول مستنزف لموارد البرنامج بنهم دون نهاية .. بالنهاية ضعف وبطئ في البرنامج.
هل هذا ما تريده لبرنامج جيد؟
...................................................................... :
ما هو الحل المقترح؟
فصل بيانات المستخدمين في جدول مستقل على أن تحوي قاسم مشترك مع جدول الصلاحيات
كرقم جوال أو سجل مدني للمستخدم. يمكن الربط بينهم.
عند أقلاع البرنامج وتعبئة بيانات الدخول واجتيازها التدقيق والموافقة على الدخول
استدعاء أمر بأن يجعل نموذج البدء (يعمل) وغير مرئي
يمكنك استدعاء أي معلومة متوافقة مع بيانات نموذج (frm-UserLogon)
وتطويعها في الاستعلامات أو تصفية بيانات النموذج.
أخيرا .. أخي ليس هذا أغلاق الباب أمام طلبك .. (وأنا حاضر لتنفيذ الطلب .. غالي والطلب رخيص)
بل أؤكد أن ما طلبته من استدعاء البيانات من الموديل Cuserفهو ممكن ولكنه مخالف لنظم قواعد البيانات
فهل لا زلت ترغب به؟
...................................................................... :
في انتظار ردك.
تحياتي/ أبومحمد
بارك الله فيك
لم أتحدث عن الصلاحيات اطلاقاً والكود الأخير هو فقط للتوضيح .
اعلم جيداً الفرق بين جدول للمستخدمين وآخر للصلاحيات وما تطرقت له فقط معلومة اضافية للمستخدم لن تكون مطلوبة الا عند اضافة مستخدم جديد وتظهر تلقائياً بعد دخول المستخدم لأي نموذج بعد وضع الكود المناسب .
البرنامج بالفعل يحتوي على جدولين منفصلين للمستخدمين وآخر للصلاحيات وبالتأكيد هذا الأمر منطقي كما في المثال وكما تفضلت به أخي الكريم .
اعلم جيدا الاكواد والدوال التي يمكنني من خلالها استدعاء قيمة من نموذج نشط أو من جدول بوضع شروط خاصة وهي احد الحلول ولكني اريد تجربة هذا الامر لابتعد عن كثرة الاكواد وجعل المصدر ثابت .
اشكرك جزيلا أخي العزيز وإن أمكن تقوم بالتعديل حسب المطلوب .
والله ولي التوفيق
أمهلني وقتاً
وأرد عليك
بارك الله فيك
أبومحمد
بعد اذن الاخ ابو محمد
تفضل اخى ما طلبت
تم اضافة حقل بجدول المستخدمين
تم اضافة الكود الى الكلاس Cuser
تم تعديل كود اضافة/تعديل بيانات مستخدم
تم اضافة كود الى نموذج الموظفين لعرض الاسم و العنوان
أشكر تفضلك بالرد يا أستاذي
كفّيت ووفّيت
منك أتعلم
ربي ييسر لك الأمور ويعينك على ما أنت به من أنشغال
طلتك نور للمنتدى
وطبعاً +1
أخوك أبومحمد
تم تعديل هذه المشاركة بواسطة pms في 9 أغسطس 2014 في 12:40
بارك الله فيك أخي ابو يوسف هذا المطلوب بالضبط شكرا لك .
وتحيه وشكر وتقدير لأخي أبو محمد .
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…