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

إدارة الصلاحيات في أكسس بمصادقة ويندوز

بدأه القحم في 19 سبتمبر 2010 · 40 رد · 9,719 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

ما هي مصادقة ويندوز؟

هي باختصار البيانات التي يحفظها ويندوز لكل مستخدم ضمن بيئة مستخدمين على جهاز قائم بذاته، أو ضمن شبكة محلية، أو على الويب. يقوم ويندوز بمطالبة المستخدم بمصادقة هذه البيانات في كل مرة يريد الدخول إلى ويندوز.

البيانات الأكثر أهمية هي:

— اسم المستخدم

— اسم الحاسب (الكمبيوتر)

— اسم المجال (الدومين)

— مجموعات المستخدمين

يمكن بواسطة اسم الحاسب أو المجال منع قاعدة البيانات من الإقلاع،و يمكن بواسطة اسم المستخدم تحديد الصلاحية. كما إنه بالإمكان جعل الصلاحيات أكثر خصوصية بتخصيص مجموعات المستخدمين.

من التقاليد السائدة عند مطوري أكسس النظر إلى قاعدة البيانات ذاتها دون النظر إلى البيئية التي يعمل من خلالها أكسس، ولذا ينصب النظر عند إدارة الصلاحية إلى إنشاء الصلاحية من داخل قاعدة البيانات، أي إن المطور يقوم بكتابة الصلاحية وقراءتها ضمن قاعدة البيانات. لكن هذا المفهوم لم يعد مقبولا مع أكسس 2007 كما لا يخفي على علمكم.

ومن التقاليد السائدة عند مستخدمي الحاسبات المشتركة بين أكثر من مستخدم هو استخدام حساب وحيد غير مؤمن بكلمة مرور، مع تأمين قاعدة البيانات بكلمة مرور! لتفادي استخدام قاعدة البيانات من أشخاص غير مصرح لهم.

وهنا ينشأ سؤال افتراضي: لماذا لا يكون لكل مستخدم حساب ويندوز مستقل؟ حساب ويندوز مستقل يعني الخصوصية، وهذا يعني أنه إذا لم يكن لديك حساب ويندوز؛ فإنه لا يمكنك الدخول على قاعدة البيانات أصلا. وكلما زاد تخصيص الصلاحية قل تمكين المستخدم من قاعدة البيانات.

ولكي يكون الأمر أكثر وضوحاً لنفترض قاعدة بيانات يمكن أن تكون مثالا لما نحن بصدده. وهي كالتالي..

مدير منشأة يريد قاعدة بيانات لتسجيل بيانات المعاملات الواردة إلى المنشأة، ويريد أيضا عند تحديد المعني باتخاذ الإجراء على المعاملة كتابة الإجراء المتخذ عليها ضمن قاعدة البيانات ليتمكن من تتبع المعاملات والإجراءات المتخذة عليها ومن المعني بالإجراء، عندما يكون للمعاملة أكثر من إجراء.

وستكون قاعدة البيانات على النحول التالي:

_ مسجل بيانات المعاملات الواردة والصادرة

يصرح لهذا الشخص بتسجيل بيانات المعاملات الوارد والصادرة، كما يصرح له بتسجيل إجراءات الموقعة باسمه.

_ مسجل إجراءات

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

_ متصفح البيانات

يصرح له بتصفح سجلات المعاملات الواردة والصادر والإجراءات المتخذة عليها فقط، بدون صلاحية التسجيل

_ مدير قاعدة البيانات

وهو الشخص المعني بتوزيع الصلاحيات وصيانة قاعدة البيانات

سوف أقوم برفع هذا المشروع في الجلسات القادمة بمشيئة الله

لنعد إلى نقطة البداية. كيف يمكن الحصول على بيانات المستخدم عن طريق شفرة أكسس؟

أعرف أن أفكاركم سوف تنصرف إلى مفاتيح ودوالي ويندو API وتعقيدتها واحترافية القص واللزق.

وأنا أقطع عليكم أفكاركم وأقول الأمر أسهل من ذلك بكثير، وأظنكم سوف تضحكون تعجبا من قصر الشفرة المعنية بهذا الغرض.

في الحقيقة كل ماتحتاجونه هو السطر التالي:

Set wsnt = CreateObject("WScript.Network")

هذة الشفرة تنشئ كائن اسمه WScript.Network وتسنده إلى المتغير wsnt، هذا المتغير يعيد البيانات التالية:

wsnt.UserName
 wsnt.ComputerName
wsnt.UserDomain

يمكن أن نضع جميع القيم العائدة من هذا المتغير في وظيفة واحدة أو نفرد كل واحدة منها في وظيفة مستقلة

المثال التالي لتوضيح الشفرة.

سوف تتم مناقشة المثال في الجلسة التالية مع مزيد من الشرح لبيئة المستخدمين وكيفية تخصيصها.

User Information.zip

7
#2

السلام عليكم

إذا كنت قد فتحت المثال على جهاز حاسب قائم بذاته، فقد تفاجأ أن الاسم الكامل لا يظهر، لأن الغالب على المستخدمين أنهم لا يقومون بإكمال بيانات حساباتهم الشخصية، إما لعدم معرفتهم كيفية ذلك، وإما لعدم الرغبة. أما إذا كنت فتحت المثال على شبكة محلية فسوف تجد بياناتك على الشبكة ظهرت ضمن النموذج.

إذا كنت ترغب في إكمال بيانات حسابك الشخصي قم بعمل التالي:

- انقر بالزر الأيمن للفارة على أيقونة جهاز الكمبيوتر

- من القائمة المنسدلة اختر (إدارة)، عندها سيظهر مربع حوار (إدارة الكمبيوتر)

- من القائمة الشجرية اختر (مستخدمون محليون ومجموعات محلية)، ثم اختر مجلد(مستخدمون)، ستظهر قائمة منسدلة على الجانب الأخر بكافة المستخدمين المسجلين على الحاسب.

post-10429-016173200 1284965577_thumb.jp

- ابحث عن اسم المستخدم الحالي (يظهر في رأس قائمة ابدأ) وانقرعليه نقرا مزدوجا، عندها سيظهر مربع حوار خصائص...

- اكتب الاسم الكامل للمستخدم، والوصف الذي ينطبق على وظيفته

post-10429-022933000 1284965588_thumb.jp

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

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

المرفقات
A01.jpgA02.jpg
1
#3

بارك الله فيك وجزاك الله خير اكي الفاضل القحم

وفقك الله ونفع بعلمك

اتق الله حيث ماكنت

#4

السلام عليكم

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

قبل أن أبدأ في تبسيط وشرح الشفرة أود التنويه إلى أن Microsoft Windows قدمت هذا النمط من البيانات ابتداءً من الإصدار 2000، وهو متوفر إلى الآن ضمن بيئة ويندوز الافتراضية، وبالتالي فلا ينبغي التخوف من عدم توفر المكتبات الخاصة بهذا النمط في جهاز ما، إلا أنه يجب التأكد من أنه تم التأشير عليها في قائمة المراجع

الشيء الآخر هو أن التأشير على المكتبة ضمن قائمة المراجع والتصريح عنها هو أمر اختياري يساعد المطور في التعرف على المكونات المتوفرة ضمن المكتبة عن طريق مستعرض المكتبات أو عن طريق قائمة السرد التفاعلية التي تظهر عند كتابة الكود.

المكتبات التي سوف نتعامل معها في إدارة الصلاحيات هي كالتالي:

المكتبة الأولى هي المعنية بتوفير بيانات المستخدم الأساسية؛ وهي: Windows Script Host Object Model

تتألف هذه المكتبة من عدة مكونات يمكن التعرف عليها عن طريق مستعرض المكونات، والذي يهمنا منها هو المكون WshNetwork، يوفر هذا المكون الخصائص (UserName, UserDomain, ComputerName).

post-10429-072063100 1284986003_thumb.jp

يتم التصريح عن هذا المكون بأحد الطرق التالية:

- الطريقة الأولى وهي المفضلة لدي:

Dim wtsn As New WshNetwork

هذه الطريقة لا تحتاج إلى إسناد؛ أي لا تحتاج إلى عبارة Set، بل تستخدم مباشرة على نحو wsnt.UserName، وسيكون استخدامها في الوظيفة على النحو التالي:

Function xUserName()
Dim wsnt As New WshNetwork
xUserName=wsnt.UserName
End Function

- الطريقة الثانية هي الموجود في المثال المدرج في الجلسة الأولى، إلا إنه ينبغي التنويه إلى أن التصريح مع عبارة CreateObject() هو اختياري. سيكون استخدامها في الوظيفة على النحو التالي:

Function xUserName()
Dim wsnt As WshNetwork
Set wsnt=CreateObject("Wscript.Network")
xUserName=wsnt.UserName
End Function

المكتبة الثانية هي المعنية بالبيانات التفصيلية لحساب المستخدم؛ وهي: Active DS Type Library

تتألف هذه المكتبة من العديد من المكونات التي يمكن التعرف عليها عن طريق مستعرض المكونات، والذي يهمنا منها هو المكون IADsUser، يوفر هذا المكون العديد من الوظائف والخصائص، وما يهمنا منها هو الخصيصة FullName، والوظيفة Groups، وسوف نستخدم لقراءة البيانات الدليل WinNT:// .

الجدير بالذكر أنه يوجد أكثر من دليل لقراءة البيانات؛ لكن ليس هذا مكان ذكرها.

post-10429-073596200 1284986011_thumb.jp

يتم التصريح عن هذا المكون بالطريقة التالية؛ وهو هنا اختياري

Dim usr As IADsUser

وسوف تكون طريقة الإسناد على النحو التالي:

Set usr=GetObject("WinNT://{USER DOMAIN}/{USER NAME},User)

الدليل WinNT:// يتطلب معرف لدليل البيانات؛ وهو هنا "User"، وهو الذي تم التصريح عنه في عبارة التصريح أعلاه. كما أنه يتطلب تمرير اسم المجال واسم المستخدم تحديد البيانات المطلوب قراءتها. سيكون استخدامها في الوظيفة على النحو التالي:

Function xUserFullName() 
Dim usr As IADsUser
Set usr = GetObject("WinNT://Home/AlGhamdi ",user")
XUserFullName = usr.FullName
End Function

سوف أنهي الجلسة الآن، وسوف أكمل في الجلسة التالية بمشيئة الله

المرفقات
A03.jpgA04.jpg
3
#5

مشكور استاذي وخبيرنا القحم

مثال جميل وفكره جميلة

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

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

جزاك الله خير ورحم والديك

+ 1

شكلي كتبت قبل ما اشوف المشاركة الاخيرة

تم تعديل هذه المشاركة بواسطة مشارف في 20 سبتمبر 2010 في 15:41

#6

بارك الله فيك أخي القحم ، وجزاك الله كل خير ،

كلنا آذان صاغية

شرح رائع ، أسلوب بسيط ومحترف +

post-12787-12741339659298.jpg

ومامن يد إلا يد الله فوقها *** وما من ظالم إلا سيبلى بأظلم

تفضل أخي الكريم | موسوعة الحميدي الذهبية | بأجزائها الثلاثة مع هدية الموسوعة .

#7

جزاك الله كل خير

#8

اخى بارك الله فيك

شرح رائع و باسلوب بسيط و واضح

جعله الله فى ميزان حسناتك

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#9

السلام عليكم

بداية أو أن أشكر كل من أجزل عبارة شكر أو ثناء على هذه المشاركة أو كاتبها، وأسل الله لي ولهم التوفيق والسداد... آمين.

تضمن المثال وحدتين نمطيتين؛ الأولى تضمنت وظائف لقراءة بيانات مستخدم ويندوز، والثانية تضمنت إجراءات تطبيق مكونات قاعدة البيانات.

الجدير بالذكر هنا أن المصادقة مبنية على مجموعات المستخدمين لويندوز! وفي الوحدة النمطية Authentication يقوم SetUserPermission بقراءة المجموعات التي يتبع لها المستخدم، ومن ثم يتم تمريرها إلى العبارة Select Case من أجل مطابقتها مع الشروط المحددة في مفرداتها، فإذا تطابق الشرط مع أي من مجموعات المستخدم فسيتم تنفيذ الإجرات SetStatus. هذا الإجراء وظيفته تحديد صلاحية المستخدم في التعامل مع السجلات (إضافة، تعديل، حذف)، وقد تم تطبيق الشروط على المجموعات الافتراضية في ويندوز؛ وإلا بالإمكان إضافة مجموعات إضافية تناسب الصلاحيات المطلوب إعاطاءها لكل مستخدم، ومن ثم إضافة المستخدمين إلى تلك المجموعات.

إذا أرت تطبق هذه النمط من الصلاحية على أي قاعدة بيانات قم بعمل التالي:

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

- ثم انقر بالزر الأيمن على مجلد المستخدمين، ثم انقر على مستخدم جديد من في رأس القائمة المنسدلة

- ثم قم بتعبئة مربع الحوار (يفضل كتابة اسم المستخدم بالأحرف اللاتينية).. اقترح أن يكون اسم المستخدم هو رقم الوظيفة مبدوء بحرف.

- كرر هذه الخطوات لجميع المستخدمين.. بواقع مستخدم واحد لكل نوع من الصلاحيات.

post-10429-024651600 1285269449_thumb.jp

- قم بإضافة مجموعات المستخدمين حسب أنواع الصلاحيات الممنوحة.. ولعمل ذلك انقر بالزر على مجلد المجموعات، ثم مجموعة جديد..

- اكتب اسما مميزا لمجموعة المستخدمين.. أقترح أن تبدأ اسم المجموعة بحروف مختصرة لاسم قاعدة البيانات.. إذا كنت ستكتب اسما غير مفهوم فيتوجب عليك إضافة وصف واضح للمجموعة.

- ثم قم بإضافة المستخدمين.. ولإضافة المستخدمين؛ انقر فوق زر إضافة ثم اكتب اسم المستخدم.. إذا لم تكن متأكد من اسم المستخدم.. انقر فوق متقدم ثم زر البحث الآن.. اختر من القائمة اسم المستخدم (يمكن اختيار أكثر من مستخدم) ثم موافق

post-10429-089639000 1285269466_thumb.jp

- الآن قم بتغيير أسماء المجموعات في الإجراء SetUserPermission لتعكس المجموعات التي أضافتها..ثم أضف الإجراء SetStatus بعد كل عبارة من عبارات Select Case .. قم بتغيير خصائص التعامل مع السجلات حسب متطلبات الصلاحية الممنوحة لكل مجموعة.

** فائدة

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

- قم بإنشاء وظيفة (وليس إجراء) وسمها ما شئت.. أقترح StartUp ومن ثم قم بإنشاء مكون يقوم بفحص مجموعات المستخدمين بناء على اسم المستخدم ــــ يجب أن تكون الوظيفة XUsername متوفرة لديك ـــ

- قم بالبحث داخل مجموعات المستخدمين عن طريق عبارة For … Each

- قم بنشاء عبارة Select Case داخل العبارة Forلفحص المجموعة التي ينتمي إليها المستخدم فإذا تمت المطابقة تقوم العبارة Docmd.OpenForm بفتح النموذج... الشفرة التالية للتوضيح

Function StartUp()
Dim usr As IADsUser
Set usr = GetObject("WinNT://./" & XUserName & ",user")
For Each grp In usr.Groups
    Select Case grp.Name
        Case "Administrators"
            DoCmd.OpenForm "Admins"
    Case "Users"
            DoCmd.OpenForm "Users"
    End Select
Next
End Function

- قم بإنشاء وحدة مايكرو وسمها Autoexec (التسمية إجبارية)

- في قائمة الإجراء اختر RunCod، وفي الأسفل أكتب اسم الوظيفة متبوعا بالأقواس، أو انقر على ... النقاط الثلاث، ثم ابحث على الوظيفة وقم بأدرجها

إليك هذا المثال..

UserInfo4.zip

** تنبيه

يجب أن يكون لديك حسابين على الأقل حساب في مجموعة Administrators، وحساب في مجموعة Users من أجل تطبيق المثال بصورة صحيحة.. وأيضا أن تكون قاعدة البيانات في مجلد المستندات المشتركة على الأقل، أو إنشاء نسخة لكل مستخدم

بهذه الجلسة ينتهي شرح مثال قاعدة البيانات.. أرجو أن تحوز على رضاكم

** للأهمية

سوف أقوم بإرفاق المشروع المشار إليه في الجلسة الثانية في الجلسة التالية إن شاء الله تعالى

المرفقات
A41.jpgA42.jpg

تم تعديل هذه المشاركة بواسطة القحم في 23 سبتمبر 2010 في 22:44

4
#10

ماشاء الله أخي القحم ، بارك الله فيك ، وأدامك ذخرا للمسلمين

جزاك الله خيرا ، بوركت يمينك

إلى الأمام إن شاء الله تعالى

post-12787-12741339659298.jpg

ومامن يد إلا يد الله فوقها *** وما من ظالم إلا سيبلى بأظلم

تفضل أخي الكريم | موسوعة الحميدي الذهبية | بأجزائها الثلاثة مع هدية الموسوعة .

#11

بسم الله الرحمن الرحيم

ما شاء الله

بارك الله فيك اخي الكريم كلنا في انتظار المزيد

#12
hamidymom كتب:

ماشاء الله أخي القحم ، بارك الله فيك ، وأدامك ذخرا للمسلمين

جزاك الله خيرا ، بوركت يمينك

إلى الأمام إن شاء الله تعالى

أشكر على هذا الثناء العطر، وأن يستجيب الله دعاءك

sx1 كتب:

بسم الله الرحمن الرحيم

ما شاء الله

بارك الله فيك اخي الكريم كلنا في انتظار المزيد

شكرا لك.. ولن تحرم الخير

#13

السلام عليكم

إليكم هذا المشروع الصغير كمثال يمكن تطبيق ما سبق عليه: LogBook1.zip

صورة توضيحية

post-10429-057724600 1285507556_thumb.jp

أرجو أن يكون بمقدوركم فهم طريقة عمل هذا المثال...

- اعتمد كثير على الواجهة الوحيدة في تصميمي لقواعد البيانات. قد يكون عيبا في الاسلوب، وقد يعجب آخرين!

- أميل إلى تجميع الشفرة دائما.. خاصة إذا كانت ستكرر اكثر من مرة.. وهذا كسابقه!

- اعتمدت في منح الصلاحية على الجدول Permit .. عن طريق نوع الصلاحية

- عند إقلاع قاعدة البيانات تقوم الشفرة بتفحص اسم المستخدم ومطابقته مع بينات الجدول؛ فإذا لم يكن تطابق؛ تقوم الشفرة بتسجيل بيانات المستخدم وإعطاءه صلاحية تصفح (1)

- يتوجب عليك تغيير هذه القيمة إلى (2) من أجل رؤية المفاتيح المخفية

- أيضا يتوجب عليك تغيير اسم الصورة alghamdi إلى اسم المستخدم لتظهر في موقعها في الجانب الأيمن من بيانات المستخدم

** هذا كل شيء الآن.. أتمنى لكم التوفيق

المرفقات
LB01.jpg
3
#14

مشكور استاذي القحم على المثال الجميل

بصراحة فكرة التجميع جميل

وهل تسمح لي استخدام واجه مشابه للواجه هذه للبرامج التي انشئها

وجزاك الله الف خير على ورحم والديك ونفع بعملك وعملك المسلمين

تم تعديل هذه المشاركة بواسطة مشارف في 26 سبتمبر 2010 في 20:27

#15
مشارف كتب:

مشكور استاذي القحم على المثال الجميل

بصراحة فكرة التجميع جميل

وهل تسمح لي استخدام واجه مشابه للواجه هذه للبرامج التي انشئها

وجزاك الله الف خير على ورحم والديك ونفع بعملك وعملك المسلمين

هذا خلق نبيل مشارف.. أنا لنا بمثله... لك ماطلبت ياموفق

#16

استاذي القحم اسمح لي على هذا السؤال اذا ما كان فيه كلافة

حاولت احط الموحدة النبطية الخاصة باخفاء بخلفية الاكسيس الموجودة في المنتدى والمعروفة باسم api_ShowWindow

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

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

واسمح لي استاذي على السؤال

تم تعديل هذه المشاركة بواسطة مشارف في 27 سبتمبر 2010 في 17:47

#17

أهلا مشارف

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

نعم لقد قمت بتغير اسم الوظيفة في الوحدة النمطية APIFunctions ولم أجر التعديل على النموذج الرئيسي Main. آسف لهذا الخطاء وأرجو المعذرة

لحل هذه المشكلة قم بحذف استدعاء الوظيفة HideApplicationScreen واستبداله بالإجراء ShowAppWindow(vbHide)

Private Sub Form_Open(Cancel As Integer)
Call ShowAppWindow(vbHide)
End Sub

يمكن الرجوع إلى الوحدة النمطية APIFunctions لمعرفة كيف تم بناء الإجراء المتعلق بوظيفة إخفاء التطبيق

صورة للتوضيح

post-10429-028735800 1285617220_thumb.jp

المرفقات
LB21.jpg
#18

صديقنا .. لا .. بل أخونا القديم المتجدد : الاستاذ القحم

لافض فوك ولا شلت يمينك شكرا لك على هذه

الدرر وفقك الله .. جزاك الله خيرا

#19

مشكور استاذي القحم

فعلا كود خفيف لاخفاء شاشة الاكسيس بطريقة جميلة

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

وطريقة النماذج حيث انها تشبه طريقة عمل البرامج الكبيرة مثل برامج النورتون وبرامج وغيرها لشركات كبيرة حيث اغلبها يعتمد على نموذج رئيسي

ويكون التبديل من داخله

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

جزاك الله خير ورحم والديك

#20
اكسيرالحياة كتب:

صديقنا .. لا .. بل أخونا القديم المتجدد : الاستاذ القحم

لافض فوك ولا شلت يمينك شكرا لك على هذه

الدرر وفقك الله .. جزاك الله خيرا

أهل بك أستاذ أكسير..

أشكر لك ثناءك ودعاك

ولا حرمنا الله إرشادك ومشورتك

#21

أهلا مشارف

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

أرجو أن أكون أضفت شيئا جديدا ومفيدا..

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

الحمد لله أولا وآخرا

اقتباس
جزاك الله خير ورحم والديك

آمين... ولك بمثله

1
#22

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

كلما عاودت الزيارة لهذا المنتدى بعد طول إنقطاع أتفاجأ بمشاركات رائعة! وأعضاء أشد روعة...

أشكرك أخي القحم و أسأل الله أن يكون ماقدمت من العلم النافع الذي ينفعك الله به في دنياك وأخراك...

أجمل تحياتي للجميع.

#23
المزيني كتب:

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

كلما عاودت الزيارة لهذا المنتدى بعد طول إنقطاع أتفاجأ بمشاركات رائعة! وأعضاء أشد روعة...

أشكرك أخي القحم و أسأل الله أن يكون ماقدمت من العلم النافع الذي ينفعك الله به في دنياك وأخراك...

أجمل تحياتي للجميع.

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

وجودك في هذه المشاركة إنجاز لي بحد ذاته...

وصدقني أضافت مشاركتك نكهة عتيقة.. أظنها عبقت من جديد...

سعيد جدا بمرورك وثناءك..

#24

السلام عليكم

الخبير المزيني هو أحد ثلة قليلة من الأولين الذين قام منتدى أكسس على جهودهم المباركة.. مرورهم على هذا المنتدي يذكر بتلك الأيام ويثير المشاعر.. أعذروني أن بدأت هذه المشاركة بهذه الكلمات..

أسأل الله العلي القدير أن يبارك في أعماهم وأعمالهم، وأن يجعلهم قدوة لغيرهم في البذل والعطاء.. آمين

أريد أن أنهي هذا المشروع: وعليه هل بقي علي شيء لم أذكره، أو يريد أحد السؤال عنه؟

مارأيكم أن أبادر أنا بالسؤال...

ماذا لو أردنا إدارة حسابات ويندوز من داخل أكسس؟.. هل بالإمكان إنشاء قاعدة بيانات تقوم بتجميع بيانات حسابات مستخدمي ويندوز ومعالجتها ومن ثم إعاتها إلى ويندوز؟.. هل بالإمكان إضافة مستخدمين جدد لويندوز من داخل قاعدة بيانات أكسس؟

هل تريد إجابة على هذا السؤال؟....

#25

السلام عليكم

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

تقبل تحياتي

من مواضيعي

برنامج للكفالات والأقساط

برنامج لإدارة مؤسسة نقل الطالبات

بـــــرنامج الصراف الآلي

_______________________

سبحان الله وبحمده سبحان الله العظيم

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…