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

Foksh

أوفيسنا
  • Posts

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

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

  • Days Won

    167

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

  1. أخي أحمد الحمد لله انه الأمور كانت نتيجتها كما تريد ، وان شاء الله متابع مع توزيع اللياقة ، بالنسبة لاختيار أفضل إجابة ، فهي عادة يا صديقي تُعطي لصاحب الحل وليس لصاحب الموضوع 😅 ، وهي عادة دلالة على أن الموضوع تم إغلاقه وانتهت جميع مشاكله .. لذا اجعلها آخر شيء حتى ننتهي من التوزيع اليوم ان شاء الله .
  2. أخي أحمد ، هل هذا المثال صحيح :- مثال توضيحي لو كانت : Cou_Stu = 45 (عدد الطلاب). Seaa_Kaa_Shafawe = 20 (سعة القاعة). فسيتوزعون كالآتي : الجلسة 1 : 20 طالب (صباحي) الجلسة 2 : 20 طالب (مسائي) اليوم التالي : الجلسة 3 : 5 طلاب (صباحي فقط) استخدم هذا التعديل في دالة التوزيع الشفهي ، وطابقها مع حساباتك ومتطلباتك ان كانت صحيحة Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsInsert As DAO.Recordset Dim sql As String Dim GroupNo As Long Dim DateCounter As Date Dim DayCounter As Long Dim Period As String Dim StudentLeft As Long Dim MaxPerSession As Long Dim StudentsThisSession As Long Set db = CurrentDb ' جلب جميع الصفوف لجميع المدارس بترتيب واضح sql = "SELECT * FROM Tb_Cou_Stu ORDER BY ID_School_B, ID_Room_B" Set rs = db.OpenRecordset(sql, dbOpenSnapshot) Set rsInsert = db.OpenRecordset("Tb_Tawze_Shafawe", dbOpenDynaset) Do Until rs.EOF ' بدء التوزيع من اليوم المحدد لكل صف بشكل مستقل DateCounter = StartDate DayCounter = 1 GroupNo = 1 StudentLeft = rs!Cou_Stu MaxPerSession = rs!Seaa_Kaa_Shafawe Do While StudentLeft > 0 ' تجاوز الجمعة Do While Weekday(DateCounter, vbSaturday) = 6 DateCounter = DateAdd("d", 1, DateCounter) DayCounter = DayCounter + 1 Loop ' جلسة صباحية StudentsThisSession = IIf(StudentLeft >= MaxPerSession, MaxPerSession, StudentLeft) rsInsert.AddNew rsInsert!ID_School_C = rs!ID_School_B rsInsert!ID_Room_C = rs!ID_Room_B rsInsert!Date_Shafawe = DateCounter rsInsert!Day_Shafawe = DayCounter rsInsert!S_M = "صباحي" rsInsert!Magmoaa = GroupNo rsInsert!Cou_Stu_Shafawe = StudentsThisSession rsInsert.Update StudentLeft = StudentLeft - StudentsThisSession GroupNo = GroupNo + 1 ' جلسة مسائية (إن تبقى طلاب) If StudentLeft > 0 Then StudentsThisSession = IIf(StudentLeft >= MaxPerSession, MaxPerSession, StudentLeft) rsInsert.AddNew rsInsert!ID_School_C = rs!ID_School_B rsInsert!ID_Room_C = rs!ID_Room_B rsInsert!Date_Shafawe = DateCounter rsInsert!Day_Shafawe = DayCounter rsInsert!S_M = "مسائي" rsInsert!Magmoaa = GroupNo rsInsert!Cou_Stu_Shafawe = StudentsThisSession rsInsert.Update StudentLeft = StudentLeft - StudentsThisSession GroupNo = GroupNo + 1 End If ' الانتقال لليوم التالي DateCounter = DateAdd("d", 1, DateCounter) DayCounter = DayCounter + 1 Loop rs.MoveNext Loop rs.Close: rsInsert.Close Set rs = Nothing: Set rsInsert = Nothing: Set db = Nothing MsgBox "تم توزيع جلسات الشفوي لجميع الصفوف بشكل صحيح", vbInformation + vbMsgBoxRight, "نجاح" مسألة الصباحي والمسائي لم أطبقها حالياً ، فهي ليست ذات علاقة بآلية التوزيع في الوقت الحالي ,
  3. اذا كان المقصود من كلام أخونا صاحب الموضوع هو الكتابة على ملف PDF يستعمله كقالب !!!! فهذه نقطة لا ولم ولن يتم تطبيقها من خلال اكسيس إلا بإنشاء تقرير ثم تصديره كملف Pdf . غير ذلك فلن تحصل على إختراع يلبي حاجتك وفكرتك.
  4. استبدل الدالة القديمة ، بالدالة التالية ، Private Sub AddToTempSelected() On Error GoTo ErrorHandler Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSQL As String Dim anneeValue As Variant Dim gradeValue As Variant Dim wilayaValue As Variant Dim existingWilaya As String Dim wilayaArray As Variant Dim wilayaExists As Boolean Dim i As Integer Dim currentYear As Integer Dim previousYear As Integer Set db = CurrentDb() currentYear = Me.ANNEE3.Column(0) previousYear = currentYear - 1 anneeValue = previousYear & "/" & currentYear gradeValue = Me.GRADE3.Column(0) wilayaValue = Trim(Me.lst_XX.Column(0)) strSQL = "SELECT wilaya FROM temp_selected " & _ "WHERE annee = '" & Replace(anneeValue, "'", "''") & "' " & _ "AND grade = '" & Replace(gradeValue, "'", "''") & "'" Set rs = db.OpenRecordset(strSQL) If Not rs.EOF Then existingWilaya = Nz(rs!wilaya, "") If existingWilaya <> "" Then wilayaArray = Split(existingWilaya, " - ") wilayaExists = False For i = LBound(wilayaArray) To UBound(wilayaArray) If Trim(wilayaArray(i)) = wilayaValue Then wilayaExists = True Exit For End If Next i If Not wilayaExists Then If existingWilaya <> "" Then existingWilaya = existingWilaya & " - " & wilayaValue Else existingWilaya = wilayaValue End If strSQL = "UPDATE temp_selected SET wilaya = '" & Replace(existingWilaya, "'", "''") & "' " & _ "WHERE annee = '" & Replace(anneeValue, "'", "''") & "' " & _ "AND grade = '" & Replace(gradeValue, "'", "''") & "'" db.Execute strSQL, dbFailOnError End If Else strSQL = "UPDATE temp_selected SET wilaya = '" & Replace(wilayaValue, "'", "''") & "' " & _ "WHERE annee = '" & Replace(anneeValue, "'", "''") & "' " & _ "AND grade = '" & Replace(gradeValue, "'", "''") & "'" db.Execute strSQL, dbFailOnError End If Else strSQL = "INSERT INTO temp_selected (annee, grade, wilaya) " & _ "VALUES ('" & Replace(anneeValue, "'", "''") & "', '" & Replace(gradeValue, "'", "''") & "', '" & Replace(wilayaValue, "'", "''") & "')" db.Execute strSQL, dbFailOnError End If CleanUp: If Not rs Is Nothing Then rs.Close Set rs = Nothing Set db = Nothing Exit Sub ErrorHandler: MsgBox "حدث خطأ أثناء محاولة تحديث البيانات", vbCritical + vbMsgBoxRight, "خطأ" Resume CleanUp End Sub حيث سيتم تخزين القيمة في الجدول مباشرة بالتنسيق الذي تريده ( السنة التي تم اختيارها = 2025 ، سيتم تخزينها = 2024 / 2025 في الحقل بعد ان تم تغيير نوعه الى حقل نصي ) BASE_e.accdb
  5. أخي الكريم ، بعد تحميل المرفق وهو نفسه المرفق السابق في موضوعك الأول ، كنا قد وددنا منك أولا أن تشرح لنا آليه العمل على مشروعك ، بما أنك ارلت كامل المشروع . يعني اشرح لنا آلية العمل على المشروع ، والسبب طبعاً أن من سيقوم بتحميل المرفق لن يقوم بدراسة كامل مشروعك ويستغرق منه الأمر ساعات حتى يفهم فكرتك وطريقتك .. أرجو أن أكون قد أوضحت لك المطلوب منك . أو تقوم بتعديل المرفق بحيث يحتوي فقط الأقسان التي لها علاقة بالمطلوب لتصغير مساحة دراسة مشروعك مع شرحك طبعاً
  6. بأقرب فرصة سنحاول معاً إيجاد حل ، حال وصولي للكمبيوتر 🤗.
  7. الحمد لله إنها أمورك كما تريد 😇 قمت بتعديل الإستعلام الأخير ليسهل قراءته بما إنك تعمل على حقول وجداول قد تختلف عن المرفق قليلاً. .
  8. طيب .. بطريقتي سأسأل .. هل الفرق هو الحقول التالية :- TNO, NASS, nass1 MSNO, MS_NAMEX من جدول Tab_Msaneed ID_Xsub, Code, Parentx, Total, LVLno, Xsub MAIN_sub من جدول TAB_Subject_X يعني مقصدي انت تريد اضافة كافة الحقول الى الاستعلام الذي خرجت به ويلبي حاجتك في القيم المطلوب عرضها ، صحيح ؟؟؟ مع العلم أنك تستطيع إزالة الشرط :- AND TAB_Subject.ID IN (76, 159, 1873) هل هذا الاستعلام يلبي احتياجك على سبيل المثال :- SELECT TAB.MNO, TAB.TNO, TAB.NASS, TAB.nass1, Tab_Msaneed.MSNO, Tab_Msaneed.MS_NAMEX, TAB_Subject.ID, TAB_Subject.ID_Xsub, TAB_Subject.SName, TAB_Subject.Code, TAB_Subject.Parentx, TAB_Subject.Total, TAB_Subject.LVLno, TAB_Subject.LVL1, IIf(TAB_Subject.LVL1 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L1 WHERE L1.LVL1 = TAB_Subject.LVL1 AND L1.LVL2 = 0 AND L1.LVL3 = 0 AND L1.LVL4 = 0)) AS LVL1name, TAB_Subject.LVL2, IIf(TAB_Subject.LVL2 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L2 WHERE L2.LVL1 = TAB_Subject.LVL1 AND L2.LVL2 = TAB_Subject.LVL2 AND L2.LVL3 = 0 AND L2.LVL4 = 0)) AS LVL2name, TAB_Subject.LVL3, IIf(TAB_Subject.LVL3 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L3 WHERE L3.LVL1 = TAB_Subject.LVL1 AND L3.LVL2 = TAB_Subject.LVL2 AND L3.LVL3 = TAB_Subject.LVL3 AND L3.LVL4 = 0)) AS LVL3name, TAB_Subject.LVL4, IIf(TAB_Subject.LVL4 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L4 WHERE L4.LVL1 = TAB_Subject.LVL1 AND L4.LVL2 = TAB_Subject.LVL2 AND L4.LVL3 = TAB_Subject.LVL3 AND L4.LVL4 = TAB_Subject.LVL4)) AS LVL4name, TAB_Subject.Xsub, TAB_Subject_X.MAIN_sub, TAB.TYPE1, (SELECT LISTname FROM DATA_list WHERE NOM2 = TAB.TYPE1 AND NOM1 = 1) AS TYPE1name, TAB.TYPE2, (SELECT LISTname FROM DATA_list WHERE NOM2 = TAB.TYPE2 AND NOM1 = 2) AS TYPE2name FROM ((TAB INNER JOIN Tab_Msaneed ON TAB.MUSNAD = Tab_Msaneed.MSNO) INNER JOIN TAB_Subject_X ON TAB.MNO = TAB_Subject_X.MNO) INNER JOIN TAB_Subject ON TAB_Subject_X.SUB_ID = TAB_Subject.ID ORDER BY TAB.TNO;
  9. جميع الصفوف ( للمدرسة الواحدة أو جميع المدارس ) ستبدأ في يوم واحد للشفهي ؟؟؟؟؟ بحاجة للتوضيح أكثر ,, سنتوقف عن العمل على توزيع اللياقة ، وسنعمل على الشفهي لحين خروجك بنتيجة صحيحة ، وخذ بعين الاعتبار وجود يوم الجمعة كإجازة لا يتم التوزيع فيه حالياً . بانتظار شرحك أكثر لكل النقاط والإحتمالات ( لتلافي الوقوع في مطبات سابقة في مواضيع مختلفة لعدم شرح المطلوب بشكل واضح ) ..
  10. أخي طاهر ، غلق الموضوع باختيارك أفضل إجابة
  11. 😕 لماذا تختار الشرح المبهم والذي لا يؤدي الى توضيح الفكرة والهدف .. الحقول التي غير موجودة في استعلامي هي ؟؟؟ ( أرجو تحديدها ) ولا تنسى أنني اتعامل مع مرفقك وليس مع المرفق الذي تملكه وتطبق عليه ان كان مختلفاً في بنيته وتركيبه .
  12. وعليكم السلام ورحمة الله وبركاته ,, لتطبيق فكرتك البسيطة ، اعتقد ان حاجتك لاستخدام جدول مؤقت هي أفضل شيء . ومن ثم يتم اضافة القيم التي يتم اختيارها اليه وجعله مصدر للتقرير . جرب هذه الفكرة علها تفيدك 😎 . BASE_e.accdb
  13. هذا أحد احتمالات لم تكن في حسبانك ، ورقمها 1 - 4 ، وعليه سيتم اضافة جملة Case لهذا الشكل الجديد من الإحتمالات .. Case (zawjValue = 1 And zawjaValue = 4) يوجد مربع نص = Txx في التقرير ، غير مهم ، وتستطيع حذف اي شيء متعلق به في الكود ، فهو كان فقط لتحديد الإحتمالات التي كنت أعمل عليها . فتح تقرير FACE16.zip
  14. الزوجة متوفية لم تكن ضمن اسلوب العمل والاحتمالات التي حددتها ,, 🙄 لهذا طلبت منك سابقاً وضح جميع الاحتمالات ، ولكنك لم تأخذ الموضوع بشكل جدي وحقيقي وقابل للحصول في احتمال . على العموم ارسل مرفقك الأخير بعد تعديلاتك التي أجريتها مؤخراً
  15. امممم تقريباً بدأ افهم 😅😅 جرب هذا الاستعلام !!! SELECT TAB_Subject.ID, TAB_Subject.LVL1, IIf(TAB_Subject.LVL1 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L1 WHERE L1.LVL1 = TAB_Subject.LVL1 AND L1.LVL2 = 0 AND L1.LVL3 = 0 AND L1.LVL4 = 0)) AS LVL1name, TAB_Subject.LVL2, IIf(TAB_Subject.LVL2 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L2 WHERE L2.LVL1 = TAB_Subject.LVL1 AND L2.LVL2 = TAB_Subject.LVL2 AND L2.LVL3 = 0 AND L2.LVL4 = 0)) AS LVL2name, TAB_Subject.LVL3, IIf(TAB_Subject.LVL3 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L3 WHERE L3.LVL1 = TAB_Subject.LVL1 AND L3.LVL2 = TAB_Subject.LVL2 AND L3.LVL3 = TAB_Subject.LVL3 AND L3.LVL4 = 0)) AS LVL3name, TAB_Subject.LVL4, IIf(TAB_Subject.LVL4 = 0, Null, (SELECT TOP 1 SName FROM TAB_Subject AS L4 WHERE L4.LVL1 = TAB_Subject.LVL1 AND L4.LVL2 = TAB_Subject.LVL2 AND L4.LVL3 = TAB_Subject.LVL3 AND L4.LVL4 = TAB_Subject.LVL4)) AS LVL4name, TAB.TYPE1, (SELECT LISTname FROM DATA_list WHERE NOM2 = TAB.TYPE1 AND NOM1 = 1) AS TYPE1name, TAB.TYPE2, (SELECT LISTname FROM DATA_list WHERE NOM2 = TAB.TYPE2 AND NOM1 = 2) AS TYPE2name FROM TAB, TAB_Subject_X, TAB_Subject WHERE TAB.MNO = TAB_Subject_X.MNO AND TAB_Subject_X.SUB_ID = TAB_Subject.ID AND TAB_Subject.ID IN (76, 159, 1873) ORDER BY TAB_Subject.ID; استخدمت الدالة IIf في كل حقل من حقول أسماء المستويات ، ونجعل الاسم يظهر فقط إذا كانت القيمة المقابلة > 0 ، وإلا = Null هل التالي صحيح في الصورة ؟
  16. 😅 الموضوع أكثر من متشعب .. ولكن كمحاولة لست متأكداً من نتائجها ، قمت بالتجربة على قيم محددة في الاستعلام التالي ، جربه فضلاً أخي الكريم @nssj . SELECT TAB_Subject.ID, TAB_Subject.LVL1, (SELECT TOP 1 SName FROM TAB_Subject AS L1 WHERE L1.LVL1 = TAB_Subject.LVL1 AND L1.LVL2 = 0 AND L1.LVL3 = 0 AND L1.LVL4 = 0) AS LVL1name, TAB_Subject.LVL2, (SELECT TOP 1 SName FROM TAB_Subject AS L2 WHERE L2.LVL1 = TAB_Subject.LVL1 AND L2.LVL2 = TAB_Subject.LVL2 AND L2.LVL3 = 0 AND L2.LVL4 = 0) AS LVL2name, TAB_Subject.LVL3, (SELECT TOP 1 SName FROM TAB_Subject AS L3 WHERE L3.LVL1 = TAB_Subject.LVL1 AND L3.LVL2 = TAB_Subject.LVL2 AND L3.LVL3 = TAB_Subject.LVL3 AND L3.LVL4 = 0) AS LVL3name, TAB_Subject.LVL4, (SELECT TOP 1 SName FROM TAB_Subject AS L4 WHERE L4.LVL1 = TAB_Subject.LVL1 AND L4.LVL2 = TAB_Subject.LVL2 AND L4.LVL3 = TAB_Subject.LVL3 AND L4.LVL4 = TAB_Subject.LVL4) AS LVL4name, TAB.TYPE1, (SELECT LISTname FROM DATA_list WHERE NOM2 = TAB.TYPE1 AND NOM1 = 1) AS TYPE1name, TAB.TYPE2, (SELECT LISTname FROM DATA_list WHERE NOM2 = TAB.TYPE2 AND NOM1 = 2) AS TYPE2name FROM TAB, TAB_Subject_X, TAB_Subject WHERE TAB.MNO = TAB_Subject_X.MNO AND TAB_Subject_X.SUB_ID = TAB_Subject.ID AND TAB_Subject.ID IN (76, 159, 1873) ORDER BY TAB_Subject.ID; عله يكون بداية طيبة ..
  17. وعليكم السلام ورحمة الله وبركاته .. حاولت فهم الموضوع من معطياتك أخي الكريم ولكني لم أوفق .. ان أمكن توضيح أكثر فنكون من الشاكرين
  18. إذا الآن يستحق الموضوع اغلاقه بفضل الله تعالى 😉
  19. هل جميع الإحتمالات التي تخص هذا الموضوع تمت بنجاح ؟؟؟ موضوع التنسيق الخاص بالتواريخ ضمن ضوابط وشروط محددة ، انصحك بفتح موضوع جديد مستقل له .
  20. استدعاء الدالة يا صديقي من خلال زر على سبيل المثال .. في اكسيس ، تم تنفيذها بشكل ميسر ودون اي مشاكل ، أما للفكرة التي في خيالك ان كانت من أجل التفعيل ومنع النقل الغير مصرح به للمشروع ، فيوجد أساليب كثيرة ممكن تطبقها على مشروعك . لست ضليع بالمستوى الذي لدى الأخوة هنا في قسم اكسيل ، ولكني في اكسيس أأكد لك أنه ذلك يسير بطرق وحلول كثيرة وكثيرة وكثيرة ,,
  21. سؤال جميل جداً .. برأيي هل من الممكن أن يكون السبب لتحديد الخصم للصنف / أصناف محددة وليس للفاتورة بشكل عام !! فقد تتيح له فرصة الخصم على اصناف محدة وليس جميع الاصناف ، أو الإستفادة من فكرة العروض على الأصناف ( إن لم يخني التعبير )
×
×
  • اضف...

Important Information