حمدى الظابط قام بنشر مايو 27, 2018 قام بنشر مايو 27, 2018 (معدل) السلام عليكم الموضوع هناك جدول رئيسى بعنوان Teacher Class يتم التحديث منه اليا على جدول القصل Class-teacher من خلال زر التحديث بنموذج Class Information ولا يوجد اى مشاكل فى ذلك ولكن المشكلة فى جدول Teacher Class نرى وجود حصتان متشابهان فى فصل 1/1 الحصة الاولى يوم الاحد عند الاستاذ/ عبد الفتاح مادة العربى وبين استاذة / نادية مادة دين بعد التحديث يتم فك وحل تعارض الحصص فى جدول Class-teacher ولكن يظل التعارض فى جدول الرئيسى Teacher Class وهذا يظهور فى تقرير تعارض الحصص المطلوب فك تعارض الحصص فى جدول Teacher Class من خلال زر امر تحديث جدول Teacher Class واذا امكن توزيع احد الحصتان المتكررين فى حقل اخر فارغ او الاخطار بمن تم حذفة حصته بعد التحديث اتمنى ان يكون الشرح وافى وكل عام وحضرتكم بخير جدول 1 .rar تم تعديل مايو 27, 2018 بواسطه حمدى الظابط
عبدالله كاظم قام بنشر مايو 27, 2018 قام بنشر مايو 27, 2018 و عليكم السلام ورحمة الله وبركاته أخوي @حمدى الظابط حاولت أفهم طبيعة المشروع حقك بس ما قدرت .. الظاهر التركيز حقي منخفض شوي 😅 على العموم :كنت بديت مشروع حق توزيع الجدول بس للتجربة ولا كملته لأني ملتزم بمشروع ثاني وماخذ وقت كبير مني هو بس تجربة للتوزيع العشوائي ممكن تستفيد منه TimeTable.accdb
حمدى الظابط قام بنشر مايو 27, 2018 الكاتب قام بنشر مايو 27, 2018 استاذ عبد الله دوما سباق بالخير والمفاجأت واشكرك على هذا العمل الراقى والمفيد ولكن لى طلب عند حضرتك ما هى الجداول التى تم عليها التوزيع لان المرفق فيه فقط النموذج واشكرك مره تانية ولك منى كل الاحترام والتقدير
عبدالله كاظم قام بنشر مايو 28, 2018 قام بنشر مايو 28, 2018 العفو أستاذ @حمدى الظابط هو نسخة التجربة اللي في المثال السابق بدون جداول، هي كانت بس حق أجرب أعمل توزيع عشوائي لأنصبة المعلمين على حصص الاسبوع، بس تفضل في المرفق التالي طورت على المثال بحيث يكون مرتبط بجدول للمعلمين وعدد نصاب كل معلم، وجدول لأيام الأسبوع وعدد الحصص لكل يوم، وجدول يتم فيه تخزين الجدول بعد التوزيع. هي الفكرة كلها في التوزيع العشوائي، مع اني ودي بضوابط أكثر في التوزيع بس عندي مشروع ثاني محتاج أخلصه. مع فائق الاحترام والتقدير لك TimeTable1.accdb
خالد عبد الغفار قام بنشر مايو 28, 2018 قام بنشر مايو 28, 2018 السلام عليكم ورحمة الله تحياتى استاذ / حمدى وأيضا الأستاذ /عبد الله كاظم أولا عمل جميل ومجهود رائع للأستاذ عبد الله وهو فعلا كما اسلف ينقصه ضوابط كثيرة وليته يتم جميله علينا بشرح عمل الكود اذا سمح وقته بذلك جزاه الله كل خير عموما استاذ حمدى انا حاولت اهرب من عملية توزيع الحصص المتتاليه مؤقتا فى الدين مثلا جعلت حصتين دين وحصه حديث كتجربه وبدل 12 عربى جعلتهم 2 فراءة و 2 محفوظات ....... الخ افتح نموج التوزيع فيه عدد 3 زر أمر يتم فيهم استدعاء الوحدة النمطية وبالمرفق نموذج Form1 هو عبارة عن progress bar احاول استخدامه كمؤشر لاتمام عملية التوزيع بحيث يرتبط بز أمر بدء التوزيع الموجود بنموذج التوزيع ليظهر لنا عبارة يتم الان توزيع الفصل والمادة من الوحدة النمطية [TABLE.Fields(I) = MOALEM![fsl [TABLE.Fields(I + 1) = MOALEM![sub فهل يمكن المساعدة فى عمل ذلك استاذ عبد الله اليكم المرفق ولكما تحياتىDatabase2.rar
حمدى الظابط قام بنشر مايو 28, 2018 الكاتب قام بنشر مايو 28, 2018 استاذ عبد الله كاظم لك جزيل الشكر على هذا العمل الرائع وسوف احاول العمل عليه ربما افلح فى ذلك وسوف اخطرك بالنتيجة الاستاذ خالد حاولت تكرارا ان احل لغز الحصص المتتالية لمادة واحدة ولم افلم واتمنى ان نتواصل فى كل ما هو جديد فى هذا الموضوع وعلى فكرة الملف بتاعك كالعادة مش راضى بفتح لان نسخة برنامج الضغط بتاعتك حديثة لك وللاستاذ عبد الله كل الاخترام والتقدير
عبدالله كاظم قام بنشر مايو 29, 2018 قام بنشر مايو 29, 2018 السلام عليكم ورحمة الله وبركاته الأخ @خالد عبد الغفار شوف التعديل في المرفق التالي ان شاء الله يكون هو المطلوب. بخصوص شرح الكود تفضل Private Function getAllPer() As Long 'يقوم بحساب مجموع الحصص الاسبوعية في الجدول بناء على البيانات في جدول [tblDays] Dim str As String Dim rst As Recordset str = "SELECT * FROM tblDays" Set rst = CurrentDb.OpenRecordset(str) If Not (rst.EOF) Then getAllPer = 0 rst.MoveFirst Do Until rst.EOF = True getAllPer = getAllPer + rst!NoOfClasses rst.MoveNext Loop End If End Function Private Function getAllTCCount() As Long 'يقوم بحساب مجموع انصبة جميع المعلمين من الحصص من جدول [tblTeachers] Dim str As String Dim rst As Recordset str = "SELECT * FROM tblTeachers" Set rst = CurrentDb.OpenRecordset(str) If Not (rst.EOF) Then getAllTCCount = 0 rst.MoveFirst Do Until rst.EOF = True getAllTCCount = getAllTCCount + rst!classCount rst.MoveNext Loop End If End Function 'هذا الفانكشن حق عمل رقم عشوائي بين رقمين ومو أنا الكاتبه Private Function GetRndNo(ByVal lLowerVal As Long, ByVal lUpperVal As Long, Optional bInclVals As Boolean = True) As Long On Error GoTo Error_Handler Dim lTmp As Long 'Swap the lLowerVal and lUpperVal values, if they were inversed in the originating ' function call If lLowerVal > lUpperVal Then lTmp = lLowerVal lLowerVal = lUpperVal lUpperVal = lTmp End If 'Adjust the boundary values should the user specify to exclude them from the ' possible returned values If bInclVals = False Then lLowerVal = lLowerVal + 1 lUpperVal = lUpperVal - 1 End If 'Calculate our random number! Randomize GetRndNo = Int((lUpperVal - lLowerVal + 1) * Rnd + lLowerVal) Error_Handler_Exit: On Error Resume Next Exit Function Error_Handler: 'LogError Err.Number, Err.Description, sModName & "\GetRndNo", , True, Erl MsgBox "The following error has occured" & vbCrLf & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Source: GetRndNo" & vbCrLf & _ "Error Description: " & Err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occured!" Resume Error_Handler_Exit End Function Private Sub test05() 'هنا يتم توزيع الجدول باستخدام جميع ما في الأعلى 'تعريف المتغيرات المستخدمه في الكود Dim strTeacher As String, strDay As String, strTimeTable Dim rstTeacher As Recordset, rstDay As Recordset, rstTimeTable As Recordset Dim randOFDays As Long Dim randOFDaysX As Long Dim TCount As Long Dim TCCount As Integer Dim dayC As Integer Dim xCls As String Dim toExit1 As Long 'هنا اختبار إذا تم ادخال بيانات أيام الاسبوع. إذا لا توجد سجلات يخرج من العملية If DCount("dayID", "tblDays") = 0 Then Exit Sub 'عمل استعلام للجدول [tblTeachers] strTeacher = "SELECT * FROM tblTeachers" Set rstTeacher = CurrentDb.OpenRecordset(strTeacher) 'الذهاب إلى السجل الأول في جدول المعلمين rstTeacher.MoveFirst TCount = 0 'اعطاء قيمة صفر للمتغير اللي يختبر عدد المعلمين بحيث يزيد مع كل دورة وهو عداد للمعلمين 'البدء في الدخول لوب للمعلمين، بمعني يدخل المعلم الأول ويوزع جدوله وبعدها ينتقل للمعلم الثاني... وهكذا 'بالامكان عمل لوب على المعلمين بطريقة ثانية Do TCCount = 0 'اعطاء قيمة صفر للمتغير اللي استخدمه لاختبار عدد حصص المعلم الحالي وهو عداد حصص المعلم line00: toExit = 0 'هذا المتغير استخدمه للأمان يمكن يكون في خطأ في البيانات المدخله ويدخل اللوب ولا يقدر يطلع منه. فهذا طوق نجاة:) dayC = 0 ' متغير لاختبار الأيام في اللوب التالي وهو عداد الأيام While dayC < DCount("dayID", "tblDays") 'بداية لوب الأيام بحث يعطي المعلم حصة في اليوم العشوائي الأول وبعدها حصة في ثاني إلى أن يكمل عدد الأيام line01: If TCCount = rstTeacher!classCount Then GoTo line02 ' هنا اختبار إذا قيمة المتغير تساوت مع عدد نصاب المعلم الحالي يروح إلى [line02] randOFDays = GetRndNo(1, DCount("dayID", "tblDays")) 'اختيار يوم عشوائي If randOFDays = randOFDaysX Then GoTo line01 'اختبار إذا كان اليوم العشوائي الأول يتساوي مع اليوم العشوائي الذي سيليه ينتقل [line01] randOFDaysX = randOFDays 'اسناد قيمة اليوم العشوائي إلى متغير يستخدم في الاختبار السابق 'هنا بداية تعبئة الجدول strDay = "SELECT * FROM tblDays" 'عمل استعلام لجدول الأيام Set rstDay = CurrentDb.OpenRecordset(strDay) rstDay.Move randOFDays - 1 'هنا يتم اختيار حصة عشوائية xCls = "cls" & GetRndNo(1, rstDay!NoOfClasses) 'هنا الاستعلام لجدول [TimeTable] بناء على اليوم المختار في السابق strTimeTable = "SELECT TimeTable.* FROM TimeTable WHERE (((TimeTable.theDay)=" & randOFDays & "));" Set rstTimeTable = CurrentDb.OpenRecordset(strTimeTable) 'اختبار أن الحصة المختارة عشوائياً في هذا اليوم لم يسجل فيها شيء If IsNull(rstTimeTable.Fields(xCls)) Then 'فإذا كانت فاضية يتم تحديثها ويدخل فيها اختصار المعلم CurrentDb.Execute "UPDATE TimeTable SET " & xCls & "= '" & rstTeacher!Shortcut & "' WHERE ((([theDay])=" & randOFDays & "));" TCCount = TCCount + 1 'زيادة واحد على عدد حصص المعلم Else toExit = toExit + 1 If toExit = 10000 Then Exit Sub 'إذا كانت الحصة غير فاضية يتم الرجوع إلى [line01] لإختيار حصة أخرى GoTo line01 End If dayC = dayC + 1 'هنا يتم زيادة واحد على قيمة عداد الأيام If TCCount < rstTeacher!classCount And dayC = DCount("dayID", "tblDays") Then GoTo line00 Wend line02: TCount = TCount + 1 'هنا يتم زيادة واحد على قيمة عداد المعلمين rstTeacher.MoveNext 'الانتقال للمعلم التالي Loop While TCount < DCount("teacherID", "tblTeachers") 'العودة للوب حتى ينتهي من جميع المعلمين End Sub Private Sub Command0_Click() CurrentDb.Execute "DELETE * FROM TimeTable" 'يقوم بحذف البيانات في جدول [tiemYable] CurrentDb.Execute "INSERT INTO TimeTable ( theDay ) SELECT dayID FROM tblDays;" 'يقوم باضافة أرقام الأيام في جدول [TimeTable] Me.subfrmTimeTable.Requery 'يقوم بعمل اعادة استعلام النموذج الفرعي [subfrmTimeTable] getAllPer 'استدعاء فانكشن حساب عدد الحصص الاسبوعية getAllTCCount 'استدعاء مجموع انصبة المعلمين If getAllTCCount > getAllPer Then 'اختبار إذا كان مجموع انصبة المعلمين أكبر من عدد الحصص الاسبوعية فيخرج من العملية MsgBox "عدد الحصص الأسبوعية أقل من مجموع أنصبة المعلمين!" Exit Sub Else test05 'استدعاء sub لعمل توزيع الجدول End If End Sub والمعذرة إذا كان الشرح غير جيد Database2_1.zip
خالد عبد الغفار قام بنشر مايو 29, 2018 قام بنشر مايو 29, 2018 الف شكر للأستاذ عبد الله على شرح الكود بارك الله فيك أخى الكريم بالنسبة للتعديل المراد عمله فى نموذج التوزيع لم يتم ما هو مطلوب هو اساسا نموذج Form1 بيحمل كنسبه مئويه لكن المطلوب أنى لما أضغط على زر بدء التوزيع يعمل مؤشر progress bar اثناء عملية التوزيع مع استبدال عبارة يتم الأن توزيع 20% او 40% بالآتى يتم الآن توزيع 1/1 قراءة مثلا طب ودول هايجيبهم منين من الوحدة النمطيه ليظهر لنا عبارة يتم الان توزيع الفصل والمادة من الوحدة النمطية هذا هو الفصل [TABLE.Fields(I) = MOALEM![fsl هذه هى المادة [TABLE.Fields(I + 1) = MOALEM![sub ارجو ان يكون المطلوب قد اتضح ولك الشكر ةتقبل تحياتى
حمدى الظابط قام بنشر مايو 29, 2018 الكاتب قام بنشر مايو 29, 2018 استاذ عبد الله كاظم لك جزيل الشكر على هذا الشرح الوافى هل ممكن تلقى نظرة على هذا الملف هو بيتم التوزيع الالى ولكن بيجعل حصص المواد لنفس الفصل كلها متتالية فى نفس اليوم يعنى تلاقى مادة الرياضيات والعربى 4 حصص متتالية او اكثر لنفس الفصل فى نفس اليوم وجميع ازرر النموذج تعمل ولكن ينقصها لمسات محترفين امثالك تقبل تحياتى جدول 1 .rar
عبدالله كاظم قام بنشر مايو 29, 2018 قام بنشر مايو 29, 2018 (معدل) أستاذ @حمدى الظابط في نقطتين: 1- لما بكبس على توزيع آلي بهنق معاي الأكسس (الظاهر أن الاكسس بدخل لوب وما بيطلع منها)، في المرفق اللي أنت أرسلته وكما اللي أرسله الأستاذ خالد عبدالغفار. 2- المعذرة قاعد أحاول أفهم فكرة توزيع الجدول اللي أنت ما أستاذ @خالد عبد الغفار تشتغلوا عليها وماني قادر أفهمها فيا ريت يكون توضيح حق فكرة عمل المشروع وآلية التوزيع وبعدها إذا أقدر أساعد بالخدمة. مع فائق التحية تم تعديل مايو 29, 2018 بواسطه عبدالله كاظم 1
خالد عبد الغفار قام بنشر مايو 29, 2018 قام بنشر مايو 29, 2018 معذرة اخى عبد الله فعلا انت محق كان المفترض بدء المشروع من اول تصميم الجداول والاستعلامات والنماذج والمخرجات ( التقارير) شيئا فشيئا كمشروع جماعى ليتمكن اكبر قدر من رواد المنتدى المشاركة وفهم آلية عمل البرنامج وليشارك الجميع كلا على قدر استطاعته وهذا ما افكر فى طرحه كمشروع جديد ولله المستعان
حمدى الظابط قام بنشر مايو 30, 2018 الكاتب قام بنشر مايو 30, 2018 (معدل) استاذ عبد الله كاظم اشكرك على التعقيب وسوف اشرح لك فكرة البرنامج اولا هذا البرنامج من عمل شركة العرف 7 وهى نسخة مفتوحة المصدر معموله للتعليم الصناعى السعودى وتم الحصول عليها من احد المواقع للتعديل عليها على حسب احتياج العمل على حسب نظام التعليم لكل الدولة ------------------------------------------------------------------------------------------------------------------------------------------------------- شرح البرنامج اولا الجداول جدول الفصل باسم Class-teacher وجدول المادة والمعلم باسم Teacher Class وهذا هو الجدول الرئيسى --------------------------------------------------------------------------------------------------------------------------------------------------------- جدول بيانات المادة فيه بيانات المادة وهناك شرط مهم عند التوزيع وهو عند الضغط بنعم (صح) على حقل فردي يكون توزيع الحصص مفردة وعند الضغط بنعم (صح) على حقل مزدوجة يكون توزيع الحصص حصتان منناليتان ( على ان لا تتكرر المادة لنفس الفصل فى نفس اليوم سواء فردى او مزدوجة ) مع مراعاة ان مادة العربى لها نصيب الاسد فى اجمالى نصاب عدد الحصص فمن المحتمل ان يجبر البرنامج اعطاء ثلاث حصص فى اليوم اذا لازم الامر لنفس الفصل ويفضل مايكونش الثلاث حصص لنفس الفصل متتالية ---------------------------------------------------------------------------------------------------------------------------------------------------- جدول بيانات المعلم فيه توزيع الفصول وعدد الحصص والتخصص وهناك عددة ضوابط وشروط لابد من العمل عليها لاهميتها لمراعاة ظروف المدرسين الذين لديهم عقبات وهذه الشروط هى اساس نجاح البرنامج اول شرط فى حالة اذا كان عدد حصص ايام الاسبوع ( صفر ) يستطيغ البرنامج التوزيع بلا قيود لهذا المدرس وفى حالة وجود التزام باعداد حصص فى احد ايام الاسبوع يلتزم البرنامج بشروط التوزيع الشرط الثانى اذا كانت الحصص متتالية للمدرس فى هذا اليوم تكون جميع حصص هذا المدرس متتالية بدون اى حصص فارغة حتى لو كانت الحصص المتتالية اربعة حصص او اكثر الشرط الثالث ان وجد رقم حصة لبداية او نهاية الحصص لاحد ايام الاسبوع يلتزم البرنامج بشروط التوزيع ملحوظة / سوف يشرح ويوضح هذه الشروط السابقة نموذج بيانات المعلمين الموجود بالملف ------------------------------------------------------------------------------------------------------------------------------------------------------------------ جميع ازر نموذج1 تعمل مع مراعاة ان عند التوزيع لا يراعى التوزيع اى شروط من هذه الشروط وهذا ما يعيب البرنامج لانه لا يناسب مدارس مصر لدرجة ان مادة العربى والرياضيات للفصل الواحد فى نفس اليوم 4 وخمس وست حصص متتالية واسف للاطالة واتمنى لو نسيت شئ اساتاذ خالد يكمل ( ارجو عند تجربة نموزج1 ان تقوم بالمسح الاول ثم اعادة التوزيع حتى لا يهنج الجهاز ) فى الملف بوجد الوحدة النمطية المسئولة عن المسح والتوزيع والحصص المتعارضة الذى تم استخدمها فى نموذج1 وهذا الموضوع للاضاح اكثروفى نفس الموضوع جداول مدرسية وتوزيع آلي للمواد والحصص للمعلمين وهذا هو الملف الذى سوف يتم العمل عليه جدول الحصص.rar تم تعديل مايو 30, 2018 بواسطه حمدى الظابط
حمدى الظابط قام بنشر يونيو 17, 2018 الكاتب قام بنشر يونيو 17, 2018 (معدل) استاذ @ عبد الله كاظم @ ممكن اعرف الطريقة الثانية لتوزيع المعلم كما اشرة حضرتك فى شرح كود البرنامج الخاص بك ولك تحياتى وكل عام وحضرتك بخير TCount = 0 'اعطاء قيمة صفر للمتغير اللي يختبر عدد المعلمين بحيث يزيد مع كل دورة وهو عداد للمعلمين 'البدء في الدخول لوب للمعلمين، بمعني يدخل المعلم الأول ويوزع جدوله وبعدها ينتقل للمعلم الثاني... وهكذا 'بالامكان عمل لوب على المعلمين بطريقة ثانية Do تم تعديل يونيو 17, 2018 بواسطه حمدى الظابط
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.