الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مطلوب كود اظهار اسم مجموعة العمل

بدأه Enjoy في 22 أغسطس 2006 · 16 رد · 1,982 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

انا استخدم

CurrentUser

لاظهار اسم المستخدم

فهل يوجد كود او امر لاظهار اسم مجموعة العمل

وشكرا

#2

القراء (13)

الردود (0)

#3

اخي الفاضل

هل تستخدم ملف مجموعات في قاعدة البيانات MDW ام لا

اذا كنت لا تستخدم ملف المجموعات فلن تستطيع اظهار اسم المجموعات وتستطيع اظهار اسم المستخدم فقط

هذه وحدة نمطية كاملة بها خمس وظائف للمجموعات

1. الوظيفة الاولى : Function ListUsersInSystem

مهمتها استخراج قائمة بأسماء المستخدمين للنظام

Function ListUsersInSystem()
   On Error GoTo err_ListUsersInSystem
   Dim MyWorkSpace As Workspace, i As Integer
   Set MyWorkSpace = DBEngine.CreateWorkspace("SPECIAL", "Developer", "")
   For i = 0 To MyWorkSpace.Users.Count - 1
		Debug.Print MyWorkSpace.Users(i).Name
   Next i
   MyWorkSpace.Close
   Exit Function
err_ListUsersInSystem:
   If Err = 3029 Then
   Else: MsgBox Error(Err)
   End If
   MyWorkSpace.Close
   Exit Function
   End Function

وللتجربة افتح الوحدة النمطية ثم اضغط في لوحة المفاتيح على المفتاحين Ctrl + G وستفتح لك نافذة سفلية اكتب فبها

?ListUsersInSystem()

وستظهر لك قائمة بأسماء المستخدمين للنظام

2. الوظيفة الثانية : Function ListGroupsInSystem

ومهمتها استخراج اسماء المجموعات في النظام

Function ListGroupsInSystem()
   On Error GoTo err_ListGroupsInSystem
   Dim MyWorkSpace As Workspace, i As Integer
   Set MyWorkSpace = DBEngine.CreateWorkspace("SPECIAL", "Developer", "")
   For i = 0 To MyWorkSpace.Groups.Count - 1
		Debug.Print MyWorkSpace.Groups(i).Name
   Next i
   MyWorkSpace.Close
   Exit Function
err_ListGroupsInSystem:
   If Err = 3029 Then
   Else: MsgBox Error(Err)
   End If
   MyWorkSpace.Close
   Exit Function
   End Function

وللتجربة افتح الوحدة النمطية ثم اضغط في لوحة المفاتيح على المفتاحين Ctrl + G وستفتح لك نافذة سفلية اكتب فبها

?ListGroupsInSystem()

وستظهر لك قائمة بأسماء المجموعات للنظام

3. الوظيفة الثالثة : Function ListUsersOfGroup

ومهمتها استخراج اسماء المستخدمين في المجموعة

Function ListUsersOfGroup(GroupName As String)
   On Error GoTo err_ListUsersOfGroup
   Dim MyWorkSpace As Workspace, i As Integer
   Dim MyGroup As Group
   Set MyWorkSpace = DBEngine.CreateWorkspace("SPECIAL", "Developer", "")
   Set MyGroup = MyWorkSpace.Groups(GroupName)
   For i = 0 To MyGroup.Users.Count - 1
		Debug.Print MyGroup.Users(i).Name
   Next i
   MyWorkSpace.Close
   Exit Function
err_ListUsersOfGroup:
   If Err = 3265 Then
		MsgBox UCase(GroupName) & " isn't a valid group name", 16, "Error"
   ElseIf Err = 3029 Then
   Else: MsgBox Error(Err)
   End If
   MyWorkSpace.Close
   Exit Function
   End Function

وللتجربة افتح الوحدة النمطية ثم اضغط في لوحة المفاتيح على المفتاحين Ctrl + G وستفتح لك نافذة سفلية اكتب فبها

?ListUsersOfGroup()

وستظهر لك قائمة بأسماء المستخدمين في المجموعة

الوظيفة الرابعة : Function ListGroupsOfUser

مهمتها استخراج قائمة بأسماء المجموعات الخاصة بالمستخدمين

Function ListGroupsOfUser(UserName As String)
   On Error GoTo err_ListGroupsOfUser
   Dim MyWorkSpace As Workspace, i As Integer
   Dim MyUser As User
   Set MyWorkSpace = DBEngine.CreateWorkspace("SPECIAL", "Developer", "")
   Set MyUser = MyWorkSpace.Users(UserName)
   For i = 0 To MyUser.Groups.Count - 1
		Debug.Print MyUser.Groups(i).Name
   Next i
   MyWorkSpace.Close
   Exit Function
err_ListGroupsOfUser:
   If Err = 3265 Then
		MsgBox UCase(UserName) & " isn't a valid user name", 16, "Error"
   ElseIf Err = 3029 Then
   Else: MsgBox Error(Err)
   End If
   MyWorkSpace.Close
   Exit Function
   End Function

وللتجربة افتح الوحدة النمطية ثم اضغط في لوحة المفاتيح على المفتاحين Ctrl + G وستفتح لك نافذة سفلية اكتب فبها

? ListGroupsOfUser()

وستظهر لك قائمة بأسماء المجموعات الخاصة بالمستخدمين

الوظيفة الخامسة : Function CurrentUserInGroup

ومهمتها استخراج اسم المستخدم الحالي من المجموعة

Function CurrentUserInGroup(GroupName As String)
   On Error GoTo err_CurrentUserInGroup
   Dim MyWorkSpace As Workspace, i As Integer
   Dim MyGroup As Group, MyUser As User
   Set MyWorkSpace = DBEngine.CreateWorkspace("SPECIAL", "Developer", "")
   Set MyGroup = MyWorkSpace.Groups(GroupName)
   Set MyUser = MyWorkSpace.Users(CurrentUser())
   For i = 0 To MyGroup.Users.Count - 1
		If MyGroup.Users(i).Name = MyUser.Name Then
			 CurrentUserInGroup = True
			 Exit Function
		End If
   Next i
   CurrentUserInGroup = False
   MyWorkSpace.Close
   Exit Function
err_CurrentUserInGroup:
   If Err = 3265 Then
		MsgBox UCase(GroupName) & " isn't a valid group name", 16, "Error"
		CurrentUserInGroup = False
   ElseIf Err = 3029 Then
   Else: MsgBox Error(Err)
   End If
   MyWorkSpace.Close
   Exit Function
   End Function

وللتجربة افتح الوحدة النمطية ثم اضغط في لوحة المفاتيح على المفتاحين Ctrl + G وستفتح لك نافذة سفلية اكتب فبها

?CurrentUserInGroup()

وسوف يظهر لك اسم المستخدم الحالي في المجموعة

وهذا ملف يحتوي على الخمس وظائف الخاصة بالمجموعات

GroupName.rar

اختكم

زهره

#4

الاخت العزيز زهره

لقد بحث كثيرا في جميع المنتديات الخاصة بالاكسس (جميعها وليس اغلبها) العربية والاجنبية بما فيها منتدى الفريق العربي

ولم اي جواب عن استخراج اسم المجموعة

وهذا هو اول جواب بدون مبالغة فانا عاجز عن الشكر

اختي الغالية ان جميع هذة الاكواد مفيدة جدا جدا بالنسبة لي

وبالنسبة لسؤالك عن استخدامي لملف مجموعات فالجواب هو نعم انا استخدم ملف مجموعات mdw

ونظرا لكون اجوبتك مبحره وعميقة فانا ارغب بمعرفة هل يمكن استخدام اي كود وكتابته في حقل من حقول نموذج وتكون النتيجة ظهور اسم مجموعة العمل تماما مثل الكود

()CurrentUser

الخاص باسم المستخدم

وآسف على الاطالة والازعاج

#5

اخي الكريم

هل قمت بتجربة ما تم شرحه ولم نحصل على نتيجه

ارجو ابلاغي بما حصلت عليه من نتائج في النافذة السفلية للوحدة النمطية

بعد ظهور اي نتائج في النافذة السفلية للوحدة النمطية ستتعرف على الوظيفة الخاصة بإسم المجموعة وعموما هي استخدم هذه الطريقة مثل ما تستخدم

()CurrentUser لاظهار اسم للمستخدم

استخدم

()ListGroupsInSystem لاظهار اسم للمجموعة في النظام

او استخدم الوظيفة الرابعة

()ListGroupsOfUser لاظهار اسم المجموعة للمستخدمين

#6

aa.zip

الاخت زهره

لقد استخدمت جميع الاكواد

ولكن تظهر عندي رسالة خطأ وقد قمت بادراجها في الملف المرفق

علما ان ملف المجموعات يعمل بشكل صحيح من ناحية المستخدمين وصلاحياتهم

وشكرا

تم تعديل هذه المشاركة بواسطة Enjoy في 25 أغسطس 2006 في 13:35

#7

اخي الفاضل

يبدو انك ليس من هواة الاكواد

حسنا سوف اختصر عليك الطريق بشي سهل للغاية وتستطيع تطبيقه بكل سهوله ولكن ارغب ان تعطيني بعض المعلومات عن البرنامج وملف المجموعة

1. ما اسم ملف المجموعة سيكون مثل system.mdw بالتأكيد سيكون مختلف لديك المهم اعطنا اسمه بهذا الشكل

2. اين يوجد ملف المجموعة ( حدد مكانه بالضبط ) اي اكتب المسار كاملا

#8

اختي زهره

حرام عليك حطمتي معنوياتي

انا صحيح مش من هواة الاكواد بنسبة 99.9%

بس صدقيني انا مش غبي

يعني انا افهم ان اسم ملف مجموعة العمل بدون توضيح

كذلك اعرف احدد موقعه

المهم اسم ملف مجموعة العمل

data.sys

وموقعه d:\basem\data.sys

اقوم بتشغيله بواسطة ملف تنفيذي يقوم بالمرور بالبرنامج مع هذا الملف

البرنامج بالكامل وبدون مبالغة تم برمجته بجهود منك كمشرفة بنسبة كبيرة جدا تصل الى 90% ويمكن اكثر

والباقي بمساعدة بعض الاعضاء وباقي المشرفين سواء بهذا المنتدى الرائع او بمنتديات اخرى

وعشان ما اتعبك معي

انا هدفي من هذا الطلب

اني وضعت شرط في ماكرو اثناء فتح نموذج بان يفتح النموذج بشرط ان يكون اسم المستخدم " فلان مثلا "

"اسم المستخدم"=()CurrentUser

ونظرا لكون اسماء المستخدمين تتغير او تحذف او تضاف اسماء جديدة

فلقد رغبت ان استبدل اسم المستخدم باسم مجموعة العمل لان مجموعة العمل ثابته لن تتغير كثيرا

فهل يمكن ذلك

#9

ملف المجموعات انا مغير امتدادة من mdw الى sys

والملف التنفيذي مكتوب فيه

Call Shell("Msaccess.exe /Nostartup /Excl /Wrkgrp d:\Basem\Data.sys d:\basem\academy.prg", 1)

طبعا انا ناسخ ملف تشغيل الاكسس معاهم في نفس موقع البرنامج

#10

تم تغيير امتداد البرنامج ايضا من mdb الى prg

#11

اخي الفاضل

السلام عليكم ورحمة الله وبركاته

اقتباس
بس صدقيني انا مش غبي

لا لا يا اخي انا لا ارضى ان يقول اي شخص عن نفسه هذا الكلام مهما يكن فكلكم اخوة لنا وتقديركم واحترامكم واجب علينا .

استخدم هذه الاستعلامات فهي تفي بالمطلوب وبإمكانك وضع نماذج لها

استعلام اسماء المستخدمين qurAllUsers

SELECT DISTINCTROW MSysAccounts.Name
FROM MSysAccounts IN 'data.sys.mdw'
WHERE (((MSysAccounts.FGroup)=0));

استعلام عرض المستخدم الحالي والاذونات الخاصة به ومجموعته qurCurrentUser

SELECT DISTINCTROW MSysAccounts.Name, MSysAccounts_1.Name
FROM (MSysGroups INNER JOIN MSysAccounts ON MSysGroups.UserSID = MSysAccounts.SID) INNER JOIN MSysAccounts AS MSysAccounts_1 ON MSysGroups.GroupSID = MSysAccounts_1.SID IN 'data.sys.mdw'
WHERE (((MSysAccounts.Name)=CurrentUser()) AND ((MSysAccounts_1.FGroup)=-1))
ORDER BY MSysAccounts_1.Name, MSysAccounts_1.FGroup;

استعلام عرض المجموعات qurGroupList

SELECT DISTINCTROW MSysAccounts.Name
FROM MSysAccounts AS MSysAccounts_1 INNER JOIN (MSysAccounts INNER JOIN MSysGroups ON MSysAccounts.SID = MSysGroups.GroupSID) ON MSysAccounts_1.SID = MSysGroups.UserSID IN 'data.sys.mdw';

ملاحظة : جميع الاستعلامات الثلاثة بها اسم ملف المجموعة data.sys.mdw قم بتغييره بما هو لديك فعلا ولابد ان ينتهي بالامتداد mdw

طريقة الاستخدام :

1. قم بنسخ ملف المجموعة سواء الذي ينتهي بإمتداد mdw او الذي غيرت اسمه الى data.sys الخاص بك الى المستندات

2. قم بفتح قاعدة البيانات عن طريق ملف الاختصار وادخل حساب المدير او المسئؤل الذي له كامل الصلاحيات على القاعدة

3. قم بعمل ثلاث استعلامات حسب التسميات المصاحبة لكل عبارة SQL في هذه الاكواد ( طبعا يتم وضع هذه الاستعلامات عن طريق فتح استعلام جديد ثم فتح عرض SQL ووضع العبارة به مباشرة ومن ثم حفظ الاستعلام حسب الاسم المعطى او اي اسم تختاره )

4. اذا رغبت انشاء نماذج لها فقم بعملها على بركة الله

سؤال :

هل ترى امتدادات الملفات لديك في جهاز الكمبيوتر مثل

ملفات النصوص ( المفكره ) مثل za.txt

ملفات قواعد البيانات za.mdb

ملفات المجموعات za.mdw

ام انك ترى مسميات الملفات فقط هكذا للنصوص za بدون امتداد ومثلها بقية الملفات

الذي دعاني لهذا السؤال انك في حال تغيير امتداد الملف من صيغة الى اخرى فلن يتعرف عليها التطبيق المخصص لفتحها مثلا قاعدة بيانات

المفروض ان يكون امتدادها mdb او mde تراه في اخر اسم الملف

اما اذا لم تراه فهذا يعني انك تغير في الاسم فقط بدون المساس بالامتداد لانك لو غيرت الامتداد لنوع اخر فإنسى ان تفتح معك اي قاعدة بيانات تم تغيير امتدادها كما تقول انك غيرت من الملف من data.mdw الى data.sys او من academy.mdb الى academy.prg يستحيل ان تفتح حتى لو تجيب بيل قيتس صاحب الشركه بحاله . لهذا انت تغير في الاسم فقط

واذا اردت ان تتأكد من ذلك

افتح اي مجلد

اختر من اشرطة القوائم ادوات

اختر خيارات المجلد

اختر التبويب عرض

قم بإزالة علامة الصح من اخفاء ملحقات الملفات لانواع الملفات المعروفه

ثم تطبيق ثم موافق

وانظر الى ملفاتك التي تقول انك قمت بتغيير امتداداتها ستظهر لك ملحقات الملفات الاصلية في نهاية اسم كل ملف يمعنى ستكون اسماء الملفات هكذا

data.sys.mdw

academy.prg.mdb

#12

الى الاخت القديرة زهرة

حقا قمة الابداع ، نشكرك على هذه امعلومات الرائعة ، اتحفت المنتدى بعلمك وشكرا مرة ثانية

#13

اولا اشكر لك تعاونك معنا جميعا كاعضاء

ثانيا موضوع ((غبي)) انا حبيت اضحك معك شوي

ثالثا شفت الكلام والاوامر طويلة ويبغالها شغل وتفكير فأقول بطبقها بكرة إن شاء الله

لكن اللي انا اقوله هو

اني ابارك لنفسي ولجميع الاعضاء والمشرفين على عودة الحياة في هذا المنتدى الذي لاغنى منه

والف شكر

#14

الاخت الغالية زهره

اليوم بديت طبقت كل الاستعلامات وجميعها ناجحة والحمد لله - وهذا مو شي غريب عليك بصراحة انت مثل ماقال اخوي ابو سالار انتي في قمة الابداع

ماشاءالله عليك (لاتخافين انا ماسك الخشب الحين) بصراحة بصراحة بصراحة انتي ام العباقرة

(ودائما يدور في بالي اشياء بسويها) بس اوقف بسبب قصة طريفة قراتها باحدى المنتديات بدور عليها وبرسلها لك إن شاء الله

المهم الحين جاء دوري في الجواب على اسئلتك

الاخت زهرة بالنسبة لاسئلتك من المفترض فتح موضوع جديد ووضع الاسئلة الجديدة فيه (اضحك معك هذي حركات المشرفين) اخاف انك من النوع اللي مايضحك وتطرديني

انا يا اخت زهره اقوم بتغيير الامتداد بنفسي عن طريق اوامر الدوس بأمر

اسم الملف الجديد ثم اسم الملف القديم ren

وبذلك فسوف تكون النتيجة هي اسم الملف والامتداد الذي انا اخترته فقط

وبالنسبة لطريقة التشغيل فانا اضع اسم البرنامج الرئيسي لهذا الملف قبل اسم الملف وبذلك تنتهي المشكلة

مثلا في حالتنا هنا (ملف تشغيل الاكسس Msaccess.exe )

وتستطيعين تجربة ذلك بنفس طريقتي او بطريقة اخرى وهي

فتح برنامج الاكسس

ثم الذهاب لفتح ملف من قائمة ملف

والتوجه لمسار ملفك بعد تغيير اسمة فلن تجديه في القائمة لان الاكسس يختار ملفاته فقط ولا يظهر ملفات الغير

ولكن اختاري جميع الملفات او all files

واختيار ملفك فسيقوم الاكسس بتشغيله اذا كان ضمن احد البرامج المصممة باكسس

هذا هو الجواب بس لا تقولين لبيل جيتس لانه حاول فيني اكثر من مرة ومارديت عليه

بس انتي زهره ما اقدر عليك

#15

-------------------------

الاخت زهره

السلام عليكم ورحمة الله وبركاته

الظاهر انه سؤال يسحب سؤال - واخرتها بقولك خذي البرنامج كملية بمعرفتك

اسف لاني احس باني ازعجتك بس هذي المرة اخر سؤال

هل استطيع الاستفادة من هذة الاستعلامات وخصوصا الاستعلام الثاني المسمى qurCurrentUser

باظهاء اسم مجموعة العمل (على النماذج مثلا) بامر كود مثل امر اسم المستخدم مثلا

وهل يحتاج الى انشاء وحدة نمطية يتم استخدام الامر من خلالها ام لايمكن ذلك

#16

اخي الفاضل Enjoy

اقتباس
بصراحة بصراحة انتي ام العباقرة
اقتباس
اخاف انك من النوع اللي مايضحك

لا يا اخي لم اصل الى هذه الدرجة بعد فلا زلت مبتدأه

صحيح اني اتيت من كوكب الزهره ولكني تأقلمت معكم بني البشر فأصبحت اكل واشرب واضحك فقط وسوف اعود الى كوكب الزهره قريبا :) :)

عموما لا تحتاج الى اي دالة او وظيفه فالحل موجود لديك جاهز في الاستعلام رقم 2 qurCurrentUser والحل سهل وبسيط كالتالي :

1. انشىء مربعين نص غير منضمين الاول يكون اسمه UserName وضع في عنصر التحكم هذا الكود

= DLookup("[MSysAccounts.Name]";"qurCurrentUser")

ومربع النص الثاني يكون اسمه GroupName وضع به هذا الكود

= DLookup("[MSysAccounts_1.Name]"; "qurCurrentUser")
#17

الف شكر قليلة في حقك

نحن نفخر بمشرفة رائعة مثلك وبمستوى اخلاقك المتواضعة ومعلوماتك الثمينة

لقد انتهى المطلوب بفضل الله سبحانه وتعالي ثم بفضلك

لكن هذا الموضوع حتى ولو كان سهل بالنسبة لكي لكني لم اجد له الجواب في جميع المنتديات

اكرر شكري لمشرفتنا التي نفتخر جميعا بها

مواضيع مشابهة