rudwan قام بنشر أغسطس 29, 2005 قام بنشر أغسطس 29, 2005 (معدل) فهرس الدوره __________ مقدمــــــــــــــــه تحليل المشروع ملف قاعدة البيانات كيف تجعل حقل يقرأ تلقائيا قيمة مماثله من جدول آخر دمج عدة حقول في حقل واحد بالاستعلام الجداول الرئيسيه و الجداول الفرعيه المفاتيح الرئيسيه الوحيده و المتعدده العلاقات بين الجداول انشاء النماذج خصائص مربع النص تم تعديل أكتوبر 3, 2005 بواسطه rudwan 3
rudwan قام بنشر أغسطس 29, 2005 الكاتب قام بنشر أغسطس 29, 2005 السلام عليكم أيها الأخوه الكرام يسعدني أن أبدأ معكم هذه الدوره في شرح الأكسس , الحقيقه هناك شروحات كثيره للأكسس نظريه لن نتطرق اليها هنا , و لكن سنعتمد أسلوب التطبيق العملي فهو أفضل وسيله لايصال المعلومه . و قد رايت أن أفضل مثال يمكن تقديمه هو المثال المقدم من قبل ميكروسوفت ألا و هو قاعدة البيانات الشهيره NorthWind هذه القاعده حقيقة تعتبر منهجا تعليميا متكاملا , حيث أنها تحتوي أمثله كامله عن الجداول و أنواع الاستعلامات و النماذج و التقارير و الصحفحات و الماكروات . و من يستطيع أن يقوم بتصميم قاعدة بيانات مثل هذه القاعده فسيكون قد وفقه الله لفهم الأكسس بمستواه الأول , و يكون الطريق مفتوحا أمامه للاحتراف باذن الله . لذلك فانني رأيت أن أبدأ باسم الله بما يفتح علي من امكانية شرح ما أستطيع من مكونات هذه القاعده و ان عجزت فأسأل الله تعالى أن يسامحني و اعذروني على تقصيري . و قبل البدء بالتطبيق العملي يفضل الاطلاع على هذه الدروس للأستاذ محمد طاهر مديرالمنتدى و ذلك كجرعه وقائيه قبل الخوض في تفاصيل المشروع . كذلك دروس العلاقات بين الجداول و هذه ثلة من الدروس في الاستعلامات وأنواعها و سنبدأ الدرس التالي مباشرة بشرح تصميم قاعدة البيانات NorthWind باذن الله تعالى 3
rudwan قام بنشر أغسطس 30, 2005 الكاتب قام بنشر أغسطس 30, 2005 (معدل) الخطوه الأهم في تصميم اي قاعدة بيانات هي وضع مخطط العمل , و لكي نعرف مخطط العمل لابد من الاحاطه بالهدف المطلوب من انشاء قاعدة البيانات . لدينا شركة NorthWind أو الرياح الشماليه , شركة تقوم بشراء وبيع البضائع , عملية الشراء غير مطروقه في هذه القاعده , و انما الاهتمام كله موجه لعملية البيع ( و طبعا بالامكان تصميم مايلزم لعمليات الشراء ) . عملية البيع تتم بناء على طلبيات مسبقه من العملاء , بحيث يتم تحديد الأصناف المطلوب ارسالها للعميل و الأسعار ووسيلة الشحن وموعد الشحن المطلوب و رقم الموظف الذي قام بتسجيل بيانات الطلبيه . بالنسبه للبضائع لابد من مراعاة أن يكون هناك مخزون متوفر حيث أن البضائع التي تم بيعها للعملاء ستخفض الرصيد الموجود بالمخازن , و طبعا في حال انخفاض هذا الرصيد عن حد اعادة الطلب , فيجب اعداد طلبية شراء لتغذية المخزون , و لكن كما ذكرنا عملية الشراء غير متطرق اليها في هذه القاعده . اذا يمكننا الآن أن نضع تصورا للجدول التي ينبغي انشاؤها حيث : - طالما لدينا بضائع يتم بيعها اذا لابد من انشاء جدول خاص بالبضائع Product - لدينا عملاء اذا نحتاج الى جدول للعملاء Customers - لدينا طلبيات اذا نحتاج الى جدول خاص للطلبيات اذ لكل عميل طلبيه مستقله Orders هذه هي الجداول الرئيسيه التي نحتاجها و سنقوم بتصميمها الآن . قبل البدء بتصميم الجداول لابد من الاشاره الى بعض التوصيات في بناء الجداول و هي : أولا : الجدول هو المادة التخزينيه للبيانات الرئيسيه , اذ يجب أن يحتوي على القيم التي لاتتأثر بغيرها اي على سبيل المثال اذا كانا نريد حساب المعادله التاليه القيمه = الكميه * سعر الوحده يمكن أن نضع حقلا للكميه المباعه و حقلا لسعر الوحده أما القيمة و التي هي عباره عن سعر الوحده * الكميه , فلا يجب أن يكون حقلا ضمن الجدول وذلك لأنه يتأثر بقيمة كل من الكمية و السعر فاذا تغير سعر الوحده فان الجدول لايستطيع حساب القيمه من تلقاء نفسه الا من خلال تشغيل كود معين , لذلك يستعاض عن هذا باستخراج القيمة من خلال استعلام يحوي حقل محسوب يساوي الكميه * السعر ثانيا : يجب فصل البيانات الخاصه بجزئيه معينه عن بعضها , مثلا الجدول الرئيسي لدينا هو جدول الطلبيات , و حيث أننا نريد أن ندخل اسم العميل في الطلبيه , و حيث أننا نحتاج بنفس الوقت لمعرفة بيانات كامله عن هذا العميل , فاذا كنا سنقوم بادخال بيانات العميل هذه كل مره في جدول الطلبيات فسيكون هذا عملا مرهقا , لذلك احتجنا أن تكون بيانات العميل في جدول مستقل تجتمع فيه بياناته الكامله , و نكتفي في جدول الطلبيات بوضع حقل واحد لرقم العميل , و بعملية الربط بين الجدولين نستطيع معرفة مانريد من بيانات عن هذا العميل . ثالثا : يفضل أن تكون استخدام الأسماء الانكليزيه لكل مكونات قاعدة البيانات و خاصة اسماء الجداول و الحقول , لأن استخدام الأسماء العربيه يسبب ارباكات أثناء العمل بالمعادلات و أكواد الفيجوال بيسيك رابعا : تجنب وضع مسافات في التسميات , مثلا اذا كنت تريد تسمية Product List فالأفضل وصلها هكذا ProductList لنبدأ الآن بتصميم الجدول الأسهل في هذه القاعده و هو جدول العملاء , و لنتصور أنه يحتوي الحقول التاليه : اسم العميل CompanyName العنوان Address المدينه City الدوله Country المنطقه Region الرمز البريدي PostalCode الهاتف Phone الفاكس Fax و سنحتاج اضافة لذلك بيانات عن الشخص الذي سنتصل به مثل اسمه ContactName و عمله الوظيفي ContactTitle و طبعا قبل كل ذلك نحتاج الى كود العميل CustomerID و هو الذي سيكون صلة الربط مع الجداول الأخرى و المفتاح الرئيسي لهذا الجدول قاعدة البيانات هذه موجوده بشكل جاهز مع الأكسس من قائمة الأدوات - أمثله , يمكن تنزيلها للاطلاع عليها , و لكن من أراد أن يستفيد أكثر فليحاول التصميم بنفسه لزيادة مهارته و ليبدأ بتصميم جدول العملاء و سنتابع ان شاء الله بقية الجداول في الدرس التالي تم تعديل أغسطس 30, 2005 بواسطه rudwan 5
rudwan قام بنشر أغسطس 31, 2005 الكاتب قام بنشر أغسطس 31, 2005 الآن لنحاول بناء الجدول الثاني في الأهميه و هو جدول المنتجات Products يمكن أن نتصور أنه يحتوي البيانات التاليه اسم المنتج ProductName التعبئه QuantityPerUnit سعر الوحده UnitPrice حد اعادة الطلب ReorderLevel الصنف فعال ( لازال قيد التعامل أم تم الغاؤه ) Discontinued الآن لابد لنا من رقم معرف للصنف أي ProductID و هذا الحقل هو الذي سيتم التعامل معه لاحقا كمعبر عن الصنف و هو الذي سيكون الرابط بين جدول الأصناف و بقية الجداول نريد اضافة حقل آخر و هو تصنيف المنتج أي الزمره التي يتبع لها هذا المنتج اذا كان لدينا مجموعة كبيره من المنتجات و نريد تصنيفها في مجموعات و ليكن هذا الحقل اسمه CategoryID أحدنا سيتخيل أنه طالما أن المجموعات ستكون اسماء مثل ( ألبسه - مأكولات - مواد غازيه ,, الخ ) , اذا حقل رمز المجموعه سيكون نص , الأفضل أن نصمم جدولا خاصا للمجموعات ولنسمه Categories , يحتوي الحقول التاليه رقم معرف للمجموعه و مفتاح رئيسي CategoryID اسم المجموعه CategoryName بعض الحقول الاضافيه مثل : الوصف - صورة الآن النقطه الهامه جدا هنا هي أننا في جدول المنتجات سنجعل حقل رمز المجموعه رقما و ليس نصا و سيأخذ قيمته من حقل CategoryID في جدول Categories و ليس من حقل CategoryName و سيكون الربط بين جدولي الأصناف و المجموعات على حقل رقم المجموعه في كلا الجدولين اي CategoryID . الآن ليقل أحدنا اذا كنا نريد تعبئة بيانات صنف جديد في جدول الأصناف , و ليكن مثلا لحوم , نريد تعبئة حقل رقم المجموعه و هي مجموعة اللحوم في جدول المجموعات , ال CategoryID لهذه المجموعه هو 6 , هل كلما أردنا أن نعرف رقم مجموعه لصنف يجب أن نفتح جدول المجموعات و نستخرج رقم تلك المجموعه ثم نضعه في حقل معرف المجموعه للصنف ؟ هذا سيكون عملا مملا و شاقا , نستطيع اختصار كل هذا بتحويل حقل CategoryID في جدول الأصناف الى قائمه تحوي حقلين مأخوذين من جدول المجموعات و هما : CategoryID - CategoryName حيث سنستطيع بكل سهوله اختيار اسم المجموعه المناسب من هذه القائمه و عمل ذلك مشروح على الرابط التالي ففيه شرح مفصل عن مثال على كيفية عمل ذلك . عرض قيمة حقل من حقل آخر مرتبط به - شرح مفصل بالصور و بالتطبيق على مثالنا نجد أن حقل CategoryID في جدول الأصناف تحول الى قائمه منسدله تحوي حقلين هما رقم المجموعه و اسم المجموعه لنفتح جدول الأصناف في وضع عرض البيانات , و لنحاول ادخال صنف جديد , نجد عند الوصول الى حقل رمز المجموعه أننا نختار اسم المجموعه ( و لاننسى أن اسم المجموعه هو للعرض فقط بينما البرنامج يتعامل مع قيمة رقم المجموعه ) و لنحاول تطبيق ذلك على حقل رقم المورد , اذ علينا انشاء جدول للموردين و سنجعل حقل رقم المورد في جدول الأصناف يختار اسم المورد من جدول الموردين بنفس الطريقه السابقه 2
rudwan قام بنشر سبتمبر 3, 2005 الكاتب قام بنشر سبتمبر 3, 2005 لنصمم الآن جدول الموردين Suppliers و الذي يتألف من الحقول التاليه : اسم العميل CompanyName بقية البيانات التفصيليه المشابهة لجدول العملاء مثل العنوان و الهاتف و اسم الموظف المسؤول .. الخ و يجدر الملاحظه أننا لانكتفي باسم المورد و البيانات الخاصه به , بل نضع رقما معرفا لذلك الجدول ( و هذه ناحيه يهملها البعض ) , اذ أن الرقم المعرف للمورد هو الذي سيتم التعامل معه طيلة البرنامج , أم اسم المورد فما هو الا بيان تفصيلي لهوية ذلك المورد , فاذا تغير اسم المورد مثلا من اسم شركه الى اسم شركة أخرى نتيجة تصفيه أو نقل ملكيه أو ماشابه , يسهل تغيير اسم المورد مع الحفاظ على جميع سجلات حركته السابقه . أما لو جعلنا اسم المورد هو المفتاح الرئيسي و هو الرابط مع الجداول الآخرى فسوف لن يتم التعرف على أي من حركاته السابقه في حال تغير اسمه . الآن نعود الى جدول البضائع , و ننشأ حقل رقم المورد SupplierID و نحوله الى قائمه كما فعلنا في الدرس السابق . بنفس الخطوات , ثم نفتح جدول البضائع في وضع ادخال البيانات و عند الوصول الى حقل رقم المورد نجد يظهر لنا اسم المورد للاختيار منه يبقى لدينا حقلين في هذا الجدول و هما : رصيد الصنف في المستودع UnitsInStock الكميه تحت الطلب من هذا الصنف UnitsOnOrder و الحقيقه ليس هناك أي داعي لوجود هذين الحقلين , لسببين : الأول : حسب القاعده الآولى التي شرحناها في بناء الجداول الحقول المحسوبه ( أي التي تعتمد قيمتها على قيمة حقل آخر ) تستخرج من خلال معادله رياضيه في النموذج أو من خلال استعلام , و لاداعي لعمل حقل لها ضمن الجدول الثاني : حتى لو تم عمل حقل لها في الجدول , فان قيمتها لن تتحدث الا من خلال كود في النموذج يتم تفعيله في زمن ادخال بيانات الفاتوره , و لكن لو عاد اي شخص للجدول فانه سيتمكن من تغيير تلك القيمه بدون أي قيد أو شرط لذلك سنحاول ان شاء الله استخراج قيمة رصيد الصنف - الكميات تحت الطلب لدى وصولنا الى النماذج . درسنا القادم سيكون حول تصميم جدول الطلبيات باذن الله , و ليضع كل منكم تصوره حول هذا الجدول ريثما نبدأ الدرس التالي عمليا الطلبيات تتم على الشكل التالي : يقوم مندوب المبيعات أو الموظف بتسجيل بيانات الطلبيه من العميل مباشره , بحيث يضع في بيانات الطلبيه المعلومات التاليه : اسم العميل - عنوانه - تاريخ الطلبيه - التاريخ المطلوب لشحن الطلبيه - تاريخ تسليم الطلبيه اسم وكيل الشحن - عنوانه - الأصناف المطلوبه - الكميات - سعر الوحده - قيمة الصنف القيمة الاجماليه للفاتوره - الخصم - أضافات ( ضرائب و رسوم ) - القيمة الصافيه للفاتوره نلتقي في الدرس القادم ان شاء الله 3
حاكم قام بنشر سبتمبر 3, 2005 قام بنشر سبتمبر 3, 2005 سلمت الأيادي .... وبارك الله فيك أخي الحبيب rudwan
rudwan قام بنشر سبتمبر 4, 2005 الكاتب قام بنشر سبتمبر 4, 2005 (معدل) الله يسلمك يا أخ حاكم هذا الملف الكامل لقاعدة البيانات NorthWind لمن لم يتمكن من تحميله من الأكسس علما بأنه موجود من القائمه الرئيسيه للأكسس - أدوات - أمثله لقواعد البيانات Northwind.rar تم تعديل سبتمبر 4, 2005 بواسطه rudwan
rudwan قام بنشر سبتمبر 5, 2005 الكاتب قام بنشر سبتمبر 5, 2005 (معدل) السلام عليكم شكرا للأخ مزكي , و نتابع اليوم موضوع كيفية تصميم جدول الطلبيات في الحقيقه اذا تأملنا التوصيف السابق ذكره في الدرس الأخير عن كيفية عمل الطلبيات نلاحظ أننا نحتاج أن تكون لكل طلبية عميل سجل مستقل , أي أن التصنيف هنا سيسير حسب رقم الطلبية و الذي سيكون هو المفتاح الرئيسي , و سنحتاج للحقول التاليه رقم مسلسل للطلبيه OrderID رقم العميل CustomerID رقم - و سيتم تحويله الى قائمه و يربط مع رقم العميل في جدول العملاء تاريخ الطلبيه OrderDate التاريخ المطلوب للتسليم لدى العميل RequiredDate تاريخ الشحن ShippedDate شركة الشحن ShipVia , و عليه يتوجب انشاء جدول خاص لشركات الشحن يتكون من رقم مسلسل - اسم الشركه الشاحنه - بعض البيانات التفصيليه مثل العنوان .. الخ اسم الموظف الذي قام بتسجيل بيانات الطلبيه EmployeeID , و عليه أيضا نحتاج انشاء جدول خاص بالموظفين يتنكون من رقم مسلسل - اسم الموظف - بعض التفاصيل الأخرى و مهمتكم الآن هي انشاء كل من جدولي الشركات الشاحنه Shippers , و جدول الموظفين Employees و من ثم عمل الجدول المبسط للطلبيات و الذي يتكون من البيانات السابقة الذكر بعد اضافة حقلي رقم الشركه الشاحنه ShipVia - رقم الموظف EmployeeID الى ذلك الجدول . مع أن الجداول كلها مصممه و جاهزه في المثال لديكم , الا أن التصميم من قبلكم أولا بأول سيؤدي الى زيادة مهارتكم في تصميم الجداول و خاصة فيما يتعلق بتحويل الحقل الى قائمة اختيار ستصبح شيئا بسيطا بالنسبه لمن يصمم بنفسه . لقاؤنا في الدرس القادم بمشيئة الله لتصميم تلك الجداول تم تعديل سبتمبر 5, 2005 بواسطه rudwan 1
rudwan قام بنشر سبتمبر 6, 2005 الكاتب قام بنشر سبتمبر 6, 2005 (معدل) الآن لنبني جدول شركات الشحن Shippers , يتألف هذا الجدول من الحقول التاليه رقم مسلسل ShipperID اسم الشركه CompanyName رقم الهاتف Phone أما جدول الموظفين Employees فيتكون من الحقول التاليه رقم مسلسل EmployeeID بالنسبه للأسماء ممكن نجعلها في حقل واحد , لكن الأفضل و من أجل عمليات البحث يتم تقسيمها الى حقلين أو ثلاثة ( الاسم الأول – اللقب – اسم الأب ) و يمكن أن ندمج تلك الأسماء مع بعض في حقل واحد من خلال استعلام , و سيأتي شرح ذلك بعد اسطر الاسم الأول FirstName الاسم الثاني LastName الوضع الوظيفي Title , و من الأفضل هنا عمل جدول مستقل للوضع الوظيفي Title بحيث يتكون من رقم مسلسل - اسم الوضع الوظيفي , ثم يعمل له ربط على جدول الموظفين على الحقل title توجد حقول اضافيه كثيره للموظفين عباره عن بيانات شخصيه مثل العنوان و الهاتف و الجنسيه ,, الخ يمكن اضافتها جميعا حسب ماورد في الملف , لكن يهمنا هنا شرح ثلاثة حقول من جدول الموظفين , الأول حقل الملاحظات Notes , و هذا يتم تنسيقه على اساس مذكره memo لكي يتسع لحجم كبير من الكتابه الثاني : حقل صورة الموظف Photo , في حال أردنا استعراض صورة الموظف من على مجلداتنا نعمل الآتي : 1-تنسيق حقل الصوره على اساس كائن اتباط تشعبي OLE OBJECT 2-يتم تخزين مسار الصوره من على الكمبيوتر في حقل الصوره , فلو كان لدينا مثلا صورة موجوده على المستندات كما يلي C:\MY DOCUMENTS\MyPhoto نضع المسار الكامل في حقل الصوره في الجدول , و بهذا يتم حفظ هذا المسار و استدعاؤه تلقائيا من خلال النموذج 3- لدينا حقل الاشاره الى ReportsTo , أي مدير الموظف , و هذا الاسم موجود ضمن جدول الموظفين أصلا , و سنأخذ قيمته من جدول الموظفين , أي سنحوله الى قائمه كما تعلمنا في الحقول الممائله السابقه , لكن هنا يختلف شي واحد و هو أننا سنشير الى حقل الاسم الكامل للموظف أي الاسم الأول و الأخير في حقل واحد , اثناء تحويل الحقل الى قائمه نعمل استعلام , صح ؟ طيب في صفحة الاستعلام هذه سنضيف حقل جديد اسمه name و نجعل قيمته كما يلي Name: [LastName] & ", " & [FirstName] و نجعل هذا الحقل الجديد هو الحقل الثاني في الاستعلام بحيث يكون هو الظاهر لنا أثناء اختيار اسم الموظف ثم نغلق الاستعلام و نجد أن مصر الصف للحقل report to هو SELECT Employees.EmployeeID, [LastName] & ", " & [FirstName] AS Name FROM Employees ORDER BY Employees.LastName, Employees.FirstName; نفتح الجدول و نجد أن الاسم الكامل للموظف يظهر لنا تم تعديل سبتمبر 6, 2005 بواسطه rudwan 1
rudwan قام بنشر سبتمبر 7, 2005 الكاتب قام بنشر سبتمبر 7, 2005 (معدل) لنلقي مزيدا من الضوء على كيفية دمج الحقلين : الاسم الأول و الاسم الأخير في المعادله السابقه نبدأ بنفس الخطوات التي سبق شرحها أثناء عملية تحويل الحقل الى قائمة اختيار , حيث نضع المؤشر على اسم الحقل ثم ننتقل الى خصائص الحقل في الأسفل لدينا General – Lookup من Lookup نحول ال Display Contral من Check Box الى Combo Box ثم ننتقل الى حقل Row Source نضغط الأزرار الثلاثة على يمينه فتفتح لنا صفحة تصميم استعلام جديد – نختار منها جدول الموظفين نفسه ( حيث أن اسم المدير المطلوب ادراج اسمه هو موظف فعليا و اسمه موجود في جدول الموظفين ) . الآن نختار في الحقل الأول للاستعلام رقم الموظف كحقل معرف , نجعل الحقل الثاني في الاستعلام فارغا , ثم نختار الحقلين الاسم الأول و الاسم الأخير في الحقلين الثالث و الرابع من الاستعلام . الآن اذا كان الموظف اسمه الأول أحمد و الثاني حسن , نريد دمج هذين الاسمين ليكونا في حقل واحد قيمته أحمد حسن بدلا من أن يكونا في حقلين . الحل يكون بدمج قيمتي الحقلين في حقل جديد و ليكن اسمه Name سيأخذ مكانه في الحقل الثاني الفارغ من الاستعلام و يأخذ قيمة دمج الحقلين التاليه الآن لنجيب على بعض الأسئله التي قد تخطر ببال أحدنا : أولا : كيف تم الدمج بين الحقلين ؟ الجواب : اذا أردنا دمج حقلين معناها أن قيمة جديده ستنشأ من خلال هذا الدمج غير موجوده في الجدول , اذا سنعطيها تسميه جديده أي حقل جديد لكن هذا الحقل ضمن الاستعلام و ليس حقلا من الجدول , ثم نسند اليه القيمه الجديده و علامة الاسناد هي : مثلا لو كان لدينا حقلين Quantity , Price و نريد معرفة القيمه Value طبعا المعادله الأساسيه الرياضيه هي : Value=Quantiti * Price لكن في الاستعلام اذا أردنا تسمية حقل جديد فلابد من اسناد قيمه اليه و اشارة الاسناد هي علامة : و تكون معادلة ادراج القيمه كمايلي : Value:Quantiti * Price علامة & تقوم بدمج أي حقلين أو أكثر ( يمكن دمج عدة حقول في حقل واحد ) لكن بشرط أن هذا الدمج يكون من خلال الاستعلام أو النموذج أو التقرير و لكن لايمكن أن يكون في الجدول مطلقا . مثال لنختار ملف بيانات صغير غير ملف NorthWind ( الملف المرفق ) نجعل فيه الجدول Address فيه اسماء الآشخاص الثلاثيه ( الأول – الثاني – الثالث ) و رقم الهاتف و رمز المنطقه ) , ننشآ الاستعلام PhoneNumbers لدمج الحقلين رقم الهاتف و رمز المنطقه , طبعا سنضطر الى تسمية حقل جديد و ليكن FullPhone و نستخدم علامة & لدمج قيمتي الحقلين كما يلي : FullPhone: [code] & [phone] نشغل الاستعلام و نلاحظ كيف تم الدمج لو أردنا ادراج علامة فصل بين الحقلين - لابد من وضعها بين الحقلين رمز المنطقه و الهاتف كما يلي SeparetPhone: [code] & "-" & [phone] لماذا ؟ نلاحظ أن الاضافه على المعادله التي قبلها هي علامة - , و طالما أن هذه عباره عن نص و ليس رقم لذلك كان لابد من وضعها بين علامة " " , جربوا دمج الأسماء , الأول مع الثاني يكون : SName: [firstname] & [midname] نلاحظ أن الاسمين دمجا مع بعض تماما , و نحتاج الى مسافه بينهما , اذا : S1Name: [firstname] & " " & [midname] الان نريد دمج الأسماء الثلاثه مع بعض TName: [firstname] & " " & [midname] & " " & [LATname] نعود الى مثالنا في قاعدة NorthWind نجد أنه لأجل معرفة الاسم الكامل للمدير نضع Name: [LastName] & ", " & [FirstName] أما لماذا وضعناه في الحقل الثاني و ليس الثالث أو الرابع مثلا ؟ جوابه بعد قليل . نغلق الاستعلام الذي أنشأناه لاختيار اسم المدير فيعود بنا المؤشر الى صفحة تصميم الحقل Reportto نجد الحقل الثالث في الاستعلام هو مصدر الصف RowSource أي جملة الاستعلام الذي تم انشاؤه سابقا . بعده نجد حقل Bound Column و هذا يعبر عن ترتيب الحقل في الاستعلام الذي يجب أن يعطي قيمة الحقل الاساسيه في الجدول أي Reportto هذا الحقل سيأخذ قيمته من قيمة الحقل EmployeeID في الاستعلام و ترتيبه الأول , لذلك نضع الرقم واحد عند هذا الحقل لو كنا نريد مثلا وضع قيمة الحقل الثاني في الاستعلام ( و هذا خطأ و لكن للمثال فقط ) لكان يجب أن نضع الرقم 2 في حقل Bound Column و لو كنا نريد أن نضع قيمة الاسم الأول أ ي العمود الثالث في الاستعلام لكان يجب وضع القيمه 3 و هكذا بعد حقل Bound Column لدينا الحقل Column Count و هذا يقول لك كم عمودا تريد أن يظهر لديك عندما تفتح القائمه التي سيتم انشاؤها , ؟ اذا أردنا فقط رقم الموظف لكان يجب وضع الرقم 1 , و اذا كنا نريد الحقلين الأول و الثاني أي رقم الموظف و الاسم الكامل نضع الرقم 2 , و اذا أردنا أول ثلاثة أعمده نختار 3 و هكذا . العمود الذي بعده اسمه Column Head أي هل تريد أن يظهر لك اسم العمود من القائمه أم لا ؟ يعني اذا اخترت رقم الموظف و اسمه , هل تريد عند فتح القائمه أن يظهر لك الأرقام و الاسماء فقط اختر لا , و اذا أردت أن يظهر لك راس العمود و تحته الأرقام و الأسماء اختر نعم الحقل التالي Coulmn Width كم تريد عرض كل حقل من الحقول المختاره في الاستعلام يمكنك أن تختار العرض المطلوب لكل حقل و بين كل قيمه علامة فاصله منقوطه ; مثلا لو اخترت 2.5cm فهذا يدل على قيمة أول حقل و هو رقم الموظف أي سيظهر حقل رقم الموظف بهذا العرض و بعده بقية الحقول المختاره نختار 0cm للدلاله على أننا لانريد اظهار رقم الموظف أي نريد فقط أن يظهر لنا حقل الاسم الكامل , لو كان لدينا ثلاثة حقول و نريد اظهار الثالث فقط نجعل القيمه كما يلي : 0cm; 0cm و هكذا Concanecate.rar تم تعديل سبتمبر 7, 2005 بواسطه rudwan 1
rudwan قام بنشر سبتمبر 11, 2005 الكاتب قام بنشر سبتمبر 11, 2005 الآن نعود الى ما كنا بصدده قبل درسين و هو انشاء جدول الطلبيات , حيث اضطررنا للعروج قليلا عن ذلك الجدول بهدف تصميم جدولي شركات الشحن – الموظفين , للاستفاده منهما في تصميم حقلي شركات الشحن و رقم الموظف . سنضيف الآن الى جدول الطلبيات حقلا باسم EmployeeID و يحول الى قائمه و يأخذ قيمه من رقم الموظف في جدول الموظفين و الثاني ShipVia و يأخذ قيمته من رقم شركة الشحن في جدول شركات الشحن و بذلك يكون لدينا جدول الطلبيات Orders مكونا مما يلي : رقم مسلسل للطلبيه OrderID رقم العميل CustomerID تاريخ الطلبيه OrderDate التاريخ المطلوب للتسليم لدى العميل RequiredDate تاريخ الشحن ShippedDate رقم الموظف EmployeeID الشاحن ShipVia سؤال , هل هذا الجدول كاف لتسجيل بيانات طلبية مبيعات ؟ طبعا لا , ينقص شي مهم جدا ألا و هو الأصناف المراد تحضيرها للبيع , و لكن كيف ستدخل هذه الأصناف في جدول الطلبيات ؟ من السهل أن نقول : نضيف حقلا لاسم الصنف الى جدول الطلبيات و حقلا آخر للكمية المطلوبه و حقلا ثالثا لسعر الوحده . حسنا و لكن ماذا اذا كانت الفاتورة تتكون من صنفين أو ثلاثة , سنضيف لكل صنف ثلاثة حقول آخرى , طيب ماذا لو كانت الطلبيه مؤلفة من ألف صنف مثلا , هل سنضيف ثلاثة آلاف حقل للجدول ؟ هذا الحل غير مجدي و غير مقبول أيضا من الناحية البرمجيه , اذ أنه في مثل هذه الحاله حيث طالما عدد الحقول غير محدد لذا من الأنسب اللجوء الى طريقه أخرى تستوعب ادخال عدد غير محدود من الأصناف على نفس هذه الفاتوره , و ذلك عن طريق انشاء جدول آخر فرعي لجدول الطلبيات و ليكن اسمه Order Details و هنا ستدخل الأصناف عبر هذا الجدول سجلا بسجل و ليس حقلا بحقل كما كان حلا غير مقبول . سيتكون جدول Order Details من الحقول التاليه : رقم الصنف ProductID رقم , و سيتحول الى قائمه و يأخذ قيمته من حقل رقم الصنف في جدول الأصناف الكميه Quantity سعر الوحده UnitPrice الخصم الفرعي على الصنف Discount اجمالي الصنف و الذي هو عباره عن الكميه مضروبا بسعر الوحده لن يكون حقلا من الجدول , اذ أن قيمته غير ثابته و تتأثر بتغير كل من حقلي الكميه و سعر الوحده , لذلك سيتم استنتاج القيمه بواسطة انشاء مربع نص في نموذج الطلبيه تسند اليه معادلة القيمه , لنتخيل شكل ادخال الأصناف على الطلبيه من خلال نموذج الطلبيات , لنأخذ مثلا شكل أي فاتوره من أي متجر نشتري منه , نجد لدينا غالبا ثلاثة أقسام للفاتوره , قسم الترويسه و فيها بيانات مثل اسم المتجر و عنوان المحل و رقم الفاتوره و تاريخها و اسم الزبون , ثم يوجد قسم جدولي لتسجيل بيانات الأصناف و كمياتها و سعر الوحده و اجمالي الصنف , و تذيل الفاتورة بمجموع عام للقيمه مضافا اليها نفقات أخرى مثل ضرائب أو تكلفة نقل ,, الخ ثم صافي قيمة الفاتوره , و ختم المتجر و على هذا الأساس سيتم عمل نموذج الطلبيات ( و الذي بنفس الوقت سيكون فاتورة العميل في حال الشحن ) , بحيث البيانات التفصيليه في ترويسة الفاتورة سيكون مصدرها جدول الطلبيات Orders بينما القسم الجدولي و الخاص بأصناف الفاتورة سيكون مصدر بياناته الجدول Order Details و هذا مايعبر عنه بالنموذج الفرعي و الذي سيتم الحديث عنه لاحقا , الآن سؤال , لنفرض أننا لانقوم بادخال البيانات عن طريق النموذج و انما عن طريق الجداول مباشرة سنقوم بداية بادخال البيانات الخاصة بترويسة الفاتورة رقم 340 مثلا في جدول Orders حيث سيكون لدينا OrderID = 340 سنذهب الآن الى جدول Order Details لادخال البيانات الخاصة بأصناف نفس الطلبيه , سندخل رقم الصنف و الكميه و سعر الوحده , طبعا هذا الجدول معبأ ببيانات أصناف تعود لطلبيات سابقه , و لكن كيف سيتم الاشارة في ذلك الجدول الى أن هذه الأصناف تعود للطلبيه رقم 340 و ليس الى غيرها ؟ هنا لابد من انشاء حقل جديد ضمن جدول Order Details و يسمى OrderID يتم ربطه مع نفس اسم الحقل في الجدول Orders ( العلاقات سيتم التحدث عنا لاحقا ) و يأخذ نفس القيمه أي 340 في حال تم الربط بين الجدولين على الحقل OrderID اذا سيتم تلقائيا ربط اصناف كل طلبيه بالسجل الرئيسي في جدول الطلبيات , أي بمجرد استعلمنا عن الطلبيه رقم 340 سنعرف اصنافها تلقائيا على أساس نفس هذا الرقم في الجدول الفرعي . و سيتضح هذا الأمر بدقة أكثر في حال تصميم نموذج الطلبيات و النموذج الفرعي له . 4
rudwan قام بنشر سبتمبر 12, 2005 الكاتب قام بنشر سبتمبر 12, 2005 قبل الانتقال الى التصميمات نلاحظ مايلي : في الجدول Categories على سبيل المثال لدينا الحقل CategoryID و هو الرقم المعرف لمجموعة الصنف , و كما ذكرنا في ملاحظه سابقه , كثير من الأخوه يختار مباشرة في مثل هذه الحاله اسم المجموعه و معلومات عنها دون أن يضع الرقم المعرف , و الرقم المعرف أفضل لنواحي الفهرسه و التصنيف و الفرز . و نجعل هذا الرقم مفتاحا أساسيا , يعني أن هذا الرقم هو الذي سيتم عليه عمليات الفهرسه و الفرز و كذلك فان من خصائص المفتاح الأساسي أنه لايقبل التكرار و هكذا نلاحظ بالنسبه لباقي الجداول لدينا الحقول CustomerID , EmployeeID , OrderID , ProductID , ShipperID , SupplierID لكن لدينا في الجدول Order Details مفتاحين أساسيين هما OrderID , ProductID لماذا ؟ الحقيقه أن الحقل OrderID يمكن أن يتكرر في هذا الجدول , اذ أنه عند تعبئة بيانات عدة اصناف لنفس الطلبيه فان رقم الطلبيه سيتكرر معنا في كل سجل جديد تابع لهذا الطلبيه , و لكن تم اضافة المفتاح الرئيسي الثاني و الذي هو رقم الصنف ProductID حتى يمنع تكرر ادخال نفس الصنف أكثر من مره في طلبيه واحده و هذا هو سبب جعل مفتاحين رئيسيين في جدول واحد يمكننا أن نصع أكثر من مفتاحين رئيسييين في جدول واحد حسب الحاله التي لانرغب التكرار فيها . مثلا : لو كنا لانمانع في أن يتكرر رقم الصنف في الطلبيه الواحده و لكن بشرط أن يكون سعر الوحده مختلفا مثلا , هنا نضع ثلاثة مفاتيح رئيسيه و هي رقم الطلبيه – رقم الصنف – سعر الوحده , و هكذا
rudwan قام بنشر سبتمبر 19, 2005 الكاتب قام بنشر سبتمبر 19, 2005 (معدل) بعد أن فرغنا من تصميم الجداول ننتقل الآن الى بناء العلاقات بين هذه الجداول و من أحب الاستزاده أكثر يمكنه مراجعة الدرس التالي بداية العلاقات بين الجداول و لتطبيق هذا الشرح , حمل الملف المرفق و فيه بشكل رئيسي جدولين هما : المؤلفين Authores - الكتب Books في جدول الكتب لدينا حقل رقم المؤلف و يأخذ قيمته من رقم المؤلف في جدول المؤلفين جدول المؤلفين يتكون من ثلاثة سجلات , و جدول الكتب يتكون من خمسه سندع هذين الجدولين بدون أي علاقة بينهما , و ننشأ الاستعلام 1 نجد نتيجة الاستعلام لدينا 15 سجلا , أي 3 * 15 بمعنى أن كل سجل من جدول الكتب تم تكراره بحسب عدد سجلات المؤلفين , و ذلك لأنه لاتوجد علاقة بين الجدولين الآن لنحافظ على هذين الجدولين و ننسخهما أربعة مرات في كل مره تختلف شكل العلاقه و ذلك للتوضيح فقط . الحاله الثانيه الجدولين 1Authores - 1Books و سننشى بينهما علاقه , طبعا العلاقه المفروض أن تكون بين حقلين متطابقين في التعريف ( نوع البيانات – رقم الى رقم – نص الى نص و هكذا ) , ستكون العلاقه بين رقم المؤلف في كلا الحقلين ( البعض يخطى و يجعل العلاقه بين رقم المؤلف و اسم المؤلف ! ) نعمل الاستعلام 2 بين الجدولين , نجده يتألف من خمسة سجلات فقط , و ذلك بسبب انشاء علاقه بين الجدولين منعت تكرار السجلات بينهما . الآن هذه العلاقه غير مقيده , بمعنى أنه لو فتحنا جدول المؤلفين 1Authores وعدلنا قيمة حقل رقم المؤلف في السجل الثالث و جعلنا قيمتها 4 بدلا من 3 , يقبل التعديل , و لكن هذا التعديل لن ينعكس على جدول الكتب 1Books , و لبيان ذلك نفتح ذلك الجدول و نجد أن حقل رقم المؤلف في السجل الثالث أصبح فارغا و هو الذي كان يحوي سابقا القيمة 3 و لو عدنا الآن الى جدول المؤلفين و أعدنا القيمه من 4 الى 3 كما كانت , نجد تعود القيمه الى جدول الكتب . الآن لنحاول حذف سجل المؤلف رقم 3 بكامله من جدول المؤلفين , نجد أيضا أن السجل الثالث في جدول الكتب اختفت فيه قيمة حقل رقم المؤلف . الآن لو أردنا عمل قيد على العلاقه بين الجدولين بحيث تمنع التعديل أو الحذف في جدول المؤلفين حتى لاتنعكس على جدول الكتب , نلجأ الى النوع الثاني من العلاقات بحيث لو جربنا حذف أي سجل من سجلات جدول المؤلفين أو تعديل رقمه لن يقبل هذا التعديل طالما وجدت سجلات مرتبطه به في جدول الكتب . لو كنا نريد السماح بتعديل رقم المؤلف بشرط أن ينعكس هذا التعديل تلقائيا على السجلات التابعه له في جدول الكتب نلجأ الى النوع الثالث من العلاقات الآن لنحاول تغيير رقم المؤلف في جدول المؤلفين 3Authores من القيمه 3 الى 4 نجد أن السجل الثالث في جدول الكتب تغيرت قيمته تلقائيا الى القيمه الجديده 4 لكن لوأردنا حذف المؤلف بكامله من جدول المؤلفين لن يقبل الحذف بسب منع الحذف في العلاقه لذلك نذهب الى تصميم العلاقه , الجدول 4Authores و نضع اشارة صح على السماح بحذف السجلات المرتبطه و نحفظ التعديل ثم نحاول حذف السجل 3 بكامله من جدول المؤلفين , نجد أنه تم حذف السجل الثالث من جدول الكتب الذي كان يعود لذلك المؤلف . RelationShip.rar تم تعديل سبتمبر 19, 2005 بواسطه rudwan 1
tanya قام بنشر سبتمبر 20, 2005 قام بنشر سبتمبر 20, 2005 thankxxxxxxxxxxxxxxxxxxxx بارك الله فيكم جميعًأ
عبد الظاهر قام بنشر سبتمبر 20, 2005 قام بنشر سبتمبر 20, 2005 اخي الكريم rudwan جزاك الله خير على هذا العمل المميز و اسأل الله ان يكتب ذلك في ميزان حسناتك واذكرك بحديث الرسول صلى الله علية وسلم أنه قال: ((إن الله وملائكته وأهل السموات والأرضين، حتى النملة في جحرها، وحتى الحوت، ليصلون على معلم الناس الخير)) ـ والصلاة من المخلوق هي الدعاء [رواه الترمذي (2685)، والدارمي (289)]. فقد ثبت في الحديث أن النبي – صلى الله عليه وسلم قال: " إذا مات الإنسان، انقطع عمله إلا من ثلاث، صدقة جارية أو علم ينتفع به، أو ولد صالح يدعو له رزقك الله الجنة 1
rudwan قام بنشر سبتمبر 21, 2005 الكاتب قام بنشر سبتمبر 21, 2005 أخي عبد الظاهر و جميع الأخوه بارك الله فيكم جميعا اشكركم على تعبيراتكم الرقيقه و جزاكم الله خيرا , و في الحقيقه الموضوع طويل و لازلنا في مرحلة الجداول و باقي لنا شوط طويل مع هذا البحث , و كنت أود من الأخوه الذين يطلعون على هذا البحث أن يعرضوا تقييمهم للموضوع بشكل عام . 1 - هل ترون أن شرح NorthWind فيه فائده , أم نكتفي بدروس نظريه ؟ 2 - هل ترون أن هذا البحث نظري و ليس فيه جانب عملي ؟ 3 - هل طريقة الشرح بسيطه وواضحه و مستساغه , أم بحاجه لتوضيح و تفصيل أكثر ؟ 4 - هل ترون أن الدروس أصبحت ممله و بحاجه لاختصار أكثر ؟ 5 - هل جرب أحدكم أن يصمم بنفسه جداول المشروع ؟ أرجو ممن يتكرم علينا بالرد على هذه الأسئله فربما نعدل مسيرة المشروع حسب مرئياتكم فالفائده لكم و نحن طوع أمركم , و في حال وردت تعقيبات سأفتح موضوعا خاصا لها حتى لايصبح هناك تشويش على القارى الكريم . و تعقيبا على كلام الأخ عبد الظاهر , أنا أسأل الله ان كتب لي أجرا , أن يجعل ذلك في صحيفة أعمال أغلى الناس و أحبهم الى قلبي , أمي , رحمها الله و غفر لها و جعلنا و اياها من أهل جنته و رضوانه . 2
rudwan قام بنشر سبتمبر 25, 2005 الكاتب قام بنشر سبتمبر 25, 2005 طبعا قبل شرح كيفية تصميم العلاقات بين جداول قاعدة NorthWind لابد من الاشاره الى أن العلاقه تكون بين حقلين من جدولين - يكون لهما نفس نوع البيانات , أي لاتربط حقل نصي مع حقل رقمي , أو حقل له تنسيق رقم صحيح مع حقل له تنسيق رقم مزدوج و هكذا - أحد الحقلين يفضل أن يكون مفتاحا رئيسيا بتأمل تصميم العلاقات بين جداول قاعدة NorthWind نجد أن شكل العلاقه مثلا بين الجدولين Products – Categories على حقل رقم الشريحه في كلا الجدولين أي CatigoruID يأخذ الشكل الثاني أي تقييد بمعنى أن كل صنف يتم ادخال بياناته من جديد لابد من ملْ حقل رقم الشريحه فيه , و لكن لم يتم اختيار تتابع التحديث أو تتابع الحذف , أي الشكلين الثالث و الرابع من العلاقات المشروحه في الدرس السابق و ذلك لمنع المستخدم من تغيير رقم الشريحه أو الغاؤها طالما أن هناك أصنافا تتبع هذ الشريحه و كذلك الحال شكل بقية العلاقات حيث يربط : جدولي الموردين و الأصناف , على حقل رقم المورد في كلا الجدولين جدولي الأصناف و تفصيل الطلبيات , على حقل رقم الصنف في كلا الجدولين جدولي الطلبيات و الموظفين , على حقل رقم الموظف في كلا الجدولين جدولي الطلبيات و شركات الشحن , على حقل رقم الشاحن في كلا الجدولين جدولي الطلبيات و العملاء , على حقل رقم العميل في كلا الجدولين , مع ملاحظة أنه هنا تم اختيار نوع العلاقه الثالثه أي السماح بتعديل كود العميل في جدول العملاء , وينتقل هذا التأثير الى جدول الطلبيات بحيث يتم تعديل كل طلبيات هذا العميل حسب رقمه الجديد , و طبعا مع عدم السماح بحذف رقم العميل , لأنه في هذه الحالى سيؤدي الى حذف طلبياته كامله , و هذا خطأ و ذلك لأنه محاسيبا سيتم تسجيل كل الطلبيات بقيمها و حركاتها في المستودع , ففي حال الغاء التعامل مع هذا العميل لا يجب حذف سجله من جدول العملاء لأن ذلك سيؤدي الى حذف سجلات محاسبيه و قيود مخزنيه تؤدي الى خلل في أرصدة المستودع و في الميزان المحاسبي لذلك اذا كنا نريد الغاء هذا العميل من لائحة التعامل , يفضل اضافة حقل صح أو خطأ الى جدول العملاء , فاذا رغبنا بعدم استمرار التعامل معه يتم التأشير على حقل عدم التعامل و بالتالي لايدرج اسمه ضمن العملاء الفعالين ( هذا يتم عن طريق استعلام ) العلاقه الأخيره و هي بين جدولي الطلبيات و تفضيل الطلبيات , الربط على رقم الطلبيه في كلا الجدولين , و هنا نختار تتابع الحذف , اي مثلا لو اردنا الغاء طلبيه فيجب الغاء تفصيل طلبياتها من جدول تفصيل الطلبيات , و الا ستكون هناك أصناف وهميه تخرج من المستودع لطلبيع ملغاة , لذلك نختار تتابح الحذف , ففي حال الغاء طلبيه تلغى تلقائيا كل الصناف التي سجلت لها على جدول تفصيل الطلبيات . 1
rudwan قام بنشر سبتمبر 27, 2005 الكاتب قام بنشر سبتمبر 27, 2005 طبعا الخطوه التاليه في الدروس هي شرح أنواع الاستعلامات , الجدول , اي جدول يحتوي كامل المعلومات المدخله فيه , فلو أخذنا على سبيل المثال جدول الطلبيات , سيحتوي بعد فترة عددا كبيرا من السجلات , و لكن لو أردنا معرفة فقط الطلبيات الخاصه بالعميل رقم 4 , علينا بالاستعلام , نعمل استعلام نختار فيه جدول الطلبيات , نجد في صفحة تصميم الاستعلام في الأسفل بعد اسماء الحقول نجد معايير , هنا نضع رقم العميل في معيار الحقل رقم العميل ثم نشغل الاستعلام فتظهر لنا البيانات الخاصه بالعميل رقم 4 فقط و لو أردنا معرفة الطلبيات في تاريخ 01/01/2005 مثلا , نضع في حقل معايير الحقل رقم الطلبيه تاريخ 01/01/2005 , تظهر لنا البيانات الخاصه بذلك التاريخ , و هكذا و للاستعلامات أنواع عديده سنشرحها ان شاء الله حال الطلب , و لكني أرتأي أن ابدأ بالنماذج البسيطه حيث سيتم بواسطتها ادخال البيانات , و أي نموذج يستدعي وجود استعلام سنخرج قليلا عن موضوع النماذج و نشرح الاستعلام . و لنبدأ بشرح النماذج البسيطه و نأخذ على سبيل المثال نموذج العملاء و كيفية تصميمه من الصفحه الرئيسيه لقاعدة البيانات – نماذج , نختار جديد ثم معالج النماذج في اسفل تلك القائمه يوجد سهم لاختيار الجدول الذي سنبني عليه النموذج , نفتحه و نختار منه جدول العملاء ثم موافق هنا تظهر لائحة الحقول التي يحتويها الجدول , و علينا اختيار الحقول التي نرغب أن تكون في النموذج و هذا الاختيار للعرض فقط , اي أننا غير ملزمين باختيار جميع الحقول , سنختار فقط الحقول التي نرغب أن نتعامل معها أي التي سندخل فيها البيانات , و لنفرض هنا أننا اخترنا جميع الحقول هنا تظهر لنا عدة اشكال لتصميم النموذج , اما عمودي أو جدولي أو صفحة بيانات أو توافقي أو جدول محوري أو مخطط محوري , و سنختار النوع الأول المحوري هنا تظهر لنا عدة اشكال للنموذج نستطيع اختيار أحدها , و يمكن تعديله لاحقا اذا ظهر أنه غير مناسب , و لنتوافق مع مثال قاعدة البيانات سنختار الشكل InterNational و هنا يطلب تسمية النموذج الذي نرغب و يأخذ تسميه افتراضيه هي نفس تسمية الجدول , و لنكن نحرص أن لانضع فراغات بين الأسماء اذا كان الاسم مركب مثل CustomerSubform ثم انهاء هذا النموذج بشكله المبسط , و سنشرح فيه بعض التنسيقات الاضافيه لاحقا ان شاء الله
rudwan قام بنشر أكتوبر 3, 2005 الكاتب قام بنشر أكتوبر 3, 2005 نفتح النموذج في وضع التصميم , نجده يتألف من ثلاثة أقسام : Form Header راس النموذج Detaild المحتويات FormFooter تذييل النموذج ضمن راس النموذج نجد عنوان النموذج Customers و في قسم المحتويات نجد الحقول التي اخترناها لتكون ضمن النموذج و سنعود الى هذا القسم بالتفصيل أما في التذييل فيمكن أن نضع حقول مثل مجموع , توقيت و تاريخ ,, الخ بالاطلاع على قسم المحتويات نجد كل حقل يتألف من مكونين , مربع عنوان و مربع نص مربع العنوان لايحتوي اي يبيانات و هو فقط للدلاله على اسم العنصر الذي يشير اليه مثل اسم العميل أما مربع النص فهو الذي يحتوي القيم المأخوذه من الجدول الأساسي نستطيع التحكم بخصائص مربع النص من خلال الآتي نضع المؤشر على مربع النص CompanyName اسم الشركه , ثم نضغط بالفأره باليمين نجد قائمة في نهايتها خصائص Properties نضغط عليها فتفتح لنا قائمة بها عدة عناصر الأول : تنسيق Format من خلال هذه القائمه نستطيع تنسيق الألوان و نمط الخط و تنسيق الأرقام و التاريخ .. الخ Format تنسيق شكل الأرقام و التاريخ فقط Decimal Places عدد الخانات العشريه Visisble ( مرئي ) القيمة الافتراضيه نعم نريده مرئي , لكن أحيانا نضطر لادراج مربعات نص لانريد اظهارها للمستخدم , لذلك نجعل قيمة هذا الحقل لا , فيبقى موجودا في النموذج وله حسابه لكن لن يظهر للمستخدم Display When هنا تحديد فيما اذا كنا نريد اظهار مربع النص دائما , أم عند الطباعه فقط . أو يظهر على الشاه فقط و يختفى في الطباعه Scroll Bar تثبيت زر سحب و افلات Can Grow هل النص قابل للتمدد ( اذا كانت البيانات أكبر من حجم مربع النص ) Can Shrink هل النص قابل للانكماش ( اذا كانت البيانات أصغر من حجم مربع النص ) Left – Top – Width – Hight للتحكم باحداثيات مربع النص ثم بعد ذلك مجموعة خصائص لتغيير نمط الخلفيه و الألوان .. الخ يمكنكم تنسيقها للحصول على مربعات نص جذابه . القائمه الثانيه Data بيانات هذه القائمه تحتوي : Control Source مصدر البيانات , نجد هنا أن قيمة هذا الحقل هي CompanyName في جدول العملاء , لو أردنا تغيير هذا الحقل يمكن ذلك , نفتح السهم بجانب الاسم و نجد أسماء بقية الحقول المختاره في النموذج ,نستطيع اختيار مثلا ContactName و بذلك سيعرض هذا الحقل اسم الشخص المراد الاتصال به بدلا من اسم الشركه , Input Mask قناع الادخال بالنسبه للتاريخ و الرقم Default Value القيمة الافتراضيه للحقل Validation Rule قاعدة التحقق من الصحه هنا بمجرد ادخال أي قيمه في هذا الحقل يتم اختبا رالقاعده , و تصلح هذه القاعده أكثر بالنسبه للأرقام و التواريخ Validation Text الرساله التي ستظهر في حال مخالفة القاعدة Enabled أحيانا نضطر لعرض مربعات نص غير متاحه للمستخدم , أي لاظهار قيمه معينه دون أن يكون للمستخدم حق التأشير عليها أو الوصول اليها , لذلك نجعل قيمته لا Locked مقفل , في حال أردنا منع المستخدم من التعديل على هذا الحقل حتى و لو كان متاحا نجعل قيمة هذا الحقل نعم الأحداث Events , و هذه قائمه هامه جدا و تتعلق بالأوامر التي نريد اعطاؤها للبرنامج لتنفيذ ها عند حدث معين مثل عند النقر على زر مربع النص أو عند الخروج منه أو قبل الدخول اليه ,, الخ , و هذا بحد ذاته مبحث مستقل له تعليمات و قواعد خاصه . قائمة Other مختلف وتتضمن عدة حقول , و ما يهمنا منها هو حقل الاسم Name و يجب الانتباه جيدا الى هذا الحقل اذ أنه هو الذي يتعامل معه النموذج , القيمة الافتراضيه لهذا الحقل هي نفس قيمة مصدر بيانات العنصر , أي CompanyName لكن لو قمنا مثلا بتغيير مصدر بيانات هذا النص الى ContactName كما فعلنا سابقا , فان أي قيمه تدخل في هذا الحقل , تدخل في حقل ContactName في الجدول , لكن النموذج سيتعامل مع هذا الحقل على أساس أنه CompanyName , و هذا أمر هام جدا لدى تنفيذ أوامر الفيجوال بيسيك , فالحرص يكون على اسم الحقل و ليس على مصدر البيانات . و اخيرا قائمة الكل All و تتضمن جميع القوائم السابقه 2
التقني قام بنشر يوليو 29, 2006 قام بنشر يوليو 29, 2006 (معدل) السلام عليكم ورحمة الله وبركاته هذه احدى نفائس أخينا رضوان جزاه الله عنا كل خير وجدت هذا الموضوع في الصفحة 30 وترتيبه 1160 ضمن مواضيع قسم الأكسس العام لذا قررت أن أثبته لينتفع به اخواني الأعضاء ومن ثم أنقله الى الأرشيف الخاص (( الموضوع مثبت لغاية تاريخ 30/8/2006 )) تم تعديل أغسطس 21, 2006 بواسطه التقني 2
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.