استخدام القوالب (تخصيص الالوان حسب المستخدم) في مايكروسوفت اكسسس

هذا الموضوع ينطبق على النماذج والتقارير

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

ان استخدام الالوان الموجودة في الجزء العلوي (Theme Colors) سيؤدي الى تغير الالوان بشكل تلقائي عند فتح البرنامج في جهاز كمبيوتر يستخدم  قالب(Theme ) مختلف، لذلك يجب الانتباه عند استخدام الالوان.




الجداول التقاطعية واستخدام المعايير المستندة الى نموذج

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


وللتغلب على هذة المشكلة يتم استخدام المعايير Parameters الموجودة في تصميم الاستعلام


وعند الدخول اليها يتم كتابة (تعريف)  المعيار وتحديد نوعه كما في الصورة

ان كتابة المعيار في Parameters  يعتبر بمثابة تعريف المعيار وعند كتابة الشرط او المعيار يجب مراعاة ان يتم كتابة الشرط في ال Parameters  وكتابتة في Criteria بنفس الصيغة 










بعض الخطوات لتسريع اداء قاعدة بيانات اكسس


الجداول
1- التاكد من عدم وجود تكرارات في الجداول
2- كل جدول يجب ان يكون فيه مفتاح اساسي والمفتاح الاساسي يجب ان يكون رقم
3- الجداول يجب ان تكون مرتبطة مع جداول اخرى
4- لا تبالغ في اضافة معايير للفرزINDEXES
5- لا تقم باظهار الجداول الفرعية (اشارة + في الجداول )

في الجداول المرتبطة
1- في الجداول المرتبطة يجب ان تبقي قاعدة البيانات الخارجية مفتوحة وليس في كل مرة يتم اعادة فتحها
2- اذا كنتتنوي فتح نموذج تاكد من استخدام (ادخال البيانات) اذا كان الهدف هو اضافة سجل جديد
3- قلل عدد الحقول التي سيتم قرأتها من الجدول المرتبط

الاستعلامات
1- قلل من الحقول قدر الامكان
2-تجنب استخدام الحقول المحتسبة ولا تستخدم الدالة IIF 
3- لا تستخدم الحقول المحتسبة والحقول غير المفهرسة كمعايير للاستعلام
4- اذا كنت ستستخدم بيانات الاستعلام في امور متعدد نماذج وتقارير فكر في انشاء جداول مؤقته لهذا الغرض يتم انشاؤها عن طريق الاستعلام واعادة تفريغها من المحتوى عند انتهاء الحاجة لها
5- لا تستخدم دوال الدومين مثل Dlookup  في جداول غريبة عن الاستعلام
6- في الجداول المحورية / التقاطعية حاول ان تقوم بتثبيت عناوين الاعمدة
7- استخدم BETWEEN بدلا عن >= and <=
8- اذا كنت ستستخدم الدالة Count  فاستخدم معها (*) لانها بدون النجمة ستقوم بالتاكد من القيم الفارغة وهذا يؤثر على الاداء




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

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

يمكنك مشاهدة الفيديو او الاستمرار بقراءة الموضوع



1- نقوم بانشاء نموذج باسم DateBetween مثلا ونضيف اليه مربعي نص الاول لتاريخ البداية وليكن اسمه Text0  والثاني لتاريخ النهاية وليكن اسمه Text1 بالاضافة الى زر لعرض السجلات .

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

3- في النموذج الاول نقوم باضافة الكود التالي الى الزر الذي سيعرض البيانات
VBA
DoCmd.OpenForm "students", , , "StDateOfBirth Between #" & Format$(Form_DateBetween.Text0, "mm/dd/yyyy") & "# And #" & Format$(Form_DateBetween.Text1, "mm/dd/yyyy") & "#"
حيث ان
students : هو اسم النموذج الثاني الذي سيحتوي على البيانات
DateBetween : هو اسم النموذج الاول الذي يحتوي على مربعي النص تاريخ البداية وتاريخ النهاية
StDateOfBirth : هو اسم الحقل الذي يحتوي على بيانات تاريخ الميلاد
Text0 و Text1  : هي اسماء مربعي النص الموجودة في النموذج  DateBetween



اصول التعامل الصحيح مع التاريخ في مايكروسوفت اكسس

عندما يتم التعامل مع التاريخ باستخدام محرر الكود VBA او باستخدام SQL في مايكروسوفت اكسس فان تنسيق التاريخ سيتغير الى التنسيق الامريكي MM/DD/YYYY مهما كانت اعدادات تنسيق التاريخ الخاصة بجهاز المستخدم.

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

ولمشاهدة مثال على ذلك يمكنكم اضافة تاريخ في معايير الاستعلام ثم مشاهدة SQL لهذا الاستعلام 
 
في كثير من الاحيان نجد ان الكود او الاستعلام لا يعمل بشكل صحيح فمثلا قد تطلب التواريخ التي بعد تاريخ 7/4/2016 ولكن الاستعلام او الكود يفهمها بشكل معكوس ويعطي النتائج لما بعد تاريخ 4/7/2016.
للتغلب على هذا الامر يجب علينا استخدام الدالة Format حتى نحول التاريخ الى الصيغة الامريكية ليتم التعامل معهة بالشكل الصحيح، وهنا يجب الانتباه ايضا الى فواصل التاريخ المستخدمة في اعدادات الوندوز فلو  استخدمنا اشارة "/" كفاصل فانه لا مشكلة في ذلك ولكن اذا تم استخدام "\" فان هذا سيسبب مشكلة وسيظهر لنا الخطأ رقم 3075 ولهذا سنستخدم الاشارتين "/" و"\" في التنسيق للدلالة على ان الفاصل متغير وبذلك سيكون متاح استخدام اي فاصل نريدة  .
فمثلا لو اردنا فتح نموذج معين بشرط اظهار السجلات بعد التاريخ الموجود في مربع النص Text0 سيكون الكود كما يلي:
VBA
DoCmd.OpenForm "students", , , "StDateOfBirth<" & Format$(Form_Form1.Text0, "\#mm\/dd\/yyyy\#")
او يكون ضمن دالة Dlookup او Dcount او Dlast او Dmin ... الخ وكما يلي:
VBA


DLookup("FieldName" , "TableName" , "Criteria= Format$(Date, "\#mm\/dd\/yyyy\#")





في مايكروسوفت اكسس UNION Vs UNION ALL


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

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

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

استعلامات الدمج (التوحيد) في مايكروسوفت اكسس

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

 ولانشاء استعلام الدمج نتبع الخطوات التالية:
يمكنك مشاهدة الفيديو لكيفية انشاء استعلام الدمج او الاستمرار بقراءة الموضوع


1- نقوم بالدخول الى القائمة Create  وثم Query design ولا نقوم باختيار اي جدول كمصدر للبيانات.
2- نقوم بالضغط على زر Union الموجود في خيارات تصميم الاستعلام وبعدها سيقوم الاكسس بفتح محرر SQL ونبدأ بكتابة الكود وفيما يلي مثال بسيط على استعلام دمج
SQL
SELECT FealdName FROM TableName UNION SELECT FealdName2 FROM TableName2 ;


حيث ان:
FealdName و FealdName2  هي اسماء الحقول التي سيتم دمجها مع بعضها
 TableName و TableName2 هي اسماء الجداول.

ملاحظة: اذا تم استخدام UNION فان الاستعلام سيستثني التكرارات فاي حقل مكرر سيظهر مرة واحدة فقط واذا اردنا اظهار التكرارات علينا استخدام Union all
بعض الامثلة:
1- دمج عدة حقول من جدول مع عدة حقول من جدول اخر
SQL
SELECT Feald1,Feald2,Feald3 FROM TableName
 UNION
SELECT Feald1,Feald2,Feald1 FROM TableName2 ;
2- دمج عدة حقول من نفس الجدول (عدة اعمدة في عمود واحد)
SQL
SELECT Feald1 FROM TableName UNION SELECT Feald2 FROM TableName ;
3- دمج جدولين كاملين بجميع اعمدتهما
SQL
SELECT FROM TableName UNION SELECT FROM TableName2 ;
4- دمج عمودين في جدولين واظهار التكرارات ان وجدت
SQL
SELECT Feald1 FROM TableName UNION All SELECT Feald1  FROM TableName2 ;