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

ملف وورد من عمل الأخ HGB يغنيك عن طرح

مغلق
بدأه biskra في 27 مايو 2004 · 9 رد · 4,397 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عمل جميل جدا قام به الأخ HGB لمجموعة من قواعد الأكسس خاصة فيما يخص التعامل مع الأكواد, كيفية تركيبها, التعديل عليها و كذلك تفسير لها بطريقة سهلة جدا, مع أمثلة مفصلة للكود.

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

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

كل ما تريده لتصميم قاعدة بيانات.rar

1
#2

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

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

سأقوم بتفريغ ملف الوورد هنا ليتسنى للجميع الحصول عليه ، خوفا من مشاكل التنزيل .

بارك الله فيك يا أخي بيسكرا على وضعك لهذه المذكرة .

===

دروس عن

الكود VBA في

برنامج الاكسس

تم التجميع بواسطة / SHZ

عام 1424هـ الموافق 2003

أين يوضع كل كود

يوضع الكود في الوحدة النمطية( أنشاء وحدة نمطية جديدة ) أو من خلال الكائن ( مربع نص مثلا ) الذي تريد إضافة الكود له من خلال خصائص --> إنشاء حدث --> منشئ البرامج.

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

1- الكود الموجود في الموديل:

أما يكون في روتين فرعي

sub routine

لها أي اسم مثل

Sub mm()

و تنتهي ب

end sub

مثال

sub showamessage()

msgbox "mm"

end sub

و هذا في حالة مجموعة من التعليمات التي تكون جزء خاص و تنفذ بمفردها

أو تستدعي داخل روتين فرعي آخر

و إما أن تكون داخل دالة

function

function mm()

و هي تنتهي ي end function

function showamessage(x)

msgbox "mm"

showamessage = x*x

end function

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

فتنفيذ الدالة السابقة علي رقم 2 يكون الناتج 4 ، و علي 6 يكون 36

يعني فى وسط أي كود نكتب

y= showamessage(4)

فتصبح قيمة Y = 16

أما عن الكود الخاص باكائنات :

objects

مثل الفورم أو التقرير فيكون مرتبط بأحداث معينة

تجدها فى الخصائص الخاصة بالكائن و اسمها أحداث

Events

مثال

Private Sub Form_Open(Cancel As Integer)

msgbox "koko"

End Sub

و اسم الروتين الفرعي يكتب تلقائيا بمجرد الاختيار من مربع خيار الأحداث الخاص بالكائن

قواعد أساسية لكتابة Function أو Sub

مـلاحـظــــــــات:

1 - نعني بالوظيفة هنا Function أو Sub

2 - هذه القواعد مأخوذة من كتاب علم نفسك برمجة أكسس 2002 يورك برس York Press لكن بكثير من التصرف بل بإعادة صياغة

3 - أتمنى من الإخوان الزيادة على هذه القواعد مما اطلعوا عليه أو استفادوه من تجاربهم ، لعل الموضوع يزداد إثراء

القاعدة الأولى : اجعل الأسطر المتكررة في وظيفة

إذا رأيت أن هناك أسطرا مكررة في الأكراد التي تكتبها فقم بتحويلها إلى وظيفة

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

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

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

القاعدة الثانية : حاول قدر الإمكان أن تكون الوظائف قصيرة

ذلك أن الوظيفة إذا لم تكن قصيرة فإن هذا يعني أنها تقوم بعدد من الأعمال ، والمفضل أن يكون ما تقوم به الوظيفة عمل محدود ، لكي تسهل صيانتها ولكي يمكن إعادة استعمالها.

القاعدة الثالثة : أفضل الوظائف لا تتطلب سوى عدد محدود من الوسائط .

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

ما هي الوسائط ؟

هي تلك العوامل التي يتم إرسالها إلى الوظيفة أو الروتين الفرعي حتى يتم تقييمها أو تعديلها عن طريق سطور الشفرة في الوظيفة أو الروتين الفرعي ، أي أنها هي البيانات التي يتم نقلها بين أقواس مستديرة في الروتين الفرعي أوالوظيفة .مثلا :

code:

function MyTest(A as String,B as Integer) as boolean

sub DoTest(A as variant,B as Integer)

فهنا B , A هما وسيطان يتم تمريرهما للوظيفة MyTest أو الروتين الفرعي DoTest

القاعدة الرابعة : استخدم معرفات الوسيطة لمنع إساءة استخدام المتغيرات

استخدم معرفات الوسيطة ByVal ByRef Optional لكي توضح تماما للبرنامج الغرض الذي تريده أثناء تمرير المتغيرات كوسائط .

ما هي المتغيرات ؟

إنها باختصار ما يفضل أن نعلن عنها باستخدام Dim أو Const أو Global

فمثلا :

Dim A as Integer

A هي متغير

وحتى لو استخدمت A بدون الإعلان عنها فإن هذا لا ينفي عنها أنها متغير

راجع الرابط التالي للاستزادة :

http://www.arabteam2000.com/vb/showthread....&threadid=17221

القاعدة الخامسة : استخدم البرمجة الشرطية

المراد بهذه القاعدة أن عليك أن تفترض حين كتابة الوظيفة أن هناك شروطا تم التأكد منها في الوسائط الممررة قبل تمريرها ، بحيث يكون التأكد من تطبيق هذه الشروط قبل تمرير الوسائط وليس أثناء عمل الوظيفة

ويفضل أن تنص على هذه الشروط في الوظيفة كتعليق

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

والغرض من هذه القاعدة هو تقليل سطور الوظيفة وتبسيطها .

القاعدة السادسة : استخدم التعليقات عند الحاجة إليها

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

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

ومما قد يساعد على هذا الوضوح تسمية المتغيرات والوسائط بأسماء لها معاني، بحيث إذا رجعت لها بعد مدة طويلة تعرف المراد بها بمجرد الإطلاع عليها دون أي تعليق.

دروس شرح الدوال

الدرس الأول:

استخدام أداة الشرط IF

(لا أعرف هل هي أداة أم غير ذلك ) قوموني مشكورين .

هذه الأداة هي شرطية.. بمعنى أنه لن يتم تنفيذ أمر معين إلا إذا تحقق شرط معين .

نطرح مثال لتقريب عمل هذه الأداة IF:

لدى في برنامجي زر فيه( أمر حذف سجل) عند الضغط على هذا الزر يتم حذف سجل من البرنامج ... ولكني أريد أن لا يقوم هذا الزر بحذف أي موظف يكون بالمرتبة العاشرة فما فوق أما من المرتبة الأولى وحتى العاشرة فيتم الحذف دون تردد فكيف يتم عمل ذلك .. نقول يتم عمل ذلك عن طريق أداة الشرط IF .

فهذه الأداة تعمل بهذه الطريقة :

نذكر الأداة أولاً ثم نذكر الكائن الذي نريد وضع الشرط عليه ثم نذكر الشرط ثم الأمر الذي نريده أن ينفذ إذا تحقق هذا الشرط ثم نضع ثم نضع أمر آخر يتم تنفيذه إذا لم يتحقق الشرط ثم ننهي عمل الدالة .

هكذا ..

code:

IF [الكائن الذي عليه الشرط]=[الشرط] THEN

هنا نضع الأمر الذي نريد تنفيذه إذا تحقق الشرط

ELSE

هنا نضع الأمر الآخر إذا لم يتحقق الشرط

END IF

توضيح :

(الكائن الذي عليه الشرط ) قد يكون مربع نص منظم أو غير منظم وقد يكون مربع تسمية وقد يكون مربع تحرير وسرد وقد يكون زر أمر وقد يكون النموذج نفسه وهكذا ..

أم علامة( يساوي ) فهي تتغير بحسب بناء هذه الأداة فقد تكون = أو < أو > أو <> أو غير ذلك بحسب الشرط الذي لدينا .

أما ( الشرط ) فقد يكون نص أو رقم أو تاريخ أو غير ذلك ..

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

الاختبار الأول :

انشأ نموذج وسمه حسب ما تريد .. ضع فيه مربعي نص غير منظمين

المربع الأول سمه شرط

المربع الثاني سمه ناتج

ضع أمر زر على هذا النموذج

( اذهب إلى خصائص هذا الزر .. ثم حدث .. ثم عند النقر .. ثم أختر ( إجراء حدث ) ثم أضغط على النقاط الثلاث نقاط (...) التي بجواره ليفتح لك محرر الفيجول بيسك الذي سوف نضع الكود فيه )

ثم ضع الأداة IF حسب ما تم شرحه ولكن بهذه الصورة .

إذا كتبت في مربع النص المسمى شرط الرقم 10 وبعد الضغط على هذا الزر يخرج في مربع النص المسمى ناتج يخرج الرقم 50 وإذا كان المربع شرط يحوي غير ذلك يكون المربع ناتج يحوي 100

تكون الإجابة بهذه الطريقة..

code:

IF [ شرط ]= 10 THEN

[ ناتج ]= 50

ELSE

[ ناتج ]= 100

END IF

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

سوف يكون هناك اختبار آخر بعد أن نتأكد من أن الجميع أتقن عمل هذه الأداة، أنتظر ردكم وإجابتكم وبرامجكم على الاختبار الأول..

الاجابة

عند عمل أمر زر

اضغط يمين الفار واختار خصائص

حدث – عند النقر – أختار ( اجراء حدث ) – ثم اغط النقاط ( ... ) – واكتب التالي

code:

IF [ شرط ]= 10 THEN

[ ناتج ]= 50

ELSE

[ ناتج ]= 100

END IF

الاختبار الثاني :

في هذا الاختبار أريدك أنت أن تصيغ الجملة الشرطية بناء على ما يلي :-

نحتاج إلى مربع نص غير منظم في النموذج باسم txt1

نحتاج إلى زر أمر في النموذج أيضاً

نحتاج إلى وجود نموذجين آخرين غير هذا الذي عليه زر الأمر

النموذج الأول باسم FF1

النموذج الثاني باسم FF2

أما النموذج الذي عليه زر الأمر فسمه كما تشاء

نريد فتح نموذج بناء على شرط معين في مربع النص المسمى txt1

والجملة الشرطية تقول :

إذا كان مربع النص المسمى txt1 فيه كلمة (موافق) أفتح النموذج المسمى FF1

وإلا إفتح النموذج المسمى FF2

نهاية الجملة الشرطية

طبعاً الحدث يتم وضعه في زر الأمر هذا عند النقر

للعلم فقط الأمر الذي يقوم بفتح النموذج هو

code:

DoCmd.OpenForm "FF1"

نقوم بتغيير FF1 إلى اسم النموذج الذي نريد

الإجابة على الدرس الثاني :

نضع الكود التالي في حدث عند النقر على الزر

code:

If [txt1] = "موافق" Then

DoCmd.OpenForm "FF1"

Else

DoCmd.OpenForm "FF2"

End If

End Sub

الاختبار الثالث :

استخدام And و or

مع الجملة الشرطية

الأدوات المطلوبة لكل من النموذجين هي :

مربع نص غير منظم باسم txt1

مربع نص غير منظم باسم txt2

زر أمر

استخدام Or

إذا كانت الكلمة الموجودة في txt1 هي (فهد الدوسري ) أو الرقم (100)

فيكون لون مربع النص txt1 (أحمر) ولون مربع النص txt2 (أصفر )

وإذا كانت غير هاتين الكلمتين فيكون مربع النص txt1 (أخضر) ولون txt2 (أزرق)

نهاية الجملة الشرطية

استخدام And

إذا كانت الكلمة الموجودة في txt1 هي (فهد) والكلمة الموجودة في txt2 هي(الدوسري)

فيكون لون مربع النص txt1 (أحمر) ولون مربع النص txt2 (أصفر )

وإذا كان أحد مربعي النص يحوي غير هاتين الكلمتين فيكون مربع النص txt1 (أخضر) ولون txt2 (أزرق)

نهاية الجملة الشرطية

طبعاً استخدام And في نموذج

واستخدام Or في نموذج آخر مستقل

للعلم فقط الحدث الذي يقوم بتلوين مربع النص هوcode:

txt1.BackColor = 255

غير txt1 إلى مربع النص الذي تريد وغير 255 إلى اللون الذي تريد

أما أرقام الألوان المطلوبة فهي :

255

اللون الأحمر

16711680

اللون الأزرق

65535

اللون الأصفر

32768

اللون الأخضر

الاجابة

الفقرة الاولى

Option Compare Database

Private Sub Command4_Click()

If [Text1] = "ÝåÏ" And [Text2] = "ÇáÏæÓÑí" Then

Text1.BackColor = 255

Text2.BackColor = 65535

Else

Text1.BackColor = 32768

Text2.BackColor = 16711680

End If

End Sub

الفقرة الثانية

ption Compare Database

Private Sub Command4_Click()

If [Text1] = "ÝåÏ ÇáÏæÓÑí " Or "100" Then

Text1.BackColor = 255

Text2.BackColor = 65535

Else

Text1.BackColor = 32768

Text2.BackColor = 16711680

End If

End Sub

الاختبار الرابع :

سوف نستخدم ElseIf

الأدوات المطلوبة في النموذج هي :

1- مربع نص غير منظم باسم TNN

2 - مربع نص غير منظم باسم txt1

3 - مربع نص غير منظم باسم txt2

4 - مربع نص غير منظم باسم txt3

5 - زر أمر

قم بإخفاء جميع مربعات النص الثلاثة ما عدا المربع TNN

طريقة الإخفاء كما يلي :-

وأنت في وضع تصميم النموذج ضع مؤشر الفأرة على المربع الذي تريد إخفاؤه

ثم أضغط على يمين الفأرة ثم اختر خصائص

ثم ( تنسيق ) ثم (مرئي) وغير الخاصية من (نعم ) إلى (لا) فقط

المطلوب للاختبار هو تنفيذ ما يلي :

إذا كان مربع النص TNN يحتوي على الرقم ( 1 )

يتم إخفاء المربع txt2 والمربع txt3 وإظهار المربع txt1

وإذا كان مربع النص TNN يحتوي على الرقم ( 1 )

يتم إخفاء المربع txt1 والمربع txt3 وإظهار المربع txt2

وإذا كان مربع النص TNN يحتوي على الرقم ( 3 )

يتم إخفاء المربع txt1 والمربع txt2 وإظهار المربع txt3

وإلا else

يتم إظهار جميع المربعات وهي txt1 و txt2 و txt3

نهاية الجملة الشرطية

للتوضيح :استخدم طريقة مشابهة لهذه مع التغيير طبعاً ليناسب المطلوب ..

code:

If [...] = 1 Then

[...] = 2

ElseIf [...] = 3 Then

[...] = 4

ElseIf [...] = 5 Then

[...] = 6

Else

[....]=123

End If

للعلم الكود الذ يقوم بإخفاء مربع النص وإظهاره هو

للإخفاء

code:

Txt1.Visible = False

للإظهار

code:

Txt1.Visible = True

الاجابة

Private Sub Ok_Click()

If [TNN] = "1" Then

txt1.Visible = True 'ÅÙåÇÑ ãÑÈÚ txt1

txt2.Visible = False 'ÅÎÝÇÁ ãÑÈÚ txt2

txt3.Visible = False 'ÅÎÝÇÁ ãÑÈÚ txt3

ElseIf [TNN] = "2" Then

txt1.Visible = False

txt2.Visible = True

txt3.Visible = False

ElseIf [TNN] = "3" Then

txt1.Visible = False

txt2.Visible = False

txt3.Visible = True

Else

txt1.Visible = True

txt2.Visible = True

txt3.Visible = True

End If

End Sub

الاختبار الخامس :

الأدوات المطلوبة في النموذج هي :

1- مربع نص غير منظم باسم MSG

فقط

المطلوب للاختبار هو تنفيذ ما يلي :

إذا كان مربع النص MSG يحتوي على كلمة (حذف )

تخرج علينا رسالة هل تريد الحذف ؟

وإلا else

تخرج علينا رسالة تم إلغاء الأمر

نهاية الجملة الشرطية

(( ملاحظة )) : سوف نضع الكود هذه المرة في حدث (عند الخروج ) لمربع النص MSG كنوع من التغيير في وضع الأكواد

للعلم : طريقة كتابة الرسالة المطلوبة هنا هي كالآتي

code:

MsgBox "هل تريد الحذف؟", vbOKOnly, "تحذير"

طريقة كتابة الرسالة :

نكتب أولاً : MsgBox

ثم نضع علامتي تنصيص هكذا " " وهي حرف الطاء مع ضغط الشفت

ثم نكتب الرسالة بين هاتين العلامتين

ثم نضغط على حرف الواو بعد تحويل اللغة إلى الإنجليزية ليخرج علينا الأوامر الخاصة بالرسالة

نختار منها vbOKOnly

ثم نضغط على حرف الواو مرة أخرى بعد تحويل اللغة إلى الإنجليزية

ثم نضع علامتي تنصيص هكذا " " وهي حرف الطاء مع ضغط الشفت

ثم نكتب عنوان الرسالة بين هاتين العلامتين وهي هنا ( تحذير)

ولزيادة الفائدة عن رسائل الأكسس راجع هذا الرابط :

http://www.msaccess4arab.com/Top/Functions/msgbox/index.htm

وسوف نأخذ في الدرس القادم إن شاء الله رسالة التحذير أو السؤال وفيها زري (نعم) و ( لا ) فإذا ضغطنا على (نعم) ينفذ حدث وإذا ضغطنا على (لا) ينفذ حدث آخر

ويوجد في المنتدى برنامج مفيد في تكوين الرسائل وضعه الأخ أشرف خليل

الاجابة

Option Compare Database

Private Sub MSG_Exit(Cancel As Integer)

If [MSG] = "حذف" Then MsgBox "هل تريد الحذف؟", vbOKOnly, "تحذير"

If [MSG] <> "حذف" Then MsgBox "تم إلغاء الأمر", vbOKOnly, "مبروك لقد تم الغاء الامر"

End Sub

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

الأخ Mandour بالنسبة للاختبار الثالث

أنظر الفرق .. دقق لتستفيد في المرات القادمة

code:

'الكود بعد التعديل

If [txt1] = "فهد الدوسري" Or [txt1] = 100 Then

txt1.BackColor = 255

txt2.BackColor = 65535

Else

txt1.BackColor = 32768

txt2.BackColor = 16711680

End If

'الكود قبل التعديل

If [txt1] = "فهد الدوسرى" Or "100" Then

txt1.BackColor = 255

txt2.BackColor = 65535

Else

txt1.BackColor = 32768

txt2.BackColor = 16711680

End If

*سؤال* هل يمكن دمج السطور الشرطية كسطر واحد على الصورة

Then Txt1.visible, txt2.visible, txt3.visible=true

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

أما سؤالك عن استخدام الكود الذي ذكرته أنت وهو

code:

Then Txt1.visible, txt2.visible, txt3.visible=true

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

الاختبار السادس :

الأدوات المطلوبة في النموذج هي :

1 - جدول باسم(SSS) ويتكون من حقلين فقط الرقم و الاسم .. ادخل فيه عدة أسماء للتجربة فقط

2 - نموذج مبني على الجدول SSS

3 - زر أمر

المطلوب للاختبار هو تنفيذ ما يلي :

بعد الضغط على زر الأمر

تخرج علينا رسالة هل تريد الحذف ؟ وفيها زري (نعم) و (لا) .

إذا ضغطنا (نعم) يتم حذف أحد الاسماء

وإذا ضغطنا (لا) يتم إلغاء الأمر ولا يتم الحذف

نهاية الجملة الشرطية

عرفنا في الاختبار الخامس كيف نكتب الرسالة المكونة من (موافق) فقط وهو اختيار vbOKOnly

هذه المرة سوف نكتب الرسالة المكونة من (نعم)و(لا) وذلك بختيار vbYesNo

تختلف كتابة هذه الرسالة اختلاف بسيط فقط من أجل أن تعمل مع الجملة الشرطية IF

وهي بهذه الطريقة .. ركزوا قليلاً على هذه الطريقة فقد تحتاجونها كثيراً

code:

If MsgBox("AAAAAAA", vbYesNo, "DDDDDDD") = vbYes Then

AAAAAAA = نص الرسالة

DDDDDDD = عنوان الرسالة

للعلم الحدث الخاص بالحذف هو

code:

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

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

code:

DoCmd.SetWarnings False

ليصبح الكود في النهاية هكذا

code:

DoCmd.SetWarnings False

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

أما كود إلغاء الأمر فهو

code:

DoCmd.CancelEvent

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

ففي الاختبار القادم إن شاء الله لن أبين لكم الكود بل سأذكر المطلوب فقط فقد أصبحتوا تعرفون بعض الأكواد

((( بقي لدينا اختبار أخير ومن ثم نبدء في التطبيق العملي ))

الاجابة

Option Compare Database

Private Sub DEL_Click()

On Error GoTo Err_DEL_Click

If MsgBox("ÃäÊ ÊæÔß Úáì ÍÐÝ ÇáÓÌá ÇáÍÇáí ." & vbCrLf _

& "ÃÖÛØ (äÚã) ááÅÓÊãÑÇÑ Ãæ (áÇ) áÅáÛÇÁ ÇáÃãÑ", vbExclamation + vbMsgBoxRight + vbYesNo, "ÊÃßíÏ ÇáÍÐÝ") Then

DoCmd.SetWarnings False

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Exit_DEL_Click:

Exit Sub

Err_DEL_Click:

MsgBox Err.Description

Resume Exit_DEL_Click

End If

End Sub

أما عن سؤالك ((مع العلم أني لا حظت أن رسائل أكسيس لا تظهر على الرغم من عدم إدراجي السطر التالي في بعض الأمثلة :

DoCmd.SetWarnings False))

فيمكن إلغاء بعض رسائل الأكسس بهذه الطريقة :-

1 - خيارات

2 - تحرير/بحث

3 - تأكيد

4 - أزل علامة الصح عن الرسائل التي لا تريد رؤيتها

5 - موافق

الاختبار السابع :

الأدوات المطلوبة :

1 - ثلاثة نماذج بأي اسم تريد

2 - ثلاثة تقارير بأي اسم تريد

3 - مربعي نص على النموذج الرئيسي (واحد للتقارير ) و ( واحد للنماذج ).

4 - زري أمر اثنين

أريد أن اكتب في (مربع نص التقارير )اسم التقرير الذي عندي في البرنامج وبعد الضغط على الزر يفتح لى التقرير الذي كتبت اسمه في المربع ويكون على وضع المعاينة

كذلك إذا كتبت في (مربع نص النماذج ) اسم النموذج وبعد الضغط على الزر الآخر يفتح النموذج الذي كتبت اسمه في هذا المربع

أداة الشرط if المطلوب منها هنا إذا كان أحد مربعي النص فارغاً من البيانات فتخرج علينا رسالة (أكتب التقرير المطلوب ) ثم يتم إلغاء أمر فتح التقرير وكذلك الحال مع مربع فتح النموذج

كيف نتحقق من أن الحقل فارغاً ؟ .. الجواب نستخدم إحدى الطريقتين أو كلاهما معاً

الطريقة الأولى استخدم علامتي التنصيص فقط لا غير ""

الطريقة الثانية استخدم IsNull(مربع_النص)

ويستحسن استخدامهما معاً عن طريق And

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

الكود هو :

code:

DoCmd.OpenReport "اسم_التقرير", acPreview

ربما يخرج لديكم مشاكل .. هذا ما أريده فعلاً لكي تتغلبوا عليها في المرات القادمة

ربما أنكم تبدعون في ذلك فالحمد لله على أنكم قد وصلتم إلى مرحلة متقدمة

الاجابة

Option Compare Database

Private Sub cmdOpenFormsBtn_Click()

On Error GoTo Err_cmdOpenFormsBtn_Click

Dim stDocName As String

Dim stLinkCriteria As String

If IsNull(Text1) Then

MsgBox "ÇßÊÈ ÇÓã ÇáäãæÐÌ"

DoCmd.CancelEvent

Else

stDocName = Text1

DoCmd.OpenForm stDocName, , , stLinkCriteria

End If

Exit_cmdOpenFormsBtn_Click:

Exit Sub

Err_cmdOpenFormsBtn_Click:

MsgBox Err.Description

Resume Exit_cmdOpenFormsBtn_Click

End Sub

Private Sub cmdOpenReportsBtn_Click()

On Error GoTo Err_cmdOpenReportsBtn_Click

Dim stDocName As String

Dim stLinkCriteria As String

If IsNull(Text2) Then

MsgBox "ÇßÊÈ ÇÓã ÇáÊÞÑíÑ"

DoCmd.CancelEvent

Else

stDocName = Text2

DoCmd.OpenReport stDocName, acViewPreview, , stLinkCriteria

End If

Exit_cmdOpenReportsBtn_Click:

Exit Sub

Err_cmdOpenReportsBtn_Click:

MsgBox Err.Description

Resume Exit_cmdOpenReportsBtn_Click

End Sub

التطبيق العملي للأداة IF

ملاحظة مهمة جداً قبل البداية :

بالطبع لن نهتم بالجداول أو الاستعلامات أو العلاقات فهذا ليس موضوعنا

كل ما نهتم به ونركز عليه هو ما قمنا بدراسته هنا ويجب على الجميع التقيد بذلك

من يرى في نفسه أن يستطيع تنفيذ ما يطلب منه بدون استخدام الدالة التي درسناها وهي If

فلا يلزمنا أن يضع لنا برنامجه هنا بل يضعه في أي مكان آخر غير هذا الموضوع لكي لا يتشعب بنا الموضوع

===========

على بركة الله نبدأ

التطبيق العملي الأول :

شخص يريدك أن تصمم له برنامج خاص به ويطلب فيه عدة طلبات وسوف نصمم البرنامج شيئاً فشيئاً مع التركيز الشديد على استخدام If

أولاً : الشاشة الافتتاحية للبرنامج /

وهو عبارة عن نموذج باسم ( افتتاحية ) يعمل في مقدمة البرنامج ويملئ الشاشة ويوجد فيه ما يلي :

( مربع نص ) أو ( مربع تسميه ) اختر واحداً فقط حسب قدرتك انت في التعامل مع أحدهما

هذا المربع تخرج فيه في البداية جملة ( أهلاً وسهلاً بك معنا )

ثم تخرج فيه جملة ( في برنامج )

ثم تخرج فيه جملة ( تطبيق الدروس )

ثم جملة (تفضل بالدخول )

ثم يقفل النموذج تلقائي .. ويفتح النموذج الآخر المسمى ( المقدمة )

(( لتنفيذ ذلك يجب استخدام أداة الشرط IF في حدث عند عداد الوقت أو التايمر ))

طريقة جعل النموذج يعمل في مقدمة البرنامج لمن لا يعرف ذلك كما يلي :-

1 - من شريط الأدوات العلوي للأكسس نختار( أدوات )

2 - نضغط على (بدء التشغيل )

3 - نذهب إلى مربع التحرير والسرد المسمى (عرض النموذج/الصفحة

4 - نختار منه نموذج (افتتاحية )

5 - ثم موافق

(( طبعاً كل شخص له الحرية من ناحية جمال النموذج وترتيبه وهذا عامل مهم لإنتاج البرامج ))

في التطبيق القادم إن شاء الله سنتطرق إلى النموذج المسمى (المقدمة )

أرجو من الجميع عمل ذلك كلٍ حسب فهمه للدرس وعدم الالتفات لإعمال غيره

الاجابة

Option Compare Database

Private Sub Form_Load()

DoCmd.Maximize

timerinterval = 3000

End Sub

Private Sub Form_Timer()

If lbl1.Visible = False Then

lbl1.Visible = True

Else

If lbl1.Caption = "ÃåáÇð æÓåáÇð Èß ãÚäÇ" Then

lbl1.Caption = "Ýí ÈÑäÇãÌ "

Else

If lbl1.Caption = "Ýí ÈÑäÇãÌ " Then

lbl1.Caption = "ÊØÈíÞ ÇáÏÑæÓ"

Else

If lbl1.Caption = "ÊØÈíÞ ÇáÏÑæÓ" Then

lbl1.Caption = "ÊÝÖá ÈÇáÏÎæá"

If lbl1.Caption = "ÊÝÖá ÈÇáÏÎæá" Then

Call Intro

End If

End If

End If

End If

End If

End Sub

Private Sub Intro()

DoCmd.Close

DoCmd.OpenForm " frminitial"

End Sub

التطبيق العملي الثاني :

بعد أن عملنا الشاشة الافتتاحية للبرنامج سوف نتطرق للنموذج (المقدمة) الذي يفتح بعد نموذج (الافتتاحية)

نموذج (المقدمة ) يحتوي على مربعي نص اثنين غير منظميين وزر أمر (والنموذج يكون على شكل مربع حوار .. أي ليس ملئ الشاشة)

المربع الأول باسم (المستخدم) والثاني باسم ( السر) ونريد منك ما يلي بعد الضغط على زر الأمر:

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

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

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

- إذا كان (المستخدم) صحيح و (السر) صحيح تخرج هذه الرسالة "تفضل بالدخول" ويفتح النموذج المسمى(الرئيسي)

( المستخدم ) : فهد ....... (السر):123

طبعاً يتم استخدام أداة الشرط في نموذج (المقدمة) حسب ما فهمتم من الاختبارات السابقة

من يخطئ يضع البرنامج كما هو لنخبره أين الخطأ وليس هذا عيباً .

في التطبيق القادم إن شاء الله سنتطرق إلى النموذج المسمى (الرئيسي)

الاجابة

End Sub

Private Sub ÒÑ_ãæÇÝÞ_Click()

If [userName] = "ÝåÏ" And [Password] = "123" Then

MsgBox "ÊÝÖÜá ÈÇáÏÎÜæá", , "ãÈÜÑæß"

DoCmd.Close

DoCmd.OpenForm "ÇáÑÆíÓí"

ElseIf [userName] <> "ÝåÏ" And [Password] <> "123" Then

MsgBox "áíÓ áÏíß ÕáÇÍíÉ ÇáÏÎæá", 16, "ÊäÈíå"

[userName] = Null

[Password] = Null

ElseIf [userName] <> "ÝåÏ" Then

MsgBox "ÇÓã ÇáãÓÊÎÏã ÎØÃ", 16, "ÊäÈíå"

[userName] = Null

ElseIf [Password] <> "123" Then

MsgBox "ßáãÉ ÇáÓÑ ÎØÃ", 16, "ÊäÈíå"

[Password] = Null

التطبيق العملي الثالث :

بعد أن يتخطى مستخدم البرنامج نموذج (المقدمة ) يفتح له نموذج (الرئيسي )

وهذا النموذج مبني على جدول باسم (الموظفين )

-جدول الموظفين يتكون من الحقول التالية ( الرقم - الاسم - المرتبة- الدرجة -الراتب )

المطلوب في النموذج ( الرئيسي ) مايلي :-

-عند إدخال رقم أقل من الرقم (2)أو أكبر من الرقم (10)في الحقل المسمى (الدرجة) وبعد الخروج من الحقل تخرج لدينا رسالة تفيد أن الدرجات تبدأ من (1) إلى (10) فقط ولا يقبل غير ذلك .

-هناك زر أمر للحذف عند الضغط عليه يخرج علينا مربع نص داخل النموذج بعنوان (أدخل كلمة السر)هذا المربع في الأصل مخفي ويتم إظهاره بعد الضغط على زر أمر الحذف

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

- هناك زر أمر فتح التقرير للمعاينة (التقرير الذي نريد فتحه سوف يكون مبني على جدول الموظفين والتقرير باسم تقرير الموظفين )

هذ كل شيئ مطلوب في النموذج

في التطبيق القادم سوف نتطرق لهذا التقرير المسمى (تقرير الموظفين)

الاجابة

Private Sub Command7_Click()

On Error GoTo Err_Command7_Click

If IsNull(Me.uuu) Then

MsgBox "ÇÏÎá ÇÓã ÇáãÓÊÎÏã"

ElseIf Me.uuu <> "ÝåÏ" Then

MsgBox "ÇáÇÓã ÛíÑ ÕÍíÍ"

Me.uuu.SetFocus

Exit Sub

End If

If IsNull(Me.ppp) Then

MsgBox "ÇÏÎá ÇáßáãÉ ÇáÓÑíÉ."

ElseIf Me.ppp <> 123 Then

MsgBox "ÇáÑÞã ÇáÓÑí ÛíÑ ÕÍíÍ"

Me.ppp.SetFocus

Exit Sub

End If

If Me.ppp = 123 And Me.uuu = "ÝåÏ" Then

MsgBox "ÊÝÖÜá ÈÇáÏÎÜæá"

DoCmd.Close

DoCmd.OpenForm "ÇáäãæÐÌ ÇáÑÆíÓí"

DoCmd.Close acForm, "background"

End If

Exit Sub

Err_Command7_Click:

MsgBox "ÇáÍÞæá ÎÇáíÉ ÑÌÇÁ ßÊÇÈÉ ÇÓã ÇáãÓÊÎÏã"

End Sub

Private Sub Form_Load()

DoCmd.OpenForm "background"

End Sub

Option Compare Database

Private Sub Command10_Click()

Me.l1.Visible = True

Me.p1.Visible = True

Me.l2.Visible = True

End Sub

Private Sub Command16_Click()

On Error GoTo Err_Command16_Click

Dim stDocName As String

Dim stLinkCriteria As String

stDocName = ChrW(1580) & ChrW(1583) & ChrW(1608) & ChrW(1604) & ChrW(32) & ChrW(1575) & ChrW(1604) & ChrW(1605) & ChrW(1608) & ChrW(1592) & ChrW(1601) & ChrW(1610) & ChrW(1606)

stLinkCriteria = "[ÑÞã ÇáãæÙÝ]=" & Me![ÑÞã ÇáãæÙÝ]

DoCmd.OpenReport "ÌÏæá ÇáãæÙÝíä", acViewPreview

Exit_Command16_Click:

Exit Sub

Err_Command16_Click:

MsgBox Err.Description

Resume Exit_Command16_Click

End Sub

Private Sub Form_Open(Cancel As Integer)

DoCmd.Maximize

End Sub

Private Sub Command5_Click()

If MsgBox("åá ÊÑíÏ ÇáÎÑæÌ ãä ÇáÈÑäÇãÌ¿", _

vbQuestion + vbYesNo, _

"ÎÑæÌ") = vbYes Then

DoCmd.Quit

End If

End Sub

Private Sub p1_Exit(Cancel As Integer)

If [p1] = 123 Then

MsgBox "ßáãÉ ÇáÓÑ ÕÍíÍÉ"

If MsgBox("ÑÓÇáÉ åá ÊÑíÏ ÇáÍÐÝ ", vbYesNo, "ÑÓÇáÉ ÊÍÐíÑíÉ") = vbYes Then

DoCmd.SetWarnings False

DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70

DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70

Else

DoCmd.CancelEvent

End If

ElseIf Me.p1 <> 123 Then

MsgBox "ÇáÑÞã ÇáÓÑí ÛíÑ ÕÍíÍ"

Me.p1.SetFocus

End If

End Sub

Private Sub Command9_Click()

On Error GoTo Err_Command9_Click

DoCmd.GoToRecord , , acNext

Exit_Command9_Click:

Exit Sub

Err_Command9_Click:

MsgBox Err.Description

Resume Exit_Command9_Click

End Sub

Private Sub Command11_Click()

On Error GoTo Err_Command11_Click

DoCmd.GoToRecord , , acPrevious

Exit_Command11_Click:

Exit Sub

Err_Command11_Click:

MsgBox Err.Description

Resume Exit_Command11_Click

End Sub

Private Sub ÇáÏÑÌÉ_Exit(Cancel As Integer)

DoCmd.SetWarnings False

If [ÇáÏÑÌÉ] < 0 Then MsgBox "ÇáÑÞã áÇÒã íßæä ãä 1 Çáì 10"

If [ÇáÏÑÌÉ] >= 10 Then MsgBox "ÇáÑÞã áÇÒã íßæä ãä 1 Çáì 10"

DoCmd.CancelEvent

Me.ÇáÏÑÌÉ.SetFocus

If [ÇáÏÑÌÉ] > 0 And [ÇáÏÑÌÉ] <= 10 Then

Me.ÇáÑÇÊÈ.SetFocus

End If

End Sub

التطبيق العملي الرابـع :

سنتطرق إلى التقرير المسمى ( تقرير الموظفين )

في هذا التقرير نريد ما يلي :-

- نضع مربع نص غير منظم في التقرير باسم (ملاحظات)

-إذا كانت الدرجة في حقل (الدرجة) 2 أو 3 تخرج في (ملاحظات) كلمة "حد أدنى للدرجات"

-إذا كانت الدرجة في حقل (الدرجة) 9 أو 10 تخرج في (ملاحظات) كلمة "حد أعلى للدرجات"

فقط هذا هو المطلوب في هذا التقرير

انتهى درس الدالة If...Then ولله الحمد والمنه

==================

وبهذا نكمل الدرس الأول من (دروس متقدمة في الأكسس للمبتدئين)

==================

-من لديه سؤال على ما تم شرحه فليتفضل

-إذا لم يعرف أحد منكم تطبيق أي درس من الدروس فليخبرنا

-أما إذا لم يكن هناك أي أسئلة أو استفسارات أو صعوبة في التطبيق فسوف نبدأ في الدرس الثاني إن شاء الله

الاجابة

Private Sub ÇáÏÑÌÉ_Exit(Cancel As Integer)

DoCmd.SetWarnings False

If [ÇáÏÑÌÉ] < 0 Then MsgBox "ÇáÑÞã áÇÒã íßæä ãä 1 Çáì 10"

If [ÇáÏÑÌÉ] >= 10 Then MsgBox "ÇáÑÞã áÇÒã íßæä ãä 1 Çáì 10"

DoCmd.CancelEvent

Me.ÇáÏÑÌÉ.SetFocus

If [ÇáÏÑÌÉ] > 0 And [ÇáÏÑÌÉ] <= 10 Then

Me.ÇáÑÇÊÈ.SetFocus

End If

End Sub

دروس متقدمة في الأكسس للمبتدئين ( الدرس الثاني )

الدرس الثاني هو :

استخدام الدالة Select Case

هي أشبه ما تكون بالدالة If .. Then ولكنها تختلف عنها بالتعدد أي أنها تكون في الشروط المتعددة .

طريقة بناؤها كما يلي :

code:

Select Case الكائن

Case حالة_الكائن

الحدث_المراد_عمله_في_هذه_الحالة_للكائن

End Select

نضرب مثال لتقريب عمل هذه الدالة :

أقرب مثال وأوضحه هو طريقة استخراج التقدير العام للطلاب في مؤهلاتهم بمعنى ..

طالب أخذ درجة 60 فيكون تقديره مثلاً جيد

طالب آخر أخذ درجة 90 فيكون تقديره ممتاز وهكذا ..

فإذا مرت علينا مثل هذه الحالة أي شروط متعددة فنستخدم معها هذه الدالة

فالتقدير هنا متعدد فهو تارة يكون ضعيف أو مقبول أو جيد أو جيد جداً أو ممتاز وكل هذا مبنى على مجموع الدرجات التي تحصل عليها الطالب .

نأتي بمثال على كيفية استخدام هذه الدالة مع الحالة السابقة الذكر :

لدينا نموذج وفيه مربعي نص الأول باسم (المجموع) والثاني باسم (التقدير)

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

code:

Select Case المجموع

Case 0 To 48

التقدير = "ضعيف"

Case 49 To 60

التقدير = "مقبول"

Case 61 To 74

التقدير = "جيد"

Case 75 To 88

التقدير = "جيد جداً"

Case 89 To 100

التقدير = "ممتاز"

End Select

نكتب أي رقم من 1 إلى 100 في الحقل (المجموع) ليخرج علينا تقديره في الحقل (التقدير)

طبعاً استخدمنا هنا To) ) بمعنى (إلى) ولا يلزم استخدامها مع الدالة دائماً ولكنها تستخدم في حالة مثل هذه الحالة التي نحن بصدد الحديث عنها .. أما (Case ) هنا فهي تشير إلى المجموع وهي تستخدم دائماً مع الدالة ولا يمكن الاستغناء عنها.

وتفسير الدالة السابقة كما يلي :

المجموع صفر إلى المجموع 48 يكون التقدير ضعيف

المجموع 49 إلى المجموع 60 يكون التقدير مقبول

المجموع 61 إلى المجموع 74 يكون التقدير جيد

المجموع 75 إلى المجموع 88 يكون التقدير جيد جداً

المجموع 89 إلى المجموع 100 يكون التقدير ممتاز

الاختبار الأول :

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

الاجابة

Option Compare Database

Private Sub total_BeforeUpdate(Cancel As Integer)

End Sub

Private Sub total_Exit(Cancel As Integer)

Select Case total

Case 0 To 48

Tagdeer.Value = "ÖÚíÝ"

Case 49 To 60

Tagdeer.Value = "ãÞÈæá"

Case 61 To 74

Tagdeer.Value = "ÌíÏ"

Case 75 To 88

Tagdeer.Value = "ÌíÏ ÌÏÇ"

Case 89 To 100

Tagdeer.Value = "ããÊÇÒ"

End Select

End Sub

Private Sub ÃãÑ4_Click()

On Error GoTo Err_ÃãÑ4_Click

DoCmd.Close

Exit_ÃãÑ4_Click:

Exit Sub

Err_ÃãÑ4_Click:

MsgBox Err.Description

Resume Exit_ÃãÑ4_Click

End Sub

الاختبار الثاني:

أنا متأكد الآن إن شاء الله أن الجميع قد عرف طريقة استخدام الدالة ونكررها مرة أخرى بطريقة أخرى لكي لا تنسى

المطلوب : نموذج وفيه مربع نص غير منظم باسم (ناتج) و زر أمر باسم(مختلف)

هذه المرة سوف نتحكم في عنوان هذا الزر وبحسب العنوان يكون هناك أمر (ركزوا في هذا الدرس قليلاً ) لما فيه من الفائدة

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

طريقة التعامل مع أزرار الأمر كما يلي للتوضيج فقط .

code:

مختلف.Caption = "خروج"

في حدث (عند النقر ) لهذا الزر نريد ما يلي :-

في البداية نريد أن يكون عنوان الزر هو (حفظ) .يعني نكتب على الزر حفظ

ونطبق عليه الدالة بهذه الطريقة

-إذا كان عنوان الزر هو ( حفظ ) وعند الضغط عليه يكتب في مربع النص كلمة ( حفظ ) ويتغير عنوان الزر إلى( فتح )

-إذا كان عنوان الزر هو( فتح ) وعند الضغط عليه يكتب في مربع النص كلمة ( فتح) ويتغير عنوان الزر إلى( حذف )

-إذا كان عنوان الزر هو( حذف) وعند الضغط عليه يكتب في مربع النص كلمة ( حذف) ويتغير عنوان الزر إلى ( إضافة )

-إذا كان عنوان الزر هو( إضافة) وعند الضغط عليه يكتب في مربع النص كلمة ( إضافة ) ويتغير عنوان الزر إلى( إغلاق)

-إذا كان عنوان الزر هو (إغلاق) وعند الضغط عليه يكتب في مربع النص كلمة (إغلاق) ويتغير عنوان الزر إلى (خروج)

-إذا كان عنوان الزر هو (خروج) وعند الضغط عليه يكتب في مربع النص كلمة (خروج) ويتغير عنوان الزر إلى (حفظ)

أرجو أن يكون الاختبار واضحا ومن لديه إشكالية فليتفضل بها

الاجابة :

Option Compare Database

Private Sub ÃãÑ2_Click()

End Sub

Private Sub ãÎÊáÝ_Click()

If Me.ãÎÊáÝ.Caption = "ÍÝÙ" Then

Me.äÇÊÌ = "ÍÝÙ"

Me.ãÎÊáÝ.Caption = "ÝÊÍ"

ElseIf Me.ãÎÊáÝ.Caption = "ÝÊÍ" Then

Me.äÇÊÌ = "ÝÊÍ"

Me.ãÎÊáÝ.Caption = "ÍÐÝ"

ElseIf Me.ãÎÊáÝ.Caption = "ÍÐÝ" Then

Me.äÇÊÌ = "ÍÐÝ"

Me.ãÎÊáÝ.Caption = "ÅÖÇÝÉ"

ElseIf Me.ãÎÊáÝ.Caption = "ÅÖÇÝÉ" Then

Me.äÇÊÌ = "ÅÖÇÝÉ"

Me.ãÎÊáÝ.Caption = "ÅÛáÇÞ"

ElseIf Me.ãÎÊáÝ.Caption = "ÅÛáÇÞ" Then

Me.äÇÊÌ = "ÅÛáÇÞ"

Me.ãÎÊáÝ.Caption = "ÎÑæÌ"

ElseIf Me.ãÎÊáÝ.Caption = "ÎÑæÌ" Then

Me.äÇÊÌ = "ÎÑæÌ"

Me.ãÎÊáÝ.Caption = "ÍÝÙ"

End If

End Sub

الثالث:

من تابع معنا الدرس الأول فسوف يسهل عليه هذا الاختبار حيث أننا سوف ندمج الدالة IF مع الدالة Select Case من أجل الاستفادة منهما معاً وهذه الحالة دائماً تتكرر في البرامج فأرجو التركيز قليلاً على هذا الاختبار .

الأدوات :-

1-مربع تحرير وسرد باسم (Name) يحتوي على كلمتين هما (حروف)و(أرقام) .

2-مربع نص غير منظم باسم (TXT1) نضع الكود في حدث عند الخروج لهذا المربع

3-مربع نص غير منظم باسم (TXT2)تخرج فيه النتيجة المطلوبة

المطلوب :-

-إذا كان Name يحتوي على كلمة (أرقام) فنريد ما يلي :-

- إذا كتبنا الرقم (1) في TXT1 تخرج كلمة (الأول) في TXT2

- إذا كتبنا الرقم (2) في TXT1 تخرج كلمة (الثاني) في TXT2

- إذا كتبنا الرقم (3) في TXT1 تخرج كلمة (الثالث) في TXT2

- إذا كتبنا الرقم (4) في TXT1 تخرج كلمة (الرابع) في TXT2

-إذا كان Name يحتوي على كلمة (حروف) فنريد ما يلي :-

- إذا كتبنا الرقم (1) في TXT1 تخرج كلمة (واحد) في TXT2

- إذا كتبنا الرقم (2) في TXT1 تخرج كلمة (اثنان) في TXT2

- إذا كتبنا الرقم (3) في TXT1 تخرج كلمة (ثلاثة) في TXT2

- إذا كتبنا الرقم (4) في TXT1 تخرج كلمة (أربعة) في TXT2

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

ملاحظة هامة جداً :يطبق في هذا الاختبارالدالة IF مع الدالة Select Case معاً

الاجابة :

Private Sub TXT1_Exit(Cancel As Integer)

If Me.Name1 = "ÃÑÞÇã" Then

Select Case Me.TXT1

Case 1

Me.TXT2 = "ÇáÃæá"

Case 2

Me.TXT2 = "ÇáËÇäí"

Case 3

Me.TXT2 = "ÇáËÇáË"

Case 4

Me.TXT2 = "ÇáÑÇÈÚ"

End Select

End If

If Me.Name1 = "ÍÑæÝ" Then

Select Case Me.TXT1

Case 1

Me.TXT2 = "æÇÍÏ"

Case 2

Me.TXT2 = "ÅËäÇä"

Case 3

Me.TXT2 = "ËáÇËÉ"

Case 4

Me.TXT2 = "ÃÑÈÚÉ"

End Select

End If

End Sub

التطبيق الأول :

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

يحتوي (مجموعة خيار)على أربعة أسئلة هي كالتالي :-

1 -كم أركان الإسلام ؟

2 - كم عدد الصلوات المفروضة في اليوم ؟

3 - من هو خاتم النبيـين؟

4 - من هو خليل ا لرحمن ؟

=======

إجابات الأسئلة هي (للتوضيح فقط ))

1 - خمسة أركان

2 - خمس صلوات في اليوم والليلة

3 - هو محمد صلى الله عليه وسلم

4 - هو إبراهيم عليه السلام

========

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

طبعاً يتم عمل ذلك عن طريقة الدالة select case

أما مسميات الأدوات فلك الحرية في اختيار الاسم الذي تريد

(( يصبح البرنامج في النهاية هكذا ولكل شخص ذوقه في التصميم ))

أرجو للجميع التوفيق

الاجابة :

Option Compare Database

Private Sub dd_AfterUpdate()

Select Case dd

Case 1

äÕ11 = "ÎãÓÉ ÃÑßÇä"

Case 2

äÕ11 = "ÎãÓ ÕáæÇÊ Ýí Çáíæã æÇááíáÉ"

Case 3

äÕ11 = "åæ ãÍãÏ Õáì Çááå Úáíå æÓáã"

Case 4

äÕ11 = "åæ ÅÈÑÇåíã Úáíå ÇáÓáÇã"

End Select

End Sub

Private Sub ÃãÑ16_Click()

On Error GoTo Err_ÃãÑ16_Click

DoCmd.Close

Exit_ÃãÑ16_Click:

Exit Sub

Err_ÃãÑ16_Click:

MsgBox Err.Description

Resume Exit_ÃãÑ16_Click

End Sub

شرح دوال أكسيس:-

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

أنواع الدوال0

1 - دوال التاريخ والوقت0

2 - دوال التحويلات 0

3 - الدوال الماليه0

4 - الدوال الرياضية وحساب المثلثات0

5 - دوال سلاسل البيانات0

6 - دوال المجال التجميعية0

7 - دوال التحقق من أنواع البيانات

8 - دوال المدخلات والمخرجات0

9 - دوال أخرى متنوعة

*******************************************

دوال الوقت والتاريخ (Date And time )****

الدالة Now تعيد اليوم والوقت المسجل في الحاسب باستخدام ساعة الحاسب ولا بد من ضبط التاريخ والوقت في الحاسب ولإ النتائج غير دقيقة0

الدالة :Now

الصيغة : Now = اسم مربع النص

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

الدالة : () Time أو ()$Time تعيد الوقت 0

الصيغة: ()Time =اسم مربع النص

الدالة : Date أو $Date

الصيغة : Date=اسم مربع النص0

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

الدالة : Day(Date()) Day

الصيغة:

(()Day(Date=اسم مربع النص

(أي حقل تاريخ ) Day=اسم مربع النص

استخراج اليوم من أي تاريخ مسجل في الجدول مثل تاريخ التوظيف

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

الدالة Month

الصيغة

( أي حقل تاريخ ) Month=اسم مربع النص

استخراج الشهر من أي تاريخ مسجل في الجدول مثل تاريخ التوظيف

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

الدالة : Year

الصيغة : (أي حقل تاريخ ) Year=اسم مربع النص

استخراج السنة من أي تاريخ مسجل في الجدول مثل تاريخ التوظيف

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

الدالة Hour

اليغة (مربع نص يحتوي على ساعة الجهاز) Hour=اسم مربع النص

استخراج عدد الساعات من الوقت المحدد في مربع النص

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

الدالة Minute

اليغة (مربع نص يحتوي على ساعة الجهاز) Minute =اسم مربع النص

استخراج عدد الدقائق من الوقت المحدد في مربع النص

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

الدالة Second

اليغة (مربع نص يحتوي على ساعة الجهاز) Second =اسم مربع النص

استخراج عدد الثواني من الوقت المحدد في مربع النص

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

الدالة DateAdd

اليغة (التاريخ ,عدد , الفصل الزمني ) DateAdd =اسم مربع النص

تعيد هذه الدالة تاريخ جديد بعد أن تضيف له قيمة جديدة ويوضح الجدوال التالي المقصود بالفاصل الزمني0

الفاصل الزمني التوضيح

yyyy سنة

q ربع سنة

m شهر

y يوم في السنة

d يوم

w يوم من أيام الاسبوع

ww اسبوع

h ساعة

n دقيقة

s ثانية

هذه الدوال يستخدمها المحاسبون ومن لهم إهتمام بأمور المحاسبة

وهي : ( PMT , PV , FV , RATE ,DDB, SLN ,SYD )

الدالة : PMT تقوم هذه الدالة بحساب الدفعة الدورية لتسديد قرض0

مثال:

Const ENDPERIOD = 0, BEGINPERIOD = 1 ' When payments are made.

Const MB_YESNO = 4 ' Define Yes/No buttons.

Const ID_NO = 7 ' Define No as a response.

NL = Chr(13) & Chr(10) ' Define newline.

TB = Chr(9) ' Define tab.

Fmt = "###,###,##0.00" ' Define money format.

fVal = 0 ' Usually 0 for a loan.

pval = InputBox("كم المبلغ الذي تود اقتراضه؟")

APR = InputBox("كم معدل الفائدة السنوية؟")

If APR > 1 Then APR = APR / 100 ' Ensure proper form.

TotPmts = InputBox("كم المبلغ الذي سيدفع كقسط شهري؟")

paytype = MsgBox("هل الدفع في نهاية الشهر؟", MB_YESNO, "استفسار")

If paytype = ID_NO Then paytype = BEGINPERIOD Else paytype = ENDPERIOD

payment = Abs(-Pmt(APR / 12, TotPmts, pval, fVal, paytype))

Msg = "مبلغ القسط الشهري = " & Format(payment, Fmt)

Msg = Msg & NL & "هل تود رؤية قائمة بالدفعات "

Msg = Msg & "والفائدة في كل فترة؟"

MakeChart = MsgBox(Msg, MB_YESNO, "استفسار") ' See if chart is desired.

If MakeChart <> ID_NO Then

If TotPmts > 20 Then MsgBox "سنظهر لك 20 فترة فقط .", , "ملحوظة"

Msg = "الشهر الدفعة الأصل الفائدة" & NL

For period = 1 To TotPmts

If period > 20 Then Exit For ' Only show first 25.

P = PPmt(APR / 12, period, TotPmts, -pval, fVal, paytype)

P = (Int((P + 0.005) * 100) / 100) ' Round principal.

I = payment - P

I = (Int((I + 0.005) * 100) / 100) ' Round interest.

Msg = Msg & period & TB & Format(payment, Fmt)

Msg = Msg & TB & Format(P, Fmt) & TB & Format(I, Fmt) & NL

Next period

MsgBox Msg, , "قائمة الدفعات " ' Display amortization table.

End If

وهذا مثال أخر قد يكون أوضح ومفهوم أفضل من سابقه

Dim العملية_الحسابة As Variant

Const نهاية_الشهر = 0, بداية_الشهر = 1

FVal = txt1

If النسبة >1 then النسبة = النسبة /12

الجواب=PMT ( النسبة / 12 , عدد_الأقساط , _ المبلغ , FVal, وقت_الدفع)

حيث :

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

عددالأقساط : هي عدد الأشهر التي يستغرقها المدين في الدفع حتى ينهي الدين

المبلغ : هو مجموع الدين أي المبلغ الأجمالي

FVAL : القيمة المستقبلية

وقت_الدف : هي رقم يعرف متى يتم الدفع فالرقم " 1 " يعني دفع القسط أول الشهر والرقم " 0 " يعني بأن الدفع يكون نهاية الشهر

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

الدالة : FV

تقوم هذه الدالة بحساب القيمة المستقبلية لمبلغ معين يراد إيداعه على دفعات 0

تأخذ هذه الدالة الشكل التالي:

FV(rate , nper , pmt , pv , due )

حيث:

rate : معدل الفائدة

nper :المدة ( عدد الدفعات )

pmt : مقدار الدفعة ( 1000 أو 2000 أو000000 الخ )

pv :القيمة المستقبلية أو الرصيد بعد أخر فترة يتم الرصد فيها

due :رقم يوضح هل يتم إدخار المبلغ في أول الشهر أو أخر الشهر والرقم 1 يعني أول كل شهر

مثال على ذلك:

Const ENDPERIOD = 0, BEGINPERIOD = 1 ' When payments are made.

Const MB_YESNO = 4 ' Define Yes/No buttons.

Const ID_NO = 7 ' Define No as a response.

Fmt = "###,###,##0.00" ' Define money format.

payment = InputBox("كم المبلغ الذي تود ادخاره شهرياً ؟")

APR = InputBox("ماهي الفائدة السنوية ؟")

If APR > 1 Then APR = APR / 100 ' Ensure proper form.

TotPmts = InputBox("ماعدد الأشهر التي ستدخر فيها ؟")

paytype = MsgBox("هل الدفع في بداية الشهر؟", MB_YESNO, "استفسار")

If paytype = ID_NO Then paytype = BEGINPERIOD Else paytype = ENDPERIOD

pval = InputBox("كم المبلغ الذي ستدخره الآن؟")

fVal = fv(APR / 12, TotPmts, -payment, -pval, paytype)

MsgBox "مجمل ادخارك = " & Format(fVal, Fmt) & ".", , "النتيجة"

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

الدالة : nper

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

title = "الجواب"

Const ENDPERIOD = 0, BEGINPERIOD = 1 ' When payments are made.

Const MB_YESNO = 4 ' Define Yes/No buttons.

Const ID_NO = 7 ' Define No as a response.

fVal = 0 ' Usually 0 for a loan.

pval = InputBox("كم قيمة الدين ؟")

APR = InputBox("كم معدل الفائدة السنوية؟")

If APR > 1 Then APR = APR / 100 ' Ensure proper form.

payment = InputBox("كم المبلغ الذي تستطيع تقسيطه شهرياً ؟")

paytype = MsgBox("هل الدفع في نهاية الشهر ؟", MB_YESNO)

If paytype = ID_NO Then paytype = BEGINPERIOD Else paytype = ENDPERIOD

TotPmts = nper(APR / 12, -payment, pval, fVal, paytype)

If Int(TotPmts) <> TotPmts Then TotPmts = Int(TotPmts) + 1

Msg = "سوف تأخذ " & TotPmts & " شهراً لإنهاء الدين ."

MsgBox Msg, , title

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

الدالة : IPmt

هذه الدالة تعطي نسبة الفوائد السنوية0

Const ENDPERIOD = 0, BEGINPERIOD = 1 ' When payments are made.

Const MB_YESNO = 4 ' Define Yes/No buttons.

Const ID_NO = 7 ' Define No as a response.

fVal = 0 ' Usually 0 for a loan.

Fmt = "###,###,##0.00" ' Define money format.

pval = InputBox("كم المبلغ الذي تود اقتراضه؟")

APR = InputBox("كم نسبةالفائدة السنوية؟")

If APR > 1 Then APR = APR / 100 ' Ensure proper form.

TotPmts = InputBox("كم المبلغ الذي تستطيع تقسيطه شهرياً؟")

paytype = MsgBox("هل الدفع في بداية الشهر؟", MB_YESNO, "استفسار")

If paytype = ID_NO Then paytype = BEGINPERIOD Else paytype = ENDPERIOD

For period = 1 To TotPmts ' Total all interest.

IntPmt = IPmt(APR / 12, period, TotPmts, -pval, fVal, paytype)

TotInt = TotInt + IntPmt

Next period

Msg = "سوف تدفع مبلغ = " & Format(TotInt, Fmt)

Msg = Msg & " كفائدة على هذا المبلغ."

MsgBox Msg, , "النتيجة" ' Display results.

الدالة : SYD

تستخدم هذه الدالة في حساب قيمة إهلاك الأصول الثابته ويكون قسط الإهلاك السنوي لهذه الدالة عالياً في السنوات الأولى من عمر الأصل عنه في السنوات الأخيرة0

مثال توضيحي:

txt5 = SYD(txt1, txt2, txt3, txt4)

حيث

txt5 : مربع نص يعرض ناتج الداله

SYD :الدالة

Txt1 :مربع نص يتم فيه إدخال ثمن الشراء

Txt2 :مربع نص يتم فيه إدخال قيمة الأصل المتوقعة في نهاية المدة

Txt3 :العمر الإفتراضي للسلعة

Txt4 :سنة معينة تحسب فيها القيمة

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

الدالة SLN

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

مثال توضيحي:

txt5 = SLN(txt1, txt2, txt3)

حيث

txt5 :مربع نص يعرض ناتج الداله

SYD :الدالة

Txt1 :مربع نص يتم فيه إدخال ثمن الشراء

Txt2 :مربع نص يتم فيه إدخال قيمة الأصل المتوقعة في نهاية المدة

Txt3 :العمر الإفتراضي للسلعة

Txt4 :سنة معينة تحسب فيها القيمة

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

الدالة DDB:

تستخدم هذه الدال في حساب قيمة إهلاك الأصول الثابته بطريقة الإستهلاك المتناقص وكما هو معروف في علم المحاسبة أن قسط الإهلاك طبقاً لهذه الطريقة يكون عالياً في السنوات الأولى من عمر الأصل الثابت0

مثال توضيحي:

txt5 = DDB(txt1, txt2, txt3, txt4)

حيث

txt5 :مربع نص يعرض ناتج الداله

SYD :الدالة

Txt1 :مربع نص يتم فيه إدخال ثمن الشراء

Txt2 :مربع نص يتم فيه إدخال قيمة الأصل المتوقعة في نهاية المدة

Txt3 :العمر الإفتراضي للسلعة

Txt4 :سنة معينة تحسب فيها القيمة

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

الدالة : ٍ Sin

تحدد هذه الدالة قيمة جيب زاوية معينة

مثال:

Fmt = "0.00000"

Pi = 4 * Atn(1) ' Calculate Pi.

Degrees = InputBox("ادخل الزاوية بالدرجات:0") ' Specify angle.

Radians = Degrees * (Pi / 180) ' Convert to radians.

Sine = Sin(Radians) ' Calculate sine.

MsgBox "جيب الزاوية= " & Format(Sine, Fmt), , "الجواب"

الدالة: Cos

تستخدم هذه الدالة لحساب قيمة جيب تمام أي زاوية

مثل:

Fmt = "0.00000"

Pi = 4 * Atn(1) ' Calculate Pi.

Degrees = InputBox("أدخل الزاوية بالدرجات :0") ' Specify angle.

Radians = Degrees * (Pi / 180) ' Convert to radians.

Cosine = Cos(Radians) ' Calculate sine.

MsgBox "جيب تمام الزاوية = " & Format(Cosine, Fmt), , "الجواب"

دوال سلاسل البيانات

تستخدم هذه الدوال لتعامل مع سلاسل البيانات وهي على النحو التالي:

الدالة: Format

الحقل أو مربع النص المراد تنسيقه= Format (اسم الحقل , "شكل التنسيق المراد ")

مثال على ذلك التاريخ التالي:

TxtDate = Format ( Now , " yyyy/mm/dd ")

هذا التنسيق يعرض التاريخ الهجري في تنسيق كالتالي: 11/11/1422

التنسيق التالي يعرض اسم اليوم بدلا من الرقم

TxtDate = Format ( Now , " yyyy/mm/dddd ")

فهو يعرض التاريخ الهجري كالتالي : السبت 11/1422

ويمكن تنسيق البيانات بأشكال مختلفه كما نريد0

الدالة : instr

هذه الدالة تعيد رقم يدل على ترتيب عبارة داخل عبارة أخرى مثل:

?instr( "علي ", " ل ")

الناتج هو الرقم " 2 " لأن حرف اللام هو الحرف الثاني في ترتيب حروف اسم علي

الدالة " Lcase "

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

مثال :

Lcase$ ( "ALY ")

تصبح هكذا aly

الدالة " Ucase "

هذه الدالة تحول سلسلة حروف صغيرة إلى حروف كبيرة 0

مثال :

Ucase أو Ucase$ ( " aly ")

تصبح الجملة هكذا ALY

الدالة " Left "

تعيد هذه الدالة مجموعة من الحروف الموجودة في سلسلة بدءاً من الشمال بالعدد المطلوب: مثال

txtName2 = Left(txtName1, 3)

فإذا كان مربع الاسم يحتوي على اسم سعود فسوف تعود الدالة ب " عود " وتضعها في مربع النص المسمى " TxtName2 "

الدالة " RIHT أو RIHT$ "

تعيد هذه الدالة مجموعة من الحروف الموجودة في سلسلة بدءاً من اليمين بالعدد المطلوب: مثال

txtName2 = RIHT (txtName1, 3)

فإذا كان مربع الاسم يحتوي على اسم سعود فسوف تعود الدالة ب " سعو " وتضعها في مربع النص المسمى " TxtName2 "

الدالة " Mid وا MID$ "

تعيد هذه الدالة جزء من السلسة سواء بيانات حرفيه أو رقمية بالطول وإبتداء من الموقع المحدد : مثال

TxtName2= MID(TxtName1,5,4)

فإذا كان الاسم الموجود في مربع النص المسمى " txtName1" يحتوي على " العالمية "

فسوف تكون نتيجة الدالة هي " لمية "

وإذا كان مربع النص يحتوي على رقم مثل" 1234567 " سوف يكون ناتج الدالة هو " 567 "

الدالة " Len و Len$ "

تعيد هذه الدالة عدد الحروف الموجودة في السلسلة

مثال :

TxtName2= Len(TxtName1,5,4)

فإذا كان الاسم الموجود في مربع النص المسمى " txtName1" يحتوي على " العالمية "

فسوف تكون نتيجة الدالة هي " 8 " أي عدد حروف كلمة العالمية

الدالة " Rtrim و RTRIM$ "

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

مثال

TxtName2= Rtrim(TxtName1)

سوف تزيل هذه الدالة الفراغات الموجودة جهة اليمنى من الاسم

ألدالة Ltrim و LTRIM$ "

تقوم هذه الدالة بحذف الفراغات الموجودة في جهةاليسرى السلسلة

مثال

TxtName2= Rtrim(TxtName1,5,4)

سوف تزيل هذه الدالة الفراغات الموجودة جهة اليمنى من الاسم

الدالة " Trim و Trim$ "

تقوم هذه الدالة بحذف الفراغات الموجودة في الجهة اليسرى واليمنى من السلسة

مثال:

TxtName2TRIM(TxtName1)

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

الدالة " Space و Space$ "

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

مثال:

" عبد الله" + Space (2) + " البدر"

النتيجة هي جعل مسافة بين الاسمين هكذا " عبد الله البدر " أمر بمعنى عليك أيها الجهاز بعد كتابة اسم عبد الله أن تنقر المفتاح سبيس بالعدد المحدد وهو نقرتين بدليل 2 الموجودة في الكود

يتبع في المشاركة الثانية

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#3

(مشاركة فارغة)

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#4

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

وضع في خصائصه في حدث ( عند التغيير )

هذا الكود

_________________________________

Private Sub Text1_Change()

Randomize

r = Int(Rnd * 255) + 1

g = Int(Rnd * 255) + 1

b = Int(Rnd * 255) + 1

Text1.ForeColor = RGB(r, g, B)

End Sub

____________________________________

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

ضع في الوحدة النمطية العامة

_______________________

Public Function CountChar(StringToSearch As String, Character As String) As Integer

CountChar = 0

For i = 1 To Len(StringToSearch)

If Mid(StringToSearch, i, 1) = Character Then CountChar = CountChar + 1

Next i

End Function

_________________________

وضع في حدث ( عند النقر ) للزر الكود التالي

n = CountChar("الفريق العربي للبرمجة .. منتدى قواعد بيانات مايكروسوفت ", "م")

MsgBox n

___________________________

أضغط على الزر ليقوم البرنامج بعد حرف ( الميم ) في الجملة هذه

طريقة تجزئة جملة نصية عن طريق عرضها في رسالة

ضع هذا الكود في حدث ( عند النقر ) للزر

____________________________

Dim str As String

Dim x() As String

str = "الفريق##العربي##للبرمجة##منتدى##قواعد##البيانات##مايكروسوفت"

x() = Split(str, "##")

For Each y In x()

MsgBox y

Next

_____________________________

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

ضع في الوحدة النمطية الخاصة بالنموذج الكود التالي

Public Sub Delay(HowLong As Date)

TempTime = DateAdd("s", HowLong, Now)

While TempTime > Now

DoEvents

Wend

End Sub

__________________

وضع في حدث ( عند النقر ) للزر الكود التالي

Delay 5

MsgBox " الفريق العربي للبرمجة ... منتدى قواعد البيانات مايكروسوفت"

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

====================================

إنتهى

====================================

بارك الله في الأخ بيسكرا لوضعه هذه المذكرة

رأيت أن أفرغها هنا من ملف الوورد لضمان حصول الجميع عليها خوفا من مشاكل تنزيل الملفات .

===

صورة
صورة

حسابي في الفيس بوك
http://goo.gl/XIzwL

حسابي في تويتر
http://goo.gl/6p4e3

 

 
 
#5

بارك الله فيكم جميعاً .

#6

جزاكم الله جنات ونهر ...

جهد مبارك الله الله يجزاكم خير الجزاء إخواني ..

#7

مشكورين با إخوان و بارك الله فيكم.

#8

جزاك الله كل الخير يا أخى الحبيب :)

#9

جزاكم الله خيراً على هذا الجهد

والله لايحرمكم الاجر فقد استفدنا من هذا المنتدى الكثير .

#10

مجهود أكثر من رائع ، جعله الله فى ميزان حسناتكم

هذا الموضوع مغلق.

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

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

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

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

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