الاخوة الزملاء
السلام عليكم ورحمة الله وبركاتة
كل عام وأنتم بخير
لاحظت في الفترة الاخيرة بالمنتدي بعض الاعضاء الجدد الذين يحاولون فهم لغة VBA
أو Visual Basic For Application ولكهنم يفشلون نظراً لانهم يفتقرون لاساسيات اللغة وطريقة التعامل معها لذلك قررت من خلال هذه المشاركة ان اشرح للسادة الاعضاء بحكم خبرتي القليلة جدا جدا بعض الفاهيم الاساسية والبسيطة والتي قد تساعدهم علي فهم بعض الاساسيات البسيطة في لغة VBA عند تصميم برامجهم أو عند تصفح الاكواد البرمجية الموجوده في مشاركات الاعضاء والمشرفين الافاضل
لا أحب أن أطيل عليكم كثيراً ولنبدأ الان وعلي بركة الله شرح دروس شبة يوميه عن مفهموم جديد او داله جديده او اجراء يمكن ان يفيدنا واعلم ان الموضوع ليس بكم الدروس والامثلة التي سأقدمها بل بقدرتك علي فهم واستيعاب ما سيقال لان ذلك سيفيدك كثيرا فيما بعد في فهم الكثير من الامور
بسم الله الرحمن الرحيم
والصلاة والسلام علي اشرف المرسلين سيدنا محمد صلي الله علية وسلم
لنبدأ علي بركة الله
أولاً : - سنبدأ في شرح
مقدمة الي Access VBA
تعتبر مايكروسوفت أكسس شأنها شأن العديد من (نظم ادارة قواعد البيانات) RDBMS أو Relations Database management systems
ويأتي مع برنامج أكسس لغة برمجة خاصة بها تسمى VBA
وهي مجموعة فرعية من شركة ميكروسوفت شعبية
المشاريع بلغة البرمجه VBA
ومن خلال هذه المقدمة المختصرة نستطيع ان نقول ان الحدث الذي يتم كتابتة في شاشة محرر الفيجوال بيسك يؤثر بالتأكيد علي النموذج
سنبدأ أولاً بــــ
أين يوضع الكود البرمجي
يوضع الكود في الوحدة النمطية( أنشاء وحدة نمطية جديدة ) أو من خلال الكائن ( مربع نص مثلا ) الذي تريد إضافة الكود له من خلال خصائص <-- إنشاء حدث <-- منشئ البرامج وكما هو موضح بالصورة المرفقة
قم بانشاء نموذج جديد في وضع التصميم ثم قم بانشاء زر جديد علي النموذج ولكي تستطيع كتابة كود معين في حدث الضغط علي هذا الزر فيجب عليك اولا الضغط بزر الماوس الايمن علي الزر ثم اختار خصائص ومن خلال تبويب حدث أو Event اذا كان لديك نسخة اوفيس انجليزي وكما هو موضح بالصورة المرفقة
إذا كان الكود عام يعني يستخدم أكثر من مرة داخل قاعدة البيانات فإنه يوضع في الوحدة النمطية ويستدعى من خلال دالة
في النموذج أما الكود قد يكون خاص بتقرير أو نموذج فقط فيوضع داخله.
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
و هي تستخدم للعودة بقيم أو لتنفيذ الدالة علي المتغير الموجود بها
أما عن الكود الخاص بالكائنات:
objects
مثل الفورم أو التقرير فيكون مرتبط بأحداث معينة
تجدها فى الخصائص الخاصة بالكائن و اسمها أحداث
Events
انظر الصورة المرفقة أعلاة
وهذا مثال عن كيفية كتابة الحدث
Private Sub Form_Click() اكتب كودك هنا لكي يستجيب نموذجك للامر عندما يضغط المستخدم كليك علي النموذج End Sub
مثال آخر
Private Sub Form_MouseUp(Button As Integer, _ Shift As Integer, X As Single, Y As Single) اكتب كودك هنا وذلك عندما يريد المستخدم اجراء الحدث بعد ترك المستخدم لزر الماوس End Sub
والان بعد الضغط علي الثلاث مربعات الموجودين بالصورة أعلاة يتم الدخول الي محرر الفيجوال بيسك كما في الصورة المرفقة
والان دعنا نتعرف عن قائمة العناصر الموجودة داخل محرر الفجيوال بيسك وقائمة الاحداث
قم باختيار العنصر المطلوب عمل اجراء له كما في الصورة الموضحة ثم قم باختيار الحدث المناسب لهذا العنصر من خلال القائمة المنسدلة الموضحة بالصورة بعد تحديد العنصر المراد كتابة له والحدث الذي سيحدث عن كتابة الكود سيظهر لك مكان كتابة الكود ويكون بين private sub و end sub وتسمي منطقة البلوك والذي يكتب فيها الكود
فمثلا اذا كتبنا هذا الكود البسيط
me.Refresh
فكلمة me تعني أنا وانا هذه عائدة علي العنصر الموجود امامنا وهو form1
وكلمة Refresh
تعني تحديث وانعاش النموذج وقت التحميل أو وقت فتح النموذج
و دوت . تعني الاحداث التي سيفعلها النموذج بعد كلمة me ففي جميع الاحوال عندما تكتب كلمة me ثم دوت . تفتح لك قائمة منسدلة يتم اختيار منها الحدث المطلوب عملة
والصور التالية توضح الامور أكثر لما شرحناه سابقا
وسنناقش تفاصيل هذه الاجراءات في وقت قريب بما فيه الكفايه بخصوص هذه الاحداث
لكن الذي نريد ان نفهمة الان هو لماذا يلجأ المبرمج لكتابة كود VBA أعتقد ان الاجابة هي الرد علي تساؤلات المستخدم والذي يعجز الاكسس العادي الاجابة علي هذه التساؤلات
سنبدأ اليوم بعمل مثال بسيط نفتتح به دروسنا
نريد ان نقوم بعمل نموذج وبه ازرار عند الضغط عليها في حدث معين يقوم هذا الحدث بتلوين خلفية listbox كما في الشكل التالي
فلو نظرنا للكود المكتوب اعتقد اننا سنجده سهل جدا ومفهوم
فالكود الخاص بتلوين اللون الاحمر هو
Me.Listcolors.BackColor = vbRed
واذا اردنا تلوين الــ listbox باللون الاسود
Me.Listcolors.BackColor = vbBlack
واللون الازرق
Me.Listcolors.BackColor = vbBlue
واللون الماجينتا
Me.Listcolors.BackColor = vbMagenta
وهكذا بالنسبة لكثير من الالوان
مرفق أول مثال لنا هنا في هذه المشاركة والخاصة بتعليم لغة الفيجوال بيسك للتطبيقات
والي درس آخر غداً باذن الله





