The best قام بنشر الثلاثاء at 19:02 الكاتب قام بنشر الثلاثاء at 19:02 19 ساعات مضت, Foksh said: هذه الفكرة التي اقترحتها .. تم تطبيقها على نموج فرعي واحد ، ونفس الفكرة طبقها على النماذج الفرعية التي تريدها Personnel_affairs.zip 90.93 kB · 5 downloads هكذا أخى عملت أزرار ووضعت أكواد لكنها لم تعمل فقمت بمسحها Personnel_affairs.rar
Foksh قام بنشر الأربعاء at 16:36 قام بنشر الأربعاء at 16:36 قمت بإعادة صياغة الأكواد وكتابتها بشكل يضمن عدم ظهور أخطار أثناء التنقل .. 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 1
ابو جودي قام بنشر الجمعة at 16:25 قام بنشر الجمعة at 16:25 انا شكلى جيت متأخر حبتين لكن أن تأتى متأخرا افضل من أن لا تأتى مبدئيا حتى انتهى من قرآة الموضوع من بدايته لارى تسلسل الافكار والأطروحات والنظريات اتمنى ان نلقى نظرة على هذا الموضوع :- ان شاء الله سوف أعود فى أقرب فرصة لأكمل وأنتهى لما بدأته ولكن ربما تجدون افكار جديده 1
ابو جودي قام بنشر الجمعة at 23:44 قام بنشر الجمعة at 23:44 طب مبدئيا كل الشكر والتقدير لاساتذتنا العظماء استاذى الجليل و معلمى القدير و والدى الحبيب الاستاذ @ابوخليل والاستاذ @Foksh ما قصور و وفوا وكفوا والله وبما أن الموضوع فى بدايته وقبل الابحار "روح" أي مشروع ناجح وضع الأساس السليم والذى يبدأ بالتحليل قبل التفكير فى الجدول ولكن الاهم كيف يمكن عمل تحليل النظم بأسس منهجيه صحيحة اولا وباختصار عند تصميم أى نظام: ابدأ بجمع كل المتطلبات بشكل كامل حدد الكيانات الأساسية وصفاتها أنشئ الجداول بشكل نظيف مع تحديد المفاتيح الأساسية اربط الجداول ببعضها عبر علاقات فعلية منظمة حافظ على مرونة الاستعلامات عبر بناء علاقات إضافية مؤقتة عند الحاجة سامع اللى بيقول هناك ايه الكلام ده ؟ ردا على هذا السؤال تفصيلا : كيف تقوم بعمل التحليل المناسب لمشروع قاعدة بيانات؟ 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 الفهرسة تكون حسب النوع: أساسي = بدون تكرار / أجنبي = يقبل التكرار لا تخف من تكرار اسم الحقل طالما هناك علاقة صحيحة مدعومة جيدا ..... يتبع 2
The best قام بنشر منذ 18 ساعات الكاتب قام بنشر منذ 18 ساعات السلام عليكم ورحمة الله وبركاته شكرا جزيلا لكم جميعا على الاهتمام الآن صممت نموذج ( Frm_Regist) لتسجيل التدريبات والاجازات والعقوبات وغير ذلك للموظفين وضعت فيه حقل غير منضم لجلب اسماء الموظفين وعلى سبيل المثال عملت نموذجين الأول (Frm_Trining) يجلب بيانات الموظفين اللى محتاجها تظهر من جدول البيانات الأساسية الثانى(Frm_Trining1) نموذج لتدريبات الموظف وبياناته طبعا من جدول التدريبات نختار اسم الموظف ثم الضغط على تسجيل التدريبات تظهر البيانات وقمت بتسجيل تدريب لموظف للتجريب هل الطريقة دى صحيحة ؟ وإن كانت كذلك أنفذها على البقية ( الاجازات والعقوبات وغير ذلك ) وإن كانت غير صحيحة فما الصح ؟ Personnel_affairs.accdb
Foksh قام بنشر منذ 17 ساعات قام بنشر منذ 17 ساعات هي عائدة لك ولأفكارك في التصميم ، لكن كفكرة جميلة .. قمت بتصحيح فكرة عدد السجلات الذي كان لم يعمل Personnel_affairs.zip
The best قام بنشر منذ 17 ساعات الكاتب قام بنشر منذ 17 ساعات 7 دقائق مضت, Foksh said: هي عائدة لك ولأفكارك في التصميم ، لكن كفكرة جميلة .. قمت بتصحيح فكرة عدد السجلات الذي كان لم يعمل Personnel_affairs.zip 125.42 kB · 0 downloads طيب تمام أنفذها على بقية النماذج ملحوظة: أثناء التصميم لفت نظرى شىء وهو لما بسجل بيانات التدريب بكتب تاريخ التدريب وتاريخ الانتهاء وبعد كده المدة وتاريخ مباشرة العمل #فقلت لنفسى ليه متبقاش المدة تلقائى تتحسب بناء على تاريخ البداية وتاريخ النهاية وتاريخ مباشرة العمل بردو تلقائى يكون التاريخ اللى بعد تاريخ الانتهاء مع مراعاة مندخلش يوم الجمعة والسبت فى الحسبة بمعنى لو تاريخ الانتهاء كان يوم خميس يجيب تاريخ يوم الاحد أرجو أن تكون الفكرة واضحة
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.