انا استخدم
CurrentUser
لاظهار اسم المستخدم
فهل يوجد كود او امر لاظهار اسم مجموعة العمل
وشكرا
انا استخدم
CurrentUser
لاظهار اسم المستخدم
فهل يوجد كود او امر لاظهار اسم مجموعة العمل
وشكرا
القراء (13)
الردود (0)
اخي الفاضل
هل تستخدم ملف مجموعات في قاعدة البيانات 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()
وسوف يظهر لك اسم المستخدم الحالي في المجموعة
وهذا ملف يحتوي على الخمس وظائف الخاصة بالمجموعات
اختكم
زهره
الاخت العزيز زهره
لقد بحث كثيرا في جميع المنتديات الخاصة بالاكسس (جميعها وليس اغلبها) العربية والاجنبية بما فيها منتدى الفريق العربي
ولم اي جواب عن استخراج اسم المجموعة
وهذا هو اول جواب بدون مبالغة فانا عاجز عن الشكر
اختي الغالية ان جميع هذة الاكواد مفيدة جدا جدا بالنسبة لي
وبالنسبة لسؤالك عن استخدامي لملف مجموعات فالجواب هو نعم انا استخدم ملف مجموعات mdw
ونظرا لكون اجوبتك مبحره وعميقة فانا ارغب بمعرفة هل يمكن استخدام اي كود وكتابته في حقل من حقول نموذج وتكون النتيجة ظهور اسم مجموعة العمل تماما مثل الكود
()CurrentUser
الخاص باسم المستخدم
وآسف على الاطالة والازعاج
اخي الكريم
هل قمت بتجربة ما تم شرحه ولم نحصل على نتيجه
ارجو ابلاغي بما حصلت عليه من نتائج في النافذة السفلية للوحدة النمطية
بعد ظهور اي نتائج في النافذة السفلية للوحدة النمطية ستتعرف على الوظيفة الخاصة بإسم المجموعة وعموما هي استخدم هذه الطريقة مثل ما تستخدم
()CurrentUser لاظهار اسم للمستخدم
استخدم
()ListGroupsInSystem لاظهار اسم للمجموعة في النظام
او استخدم الوظيفة الرابعة
()ListGroupsOfUser لاظهار اسم المجموعة للمستخدمين
اخي الفاضل
يبدو انك ليس من هواة الاكواد
حسنا سوف اختصر عليك الطريق بشي سهل للغاية وتستطيع تطبيقه بكل سهوله ولكن ارغب ان تعطيني بعض المعلومات عن البرنامج وملف المجموعة
1. ما اسم ملف المجموعة سيكون مثل system.mdw بالتأكيد سيكون مختلف لديك المهم اعطنا اسمه بهذا الشكل
2. اين يوجد ملف المجموعة ( حدد مكانه بالضبط ) اي اكتب المسار كاملا
اختي زهره
حرام عليك حطمتي معنوياتي
انا صحيح مش من هواة الاكواد بنسبة 99.9%
بس صدقيني انا مش غبي
يعني انا افهم ان اسم ملف مجموعة العمل بدون توضيح
كذلك اعرف احدد موقعه
المهم اسم ملف مجموعة العمل
data.sys
وموقعه d:\basem\data.sys
اقوم بتشغيله بواسطة ملف تنفيذي يقوم بالمرور بالبرنامج مع هذا الملف
البرنامج بالكامل وبدون مبالغة تم برمجته بجهود منك كمشرفة بنسبة كبيرة جدا تصل الى 90% ويمكن اكثر
والباقي بمساعدة بعض الاعضاء وباقي المشرفين سواء بهذا المنتدى الرائع او بمنتديات اخرى
وعشان ما اتعبك معي
انا هدفي من هذا الطلب
اني وضعت شرط في ماكرو اثناء فتح نموذج بان يفتح النموذج بشرط ان يكون اسم المستخدم " فلان مثلا "
"اسم المستخدم"=()CurrentUser
ونظرا لكون اسماء المستخدمين تتغير او تحذف او تضاف اسماء جديدة
فلقد رغبت ان استبدل اسم المستخدم باسم مجموعة العمل لان مجموعة العمل ثابته لن تتغير كثيرا
فهل يمكن ذلك
ملف المجموعات انا مغير امتدادة من mdw الى sys
والملف التنفيذي مكتوب فيه
Call Shell("Msaccess.exe /Nostartup /Excl /Wrkgrp d:\Basem\Data.sys d:\basem\academy.prg", 1)
طبعا انا ناسخ ملف تشغيل الاكسس معاهم في نفس موقع البرنامج
تم تغيير امتداد البرنامج ايضا من mdb الى prg
اخي الفاضل
السلام عليكم ورحمة الله وبركاته
اقتباسبس صدقيني انا مش غبي
لا لا يا اخي انا لا ارضى ان يقول اي شخص عن نفسه هذا الكلام مهما يكن فكلكم اخوة لنا وتقديركم واحترامكم واجب علينا .
استخدم هذه الاستعلامات فهي تفي بالمطلوب وبإمكانك وضع نماذج لها
استعلام اسماء المستخدمين 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
الى الاخت القديرة زهرة
حقا قمة الابداع ، نشكرك على هذه امعلومات الرائعة ، اتحفت المنتدى بعلمك وشكرا مرة ثانية
اولا اشكر لك تعاونك معنا جميعا كاعضاء
ثانيا موضوع ((غبي)) انا حبيت اضحك معك شوي
ثالثا شفت الكلام والاوامر طويلة ويبغالها شغل وتفكير فأقول بطبقها بكرة إن شاء الله
لكن اللي انا اقوله هو
اني ابارك لنفسي ولجميع الاعضاء والمشرفين على عودة الحياة في هذا المنتدى الذي لاغنى منه
والف شكر
الاخت الغالية زهره
اليوم بديت طبقت كل الاستعلامات وجميعها ناجحة والحمد لله - وهذا مو شي غريب عليك بصراحة انت مثل ماقال اخوي ابو سالار انتي في قمة الابداع
ماشاءالله عليك (لاتخافين انا ماسك الخشب الحين) بصراحة بصراحة بصراحة انتي ام العباقرة
(ودائما يدور في بالي اشياء بسويها) بس اوقف بسبب قصة طريفة قراتها باحدى المنتديات بدور عليها وبرسلها لك إن شاء الله
المهم الحين جاء دوري في الجواب على اسئلتك
الاخت زهرة بالنسبة لاسئلتك من المفترض فتح موضوع جديد ووضع الاسئلة الجديدة فيه (اضحك معك هذي حركات المشرفين) اخاف انك من النوع اللي مايضحك وتطرديني
انا يا اخت زهره اقوم بتغيير الامتداد بنفسي عن طريق اوامر الدوس بأمر
اسم الملف الجديد ثم اسم الملف القديم ren
وبذلك فسوف تكون النتيجة هي اسم الملف والامتداد الذي انا اخترته فقط
وبالنسبة لطريقة التشغيل فانا اضع اسم البرنامج الرئيسي لهذا الملف قبل اسم الملف وبذلك تنتهي المشكلة
مثلا في حالتنا هنا (ملف تشغيل الاكسس Msaccess.exe )
وتستطيعين تجربة ذلك بنفس طريقتي او بطريقة اخرى وهي
فتح برنامج الاكسس
ثم الذهاب لفتح ملف من قائمة ملف
والتوجه لمسار ملفك بعد تغيير اسمة فلن تجديه في القائمة لان الاكسس يختار ملفاته فقط ولا يظهر ملفات الغير
ولكن اختاري جميع الملفات او all files
واختيار ملفك فسيقوم الاكسس بتشغيله اذا كان ضمن احد البرامج المصممة باكسس
هذا هو الجواب بس لا تقولين لبيل جيتس لانه حاول فيني اكثر من مرة ومارديت عليه
بس انتي زهره ما اقدر عليك
-------------------------
الاخت زهره
السلام عليكم ورحمة الله وبركاته
الظاهر انه سؤال يسحب سؤال - واخرتها بقولك خذي البرنامج كملية بمعرفتك
اسف لاني احس باني ازعجتك بس هذي المرة اخر سؤال
هل استطيع الاستفادة من هذة الاستعلامات وخصوصا الاستعلام الثاني المسمى qurCurrentUser
باظهاء اسم مجموعة العمل (على النماذج مثلا) بامر كود مثل امر اسم المستخدم مثلا
وهل يحتاج الى انشاء وحدة نمطية يتم استخدام الامر من خلالها ام لايمكن ذلك
اخي الفاضل Enjoy
اقتباسبصراحة بصراحة انتي ام العباقرة
اقتباساخاف انك من النوع اللي مايضحك
لا يا اخي لم اصل الى هذه الدرجة بعد فلا زلت مبتدأه
صحيح اني اتيت من كوكب الزهره ولكني تأقلمت معكم بني البشر فأصبحت اكل واشرب واضحك فقط وسوف اعود الى كوكب الزهره قريبا :) :)
عموما لا تحتاج الى اي دالة او وظيفه فالحل موجود لديك جاهز في الاستعلام رقم 2 qurCurrentUser والحل سهل وبسيط كالتالي :
1. انشىء مربعين نص غير منضمين الاول يكون اسمه UserName وضع في عنصر التحكم هذا الكود
= DLookup("[MSysAccounts.Name]";"qurCurrentUser")ومربع النص الثاني يكون اسمه GroupName وضع به هذا الكود
= DLookup("[MSysAccounts_1.Name]"; "qurCurrentUser")الف شكر قليلة في حقك
نحن نفخر بمشرفة رائعة مثلك وبمستوى اخلاقك المتواضعة ومعلوماتك الثمينة
لقد انتهى المطلوب بفضل الله سبحانه وتعالي ثم بفضلك
لكن هذا الموضوع حتى ولو كان سهل بالنسبة لكي لكني لم اجد له الجواب في جميع المنتديات
اكرر شكري لمشرفتنا التي نفتخر جميعا بها