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

Gamal.Saad

الخبراء
  • Posts

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

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

  • Days Won

    3

مشاركات المكتوبه بواسطه Gamal.Saad

  1. 1 ساعه مضت, khasem said:

    هل من الممكن استخدام مثل هذا التعبير في الاستعلام لحاجتي اليه  . طبعا هذا موجود في تقرير غياب الطالب

    =Switch(>=26;"راسب بسبب الغياب";>=25;"انذار نهائي";>=20;"إنذار رابع";>=15;"إنذار ثالث";>=10;"إنذار ثاني";>=5;"انذار اول")

    أنت عملت في التقرير control Source لمربع نوع الانذار الكود السابق

    وهو تقريبا صحيح لكن طبعا لن يتم تنفيذه لأن الشرط في جميع حالات Switch يحتوي على معامل مقارنة + قيمة المقارنة ولكن لا يحتوى على العنصر المراد تطبيق الشرط عليه
    بمعنى اكتبه في التقرير هكذا  :

    =Switch([S]>=26;"راسب بسبب الغياب";[S]>=25;"انذار نهائي";[S]>=20;"إنذار رابع";[S]>=15;"إنذار ثالث";[S]>=10;"إنذار ثاني";[S]>=5;"انذار اول")

    وفي الاستعلام هكذا :

    A: Switch([All_Sum]>=26;"راسب بسبب الغياب";[All_Sum]>=25;"انذار نهائي";[All_Sum]>=20;"إنذار رابع";[All_Sum]>=15;"إنذار ثالث";[All_Sum]>=10;"إنذار ثاني";[All_Sum]>=5;"انذار اول")

     

    • Like 1
    • Thanks 1
  2. جهازك أصيب بأحد أنواع البرمجيات الخبيثة    Malware اختصار ل Malicious  Software  وهذا النوع يسمى  :

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

    وبرامج الحماية من الفيروسات المفترض لا تزيل الفيروسات فقط وإنما تحتوى على أدوات لازالة باقي أنواع المالوير Malware  والمعروف منها :

    Virus         
    Worm
    Trojan

    Spyware
    Adware
    Crimeware 
    Crapware
    Bot

     والحل : أقترح تبحث في الانترنت عن أداة لإزالة Ransomware pezi   أو قم بتحميل برنامج قوي للحماية من الفيروسات أو نظام تشغيل به جدار ناري محدث Firewall
    وبعض الأحيان تجد ملفات تم تغيير امتداداها ولم يحدث لها تشفير لكن هذا احتمال ضعيف بس جرب تغير الامتداد مش هتخصر حاجة 

    • Like 1
  3. 6 ساعات مضت, f16 said:

    مع اني عملت نفس الكود ولاكن ربما كان هناك خطاء في كتابة الكود

    فعلا الكودين متطابقين من النظرة الأولى

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

  4. شهر فبراير أو شهر شباط  February  هو الشهر رقم 2 
    شهر إبريل أو شهر نيسان  April  هو الشهر رقم 4

    وشهر مايو أو شهر آيار May هو الشهر رقم 5 وهو المسجل بالجدول

    والمفروض بجدول الأشهر أن يكون ترتيب شباط هو رقم 2 وليس رقم 5

     
    ID month_name
    1 كانون الثاني
    2 شباط
    3 آذار
    4 نيسان
    5 آيار
    6 حزيران
    7 تموز
    8 آب
    9 أيلول
    10 تشرين الأول
    11 تشرين الثاني
    12 كانون الأول

    جرب المرفق غياب 5 وشغل شهر مايو آيار

    غياب 5.mdb

    • Like 1
    • Thanks 1
  5. 41 دقائق مضت, khasem said:

    التقرير الشهري لايعمل

    يعطيك رسالة خطأ أم ماذا ؟ لأنه التقرير يعمل عندي
     

    41 دقائق مضت, khasem said:

    كذلك التسلسل في التقرير الشهري بالعكس 

    علي 1

    قاسم 2

    التقرير التسلسل به أبجدي ، وطبعاً ترتيب اسم : "علي"  قبل اسم "قاسم"

    ع غ ف ق ك ل م ن ه و ي على ما أتذكر 

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

    41 دقائق مضت, khasem said:

    يظهر   لعلي غياب واحد بينما هذا لايوجد في جدول او استعلام

    فعلاً يوجد للطالب "علي"  غياب واحد فقط مسجل كما بالمثال المرفق الأخير  غياب 3  وهو يوم 12/5/2020

    وهو موجود بالجدول Subst وموجود بالاستعلام  Qry_Student_Type وموجود بالتقرير  Form3 

    159103890341171.png
    15910390476291.png

     

    وٍسأرفق لك تعديل الترتيب حسب الكود بالجدول

    غياب 4.mdb

    • Thanks 1
  6. 15910161633381.png

    يا باشا ايه اللمحات الفنية دي
    دي لوحة فنية مش نموذج

    أنا أقترح تعلقها على سور المدرسة هههههه
     

    2 ساعات مضت, khasem said:

    اعتقدت حصلت مشكلة

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

    وطبعا حاليا Form1  تغير إلى Form3

    والتحديث التلقائي لاسم الكائن لا يتم إلا في أجزاء معينة من البرنامج وفي أجزاء أخرى لا يتم مثل داخل كود Vba  أو كود SQL أو خصائص control source

    المهم إما ترجع اسم Form1

    أو تغير مصدر بيانات مربع month2 بالتقرير وتشير إلى Form3

     

    • Thanks 1
  7. تمام

    جرب فكرة الحل المرفق وهي باختصار :

    تقرير عن جميع الطلبة وأمام كل منهم يوم محدد من الشهر هل غاب أم لا (Choice box)  وهو يوضح أيام الغيابات فقط (وطبعا ممكن نضيف باقي الحالات شرط أن توضح مكانها بالتقرير)
    مربع المجموع ومصدر بياناته مجموع قيم مربعات الاختيار choice

    وطبعا هيكون المجموع بالسالب ووقتها تضيف دالة ABS

    واستعلام واحد فقط أهم به حقل كود الطالب واسمه

    وفي التقرير كل مربع اختيار عن يوم محدد به معادلة عامة :

    DCount("MainId";"subst";" Day([Tdate]) = '1' And Month([Tdate]) = " & [Reports]![قيمة من التقرير وممكن من النموذج] & "  AND  [MainId] = " & [Reports]![rpt_Absent_All]![MainId] & "  And [type] = 'K'")

    ومعنى الشروط لكي يكون قيمة مربع الاختيار = -1 هي:

    Day([Tdate]) = '1'              اليوم الأول من التاريخ المسجل بالجدول الموضح للحالة غياب أم هروب وخلافه      
    Month([Tdate]) =  أن يكون قيمة الشهر لهذا التاريخ تساوي قيمة الشهر المختار من النموذج أو التقرير  
    Type = 'K'      طبعاً حالة الغياب 
    MainID = كود الطالب

    159099146154181.png

    غيابات 2.mdb

    • Like 2
  8. تمام

    الجزء الأول: 

    11 ساعات مضت, khasem said:

    كيف نجمع w +ww بحيث يظهر المجموع امام اسم االطالب في الاستعلام

     

    الجزء الثاني

    11 دقائق مضت, khasem said:

    اريد ان تظهر الاسماء في الاستعلام متسلسلة وامام كل اسم مجموع الغياب الكلي ( اي الغياب + الهروب

     

    الجزء الثالث 

    12 دقائق مضت, khasem said:

    كيف يتم ربط التقرير الشهري في المرفق

     

    أجيبك على الجزء الثالث كما أرى بالصورة أنت تحتاج أن تسجل أمام كل يوم من الشهر هل تغيب الطالب أم لا ؟ 
    أم تحتاج أن تسجل مجموع الغياب  خلال الشهر في مربع نص خاص بذلك أمام كل طالب ؟

     

  9. 2 ساعات مضت, jjafferr said:

    استاذ جمال ، تحية إجلال لك على عملك الجميل ، وعلى تذليل الاكسس لظروف فايروس كورونا :signthankspin:

    الله يكرمك أستاذنا العزيز ، هذا نتيجة جزء مما استفدته منك ومن باقي الأساتذة بالمنتدى، 
    والزميل khasem يتحمل المسئولية عن عدم انتشار الفيروس بين طلاب قاعاته الموزعين بالبرنامج 😊
    ربنا يحفظه وأبناءنا وطلابنا وأهالينا والمسلمين من كل سوء
     

     

    2 ساعات مضت, jjafferr said:

    ممتاز ...وحلول مليئة بالافكار المبتكرة - وهذا هو جوهر الحل لذلك النوع من المواضيع أن يتم التفكير منطقيا أولاً  في حل المشكلة ثم تطويع الاستعلامات و الكود للتنفيذ 
    وبالطبع سأحتفظ  بغالبية  المواضيع مما ذكرت  كمكتبة مرجعية للفكرة والتنفيذ وكدراسة لاحقاً لبعض الأكواد فيها
    وجزاكم الله خيرا أنت وكل من شارك فيها مقدماً يد العون للسائلين




     

    • Like 2
  10. 5 ساعات مضت, khasem said:

    سم الله الرحمن الرحيم

    فَأَثَابَهُمُ اللّهُ بِمَا قَالُواْ جَنَّاتٍ تَجْرِي مِن تَحْتِهَا الأَنْهَارُ خَالِدِينَ فِيهَا وَذَلِكَ جَزَاء الْمُحْسِنِينَ 

    ما ارايت شيء اهديه لك اجمل من هذه الآية الكريمة

    جزاك الله ربي جزاء المحسنين

    صدق الله العظيم
    وجزاكم خيراً أخي الكريم ورزقنا وإياكم بالجنة إن شاء الله

     

     

    5 ساعات مضت, khasem said:

     

     

     

    قطاع.JPG

    هذا الترتيب للكائنات أجمل من الذي أرفقته لك أ . khasem 
     

    • Thanks 1
  11. 31 دقائق مضت, khasem said:

    لماذا اصبحت عمودين

    القاعة من ثلاث اعمدة

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

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

    159087579527431.jpg

     

    توزيع 25.accdb

    • Like 1
    • Thanks 1
  12. 19 دقائق مضت, ابو البشر said:

    هو انت الى كنت عامل البرنامج .... كفشناك ..... ههههههههه .

    ههههههه ياباشا أنا مليش دعوة ، هما اللي طلبوا مساعدة الكمبيوتر 

     

    منذ ساعه, khasem said:

    هل من الممكن وضع كل قطاع في ورقة مع خلاصته  اي اعداد طلاب كل صف في القطاع

    من خصائص Group رقم القطاع اختر كما بالصورة :
    159087260503741.jpg


    159087178453681.jpg

    توزيع 24.accdb

    • Like 2
  13. 4 دقائق مضت, khasem said:

    استاذنا ما اخبرتني 

    هل من الممكن وضع كل قطاع في ورقة مع خلاصته  اي اعداد طلاب كل صف في القطاع

    إن شاء الله ممكن في أقرب فرصة ، ولو تحب تضع كل طالب في ورقة ، ماشي

     

  14. 2 دقائق مضت, khasem said:

    حتى يكون التقرير بشكل منظم 

    اتصور بذلت جهدا كبيرا واسال الله ان يجزيك عنا خير الجزاء ويجنبك كل مكروه باذنه تعالي 

    احترامي واتقديري لشخصكم الكريم

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


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

    • Like 1
    • Haha 1
  15. تسلم يا غالي
     

    20 ساعات مضت, khasem said:

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

    ممكن بعد التجربة
     

    20 ساعات مضت, khasem said:

    القاعة ممكن ان تستوعب 34   او  36

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

     

    20 ساعات مضت, khasem said:

    اتصور تقسيم القاعة الواحدة الى قطاعين بالتساوي  فيه صعوبة

    طالما سيكون القطاع يساوي عدد مقاعد  القاعة مقسوما على 2 فليس هناك صعوبة
    الصعوبة كانت في عدد مقاعد القاعة لو 17 مقعد عدد فردي لأن مش هنعرف ناخد نصف مقعد يجلس عليه طالب والنصف الآخر بقاعة أخرى
    لذلك عدلت لك في اللوب Loop الخاص بالترقيم ليراعي وجود رقم فردي

     For i = 1 To Labs                                ' المرور على السجلات داخل الجدول لترقيم القاعات حسب عددها
         section_no = 1
         Lab_no = Lab_no + 1
            For h = 1 To 2                            ' المرور على صفوف كل قاعة
                 For j = 1 To Me.Rows_count / 2       '..........   عدد قطاعين بكل قاعة
                     Call R("R")                       '  دالة اجرائية لتسجيل رقم القاعة ورقم القطاع
                    If Not rsTbl.EOF Then rsTbl.MoveNext
                 Next
                 section_no = 2
    
                If Val(Me.Rows_count) Mod 2 <> 0 Then   '........ زيادة صف للعدد الفردي
                  Call R("R")
                  If Not rsTbl.EOF Then rsTbl.MoveNext
                End If
           Next
           If Val(Me.Rows_count) Mod 2 <> 0 And Not rsTbl.EOF Then rsTbl.MovePrevious
    Next

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

    159086438271121.png

    توزيع 23.accdb

    • Like 1
    • Thanks 1
  16. هناك 4 طرق توزيع للطلاب بالمرفق  :

    1 - "صف مختلف + مادة مختلفة"

    2 - "نفس الصف أو صف مختلف + نفس المادة أو مادة مختلفة"

    3 - "صف مختلف + نفس المادة"

    4 - "صف مختلف وتجاهل المادة"  وهذا يحافظ على الترنيب طبقاً لرقم الجلوس والصف إن كانوا في ترتيب تسلسلي

    ولكن جميعها يستند لتوزيع المقعد الأول في كامل القاعات أولاً
    وهذا هو الهيكل الرئيسي أو العقل المدبر للكود الذي يمكن العمل عليه لاجقاً للتعديل و جاري تعديل الكود للاختصار وحذف الزيادات ، واذا أتيح الوقت فهناك طريقة اضافية للتوزيع المتزامن للمقعدين معاً بكل صف بالقاعة
     

    'Start ..................... إنشاء الجدول المؤقت من جديد  ........................
    Call Clear_data_first
    
    'start.......................................------ توزيع الحقل الأول بعدد نصف الصفوف ---- الطلاب .................
    
    DoCmd.RunSQL "INSERT INTO Table1 ( Seat1_class, Seat1_Exam, Seat1_name, Jloss1_no ) " _
                       & "SELECT Qry1.Safe, Qry1.[N-EXSAM], Qry1.St_name, Qry1.Jloss_no FROM" _
               & "(SELECT TOP 50 PERCENT Jloss_tpl.Jloss_no, * FROM Jloss_tpl " _
                        & "ORDER BY Jloss_no , Jloss_tpl.Safe, Jloss_tpl.[N-EXSAM], Jloss_tpl.St_name ) Qry1;"
    DoCmd.RunSQL GetSQL.update_action
    'start.........................................  توزيع الحقل الثاني   .............................................
     Set rsQry = CurrentDb.OpenRecordset(GetSQL.select_action)
     Set rsTbl = CurrentDb.OpenRecordset(GetSQL.select_tbl1)
     
    'start.........................................  المرور على سجلات الجدول المؤقت لإضافة الطالب بالمقعد الثاني   .............................................
     For h = 0 To rsTbl.RecordCount
      Set rsQry = CurrentDb.OpenRecordset(GetSQL.select_action)
         rsQry.MoveFirst
    'start.........................................  المرور على سجلات الاستعلام من الجدول الاساسي لاختيار طالب حسب الشروط للمقعد الثاني   .............................................
               For i = 0 To rsQry.RecordCount
    'start................... دالة اختيار طالب واحد عشوائي لأول ثلاثة اختيارات من الكومبوبكس
                 Set rsQry = CurrentDb.OpenRecordset("SELECT  top 1 Jloss_no , * FROM Jloss_tpl WHERE (((Jloss_tpl.Action) = False) ) ORDER BY rnd(Jloss_no),Safe;")
                         s = Nz(DLookup("Jloss2_no", "Table1", "[Jloss2_no] = " & rsQry!Jloss_no & ""), 0) ' شرط عدم اختيار مسبق
                         y = (Val(rsTbl!Seat1_Exam) <> Val(rsQry("N-EXSAM"))) ' شرط اختلاف المادة
                         x = (Val(rsTbl!Seat1_Exam) = Val(rsQry("N-EXSAM"))) ' شرط تشابه المادة
    'start................................. اختيارات طريقة التوزيع من النموذج
                   Select Case Combo_choice
                          Case 1
                          If IsNull(rsTbl!Seat2_name) And rsTbl!Seat1_class <> rsQry!Safe And s = 0 And y = True Then: Call dist
                          Case 2
                          If IsNull(rsTbl!Seat2_name) And s = 0 Then: Call dist
                           Case 3
                          If IsNull(rsTbl!Seat2_name) And rsTbl!Seat1_class <> rsQry!Safe And s = 0 And x = True Then: Call dist
                          Case 4
    'start................... إعادة اختيار بدون العشوائية للمحافظة على ترتيب رقم الجلوس للاختيار الرابع من الكومبوبكس
                          Set rsQry = CurrentDb.OpenRecordset("SELECT  Jloss_no , * FROM Jloss_tpl WHERE (((Jloss_tpl.Action) = False) ) ORDER BY Jloss_no;")
                          s = Nz(DLookup("Jloss2_no", "Table1", "[Jloss2_no] = " & rsQry!Jloss_no & ""), 0)
                          If IsNull(rsTbl!Seat2_name) And rsTbl!Seat1_class <> rsQry!Safe And s = 0 Then: Call dist
                      End Select
                 Next  '  السجل التالي للاستعلام 
     If rsTbl.EOF Then: rsTbl.MoveFirst: Else: rsTbl.MoveNext
     Next  '  السجل التالي الجدول

     

    توزيع 20.accdb

    • Like 1
    • Thanks 2
×
×
  • اضف...

Important Information