اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

Foksh

الخبراء
  • Posts

    4988
  • تاريخ الانضمام

  • تاريخ اخر زياره

  • Days Won

    237

كل منشورات العضو Foksh

  1. بهذا النجاح و وصول عدد المشاهدات لـِ 6 آلاف قراءة ، كونوا الليلة على موعد بإطلاق المفاجأة الجديدة 😇 .
  2. بداية وعليكم السلام ورحمة الله وبركاته .. بصراحة قرأت السطرين أكثر من 5 مرات ، ولم أفهم المطلوب أو حتى استوعبه . يعني من خلال المرفق :- بناءً على ماذا سيتم عرض النسبة المئوية كمقارنة ؟؟؟؟؟؟؟؟؟؟؟؟ المحتوي = حقول تاريخ بغض النظر عن تنسيق التاريخ .. فكيف سيتم عرض نسبة مئوية 🤔
  3. أضف إلى ذلك أيضاً حرف "ئ ، ى ، ؤ ، ء" الألف المكسورة وغيرها أو حتى التاء المربوطة أو الهاء المربوطة .. فمثلاً ، كم حرف لم يأت ذكره في الآية الكريمة :- وعلى الله فليتوكل المؤمنون
  4. وعليكم السلام ورحمة الله وبركاته .. اعتقد اخي انه يلزمك التوضيح بشكل أدق وأكثر وضوحاً للعبارة "ان شهر السداد يساوى الشهر الحالي يتم احضار التاريخ ماقبله فى السداد" أو اعط مثالاً لما هو المطلوب من واقع ملفك المرفق .
  5. اقترب موعد إطلاق النسخة الأولى من أداة صانع شريط الريبون 😎 كونوا على الموعد .. قريباً ⏳
  6. أرجو إلغاء اختيار من المشرفين أو صاحب الموضوع ، لحين حصول صاحب الموضوع على إجابة شافية ، بعد تصويب أوضاعه .. متابع
  7. هذا لأنك تستعمل الاستعلام مصدر للسجلات في النموذج Frm_Data ، والتقرير Query_Data .. ما اقترحه عليك ، امسح مصدر سجلات التقرير ولا تجعله يعتمد على الاستعلام Query_Data مباشرة .. بل على استعلام الـ SQL السابق ، وجرب بعدها التنقل بين السجلات !!
  8. أخي أحمد ، انت تفكر في شيء جميل قد يساعدك على تقليل عدد المكونات من التقارير لديك .. ولكن إن جئت لعدد الجداول في ملفك المرفق ، هنا عدنا لفكرة الجدول الواحد مع إضافة حقل الصف له لتميز الطلاب بصفوفهم .. في الصورة المرفقة لا أعلم آلية عملك وطريقة بنائك للتقارير ، فإن كانت كما في مثالك المرفق السابق تستند الى حقول ثابتة ، فأعتقد انني تقدمت لك بحل يتوافق مع مرفقك وليس مع مشروعك لأنني لا اعلم شكل ولا بنية مشروعك ... في فكرتي اعتمدت على تمرير معامل الصف ومصدر بيانات التقرير عند فتح التقرير الوحيد لـ 3 صفوف ( كل صف في جدول مختلف ) .
  9. وهذه تصور لفكرة يمكن ضبطها في ملفك .. قبل إرفاق الملف ، ما رأيك بهذه الفكرة ؟؟
  10. مداخلة بسيطة مع الأستاذ موسى .. بما انك أخي أحمد متمسك بهذا الطريق ، فلم لا تمرر اسم الصف من خلال الوسيط OpenArgs عند فتح التقرير في الزر btnViewer !! انشئ ليبل وسمه Lbl_Class في التقرير ، واضبط تنسيقه وموضعه كما تريد . وفي حدث عند الفتح في التقرير يصبح :- Private Sub Report_Open(Cancel As Integer) DoCmd.Maximize If Not IsNull(Me.OpenArgs) Then Me.Lbl_Class.Caption = Me.OpenArgs End If End Sub وفي حدث النقر في الزر btnViewer سنعدل إجراء بسيط على جملة فتح التقرير لتصبح مثلاً للصف الأول في النموذج frm_OnlyYou1 :- DoCmd.OpenReport myrep, acPreview, , "onlyyou=true", , "الأول" وهكذا لباقي نماذجك المنفصلة لكل صف .. وهذا ملفك بعد التطبيق أما بخصوص استخدام تقرير واحد ، فالأمر بسيط .. حيث يمكن تمرير اسم الجدول كمتغير داخل استعلام ثابت لجميع الجداول ( على اعتبار ان الحقول لها أسماء ثابتة داخل الجداول كافة ) db.mdb
  11. وعليكم السلام ورحمة الله وبركاته.. جرب تغيير نوع تنسيق الحقول الرقمية وتوحيدها الى مزدوج Double .
  12. للتوضيح ، حيث ما تم تعديله أنه عند القيام بعملية بيع ، تقوم المعادلة حالياً بإعادة إضافة الكمية المكتوبة حالياً إلى الرصيد المحسوب في ورقة المخزن ، فيسترجع التحقق من الصحة الرصيد الفعلي المتوفر قبل إدخال الحركة الحالية وتكتمل العملية بنجاح عند إدخال 5 أو 4 أو أي رقم ضمن حدود الرصيد المتوفر . عذراً على التأخر في اكتشاف الخلل .. والشكر موصول للأستاذ @عبدالله بشير عبدالله على مشاركته وملاحظاته معنا .
  13. طيب ، شو رأيك نغير الخطة شوي ؟؟ رح نحتاج إلى إعادة إضافة الكمية الحالية E3 إلى نتيجة الـ VLOOKUP لكي نتمكن من المقارنة مع الرصيد المتاح قبل الحركة الحالية . يعني استبدل معادلة Data Validation في العمود E بالمعادلة التالية :- =AND($B3<>"", $D3<>"", OR($D3="شراء", $E3 <= IFERROR(VLOOKUP($B3, المخزن!$B$3:$I$800, 8, FALSE), 0) + IF($D3="بيع", $E3, 0))) جربها وأعطيني النتيجة اذا سمحت ..
  14. التفاته جيدة أستاذ عبدالله ، لم اقم بتجربتها فعلاً ، حيث ان خبرتي حديثة العهد في مجتمع اكسل . ونتعلم منكم فعلاً بعض الأمور التي أجهلها ، فشكراً لكم من القلب 🤗 . وهنا أرجح أجابتكم إن كانت ترضي صاحب الموضوع أخي @كمال على طارق .
  15. ما الفائدة من نشر البرنامج هنا إذا !!! وكما ان رقم الجوال مخالف لسياسة المنتدى.
  16. جرب استعمال الاستعلام التالي كمصدر للتقرير :- SELECT Tb_personal_data.rkm_mlf, Tb_personal_data.cod_mothaf, Tb_personal_data.student_name, Tb_personal_data.kwmy, Tb_personal_data.tr_milad, Tb_personal_data.mkan_milad, Tb_personal_data.mkan_scan, Tb_personal_data.gns, Tb_Dyana.Dyana AS dyana, Tb_Gnsya.Gnsya AS gnsya, Tb_Hala_Egtmaia.Hala_Egtmaia AS Hala_Egtmaia, Tb_personal_data.rkm_hatef, Tb_personal_data.rkm_tamin, Tb_Mrhla.Empo_Mrhla AS Mrhla, Tb_Gob.The_Gob AS Gha_Aml, Tb_Functional_data.noa_taeen, Tb_Functional_data.tr_taeen, Tb_Functional_data.tr_estlam_aml, Tb_Functional_data.mokf_aml, Tb_Functional_data.mgmoa_taleem, Tb_Functional_data.wathifa, Tb_Functional_data.rkm_krar, Tb_Functional_data.tr_krar, Tb_Functional_data.kader, Tb_Functional_data.mada_tdrees, Tb_Qualification_data.noa_moahel, Tb_Qualification_data.drga_elmia, Tb_Qualification_data.moahel, Tb_Qualification_data.gha_hslo, Tb_Qualification_data.tr_hsol, Tb_Qualification_data.tkdeer, Tb_Additional_data.mkr_aml, Tb_Additional_data.rkm_nekba, Tb_Additional_data.rkm_seha, Tb_Additional_data.tr_maash, Tb_Additional_data.mokf_tgneed, Tb_Additional_data.emil, IIf(Mid([kwmy],1,1)=2,19,20) & "" & Mid([kwmy],2,2) & "/" & Mid([kwmy],4,2) & "/" & Mid([kwmy],6,2) AS Tarik_Milad FROM (((((((Tb_personal_data LEFT JOIN Tb_Dyana ON Tb_personal_data.dyana = Tb_Dyana.Dyana_ID) LEFT JOIN Tb_Gnsya ON Tb_personal_data.gnsya = Tb_Gnsya.Gnsya_ID) LEFT JOIN Tb_Hala_Egtmaia ON Tb_personal_data.Hala_Egtmaia = Tb_Hala_Egtmaia.Egtmaia_ID) LEFT JOIN Tb_Functional_data ON Tb_personal_data.rkm_mlf = Tb_Functional_data.rkm_mlf_Func) LEFT JOIN Tb_Mrhla ON Tb_Functional_data.Mrhla = Tb_Mrhla.Mrhla_ID) LEFT JOIN Tb_Gob ON CStr(Tb_Functional_data.Gha_Aml) = CStr(Tb_Gob.Gob_ID)) LEFT JOIN Tb_Additional_data ON Tb_personal_data.rkm_mlf = Tb_Additional_data.rkm_mlf_Addi) LEFT JOIN Tb_Qualification_data ON Tb_personal_data.rkm_mlf = Tb_Qualification_data.rkm_mlf_Qual;
  17. عمل جميل تُشكر على طرحه .. وحبذا لو كان مصحوباً بشرح كافي عن طريقة استخدامه اخي الكريم
  18. هذا لأنك تستعمل الكومبوبوكس داخل الجداول ، والأصل ان يكون حقل الجنسية = رقمي ، وبالتالي العلاقات بين الجداول ستكون كفيلة بحل هذه المشكلة وجلب قيمة 1 من جدول الديانة نفسه ( كما ذكرت سابقاً حتى لو تغيرت معك التسميات ، فسيتم تغييرها في جميع السجلات في جميع الجداول التي يوجد بها هذا الحقل ) .
  19. وعليكم السلام ورحمة الله وبركاته .. أرى أنه من الأفضل والأدق برمجياً ، هو ربط الجداول باستخدام المفتاحين . فالأفضل هو تعديل حقل Educa_Stag في جدول Tb_School ليخزن رقم المرحلة Mrhla_ID بدلاً من النص . فالأصل فعلاً هو أن تكون القيم في الجداول هي معرف الحقل من جدول آخر ، وليس قيمته النصية ، فهذا أضمن وأسلم عند التعديل على المسميات . فمثلاً لو كانت القيمة في أحد الجداول = اعدادى ، وقمت يوماً ما بتصحيح الإسم ليصبح إعدادى أو اعدادي فستجد الكثير من المشاكل قد بدأت بالظهور عندما يكون الشرط نصي مثل اعدادى القديمة ... إلخ . ولكن وبما أنني لا أريد أن أعبث بتصميمك . فإليك الحل ببقاء تصميمك وفكرتك كما هي بحيث . كومبوبوكس جهة العمل Gha_Aml تم تعديله ليصبح :- SELECT Tb_School.School_ID, Tb_School.School, Tb_School.Educa_Stag FROM Tb_School INNER JOIN Tb_Mrhla ON Tb_School.Educa_Stag = Tb_Mrhla.Empo_Mrhla WHERE (((Tb_Mrhla.Mrhla_ID)=[Forms]![Frm_Data]![Form1].[Form]![mrhla])) ORDER BY Tb_School.School_ID; وفي كومبوبوكس نوع المرحلة ، استخدم الحدث التالي بعد التحديث له :- Private Sub mrhla_AfterUpdate() Me.Gha_Aml = Null Me.Gha_Aml.Requery End Sub ملفك بعد التعديلات أعلاه :- Personnel_affairs.zip
  20. يمكننا الإنتظار مشاركات جديدة .. فلا تستعجل بإغلاق الموضوع باختيار الإجابة 🙂
  21. طيب .. رغم أن الطلب تم تحقيقه من خلال Data Validation ، ولكن هذا لا يمنع من تجربة الفكرة التالية من خلال الأكواد . حيث تم دمج الحدث عند التغيير للورقة من :- If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("B3:B3000")) Is Nothing Then With Target(1, 5) .Value = Date & " " & Time .EntireColumn.AutoFit End With End If ليصبح :- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count > 1 Or Target.Row < 3 Then Exit Sub If Target.Column = 2 And Target.Value <> "" Then Target.Offset(0, 4).Value = Now If (Target.Column = 4 Or Target.Column = 5) And Trim(Me.Cells(Target.Row, "D").Value) = "بيع" Then Dim r As Long: r = Target.Row Dim itemCode As Variant: itemCode = Me.Cells(r, "B").Value Dim qty As Double: qty = Val(Me.Cells(r, "E").Value) If Not IsEmpty(itemCode) And qty > 0 Then Dim stockSheet As Worksheet: Set stockSheet = Worksheets("المخزن") Dim findCell As Range Set findCell = stockSheet.Range("B3:B800").Find(What:=itemCode, LookIn:=xlValues, LookAt:=xlWhole) If Not findCell Is Nothing Then Dim realAvailableStock As Double realAvailableStock = Val(stockSheet.Range("I" & findCell.Row).Value) + qty If qty > realAvailableStock Then MsgBox "• لا يمكنك إتمام عملية البيع هذه" & vbCrLf & vbCrLf & _ "• الصنــف: " & Me.Cells(r, "C").Value & vbCrLf & _ "• الرصيد المتاح حالياً: " & realAvailableStock & " قطعة" & vbCrLf & _ "• الكمية المطلوبة: " & qty & " قطعة", _ vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading, "تجاوز الرصيد" Application.EnableEvents = False Me.Cells(r, "E").ClearContents Me.Cells(r, "E").Select Application.EnableEvents = True End If End If End If End If End Sub ملفك بعد التطبيق :- مخزن 1.xlsb
  22. لم أفهم المشكلة في المطلوب والتنفيذ .. فلو أدخلت قيمة أكبر من المتاح في رصيد الصنف في المخزن ، سيظهر لك رسالة التنبيه وستمنع ادخال الكمية 🤔 إلا إذا كان لك طلب آخر ولم توضحه جيداً أخي الكريم . علك توضح بشكل أكثر تفسيراً لمطلبك حتى لو كان شرحك بـ 100 سطر 😇 أو قد نجد مداخلة من أحد الأساتذة والأخوة بالتوضيح والحل دون استخدام الأكواد !!!
  23. طيب تمام ، جرب غير نوع الرسالة الى Stop :- بدلاً من :-
  24. لم أجرب مرفقك ، وكانت مداخلتي دون تجربة ملفك . والحمد لله الذي هداك بالعودة لهذا السطر
×
×
  • اضف...

Important Information