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

نجوم المشاركات

  1. ابوخليل

    ابوخليل

    أوفيسنا


    • نقاط

      6

    • Posts

      12830


  2. Foksh

    Foksh

    الخبراء


    • نقاط

      5

    • Posts

      3232


  3. ابو جودي

    ابو جودي

    أوفيسنا


    • نقاط

      4

    • Posts

      7033


  4. kkhalifa1960

    kkhalifa1960

    الخبراء


    • نقاط

      2

    • Posts

      2023


Popular Content

Showing content with the highest reputation on 04/18/25 in all areas

  1. عين الصواب ، واعتقد انه حل مثالي .. وتطبيقاً كما أشار معلمنا الجليل @ابوخليل ، قمت بانشاء 4 حقول في الجدول Tbl_saf كالآتي :- EnteredBy SpellingReviewedBy WrittenBy WritingReviewedBy حقول نصية ، وقمت باضافة 4 مربعات نص في التقرير في الجزء PageFooterSection ، وتم استخدام الدالة Dlookup كالآتي :- Tx05 : =DLookUp("EnteredBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx06 : =DLookUp("SpellingReviewedBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx07 : =DLookUp("WrittenBy","Tbl_saf","safType = '" & [Combo5] & "'") Tx08 : =DLookUp("WritingReviewedBy","Tbl_saf","safType = '" & [Combo5] & "'") حيث تم الاعتماد على الكومبوبوكس Combo5 كشرط لمعرف الصف Database35.zip
    2 points
  2. مشاركة مع اخي العزيز فادي واضافة الى ما افاد به وأجاد بعض الملاحظات البسيطة من واقع تجربة : ملاحظة فنية : - تسميات الحقول .. مثلا rkm_mlf في الجدول الرئيسي يجب ان يختلف في الجداول الأخرى اختلافا طفيفا اما بزيادة حرف او رقم .. وهذا ينطبق على جميع تسميات الحقول بين الجداول السبب في افضلية ايجاد فارق في التسمية هي احيانا تضطر الى ضم هذه الجداول في استعلام واحد .. حينها ستعرف فائدة التفرقة . ملاحظات في التصميم : تنقسم البيانات المتجددة الى نوعين .. 1- نوع يكون اصله في جدول الاسماء .. وما يستجد في جدول منفصل ، مع تحديث القيمة في جدول الاسماء عند كل حركة جديدة .. مثل الرتبة وترقياتها ، والوظيفة وتدرجاتها ، والنقل داخل المحافظة نفسها ( مكان العمل ) ، والمؤهل وتاريخه ونحو ذلك هذه الفكرة ستجد ثمرتها عظيمة مستقبلا عند البحث والتصفيات الجماعية وعمل التقارير .. ستكون سلسة وسريعة .. لان المصدر جدول واحد فقط التفاصيل الأخرى غالبا لن تحتاجها الا في الاستعلام عن موظف محدد بعينه 2- النوع الثاني الاصل يكون في جدول مستقل مثل الإجازات والتدريبات والجزاءات والعقوبات .. ونحو ذلك ------------------------------------- لا ننسى الجداول الخدمية وهي مهمة جدا مثل : جدول المؤهلات ، جدول الوظائف ... الخ وجميع الأشياء التي تتوقع البحث والاستعلام عنها يجب ان يكون لها جداول خدمية خاصة المهم يجب ان تعلم ان اي مشروع 80% منه هو اجادة وضبط الجداول فلا تخرج من الجداول ابدا حتى تتأكد انك استوفيت وأحكمت جميع اطراف مشروعك ناقش واعرض جداولك واستمر في المناقشة والاستفسار حتى تأخذ الضوء الاخضر من اخوانك هنا ..
    2 points
  3. أولًا: أهداف النظام تنظيم عمليات تسجيل اليوميات بجميع أنواعها (اعتيادية - عارضة - بدل ساعات - بدل مبيت – تصريح تأخير – تصريح إنصراف مبكر - .... الخ ). ضمان الالتزام بالسياسات المعتمدة للموارد البشرية و اللوائح المنظمة. تسهيل الرقابة الداخلية عبر ربط قواعد لوائح العمل و تالحقق منها و قبل التسجيل الفوري لأنواع اليوميات التى تخص الأجازات. ثانيًا: قواعد الأجازات العامة ضرورة إدخال كافة البيانات المطلوبة (كود الموظف - نوع الأجازة - تاريخ البداية والنهاية). التحقق من صلاحية التواريخ وإدخالها بالشكل الصحيح. يتم التحقق من وجود يوميات سابقة فى نفس التاريخ لتفادي التعارض أو التكرار. ثالثًا: القواعد الخاصة بالأجازة العارضة أقصى مدة للأجازة العارضة : يومان عمل متتاليان فقط. ممنوع أن تتخلل الأجازة العارضة عطلات رسمية أو أسبوعية. يمنع تسجيل أجازة عارضة بعد أو قبل أجازة اعتيادية سواء مباشرة أو غير مباشرة حتى لو بينهما عطلات ( أسبوعية / رسمية ). ممنوع تسجيل أجازة عارضة تالية مباشرةً لإجازة عارضة سابقة مدتها يومان، لتفادي أجازات مطولة غير مسموحة حتى لا تتعدى اليومان. يخضع الحد السنوي للأجازات الاعتيادية أو العارضة لسياسات الموارد البشرية المعتمدة. رابعًا: القواعد الخاصة بالأجازات الأخرى الأجازة الاعتيادية تخضع للسياسات العامة دون حدود لعدد الأيام المتتالية بشرط اعتماد التوافر في الرصيد. رقم مسلسل خاص بكل أجازة اعتيادية لعمل حصر عدد ألايام المتصلة أى التى تتاببع فى التاريخ ولكن يتخللها عطلات. أجازات بدل الساعات وبدل المبيت يتم التحقق من أحقيتها بناءً على النوع المختار يمكن فقط لبدل الساعات والبدل مبيت أن يكون تاريخ بدء الأجازة أكبر من أو أصغر من تاريخ النهاية على يكون تاريخ نهاية الاجازة هو يوم البدل والذى قد يكون يوم عطلة أو يوم عمل عادى. أى نوع أخر من الأجازات أو اليوميات لابد وأن يكون تاريخ البدء أصغر من تاريخ الإنتهاء. السؤال هو : كيف يمكن تحقيق ذلك ؟! أم هو صعب مرفق صغير يحتوى على الجداول الاساسية حتى يتم أخذ النقاط التالية فى الحسبان عند بناء قاعدة البيانات و العمل عليها جدول يحدد تواريخ العطلات الرسمية "tblHolidaysOfficial". جدول يحدد أسماء أيام العطلات الأسبوعية "tblHolidaysWeekly". جدول يحدد انواع اليوميات "tblDailyType". بالنسبه لجدول " tblDailyType" يحتوى على الحقل : IsRecordMultiple بوليانى ليدل على أن اليومية تستوجب أن يتم تسجيلها فى سجل واحد فقط فردى أى لتاريخ واحد فقط أم لعدة تواريخ على عدة سجلات. وأخير الجدول المطلوب تسجيل اليوميات بداخله "tblDailyRecords". توضيح مطلوب عند إدخال أو تحديد تاريخ البدء وتاريخ الإنتهاء يتم التسجيل للبيانات داخل جدول "tblDailyRecords" على أن يكون سجل لكل تاريخ بداية من تاريخ البدء وحتى تاريخ الانتهاء. و طبعا الشروط اللى انا كتبتها تخص لائحة قانونيه حسب قانون العمل المصرى لا اعرف قد يختلف من بلد لأخر ولكن على الأقل ما أعرفه لإضفاء المرونة و عدم التقيد بإستخدام أسماء العطلات الرسمية بشكل مباشر من الكود لذلك طلبت أن يتم الإعتماد على الجدول "tblHolidaysWeekly". و إن أمكن تحقيق ذلك هل يمكن أن أرى طرح أساتذتى و أخوانى الكرام هذا الجزء و بدون منازع هو ثلث إدارة الموارد البشرية للعاملن داخل أى مؤسسة بدون مبالغة و هو صعب مش سهل لان ممكن يتم تسجيل اجازة فى يوم أو فى جلسة عمل و بعد حفظ السجل أو اغلاق وإعادة فتح القاعدة يتم عمل إمتداد لنفس نوع الأجازة و هنا هو التحدى الحقيقى و بوجه خاص مع النوعين ( أجازة إعتيادية / أجازة عارضة ) بسبب اللوائح التى تم ذكرها سابقا فى القواعد السابقة و مرة أخرى لابد من عمل حصر لعدد الاجازات الاعتيادية لكل موظف و التى تساوي أو تتعدي عدد 6 أيام متصلين أى يتخللهم عطلات ( أسبوعيه / رسمية ) و التى قد يتم تسجيلها على أكثر من جلسة عمل أو جلستين عمل أو حتى 6 جلسات عمل وهنا تحدى آخر أه علشان محدش يقول داخل يشغلنا أو داخل يستظرف وبيطلب طلب كبير أو ضخم لأنه متشعب جدا وقد يكون معقد أو هو مش عارف يعنى يعمل اللى بيقوله ده أنا تقريبا بفضل الله تعالى انتهيت من كل ده وفى حيز التجربــة ولكن الموضوع كان تحدى وكان مبنى على أفكارى الضئيلة و المتواضعة وطبعا لأن أفكارى دائما قد تكون معقدة أو لأنه أنا مجرد هاو لذلك أريد أن أرى أفكاركم و أطروحاتكم نظريا و عمليا و مناقشة عندما تستدعى الحاجة إما لأعدل أفكارى أو أكمل ما ينقصنى لا تعنى كلمة تحدى التى استخدمها هو التنافس او تحدى الاشخاص فمن أنا لأتحدث مستخدما هذه العبارات بمعناها الحرفى مع أساتذتى العظماء و أخوانى الكرام ولكن أقصد التحدى فى ترتيب الإفكار والخطوات وتطبيق القيود والتحققات داخل الكود واثناء التسجيل سواء كان التسجيل لليومية فى جلسه عمل واحده أو مع عدة جلسات عمل لنفس نوع اليومية أو أنواع اليوميات التى لها تحققات خاصة لنفس الموظف وأخيرا دمتم بكل حب و طيبتم وبيض الله وجوهكم شروط وقيود لائحة الأجازات.accdb
    1 point
  4. شكرا جزيلا أخي الفاضل وبارك الله فيك وأكثر الله من أمثالك وبارك الله في أخي الفاضل والأب الفاضل ( ابو خليل )
    1 point
  5. اخى الحبيب لا داعى للاعتذار .. أولا كلنا أخوه فقط انا طلبت منكم ذلك للمصلحة العامة بحيث يسهل الوصول الى الموضوع عند عمليات البحث داخل موضوعات المنتدى فى المستقبل لكم او لاى طالب علم أخى الحبيب بالفعل تم تعديل العنوان
    1 point
  6. اعتذر جدا واسف وحقك عليه لكن هل ممكن تساعدني في اختيار العنوان تسلم ايدك استاذي
    1 point
  7. انا شكلى جيت متأخر حبتين لكن أن تأتى متأخرا افضل من أن لا تأتى مبدئيا حتى انتهى من قرآة الموضوع من بدايته لارى تسلسل الافكار والأطروحات والنظريات اتمنى ان نلقى نظرة على هذا الموضوع :- ان شاء الله سوف أعود فى أقرب فرصة لأكمل وأنتهى لما بدأته ولكن ربما تجدون افكار جديده
    1 point
  8. مشاركة مع استاذى الجليل و معلمى القدير الاستاذ @ابو عارف وبعد إذن أستاذى هناك بعض الحالات التي قد تستوجب تعديلات إضافية لضمان التوافق بين الأنوية المختلفة (32 بت و 64 بت) وكذلك بين إصدارات الويندوز وأوفيس المختلفة عند التعامل مع دوال الـ API في VBA و يجب الانتباه لها: في النظام 32 بت، النوع Long يستخدم بشكل طبيعي لتخزين المؤشرات (pointers)، لكن في النظام 64 بت، يجب استخدام LongPtr بدلاً من Long لتخزين المؤشرات. المشكلة: إذا لم تستخدم LongPtr في النظام 64 بت، فقد تحدث أخطاء في الحسابات التي تتعلق بالحجم أو العناوين، لأن الـ Long لا يدعم العناوين الأكبر في الأنظمة 64 بت. ملاحظة: في الأنظمة 64 بت، LongPtr قادر على التعامل مع الأرقام التي تتجاوز سعة الـ Long العادية (التي تصل إلى 2,147,483,647). في الأنظمة 32 بت، LongPtr يتم تحديده تلقائيًا ليكون Long. التعامل مع السلاسل النصية (Strings) في بعض الأحيان، قد تحتاج إلى تعديل طريقة تعريف السلاسل النصية المستخدمة مع الـ API إذا كنت تستخدم سلاسل نصية مع الـ API، تأكد من إضافة ByVal و ByRef بشكل صحيح استخدم String * n بدلاً من String في بعض الحالات التي تتطلب أن تكون السلسلة ثابتة الطول التعامل مع الهياكل (Structures) في بعض الأحيان، تستخدم الهياكل (مثل Type في VBA) مع دوال الـ API. إذا كنت تستخدم هياكل كبيرة، فقد تحتاج إلى التأكد من أن الأنواع داخلها متوافقة مع النظام 64 بت تأكد من أن جميع الهياكل تتعامل بشكل صحيح مع الأنواع مثل LongPtr بدلاً من Long أو Integer عندما يتعلق الأمر بالمؤشرات لأنه قد يتغير حجم الحقول في الهيكل بين الأنوية 32 و 64 بت، مما يسبب أخطاء في التعامل مع الذاكرة أو المؤشرات التأكد من استخدام #If و #ElseIf بشكل مناسب عند التعامل مع دوال API في VBA وتحديد التوافق بين الأنظمة 32 بت و 64 بت، تأكد من استخدام #If, #ElseIf و #End If بشكل صحيح عند تخصيص الوظائف للأجهزة ذات الأنوية المختلفة. الشرح السابق يوضح الفرق فى التعامل مع النواتان و كتابة الكود بشكل صحيح ليصبح الكود متوافقا بين النواتان لانه لو قمت بالاستبدال لن يعمل على النواة 32
    1 point
  9. و عليكم السلام و رحمة الله و بركاته في اسطر حمراء غير: Private Declare Function الى: Private Declare PtrSafe Function بالتوفيق
    1 point
  10. Me.الديانه.RowSource = "" ' Me.الديانه.Value = Null Me.الحالة_الاجتماعية.RowSource = "" ' Me.الحالة_الاجتماعية.Value = Null لزم التنويه
    1 point
  11. تفضل استاذ @سامر محمود محاولتي الثانية . عند فتح النموذج (frm_EmpQuestions) الخطوات حسب الترقيم بالون الأحمر .المرفق للتجريب .... ووافني بالرد . SamerFinal.rar
    1 point
  12. عليكم السلام اذا كل صف له مملىء ومراجعه وكاتب ومراجعه ارى الافضل .. انك تضيف 4 اعمدة في جدول الصفوف وتكتب الاسماء امام كل صف كذا يمكن جلب الاسماء بناء على صف التقرير ايضا التعديل والتغيير عليهم يكون يسيرا من خلال فورم الصف
    1 point
  13. تم جلب اسماء الطلاب حسب شعبهم وعمل كل شئ ماعدا الباركود هل تريدة بالتقرير أم بالفورم حسب رقم الباركود الذي خلقته من كود الطالب والمادة ؟؟؟ واذا تريد شئ أخر . DDMhamed.rar
    1 point
  14. وعليكم السلام ورحمة الله وبركاته 🤗 .. تفضل البرنامج ، اضغط هنا .
    1 point
  15. وعليكم السلام ورحمة الله وبركاته تم تعديل المعادلات ليكون ارتباطها بالخلية N9 فقط في صفحة استدعاء ومن ضمنها الاعمدة المخفية D & K مع تعديل طفيف بالكود bac test1.xlsm
    1 point
  16. =============================================( صور + مرفق + فيديو ) Update: 🌹 ما في مساهم بدالة او كود استكمال 1- تحسين مظهر بالترتيب شنو راي @Foksh 2- اضافة نسخة الجدول ببناء جملة كود فورية عند التحديد 2- + اضافة عرض وضع التصميم + جدول + حذف 3- اضافة عرض الجدول المحدد الى وضع الاستعلام لاستخراج جملة الكول كاستنباط ثاني سريع ومختصر 4- تحسن باضافة دوال بوحدة النمطية لعرض رسائل @Moosak ☕🌹😇 - كانت تسبب ببعض التأخير عند الفتح مع زقلله 😂 دالة y_SubTitle As String Dim v_My_Msg_Type As MsgType Dim v_My_Bottns As Bottons Dim v_My_Ar_Eng As language Dim v_My_Auto_Close As Boolean Dim v_My_Close_After_Seconds As Double Public v_My_Response As Response Public IsMsgFormOpen As Boolean '===============================( معالجة ظهور الشاشة ' في قسم التصريحات العامة للنموذج Private Declare PtrSafe Function LockWindowUpdate Lib "user32" (ByVal hwndLock As LongPtr) As Long Private m_blnFormLoaded As Boolean Private m_colControls As Collection ' دالة رئيسية قابلة للاستدعاء Public Function LoadFormSafely(ByVal strname As String) As String On Error GoTo ErrorHandler Dim strFormName As String ' الحصول على اسم النموذج بطريقة آمنة If Not (Forms(strname) Is Nothing) Then strFormName = Forms(strname).name Else LoadFormSafely = "Error: Not called from a form" Exit Function End If ' تهيئة المجموعة Set m_colControls = New Collection ' تعطيل التحديثات المرئية LockWindowUpdate Application.hWndAccessApp Forms(strname).Painting = False ' تحميل البيانات بدون تأثيرات مرئية If Not RefreshFormDataSilently(strFormName) Then LoadFormSafely = "Error: Failed to refresh data" Exit Function End If ' تمكين التحديثات Forms(strname).Painting = True LockWindowUpdate 0 m_blnFormLoaded = True LoadFormSafely = "Success: Form " & strFormName & " loaded successfully" Exit Function ErrorHandler: ' استعادة الإعدادات في حالة حدوث خطأ If Not m_colControls Is Nothing Then Set m_colControls = Nothing End If LockWindowUpdate 0 If Not (Forms(strname) Is Nothing) Then Forms(strname).Painting = True End If LoadFormSafely = "Error: " & Err.Description End Function ' دالة محسنة لتحديث بيانات النموذج Private Function RefreshFormDataSilently(strFormName As String) As Boolean On Error GoTo ErrorHandler Dim ctl As Control Dim ctlState As Object Dim frm As Form Set frm = Forms(strFormName) ' حفظ حالة العناصر For Each ctl In frm.Controls Set ctlState = CreateObject("Scripting.Dictionary") ctlState.Add "Name", ctl.name ctlState.Add "Enabled", ctl.Enabled ctlState.Add "Locked", ctl.Locked ctlState.Add "Visible", ctl.Visible If TypeOf ctl Is SubForm Then ctlState.Add "SourceObject", ctl.SourceObject End If m_colControls.Add ctlState, ctl.name Next ctl ' تعطيل العناصر مؤقتاً For Each ctl In frm.Controls If Not (TypeOf ctl Is Label) And Not (TypeOf ctl Is Image) Then ctl.Enabled = False ctl.Locked = True If TypeOf ctl Is SubForm Then ctl.SourceObject = "" End If End If Next ctl ' تحديث مصدر البيانات If frm.RecordSource <> "" Then frm.RecordSource = frm.RecordSource End If ' تأخير لضمان الاستقرار Dim t As Single t = Timer Do While Timer < t + 0.2 DoEvents Loop ' استعادة حالة العناصر For Each ctl In frm.Controls If IsInCollection(m_colControls, ctl.name) Then Set ctlState = m_colControls(ctl.name) ctl.Enabled = ctlState("Enabled") ctl.Locked = ctlState("Locked") ctl.Visible = ctlState("Visible") If TypeOf ctl Is SubForm Then ctl.SourceObject = ctlState("SourceObject") End If End If Next ctl RefreshFormDataSilently = True Exit Function ErrorHandler: RefreshFormDataSilently = False End Function ' دالة مساعدة للتحقق من وجود عنصر في المجموعة (تم تصحيح اسمها) Private Function IsInCollection(col As Collection, key As String) As Boolean On Error Resume Next Dim item As Object Set item = col(key) IsInCollection = (Err.Number = 0) On Error GoTo 0 End Function '=======================[Main Function] Public Function MyMsgBox(ByVal strMsg As String, _ Optional Title As String = "", _ Optional SubTitle As String = "", _ Optional Msg_Type As MsgType = 0, _ Optional Bottns As Bottons = 0, _ Optional Ar_Eng As language = 0, _ Optional Auto_Close As Boolean = False, _ Optional Close_After_Seconds As Double = 2) As Response '===========================( Chack IF MSGBOX = Error ms access Dim Msgbox_1 As String Dim MsGbOx_2 As String Dim MsGbOx_3 As String ' Store Values in Variables If Title = "Error Massage !" Then Msgbox_1 = strMsg MsGbOx_2 = Title MsGbOx_3 = SubTitle Else If Title = "Sand Massage !" Then Msgbox_1 = strMsg MsGbOx_2 = Title MsGbOx_3 = SubTitle Else Msgbox_1 = DLookup("[MasgPrtThree]", "[tblMassages]", " [IDMasg] =" & strMsg & " ") MsGbOx_2 = DLookup("[MasgPrtOne]", "[tblMassages]", " [IDMasg] =" & Title & " ") MsGbOx_3 = DLookup("[MasgPrtTow]", "[tblMassages]", " [IDMasg] =" & SubTitle & " ") End If End If v_My_Msg = Msgbox_1 v_My_Title = MsGbOx_2 v_My_SubTitle = MsGbOx_3 v_My_Msg_Type = Msg_Type v_My_Bottns = Bottns v_My_Ar_Eng = Ar_Eng v_My_Auto_Close = Auto_Close v_My_Close_After_Seconds = Close_After_Seconds ' Open MSG Form IsMsgFormOpen = True DoCmd.OpenForm "MyMsgBoxF" Do Until IsMsgFormOpen = False DoEvents Loop ' Return User Response MyMsgBox = My_Response End Function Public Function My_Msg() As String My_Msg = v_My_Msg End Function Public Function My_Title() As String My_Title = v_My_Title End Function Public Function My_SubTitle() As String My_SubTitle = v_My_SubTitle End Function Public Function My_Msg_Type() As Integer My_Msg_Type = v_My_Msg_Type End Function Public Function My_Bottns() As Integer My_Bottns = v_My_Bottns End Function Public Function My_Ar_Eng() As Integer My_Ar_Eng = v_My_Ar_Eng End Function Public Function My_Auto_Close() As Boolean My_Auto_Close = v_My_Auto_Close End Function Public Function My_Close_After_Seconds() As Double My_Close_After_Seconds = v_My_Close_After_Seconds * 1000 End Function Public Function My_Response() As Response My_Response = v_My_Response End Function كود الاستدعاء حدث عند الفتح بسطر واحد LoadFormSafely (Me.Form.name) نتيجة: 7 - اضافة دول واكواد مساعدة 8 +.... والمزيد الشرح المتبقي في الفيديو الجزء الثاني تحميل المرفق 1.8 MB https://www.mediafire.com/file/nu5sfgvf8dgchmz/Update+14-4-2025+Get_Code_SQL_DOA_2025.rar/file
    1 point
  17. ملاحظة اخرى وضعت جدولا للمؤهلات منفصلا ومن ضمنه تاريخ الحصول عليه هذا لا يصلح بهذه الطريقة نعم جدولا للمؤهلات نعرض فيه اسماء المؤهلات مع رقم تعريفي لكل مؤهل فقط هذا كل شيء وفي جدول الموظفين ندرج المؤهل ( من جدول المؤهلات) وتاريخ الحصول عليه لسنا بحاجة لحفظ تدرج الموظف في المؤهلات لأن المعتبر هو آخر مؤهل حصل عليه
    1 point
  18. لإثبات ما ذكرته اعلاه قولك : هنا يجب تخصيص جدول للمدارس في المخرجات يمكنني عرض موظفي مدرسة محددة ايضا ايجاد عملية مرنة للتنقلات بين المدارس فقط هذه مجرد ملاحظة بسيطة واحدة فكرتك هذه غير علمية بناء الهيكل لا يتم الابتداء به حتى تستوفي جميع الاطراف
    1 point
  19. اسمحوا لي بوجهة نظر وتوجيه الأخ الكريم صاحب المشروع لديه خلفية برمجية لا بأس بها خاصة في التصميم والتنفيذ لذا بدأ اول مشاركة له بالاستشارة حول الجداول وتصميمها بطريقة صحيحة .. وهذا يحسب لجانبه .. فالاستشارة هي مشاركة الناس في عقولها ولكنه اغفل امرا مهما .. كان يجب الاشارة اليه في البداية وهو .. تحليل البيانات بدون تحليل البيانات سيكون المشروع كما اوضح الاستاذ @Foksh في البند الثاني .. سيكون هناك تغييرات مستمرة واستحداث جداول وحقول واحيانا في مثل هذه الحالة يتم اقحام ادوات في غير مكانها مما يسبب ضعف للبناء وتعثر في استخراج نتائج محددة في النهايات الا بطرق غير علمية وغير منهجية تحليل البيانات : هو دراسة طبيعة العمل على الأرض والورق واستيعاب جميع اطرافه .. لترجمته الكترونيا تحليل البيانات : يشمل 1- الاحاطة بجميع البيانات المدخلة والتي يجب ان ترصد في جداول 2- تصور او رسم صورة ذهنية لجميع المخرجات المطلوبة جميع ما ذكر اعلاه يتم تدوينه على الورق على هيئة نقاط او سيناريو بعدها يبدأ بناء الهيكل
    1 point
  20. نعم استاذنا ...في الاستعلام يظهر خطأ (العنوان مكرر) بصراحة في اعمالي استخدم العلاقات في الاستعلام او في النماذج ..اشعر بأن فيها مرونة والابتعاد عن الاخطاء
    1 point
  21. تعديلاتك ممتازة جدًا! 1️⃣ العلاقة بين الجداول سليمة وصحيحة بالنسبة لي .. جدول personal_data أصبح الجدول الرئيسي ، ويرتبط بجميع الجداول الفرعية بعلاقة ( One-To-Many ) مما يعني أن كل موظف يمكن أن يكون له عدة سجلات في الجداول الأخرى كـ ( الإجازات ، العقوبات ، التدريبات ، ... إلخ ) . 2️⃣ فصل البيانات المتغيرة في جداول مستقلة .. التدريبات ، الإجازات ، العقوبات ، الوظائف ، المؤهلات كل منها في جدول مستقل ، مما يسهل عمليات البحث والاستعلام والتصفية . وهذا بالطبع سيجعل الاستعلامات أكثر كفاءة مقارنة بوضع جميع البيانات في جدول واحد 😉 . 3️⃣ تحسين التسمية .. وأيضاً واضح أنك استخدمت بادئة أسماء تمييزية (مثل rkm_mlf_Qual و rkm_mlf_Vaca ... إلخ ) لربط الجداول بـ personal_data بدون تكرار أسماء الحقول بشكل مربك . قد خطر ببالي أيضاً إضافة بسيطة :- 🔹 إضافة جداول دعم إضافية عند الحاجة ، مثل جدول أنواع الإجازات ، جدول أنواع الدورات التدريبية ، جدول أسباب العقوبات بدلاً من تخزينها كنصوص داخل الجداول الأساسية ، مما يسهل التعديل مستقبلاً .
    1 point
  22. بيانات النوع والمحافظة وتاريخ الميلاد محتاج استخرجهم من الرقم القومى
    1 point
  23. وعليكم السلام ورحمة الله وبركاته، بالنسبة لسؤالك حول وضع البيانات في جدول واحد أو توزيعها على عدة جداول ، فمن الأفضل استخدام 3 جداول منفصلة كما فعلت ( هذا بالنسبة لي طبعاً ) ، وذلك للأسباب التالية : 🔹 لماذا لا أفضل وضع البيانات في جدول واحد ؟؟؟ 1️⃣ تجنب تكرار البيانات :- إذا وضعت جميع البيانات في جدول واحد ، فقد تضطر إلى تكرار بيانات الموظف أكثر من مرة عند إضافة مؤهلاته أو تغيير بياناته الوظيفية . 2️⃣ تحسين الأداء وسهولة الاستعلامات :- الجداول الصغيرة تسهّل عمليات البحث والتحديث مقارنةً بجدول واحد ضخم يحتوي على بيانات مكررة . 3️⃣ التوسّع المستقبلي :- تقسيم البيانات يسهل إضافة ميزات جديدة مثل ترقيات الموظفين أو دورات تدريبية دون إعادة تصميم الجدول بالكامل . 🔹 ونقطة مهمة وهي كيف يتم الربط بين الجداول ؟؟؟ لضمان عمل الجداول بشكل صحيح ، يجب استخدام المفاتيح الأساسية (Primary Keys) والمفاتيح الأجنبية (Foreign Keys) كما يلي :- ✅ جدول البيانات الشخصية (Personal_data) :- اجعل rkm_mlf (رقم الملف) هو المفتاح الأساسي (Primary Key) ، لأنه فريد لكل موظف . ✅ جدول البيانات الوظيفية (Functional_data) :- أضف Functional_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . ✅ جدول المؤهلات (Qualification_data) :- أضف Qualification_ID (ترقيم تلقائي) كمفتاح أساسي . استخدم rkm_mlf كمفتاح أجنبي (Foreign Key) لربطه بجدول البيانات الشخصية . هذا وقد أكون قد غفلت عن شيء ، فإن كنت قد سهوت فعل الأخوة والأساتذة يساندني ويذكرها 😇 .
    1 point
  24. تم رفع هذا الكود فى مشاركة منفصله حتى لا ننسى هذه المشاركة استرجاع بيانات من تقرير معين تم ارفاق كود الحل من الفاضل _ رحمه الله/ الحسامي و لا تنسونا من صالح الدعاء تحياتى R01_InvoiceDetails1 (1).rar
    1 point
  25. استاذ @محمد119900 المرفق التالي مجرب تمام . واضفت تقرير بالباركود ( حسب ماعندي)................... هذا أخر مالدي ..... أو ان أحد الزملاء يكمل على عملي أو يبدأ من جديد !!!! ........ أما تحب أكسل يوجد منتدى الاكسل أذهب اليه وأعرض طلبك أوفر لجهدك ووقتك . DDMhamed.rar
    0 points
×
×
  • اضف...

Important Information