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

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

قام بنشر
19 ساعات مضت, Foksh said:

 

هذه الفكرة التي اقترحتها ..

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

 

Personnel_affairs.zip 90.93 kB · 5 downloads

هكذا أخى 

عملت أزرار ووضعت أكواد لكنها لم تعمل فقمت بمسحها

Personnel_affairs.rar

قام بنشر

قمت بإعادة صياغة الأكواد وكتابتها بشكل يضمن عدم ظهور أخطار أثناء التنقل ..

 

Private Sub btnFirst_Click()
    If Me.RecordsetClone.RecordCount > 0 Then
        DoCmd.GoToRecord , , acFirst
    End If
End Sub

Private Sub btnNew_Click()
    If Me.AllowAdditions Then
        DoCmd.GoToRecord , , acNewRec
    Else
        MsgBox "النموذج لا يسمح بإضافة سجلات جديدة", vbExclamation + vbMsgBoxRight
    End If
End Sub

Private Sub btnNext_Click()
    With Me.RecordsetClone
        If .RecordCount > 0 Then
            .Bookmark = Me.Bookmark
            .MoveNext
            If Not .EOF Then
                DoCmd.GoToRecord , , acNext
            Else
                MsgBox "أنت في آخر سجل", vbInformation + vbMsgBoxRight
            End If
        End If
    End With
End Sub

Private Sub أمر553_Click()
    If Not Me.NewRecord And Me.CurrentRecord > 0 Then
        If MsgBox("هل تريد حذف السجل الحالي؟", vbYesNo + vbQuestion + vbMsgBoxRight, "تأكيد الحذف") = vbYes Then
            DoCmd.RunCommand acCmdDeleteRecord
        End If
    Else
        MsgBox "لا يوجد سجل لحذفه", vbExclamation + vbMsgBoxRight
    End If
End Sub

Private Sub أمر554_Click()
    With Me.RecordsetClone
        If .RecordCount > 0 Then
            .Bookmark = Me.Bookmark
            .MovePrevious
            If Not .BOF Then
                DoCmd.GoToRecord , , acPrevious
            Else
                MsgBox "أنت في أول سجل", vbInformation + vbMsgBoxRight
            End If
        End If
    End With
End Sub

Private Sub أمر555_Click()
    If Me.RecordsetClone.RecordCount > 0 Then
        DoCmd.GoToRecord , , acLast
    End If
End Sub

 

  • Like 1
قام بنشر

انا شكلى جيت متأخر حبتين :biggrin:
لكن أن تأتى متأخرا افضل من أن لا تأتى :yes:

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

اتمنى ان نلقى نظرة على هذا الموضوع :-

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

 

 

  • Like 1
قام بنشر

طب مبدئيا

كل الشكر والتقدير لاساتذتنا العظماء

استاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @ابوخليل :fff: والاستاذ @Foksh :fff:

ما قصور و وفوا وكفوا والله

وبما أن الموضوع فى بدايته وقبل الابحار

"روح" أي مشروع ناجح وضع الأساس السليم

والذى يبدأ بالتحليل قبل التفكير فى الجدول 

ولكن الاهم كيف يمكن عمل تحليل النظم  بأسس منهجيه صحيحة

 

اولا وباختصار عند تصميم أى نظام:

  • ابدأ بجمع كل المتطلبات بشكل كامل

  • حدد الكيانات الأساسية وصفاتها

  • أنشئ الجداول بشكل نظيف مع تحديد المفاتيح الأساسية

  • اربط الجداول ببعضها عبر علاقات فعلية منظمة

  • حافظ على مرونة الاستعلامات عبر بناء علاقات إضافية مؤقتة عند الحاجة

سامع اللى بيقول هناك ايه الكلام ده ؟:biggrin:

 

ردا على هذا السؤال تفصيلا : كيف تقوم بعمل التحليل المناسب لمشروع قاعدة بيانات؟

1.     فهم متطلبات المشروع (Gather Requirements)

  • اجمع كل التفاصيل من العميل أو من نفسك (لو بتعمل لنفسك).
  • اسأل أسئلة مثل:
    • ما هو الهدف الأساسي من القاعدة؟
    • ما هي أنواع المعلومات التي يجب تخزينها؟
    • ما العمليات التي يقوم بها المستخدمون؟ (إدخال، تعديل، بحث، تقارير، الخ)
    • هل في صلاحيات مختلفة للمستخدمين؟
    • ما العمليات المستقبلية المحتملة؟
       

 

2.     تحديد الكيانات (Entities) الرئيسية

  • الكيانات هي الأشياء أو الأشخاص أو الأحداث التي تحتاج إلى تسجيل بيانات عنها

في مثال "شئون العاملين" الكيانات قد تكون:

    • الموظف (Employee)
    • الوظيفة (Job Title)
    • القسم (Department)
    • الإجازات (Vacations)
    • المرتبات (Salaries)
    • الحضور والانصراف (Attendance)
    • التأمينات (Insurance)
    • الجزاءات (Penalties)
    • المكافآت (Rewards)

 

3.     تعريف السمات (Attributes) لكل كيان

  • لكل كيان تحدد المعلومات المرتبطة به

مثلا للموظف (Employee):

    • رقم الموظف
    • الاسم
    • تاريخ الميلاد
    • العنوان
    • رقم الهوية
    • رقم الهاتف
    • تاريخ التعيين
    • الوظيفة الحالية
    • المرتب الأساسي
    • الحالة الاجتماعية .... الخ...

 

4.     تحديد العلاقات بين الكيانات

حدد كيف ترتبط الكيانات ببعضها
مثال
:

  • كل موظف ينتمي إلى قسم واحد  علاقة واحد إلى متعدد (One-to-Many)
  • كل موظف يمكن أن يكون له أكثر من إجازة علاقة واحد إلى متعدد أيضا

     ¤  مهم جدا تحديد اتجاه العلاقة ونوعها

 

 

كيف تحدد وضع التصور للجداول والهيكل؟

1.     تصميم الجداول بشكل طبيعي (Normalization)

  • تأكد إن الجداول تكون بدون تكرار للمعلومات (تجنب تكرار نفس البيانات في أكثر من جدول)
  • كل جدول يمثل كيان مستقل.

2.     المفاتيح الأساسية (Primary Keys)

  • كل جدول لازم يحتوي على مفتاح أساسي (Primary Key) يميز كل سجل بشكل فريد

مثال:

  • جدول الموظفين : الحقل EmployeeID   \ مفتاح أساسي
    ولكن أنا لا احب و لا أفضل التعامل مع حقل الـ ID  الافتراضى داخل الجداول الأفضل ترك حقل ID الذي ينشئه Access كمفتاح أساسي (AutoNumber) بدون تغيير
    حقل ID الأساسي يبقى دائما موجود داخل الجدول داخلي ما نلمسه وما نستعمله في الربط الخارجي فقط يحفظ سلامة السجلات داخليا

إنشاء حقل يدوي خاص بك مثلا EmployeeID  نوعه Number (Long Integer)  / أو  نص حسب الرغبة

ضبط خاصية الفهرسة: "مفهرس بدون تكرار" عندما يكون نوعه  أساسي (Primary )
أو "مفهرس يقبل التكرار" حسب نوعه
 أجنبي (Foreign Key)

استخدام الحقل اليدوي (EmployeeID مثلا) للربط بين الجداول بدلا من ID
 

هل عمل العلاقات مباشرة أم أثناء الاستعلامات؟
الأساس الدائم = العلاقات الفعلية في تصميم القاعدة
الحالات الخاصة المؤقتة = علاقات مؤقتة داخل الاستعلامات

 

✍️ نصيحة ذهبية:
دائما أنشئ المفتاح الأساسي بيدك
سميه باسم يعبر عن الجدول
خصائص فهرسته: فهرسة بدون تكرار

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

حتى لا تواجه مشاكل لاحقا مع الاستعلامات أو الربط أو حتى مع البرمجة اتبع القواعد دي:
اسم المعرف = اسم الجدول بدون تكرار زائد + "ID"

 مثلاً:

 اسم الجدول       اسم الحقل المفتاح الأساسي
   Employees        EmployeeID
Departments     DepartmentID
     Vacations          VacationID
        Salaries             SalaryID

 

 

قاعدة تسمية المفاتيح الأجنبية (Foreign Keys)
لما تيجي تنقل مفتاح لجدول تاني (رابط)، خليه بنفس الاسم تمامًا!

مثال:
عندك جدول tblEmployees  وفي جدول tblVacations  بتربط الموظف
اسم الحقل في Vacations هيكون أيضا : EmployeeID  نفس الاسم بدون تغيير

ليه؟
عشان لما تستخدم استعلامات فيها JOIN تربطهم بدون لخبطة أو إعادة تسمية أو لبس في فهم العلاقات

 

خصائص الفهرسة لكل حالة

الحالة الفهرسة
في الجدول الأصلي (المفتاح الأساسي)             مفهرس لا يقبل التكرار (Indexed - No Duplicates)
في الجدول المرتبط (مفتاح أجنبي)             مفهرس يقبل التكرار (Indexed - Duplicates OK)

 

هل استخدام نفس الاسم (EmployeeID مثلا) يسبب مشكلة؟

لا طالما أنت ملتزم بالعلاقات الصحيحة  (Relationships)   واستخدمت أسماء الجداول والحروف الواضحة في الاستعلامات  فلن تحدث مشكلة

 Access سوف يتعامل مع الحقول حسب السياق (اسم الجدول قبل الحقل لو حصل تعارض بسيط)

ملاحظة إضافية

     تجنب الأسماء المحجوزة مثل (Name, Date, Year, User) لأنها قد تسبب مشاكل لاحقًا في الكود أو الاستعلامات
     حاول دائمًا تسمية الحقول بشكل يوحي بالمحتوى (BirthDate أفضل من Date فقط).

 

✍️ المختصر المفيد و الخلاصة :

أنشئ أنت الحقول بنفسك = أفضل تحكم وجودة

سم المفاتيح بشكل احترافي اسم الجدول  +   ID

الفهرسة تكون حسب النوع: أساسي = بدون تكرار /  أجنبي = يقبل التكرار

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

 

..... يتبع

 

 

  • Like 2
قام بنشر

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

شكرا جزيلا لكم جميعا على الاهتمام 

الآن صممت نموذج ( Frm_Regist) لتسجيل التدريبات والاجازات والعقوبات وغير ذلك للموظفين 

وضعت فيه حقل غير منضم لجلب اسماء الموظفين وعلى سبيل المثال عملت نموذجين 

الأول (Frm_Trining) يجلب بيانات الموظفين اللى محتاجها تظهر من جدول البيانات الأساسية 

الثانى(Frm_Trining1) نموذج لتدريبات الموظف وبياناته طبعا من جدول التدريبات 

 نختار اسم الموظف ثم الضغط على تسجيل التدريبات تظهر البيانات وقمت بتسجيل تدريب لموظف للتجريب

 هل الطريقة دى صحيحة ؟  وإن كانت كذلك أنفذها على البقية ( الاجازات والعقوبات وغير ذلك ) وإن كانت غير صحيحة فما الصح ؟

 

Personnel_affairs.accdb

قام بنشر

هي عائدة لك ولأفكارك في التصميم ، لكن كفكرة جميلة ..

قمت بتصحيح فكرة عدد السجلات الذي كان لم يعمل

 

Personnel_affairs.zip

قام بنشر
7 دقائق مضت, Foksh said:

هي عائدة لك ولأفكارك في التصميم ، لكن كفكرة جميلة ..

قمت بتصحيح فكرة عدد السجلات الذي كان لم يعمل

 

Personnel_affairs.zip 125.42 kB · 0 downloads

طيب تمام أنفذها على بقية النماذج 

ملحوظة: أثناء التصميم لفت نظرى شىء وهو 

لما بسجل بيانات التدريب بكتب تاريخ التدريب وتاريخ الانتهاء وبعد كده المدة وتاريخ مباشرة العمل #فقلت لنفسى ليه متبقاش المدة تلقائى تتحسب بناء على تاريخ البداية وتاريخ النهاية 

وتاريخ مباشرة العمل بردو تلقائى يكون التاريخ اللى بعد تاريخ الانتهاء

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

أرجو أن تكون الفكرة واضحة

قام بنشر
19 ساعات مضت, The best said:

أرجو أن تكون الفكرة واضحة

الفكرة واضحة جداً ، وستعمل على تسهيل عملية الادخال للبيانات بشكل ملحوظ ..

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

 

 

Personnel_affairs.zip

قام بنشر (معدل)
1 ساعه مضت, Foksh said:

الفكرة واضحة جداً ، وستعمل على تسهيل عملية الادخال للبيانات بشكل ملحوظ ..

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

 

 

Personnel_affairs.zip 139.99 kB · 4 downloads

اولا: المدة زايدة يوم عن المدة من تاريخ البدء لتاريخ الانتهاء لاحظ الصورة المرفقة المفروض المدة تبقى 3 مش 4

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

Screenshot_٢٠٢٥-٠٤-٢٠-٢٠-٥٤-٠٦-٥٢٦_com.miui.gallery-edit.jpg

تم تعديل بواسطه The best
قام بنشر
19 ساعات مضت, Foksh said:

الفكرة واضحة جداً ، وستعمل على تسهيل عملية الادخال للبيانات بشكل ملحوظ ..

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

 

 

Personnel_affairs.zip 139.99 kB · 8 downloads

شوفت حضرتك تعليقى

قام بنشر
55 دقائق مضت, The best said:

شوفت حضرتك تعليقى

نعم أخي العزيز ,,

الحل بسيط ان شاء الله ، فقط في الدالة في المديول قم بإزالة 1 + :-

count = count + 1

 

قام بنشر
4 دقائق مضت, Foksh said:

نعم أخي العزيز ,,

الحل بسيط ان شاء الله ، فقط في الدالة في المديول قم بإزالة 1 + :-

count = count + 1

 

تمام ... طيب وبخصوص يوم السبت عمل لبعض المدارس والأقسام

قام بنشر
41 دقائق مضت, Foksh said:

نعم أخي العزيز ,,

الحل بسيط ان شاء الله ، فقط في الدالة في المديول قم بإزالة 1 + :-

count = count + 1

 

لما أزالتها مدة التدريب بتبقى نتيجة واحدة  بتعطى رقم (1) أيا كانت التواريخ

  • Sad 1
قام بنشر
8 دقائق مضت, The best said:

لما أزالتها مدة التدريب بتبقى نتيجة واحدة  بتعطى رقم (1) أيا كانت التواريخ

الخطأ مردود ، اعتذر منك ، المقصود في النموذج الفرعي في الدالة UpdateModa ، أزل 1+ من السطر
 

moda = daysCount + 1

ولكن لنفترض أن تاريخ بدء التدريب = 2025-04-01 وتاريخ الإنتهاء = 2025-04-04 أي الأيام ( 01 ، 02 ، 03 ، 04 ) ستكون 4 ايام وليس 3 ان كان ما فهمته صحيح ,, ولكن انت أعلم بمشروعك في النهاية 

قام بنشر
6 دقائق مضت, Foksh said:

الخطأ مردود ، اعتذر منك ، المقصود في النموذج الفرعي في الدالة UpdateModa ، أزل 1+ من السطر
 

moda = daysCount + 1

ولكن لنفترض أن تاريخ بدء التدريب = 2025-04-01 وتاريخ الإنتهاء = 2025-04-04 أي الأيام ( 01 ، 02 ، 03 ، 04 ) ستكون 4 ايام وليس 3 ان كان ما فهمته صحيح ,, ولكن انت أعلم بمشروعك في النهاية 

تمام كده أحسنت 

والملاحظة التانية بتاعة إنه يوم السبت  بيكون عمل لبعض المدارس  

قام بنشر
4 دقائق مضت, The best said:

والملاحظة التانية بتاعة إنه يوم السبت  بيكون عمل لبعض المدارس  

اشرحها لي اكثر لأنا ما فهمتها 

قام بنشر
15 دقائق مضت, Foksh said:

اشرحها لي اكثر لأنا ما فهمتها 

الإجازة الأسبوعية عندنا يومى الجمعة والسبت 

لكن بعض المدارس والأقسام تعمل يوم السبت 

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

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

أرجو أن تكون الفكرة واضحة 

قام بنشر
31 دقائق مضت, The best said:

الإجازة الأسبوعية عندنا يومى الجمعة والسبت 

 

اول شيء وين الاجازات في الموضوع ؟؟؟؟؟؟

ولا انت تقصد الدورات أو التدريبات هي نفسها الاجازات ؟؟؟؟؟

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

قام بنشر
3 دقائق مضت, Foksh said:

اول شيء وين الاجازات في الموضوع ؟؟؟؟؟؟

ولا انت تقصد الدورات أو التدريبات هي نفسها الاجازات ؟؟؟؟؟

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

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

فلو موظف كان ميعاد تدريبه يوم الاثنين 2025/4/21 وتاريخ انتهاء التدريب يوم الخميس 2025/4/24 يبقى تاريخ مباشرة العمل له فى المدرسة يوم الأحد 2025/4/27

وده لو مدرسته إجازة من العمل يومى الجمعة والسبت

#وده اللى حضرتك عملته فى الدالة 

لكن لو مدرسته بتاخد الجمعة فقط إجازة من العمل يبقى تاريخ مباشرة العمل السبت 2025/4/26

وده اللى أقصده ونفذها ازاى 

حضرتك تمام ولا لسة الأمور مختلطة

قام بنشر
3 دقائق مضت, The best said:

حضرتك تمام ولا لسة الأمور مختلطة

الأمور تمام ، ولكن ما الذي سيميز المدارس التي يبدأ دوامها السبت من تلك التي تبدأ الأحد ؟؟؟؟؟؟

للتأكيد كل يوجد جدول للمدارس ؟؟؟

قام بنشر
8 دقائق مضت, Foksh said:

الأمور تمام ، ولكن ما الذي سيميز المدارس التي يبدأ دوامها السبت من تلك التي تبدأ الأحد ؟؟؟؟؟؟

للتأكيد كل يوجد جدول للمدارس ؟؟؟

ممكن أعمل لحضرتك جدول للمدارس بس ايه الحقول اللى حضرتك محتاجها

قام بنشر
2 دقائق مضت, The best said:

ممكن أعمل لحضرتك جدول للمدارس بس ايه الحقول اللى حضرتك محتاجها

يا صديقي ، الفكرة ليست في الجدول فقط ، فعلى سبيل المثال ، سنضطر الى تمييز ان الموظف الفلاني موظف للمدرسة الفلانية .. انت فاهم قصدي ؟؟

قام بنشر
منذ ساعه, Foksh said:

يا صديقي ، الفكرة ليست في الجدول فقط ، فعلى سبيل المثال ، سنضطر الى تمييز ان الموظف الفلاني موظف للمدرسة الفلانية .. انت فاهم قصدي ؟؟

الصراحة ما فهمت !!!

لكن هناك حقل للمدرسة فى بيانات الموظف 

وفيه جدول بالفعل للمدارس أنا كنت عامله

قام بنشر
2 دقائق مضت, The best said:

الصراحة ما فهمت !!!

لكن هناك حقل للمدرسة فى بيانات الموظف 

وفيه جدول بالفعل للمدارس أنا كنت عامله

طيب تمام يا صديقي ، الآن سأقوم بتفقد الجدول وإضافة حقل من نوع Yes/No دلالة على أن المدرسة هذه لها مباشرة دوام يوم السبت أم لا ,, وبناءً عليه سنقوم بتعديل الدالة للتمييز بين المدارس ، ما رأيك ؟

قام بنشر
الان, Foksh said:

طيب تمام يا صديقي ، الآن سأقوم بتفقد الجدول وإضافة حقل من نوع Yes/No دلالة على أن المدرسة هذه لها مباشرة دوام يوم السبت أم لا ,, وبناءً عليه سنقوم بتعديل الدالة للتمييز بين المدارس ، ما رأيك ؟

هذا ما كنت سأقوله 

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