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

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

قام بنشر
  في 14‏/4‏/2025 at 23:04, Foksh said:

 

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

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

 

Personnel_affairs.zip 90.93 kB · 5 downloads

Expand  

هكذا أخى 

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

Personnel_affairs.rarFetching info...

قام بنشر

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

 

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.accdbFetching info...

قام بنشر
  في 19‏/4‏/2025 at 21:02, Foksh said:

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

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

 

Personnel_affairs.zip 125.42 kB · 0 downloads

Expand  

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

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

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

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

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

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

قام بنشر
  في 19‏/4‏/2025 at 21:16, The best said:

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

Expand  

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

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

 

 

Personnel_affairs.zipFetching info...

قام بنشر (معدل)
  في 20‏/4‏/2025 at 17:21, Foksh said:

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

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

 

 

Personnel_affairs.zip 139.99 kB · 4 downloads

Expand  

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

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

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

تم تعديل بواسطه The best
قام بنشر
  في 20‏/4‏/2025 at 17:21, Foksh said:

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

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

 

 

Personnel_affairs.zip 139.99 kB · 8 downloads

Expand  

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

قام بنشر
  في 21‏/4‏/2025 at 12:25, The best said:

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

Expand  

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

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

count = count + 1

 

قام بنشر
  في 21‏/4‏/2025 at 13:24, Foksh said:

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

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

count = count + 1

 

Expand  

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

قام بنشر
  في 21‏/4‏/2025 at 13:24, Foksh said:

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

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

count = count + 1

 

Expand  

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

  • Sad 1
قام بنشر
  في 21‏/4‏/2025 at 14:08, The best said:

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

Expand  

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

moda = daysCount + 1

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

قام بنشر
  في 21‏/4‏/2025 at 14:20, Foksh said:

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

moda = daysCount + 1

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

Expand  

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

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

قام بنشر
  في 21‏/4‏/2025 at 14:28, The best said:

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

Expand  

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

قام بنشر
  في 21‏/4‏/2025 at 14:33, Foksh said:

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

Expand  

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

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

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

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

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

قام بنشر
  في 21‏/4‏/2025 at 14:52, The best said:

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

 

Expand  

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

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

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

قام بنشر
  في 21‏/4‏/2025 at 15:25, Foksh said:

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

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

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

Expand  

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

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

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

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

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

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

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

قام بنشر
  في 21‏/4‏/2025 at 15:35, The best said:

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

Expand  

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

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

قام بنشر
  في 21‏/4‏/2025 at 15:40, Foksh said:

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

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

Expand  

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

قام بنشر
  في 21‏/4‏/2025 at 15:50, The best said:

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

Expand  

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

قام بنشر
  في 21‏/4‏/2025 at 15:53, Foksh said:

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

Expand  

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

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

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

قام بنشر
  في 21‏/4‏/2025 at 17:03, The best said:

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

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

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

Expand  

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

قام بنشر
  في 21‏/4‏/2025 at 17:07, Foksh said:

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

Expand  

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

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