اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

السلام عليكم

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

فهو أفضل وسيله لايصال المعلومه .

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

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

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

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

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

كذلك دروس العلاقات بين الجداول

و هذه ثلة من الدروس في الاستعلامات وأنواعها

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

  • Like 3
قام بنشر (معدل)

الخطوه الأهم في تصميم اي قاعدة بيانات هي وضع مخطط العمل , و لكي نعرف مخطط العمل لابد من الاحاطه بالهدف المطلوب من انشاء قاعدة البيانات .

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

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

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

اذا يمكننا الآن أن نضع تصورا للجدول التي ينبغي انشاؤها حيث :

- طالما لدينا بضائع يتم بيعها اذا لابد من انشاء جدول خاص بالبضائع Product

- لدينا عملاء اذا نحتاج الى جدول للعملاء Customers

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

هذه هي الجداول الرئيسيه التي نحتاجها و سنقوم بتصميمها الآن .

قبل البدء بتصميم الجداول لابد من الاشاره الى بعض التوصيات في بناء الجداول و هي :

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

القيمه = الكميه * سعر الوحده

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

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

ثالثا : يفضل أن تكون استخدام الأسماء الانكليزيه لكل مكونات قاعدة البيانات و خاصة اسماء الجداول و الحقول , لأن استخدام الأسماء العربيه يسبب ارباكات أثناء العمل بالمعادلات و أكواد الفيجوال بيسيك

رابعا : تجنب وضع مسافات في التسميات , مثلا اذا كنت تريد تسمية Product List

فالأفضل وصلها هكذا ProductList

لنبدأ الآن بتصميم الجدول الأسهل في هذه القاعده و هو جدول العملاء , و لنتصور أنه يحتوي الحقول التاليه :

اسم العميل CompanyName

العنوان Address

المدينه City

الدوله Country

المنطقه Region

الرمز البريدي PostalCode

الهاتف Phone

الفاكس Fax

و سنحتاج اضافة لذلك بيانات عن الشخص الذي سنتصل به مثل اسمه ContactName

و عمله الوظيفي ContactTitle

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

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

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

تم تعديل بواسطه rudwan
  • Like 5
قام بنشر

الآن لنحاول بناء الجدول الثاني في الأهميه و هو جدول المنتجات Products

يمكن أن نتصور أنه يحتوي البيانات التاليه

اسم المنتج ProductName

التعبئه QuantityPerUnit

سعر الوحده UnitPrice

حد اعادة الطلب ReorderLevel

الصنف فعال ( لازال قيد التعامل أم تم الغاؤه ) Discontinued

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

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

أحدنا سيتخيل أنه طالما أن المجموعات ستكون اسماء مثل ( ألبسه - مأكولات - مواد غازيه ,, الخ ) , اذا حقل رمز المجموعه سيكون نص ,

الأفضل أن نصمم جدولا خاصا للمجموعات ولنسمه Categories , يحتوي الحقول التاليه

رقم معرف للمجموعه و مفتاح رئيسي CategoryID

اسم المجموعه CategoryName

بعض الحقول الاضافيه مثل : الوصف - صورة

الآن النقطه الهامه جدا هنا هي أننا في جدول المنتجات سنجعل حقل رمز المجموعه رقما و ليس نصا و سيأخذ قيمته من حقل CategoryID في جدول Categories و ليس من حقل

CategoryName و سيكون الربط بين جدولي الأصناف و المجموعات على حقل رقم المجموعه في كلا الجدولين اي CategoryID .

الآن ليقل أحدنا اذا كنا نريد تعبئة بيانات صنف جديد في جدول الأصناف , و ليكن مثلا لحوم , نريد تعبئة حقل رقم المجموعه و هي مجموعة اللحوم في جدول المجموعات , ال CategoryID لهذه المجموعه هو 6 , هل كلما أردنا أن نعرف رقم مجموعه لصنف يجب أن نفتح جدول المجموعات و نستخرج رقم تلك المجموعه ثم نضعه في حقل معرف المجموعه للصنف ؟ هذا سيكون عملا مملا و شاقا ,

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

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

عرض قيمة حقل من حقل آخر مرتبط به - شرح مفصل بالصور

و بالتطبيق على مثالنا نجد أن حقل CategoryID في جدول الأصناف تحول الى قائمه منسدله تحوي حقلين هما رقم المجموعه و اسم المجموعه

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

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

  • Like 2
قام بنشر

لنصمم الآن جدول الموردين Suppliers و الذي يتألف من الحقول التاليه :

اسم العميل CompanyName

بقية البيانات التفصيليه المشابهة لجدول العملاء مثل العنوان و الهاتف و اسم الموظف المسؤول .. الخ

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

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

الآن نعود الى جدول البضائع , و ننشأ حقل رقم المورد SupplierID و نحوله الى قائمه كما فعلنا في الدرس السابق . بنفس الخطوات , ثم نفتح جدول البضائع في وضع ادخال البيانات

و عند الوصول الى حقل رقم المورد نجد يظهر لنا اسم المورد للاختيار منه

يبقى لدينا حقلين في هذا الجدول و هما :

رصيد الصنف في المستودع UnitsInStock

الكميه تحت الطلب من هذا الصنف UnitsOnOrder

و الحقيقه ليس هناك أي داعي لوجود هذين الحقلين , لسببين :

الأول : حسب القاعده الآولى التي شرحناها في بناء الجداول الحقول المحسوبه ( أي التي تعتمد قيمتها على قيمة حقل آخر ) تستخرج من خلال معادله رياضيه في النموذج أو من خلال استعلام , و لاداعي لعمل حقل لها ضمن الجدول

الثاني : حتى لو تم عمل حقل لها في الجدول , فان قيمتها لن تتحدث الا من خلال كود في النموذج يتم تفعيله في زمن ادخال بيانات الفاتوره , و لكن لو عاد اي شخص للجدول فانه سيتمكن من تغيير تلك القيمه بدون أي قيد أو شرط

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

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

عمليا الطلبيات تتم على الشكل التالي :

يقوم مندوب المبيعات أو الموظف بتسجيل بيانات الطلبيه من العميل مباشره , بحيث يضع

في بيانات الطلبيه المعلومات التاليه :

اسم العميل - عنوانه - تاريخ الطلبيه - التاريخ المطلوب لشحن الطلبيه - تاريخ تسليم الطلبيه

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

القيمة الاجماليه للفاتوره - الخصم - أضافات ( ضرائب و رسوم ) - القيمة الصافيه للفاتوره

نلتقي في الدرس القادم ان شاء الله

  • Like 3
قام بنشر (معدل)

الله يسلمك يا أخ حاكم

هذا الملف الكامل لقاعدة البيانات NorthWind لمن لم يتمكن من تحميله من الأكسس

علما بأنه موجود من القائمه الرئيسيه للأكسس - أدوات - أمثله لقواعد البيانات

Northwind.rar

تم تعديل بواسطه rudwan
قام بنشر (معدل)

السلام عليكم

شكرا للأخ مزكي , و نتابع اليوم موضوع كيفية تصميم جدول الطلبيات

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

رقم مسلسل للطلبيه OrderID

رقم العميل CustomerID رقم - و سيتم تحويله الى قائمه و يربط مع رقم العميل في جدول العملاء

تاريخ الطلبيه OrderDate

التاريخ المطلوب للتسليم لدى العميل RequiredDate

تاريخ الشحن ShippedDate

شركة الشحن ShipVia , و عليه يتوجب انشاء جدول خاص لشركات الشحن يتكون من رقم مسلسل - اسم الشركه الشاحنه - بعض البيانات التفصيليه مثل العنوان .. الخ

اسم الموظف الذي قام بتسجيل بيانات الطلبيه EmployeeID , و عليه أيضا نحتاج انشاء

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

و مهمتكم الآن هي انشاء كل من جدولي الشركات الشاحنه Shippers , و جدول الموظفين Employees و من ثم عمل الجدول المبسط للطلبيات و الذي يتكون من البيانات السابقة الذكر بعد اضافة حقلي رقم الشركه الشاحنه ShipVia - رقم الموظف EmployeeID الى ذلك الجدول .

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

لقاؤنا في الدرس القادم بمشيئة الله لتصميم تلك الجداول

تم تعديل بواسطه rudwan
  • Like 1
قام بنشر (معدل)

الآن لنبني جدول شركات الشحن 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;

نفتح الجدول و نجد أن الاسم الكامل للموظف يظهر لنا

تم تعديل بواسطه rudwan
  • Like 1
قام بنشر (معدل)

لنلقي مزيدا من الضوء على كيفية دمج الحقلين : الاسم الأول و الاسم الأخير في المعادله السابقه

نبدأ بنفس الخطوات التي سبق شرحها أثناء عملية تحويل الحقل الى قائمة اختيار , حيث نضع المؤشر على اسم الحقل ثم ننتقل الى خصائص الحقل في الأسفل لدينا 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

تم تعديل بواسطه rudwan
  • Like 1
قام بنشر

الآن نعود الى ما كنا بصدده قبل درسين و هو انشاء جدول الطلبيات , حيث اضطررنا للعروج قليلا عن ذلك الجدول بهدف تصميم جدولي شركات الشحن – الموظفين , للاستفاده منهما في تصميم حقلي شركات الشحن و رقم الموظف .

سنضيف الآن الى جدول الطلبيات حقلا باسم 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 سنعرف اصنافها تلقائيا على أساس نفس هذا الرقم في الجدول الفرعي .

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

  • Like 4
قام بنشر

قبل الانتقال الى التصميمات نلاحظ مايلي :

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

و نجعل هذا الرقم مفتاحا أساسيا , يعني أن هذا الرقم هو الذي سيتم عليه عمليات الفهرسه و الفرز و كذلك فان من خصائص المفتاح الأساسي أنه لايقبل التكرار

و هكذا نلاحظ بالنسبه لباقي الجداول لدينا الحقول CustomerID , EmployeeID , OrderID , ProductID , ShipperID , SupplierID

لكن لدينا في الجدول Order Details مفتاحين أساسيين هما OrderID , ProductID لماذا ؟

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

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

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

قام بنشر (معدل)

بعد أن فرغنا من تصميم الجداول ننتقل الآن الى بناء العلاقات بين هذه الجداول

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

العلاقات بين الجداول

و لتطبيق هذا الشرح , حمل الملف المرفق و فيه بشكل رئيسي جدولين هما :

المؤلفين Authores - الكتب Books

في جدول الكتب لدينا حقل رقم المؤلف و يأخذ قيمته من رقم المؤلف في جدول المؤلفين

جدول المؤلفين يتكون من ثلاثة سجلات , و جدول الكتب يتكون من خمسه

سندع هذين الجدولين بدون أي علاقة بينهما , و ننشأ الاستعلام 1 نجد نتيجة الاستعلام لدينا 15 سجلا , أي 3 * 15 بمعنى أن كل سجل من جدول الكتب تم تكراره بحسب عدد سجلات المؤلفين , و ذلك لأنه لاتوجد علاقة بين الجدولين

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

الحاله الثانيه الجدولين 1Authores - 1Books و سننشى بينهما علاقه , طبعا العلاقه المفروض أن تكون بين حقلين متطابقين في التعريف ( نوع البيانات – رقم الى رقم – نص الى نص و هكذا ) , ستكون العلاقه بين رقم المؤلف في كلا الحقلين ( البعض يخطى و يجعل العلاقه بين رقم المؤلف و اسم المؤلف ! )

Relat1.bmp

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

الآن هذه العلاقه غير مقيده , بمعنى أنه لو فتحنا جدول المؤلفين 1Authores وعدلنا قيمة حقل رقم المؤلف في السجل الثالث و جعلنا قيمتها 4 بدلا من 3 , يقبل التعديل , و لكن هذا التعديل لن ينعكس على جدول الكتب 1Books , و لبيان ذلك نفتح ذلك الجدول و نجد أن حقل رقم المؤلف في السجل الثالث أصبح فارغا و هو الذي كان يحوي سابقا القيمة 3

و لو عدنا الآن الى جدول المؤلفين و أعدنا القيمه من 4 الى 3 كما كانت , نجد تعود القيمه الى جدول الكتب .

الآن لنحاول حذف سجل المؤلف رقم 3 بكامله من جدول المؤلفين , نجد أيضا أن السجل الثالث في جدول الكتب اختفت فيه قيمة حقل رقم المؤلف .

الآن لو أردنا عمل قيد على العلاقه بين الجدولين بحيث تمنع التعديل أو الحذف في جدول المؤلفين حتى لاتنعكس على جدول الكتب , نلجأ الى النوع الثاني من العلاقات

Relat2.bmp

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

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

Relat3.bmp

الآن لنحاول تغيير رقم المؤلف في جدول المؤلفين 3Authores من القيمه 3 الى 4 نجد أن السجل الثالث في جدول الكتب تغيرت قيمته تلقائيا الى القيمه الجديده 4

لكن لوأردنا حذف المؤلف بكامله من جدول المؤلفين لن يقبل الحذف بسب منع الحذف في العلاقه لذلك نذهب الى تصميم العلاقه , الجدول 4Authores و نضع اشارة صح على السماح بحذف السجلات المرتبطه و نحفظ التعديل

Relat4.bmp

ثم نحاول حذف السجل 3 بكامله من جدول المؤلفين , نجد أنه تم حذف السجل الثالث من جدول الكتب الذي كان يعود لذلك المؤلف .

RelationShip.rar

تم تعديل بواسطه rudwan
  • Like 1
قام بنشر

اخي الكريم rudwan

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

و اسأل الله ان يكتب ذلك في ميزان حسناتك

واذكرك بحديث الرسول صلى الله علية وسلم أنه قال: ((إن الله وملائكته وأهل السموات والأرضين، حتى النملة في جحرها، وحتى الحوت، ليصلون على معلم الناس الخير)) ـ والصلاة من المخلوق هي الدعاء [رواه الترمذي (2685)، والدارمي (289)].

فقد ثبت في الحديث أن النبي – صلى الله عليه وسلم قال: " إذا مات الإنسان، انقطع عمله إلا من ثلاث، صدقة جارية أو علم ينتفع به، أو ولد صالح يدعو له

رزقك الله الجنة

  • Like 1
قام بنشر

أخي عبد الظاهر و جميع الأخوه بارك الله فيكم جميعا

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

1 - هل ترون أن شرح NorthWind فيه فائده , أم نكتفي بدروس نظريه ؟

2 - هل ترون أن هذا البحث نظري و ليس فيه جانب عملي ؟

3 - هل طريقة الشرح بسيطه وواضحه و مستساغه , أم بحاجه لتوضيح و تفصيل أكثر ؟

4 - هل ترون أن الدروس أصبحت ممله و بحاجه لاختصار أكثر ؟

5 - هل جرب أحدكم أن يصمم بنفسه جداول المشروع ؟

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

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

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

  • Like 2
قام بنشر

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

- يكون لهما نفس نوع البيانات , أي لاتربط حقل نصي مع حقل رقمي , أو حقل له تنسيق رقم صحيح مع حقل له تنسيق رقم مزدوج و هكذا

- أحد الحقلين يفضل أن يكون مفتاحا رئيسيا

بتأمل تصميم العلاقات بين جداول قاعدة NorthWind نجد أن شكل العلاقه مثلا بين الجدولين

Products – Categories على حقل رقم الشريحه في كلا الجدولين أي CatigoruID

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

و كذلك الحال شكل بقية العلاقات حيث يربط :

جدولي الموردين و الأصناف , على حقل رقم المورد في كلا الجدولين

جدولي الأصناف و تفصيل الطلبيات , على حقل رقم الصنف في كلا الجدولين

جدولي الطلبيات و الموظفين , على حقل رقم الموظف في كلا الجدولين

جدولي الطلبيات و شركات الشحن , على حقل رقم الشاحن في كلا الجدولين

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

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

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

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

  • Like 1
قام بنشر

طبعا الخطوه التاليه في الدروس هي شرح أنواع الاستعلامات ,

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

في معيار الحقل رقم العميل ثم نشغل الاستعلام فتظهر لنا البيانات الخاصه بالعميل رقم 4 فقط

و لو أردنا معرفة الطلبيات في تاريخ 01/01/2005 مثلا , نضع في حقل معايير الحقل رقم الطلبيه تاريخ 01/01/2005 , تظهر لنا البيانات الخاصه بذلك التاريخ , و هكذا

و للاستعلامات أنواع عديده سنشرحها ان شاء الله حال الطلب ,

و لكني أرتأي أن ابدأ بالنماذج البسيطه حيث سيتم بواسطتها ادخال البيانات , و أي نموذج يستدعي وجود استعلام سنخرج قليلا عن موضوع النماذج و نشرح الاستعلام .

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

من الصفحه الرئيسيه لقاعدة البيانات – نماذج , نختار جديد ثم معالج النماذج

Form1.bmp

في اسفل تلك القائمه يوجد سهم لاختيار الجدول الذي سنبني عليه النموذج , نفتحه و نختار منه جدول العملاء ثم موافق

Form2.bmp

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

Form3.bmp

Form4.bmp

هنا تظهر لنا عدة اشكال لتصميم النموذج , اما عمودي أو جدولي أو صفحة بيانات أو توافقي

أو جدول محوري أو مخطط محوري , و سنختار النوع الأول المحوري

Form5.bmp

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

Form6.bmp

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

هذا النموذج بشكله المبسط , و سنشرح فيه بعض التنسيقات الاضافيه لاحقا ان شاء الله

قام بنشر

نفتح النموذج في وضع التصميم , نجده يتألف من ثلاثة أقسام :

Form Header راس النموذج

Detaild المحتويات

FormFooter تذييل النموذج

ضمن راس النموذج نجد عنوان النموذج Customers

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

أما في التذييل فيمكن أن نضع حقول مثل مجموع , توقيت و تاريخ ,, الخ

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

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

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

نستطيع التحكم بخصائص مربع النص من خلال الآتي

نضع المؤشر على مربع النص CompanyName اسم الشركه , ثم نضغط بالفأره باليمين نجد قائمة في نهايتها خصائص Properties

FormPorb2.bmp

نضغط عليها فتفتح لنا قائمة بها عدة عناصر

FormProb3.bmp

الأول : تنسيق 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 و تتضمن جميع القوائم السابقه

  • Like 2
  • 9 months later...
قام بنشر (معدل)

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

هذه احدى نفائس أخينا رضوان جزاه الله عنا كل خير

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

لذا قررت أن أثبته لينتفع به اخواني الأعضاء ومن ثم أنقله الى الأرشيف الخاص

(( الموضوع مثبت لغاية تاريخ 30/8/2006 ))

تم تعديل بواسطه التقني
  • Like 2

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information