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

مشروع تخرج (لنظام فندق) وانا اعمل عليه منذ شهر

مغلق
بدأه MAHA15 في 12 مايو 2005 · 12 رد · 14,356 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ،،

لدي مشروع تخرج (لنظام فندق) وانا اعمل عليه منذ شهر،،

من جمع البيانات، تحديد متطلبات النظام، توثيق الخطوات...الخ

قمت بعمل ER للنظام وكذلك DFD ومستوياته بالاضافة الى FD

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

بالنسبه لتصميم قاعدة البيانات لمشروعي يجب أن يكون من الــ ER الذي صممته،،

وحسب علمي فأن لكل علاقة في ER يجب أن تحول الى جدول في الأكسس ،،

قمت بإنشاء جداول لكل العلاقات والكيانات، المشكله أنه عندما بدأت بادخال بيانات افتراضيه ظهرت لي مشاكل عديده،،

أتمنى أن أجد حلها لديكم،،

مثلا في العلاقة التالي،، لكل نزيل أكثر من مرافق كما في الصورة،،

Reh1.jpg

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

Reh2.jpg

كذلك كما في الصورة التالية فانه يظهر ان لكل نزيل مرافق واحد،،

Reh3.jpg

وفي كل مره أحاول اضافة أكثر من مرافق تظهر لي نفس الرسالة السابقة،،

حسب توقعي أن للمشكلة علاقة في خصائص الربط،،

حيث أن هذه المشكلة ليست فقط في علاقة يرافق وانما في جميع علاقات النظام،،

أتمنى أن اجد الحل لديكم في أسرع وقت،،

شكرا لكم مقدما،، أختكم مها،،

#2

الاخت مها

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

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

اختكم

زهره

النزلاء والمرافقين.rar

#3

الأخت الغالية: زهرة،،

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

جزاك الله ألف خير على هذه الإجابة الوافيه والمباشرة،، وزادك من علمه،،

طبقت شرحك على المشروع والحمد لله اشتغلت معي جميع الجداول،، فألف شكر لك،،

لدي عدة أستفسارات أخرى بشأن نفس المشروع،، أتمنى ان لا أثقل عليكم باستفساراتي،،

____________________

لدي علاقة بين جدول النزلاء وجدول الحسابات بالعلاقة يدفع1

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

q2DBH2.jpg

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

مثلا شركة تتعاقد مع الفندق لتحجز مجموعة من الغرف،

ملاحظة::الصورة توضح جزء وليس كل العلاقات التي في النظام،،

المشكلة:: أن جدول الحسابات عند حقل رقم الحساب عندما اعمل توسيع له يظهر فقط رقم النزيل

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

q2DBH.jpg

حاولت اضافة عامود آخر وتسمية رقم العقد ولكنه لا يؤدي الغرض، كيف يمكنني حل هذه المشكله؟؟

____________________

هل ظهور الرسالة التالية، تعني وجود مشكلة في العلاقات؟ او في وضع المفتاح الرئيسي للجدول؟

أم أنه ليس من الضروري انشاء التكامل المرجعي؟

q2DBH3.jpg

____________________

ما هو كود حساب العمر،، طرح التاريخ الحالي من تاريخ الميلاد؟

أعذروني ع الاطالة،،

جزاكم الله خيرا،،أختكم مها،،

#4

تفضلي اختي الكريمه مها

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

النزلاء والمرافقين.rar

#5

الله يجزاك ألف خير أختي الغاليه،،

وألف شكر لك على هذه الاستجابه السريعه،،

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

وانا على علم تام بأن المعلومات التي أدرجتها عن مشروعي ناقصه،

، حيث أن الجداول فيها تصل الى 23 جدول تقريبا والعلاقات فيها أشبه بشبكة عنكوب ولكن غير منظمه

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

ولا اريد المجازفة في ذلك،،

ومن ناحية أخرى أفضل أن أتعلم أخطائي بدلا من أنسخها بلا معرفة عن غيري،،

جزاك الله ألف خير أختي زهرة على هذا الأهتمام،،

وجعلها الله في موازين حسناتك أن شاء الله،، :)

أختك،،

#6

الأخت زهرة،،

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

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

هل ممكن جعل حقل رقم الحساب في جدول الحسابات مره يعبر عن رقم حساب الشركة ومره عن رقم حساب النزيل؟

في المرفقات قاعدة بيانات مبسطة للجزئية التي لم أستطع التعامل مع علاقتها،،

اذا كانت هناك بيانات يجب أن أدرجها فأتمنى منك أن تحديدها،،

جزاك الله ألف خير،،

النزلاء 2والمرافقين.rar

#7

الأستاذة مها :

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

كل ما ذكرته صحيح بدرجة كبيرة و لكن هذه المعلومة بحاجة إلى مراجعة ( " وحسب علمي فأن لكل علاقة في ERD يجب أن تحول الى جدول في الأكسس " ) ؟!؟! ، فمعلوم أن العلاقة في ERD كائن قائم بذاته و هذا لا غبار عليه ، أنت ترسمين عل الورق كائن ( One Has M ) و من الناحية التطبيقية هو يتمثل في الربط الحقيقي و المباشر بين الجداول

( تستطيعين رؤيته فهو الخط الواصل بين هذا الجدول و ذلك الجدول ) .

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

الضيف يحتمل عدد من المرافقين و الرابط بينهم جميعاً هو المفتاح الأساسي ( GuestID ) فقط .

أمّا الجدول الثالث فلست بحاجة إليه و لكن إذا أصرّ الدكتور المشرف على المشروع بأن تكون العلاقة متمثلة في جدول ثالث ( و هذا أحسبه خطأ فادح و هو سبب تضخم قاعدة البيانات كما ذكرت ) حينئذ يجب أن يكون المفتاح الأساسي في الجدول الثالث مكون من الحقلين ( رقم تعريف الضيف GuestID (من جدول الضيف) ، رقم تعريف المرافق CompanionID (من جدول المرافق) ) .

أمّا ما يخصّ جداول الحسابات و التعاقدات ، فلم توضحي الطريقة التي اعتمدتها لبنائها ، ( أحياناً ) تكون للتعاقدات جداول خاصة بها ، تحتوي على مراجع العميل و تفاصيل التعاقدات معه و متابعتها CRM ، أمّا الضيوف المؤقتين فلا توجد لهم جداول تعاقدات .

أمّا في المثال المرفق تجدين أسلوباً آخر حيث هناك جدول للمتعاقدين لديه مفتاح أساسي ( ContractorID ) و يرتبط بدوره بجدول الضيف الذي يحتوي على مفتاح ثانوي ( ContractorID ) مع أهمية ملاحظة أن القيمة الافتراضية لحقل رقم المتعاقد في جدول الضيف = ( لاشيء ) حتى تتمكني من تسجيل الضيف دون الاضطرار لتسجيل رقم المتعاقد إذا كان هذا الضيف على حسابه الشخصي ، و بهذه الطريقة لن تظهر رسائل ( مخالفة فرض التكامل المرجعي ) مع العلم بأن التكامل سيبقى مفروضاً حيث لن تتمكني من تسجيل متعاقد غير موجود في جدول المتعاقدين ( في المثال المرفق حاولي إضافة ضيف في جدول الضيوف و سجلي رقم 2 في حقل رقم المتعاقد ContractorID حينئذ ستظهر رسالة المخالفة ، أمّا إذا سجلت رقم 1 سيقبله (لأنه موجود في جدول المتعاقدين) و إذا تركته خالياً سيقبله أيضاً .

في الملف المرفق :

قاعدة بيانات Guest

الربط السليم : تجدينه بين الجداول ( Contractor , Guest , Companion )

الربط غير السليم ( حسب التعليق على النقطة الأولى ) : تجدينه بين 3 جداول ( 2Guest , 2Companion, 2Relation ) يمكنك حذفها بدون تردد.

مع تمنياتي لك بدوام التوفيق.

Guest.zip

#8

الأستاذ/Salah69

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

شاكرة لك هذا الأهتمام، وجزاك الله الف خير،،

بالنسبه لكلامك عن العلاقات وجعلها جداول فهو سليم 100%

وهذا حسب ما تعملته اثناء دراستي لهذه المادة(اكسس)،، فوجود جدول لعلاقة موجودة في ER ليس لها أي اضافة أو أهمية لقاعدة البيانات،، مجرد زيادة جداول،،

________________________

بالنسبه للجزئية:-

(عندما تخرجين من مرحلة التحليل ثم التصميم و تصلين إلى مرحلة التطبيق تقومين بتنفيذ العلاقة كما قررت و رسمت في ERD )

صحيح أنني قمت برسم العلاقات وتوضيحها في ER ولكن لست متأكدة 100% من صحتها، لذلك فهذا الرسم في طور التعديل وليس نهائي.

_________________________

بالنسبة جداول الحسابات و التعاقدات ، فلم أرغب بالدخول في تفاصيل محاسبية دقيقة : فهي مجرد اضافة قيم الخدمات في كميتها+ بالاضافة الى قيمة الغرفة بحسب نوعها King،Queen ...الخ

+المبالغ الاجامالية (وهي بحسب علمي تتم في الاستعلامات وليست أثناء انشاء الجداول وربطها)

_________________________

جزاك لله الف خير على توضيح الفرق بين الطريقتين في الملفات المرفقه، وفكرة ربط المتعاقدين مع النزلاء فكرة جميله،، :)

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

جزاكم الله خيرا،، كل من أجاب على استفساراتي أو اطلع على موضوعي محاولا الاجابه،،

أختكم / مها

تم تعديل هذه المشاركة بواسطة zahrah في 29 مايو 2005 في 15:09

#9

الأستاذة مها :

أشكرك كثيراً على لطفك .

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

* إجابتك لا تعفيك من تقديم المكافأة ، و المكافأة التي أطلبها هي الرجاء بألا تترددي في طرح أي سؤال مهما كثرت و مهما صعبت ( مشاركة الناجحين = نجاح ) و تأكدي أن لكل مشكلة حلً ، بل حلول .

و فقك الله و أسعدك ، و جعل نجاحك مثل ظلك .

#10

الله يسمع منك أخوي،،

شاكرة لك هذه الدعوات الجميله،،

وأتمنى لك مثلها،،

:)

#11

الاخت الكريمه مها

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

اقتباس
كيف ممكن أجعل النموذج الرئيسي يشتغل أول ما اشغل البرنامج، بحيث يكون على كامل الصفحة وعند اغلاقة يغلق البرنامج بالكامل

الحل

لنفرض ان لديك عدة نماذج والنموذج الرئيسي هو Main

اولا : سنأخذ الاجابة من اخر السؤال .

اغلاق النموذج الرئيسي مع برنامج الاكسيس بالكامل

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

عمليات السجلات

عمليات النماذج

عمليات التقارير

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

جعل النموذج يأخذ كامل مساحة الشاشة

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

DoCmd.Maximize

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

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

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

اقتباس
كيف أضع كود الوقت الحالي في النموذج بحيث يتغير بالثواني، جربت وضع الكود ()Time =  يظهر وقت فتح النموذج ولكن يظل ثابت الى ان اغلق وافتح النموذج مرة أخرى

الحل

لجعل خانة الثواني تقوم بالعد قومي بعمل التالي

1. قومي بعمل مربع نص غير منظم وليكن اسمه Clock

2. اضغطي بالماوس الايمن على المربع واختاري خصائص

3. من خصائص هذا المربع اختاري مصدر عنصر التحكم وضعي به ()Time =

4. إذهبي إلى خصائص النموذج ومن ثم حدث ومن ثم الفاصل الزمني لعداد الوقت وضعي فيه الرقم 1000 وهذا يعني ثانية واحده

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

Me.Clock.Requery

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

الحل

لنفرض ان لديك ثلاثة الاول اسمه Main وهو النموذج الرئيسي والثاني اسمه Form2 والثالث اسمه Form3 . الان نريد عند ضغط زر امر ان يقتح لنا النموذج Form2 مع تصغير النموذج الرئيسي .

الطريقة :

1. نقوم بعرض النموذج الرئيسي Main في عرض التصميم ثم نقوم بإنشاء زر امر على النموذج الرئيسي Main لفتح النموذج Form2 سيفتح لنا معالج زر الامر نقوم بإغلاقه .

2. نعود الى زر الامر ونقوم بتسميته بدل مثلا امر3 الى فتح النموذج الثاني او اي تسميه ترغبينها ثم نضغط الماوس خارج الاسم ليتم تسمية زر الامر حسب المطلوب .

3. نقوم بالضغط على زر الامر بالماوس الايمن ونختار خصائص ثم نختار تبويب حدث ثم نختار من الحدث عند النقر ونضع هذا الكود

DoCmd.Minimize
DoCmd.OpenForm "FORM2"

استعادة النموذج الرئيسي Main واغلاق النموذج الثاني Form2 نضع هذا الكود في النموذج الثاني بعد انشاء زر امر في النموذج الثاني وليكن مثلا اسمه العوده للقائمة الرئيسية

DoCmd.Close
DoCmd.OpenForm "Main"

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

لغلق النموذج مع برنامج الاكسيس بالكامل

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

DoCmd.Quit

اقتباس
ما هو الأمر الذي اذا ضغطت عليه في النموذج يمسح(وليس يحذف*) بيانات النموذج الحالي

الحل

نقوم بإنشاء زر امر على النموذج ونسميه مثلا جديد ومن خصائص زر الامر نختار حدث عند النقر ونضع هذا الكود

DoCmd.GoToRecord , , acNewRec

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

اختكم

زهره

#12

الله يجزاك ألف خير أختي زهرا،،

أجابات وافية ، جزيت خيرا،،

واجهت بعض الصعوبات في وضع الأكواد في الفيجوال

لعدم معرفتي أين يتم وضعها بالضبط،،

وحاليا قمت بتسليم المشروع ولله الحمد،،

أشكرك على مساعداتك،، فقد أستفدت منها كثيرا،،

ما أتمناه هو أن تخصص أيام في الأجازة لتعليم التعامل مع الأكواد في الفيجوال بيسك مع الأكسيس

وكيفية وضع الأكواد وأمثله عليها،،

<<<وسأكون أول الحاضرين :)

تقبلي تحياتي/ مها

#13

تم رفع الموضوع ليستفيد الجميع من إبداعات الأستاذه زهره حفظها الله .

تحياتي ..

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

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