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

الغياب والتأخر اليومي للطلاب


الردود الموصى بها

وصلنا الي وجود تاريخ فارغ عندما يكون اليوم لا يوجد به غياب أو تأخر

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

 

نريد ان نكمل العمل

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

  • 2 weeks later...

السلام عليكم أستاذ علي:smile:

 

معلش اتحملني شوي ، الطلب ليس متكامل:blink:

اولا انا نسيت ايش بالضبط اللي لازم يصير (العتب على الشيب:wink2:) ، ولكني عملت تغيير في الخطة ، وان شاء الله يكون مناسب للنوعين من التقارير:smile:

 

اختر تاريخين من النموذج frm_PrintRpt ، للإختيار الاول "بين تاريخين محددين" .

1. لما تضغط على زر عمل التقرير ، البرنامج يعمل جدول خارجي ، به التواريخ والايام و eSIS جميع الطلبة للصف والشعبة ،

  • هذا الجدول المؤقت (tmp_tbl_Dates_Days) في البرنامج المؤقت (tmp_Dates_Days.mdb) يتكون في مجلد الوندوز Temp ، ولست بحاجة لرؤيته ،
  • وعندما يتكون الجدول ، ترى نتائجه في الاستعلام qry_Temp ،

2. تلقائيا الاستعلام qry_T2 يفتح ، وسترى فيه جميع الايام ، سواء بغياب او بدون ، ويجب ان نعدل الحقول في هذا الاستعلام ، ونعمل التقريرين منه:smile:

 

رجاء فحص هذا العمل ، لأنه سيستبدل العمل السابق ،

ولكني بحاجة الى توجيهك للخطوة التالية:smile:

 

 

اما الاختيار الثاني "طباعة التقرير بالكامل"

فيقوم الكود بأخذ اول يوم في الجدول ، وآخر يوم ، ويقوم بنفس العملية اعلاه :smile:

 

الاستعلامات الوحيدة التي اعتمدت عليها في هذه الخطوة هي qry_T1 و qry_T2 و qry_Temp ،

 

والشغل كله تقوم به الوحدة النمطية التالية:

Option Compare Database


Dim tbdf As TableDef, qrydf As QueryDef, fld As Field
Dim rst As DAO.Recordset, rst_TQ As DAO.Recordset
Dim sfrm As Form
Dim wrkAcc As Workspace
Dim dbsNew As Database
Dim mdb_Name As String
Public H1 As Integer

Function Make_DB()
On Error GoTo err_Make_DB
  
   
   'populate Arabic day in an array
    Dim Arabic_Days() As String
    Set rst = CurrentDb.OpenRecordset("Select * From tbl_Months")
    rst.MoveLast: rst.MoveFirst
    ReDim Arabic_Days(7)
    
    For i = 1 To 7
        Arabic_Days(i) = rst!Day_A
        rst.MoveNext
    Next i
    

    'How Many Students
    mySQL = "SELECT Grade, Section, eSIS FROM tbl_Follow4"
    mySQL = mySQL & " Where Grade='" & [Forms]![frm_PrintRpt]![StuGrade] & "'"
    mySQL = mySQL & " AND Section='" & [Forms]![frm_PrintRpt]![StuSection] & "'"
    mySQL = mySQL & " GROUP BY Grade, Section, eSIS"
    'Debug.Print mySQL
    
    Set rst_TQ = CurrentDb.OpenRecordset(mySQL)
    rst_TQ.MoveLast: rst_TQ.MoveFirst
    How_Many_Students = rst_TQ.RecordCount


    
    'create an empty Dates_Days.mdb in the same folder as the FE
    'this will allow more than one user to use This DB
    Set wrkAcc = CreateWorkspace("AccessWorkspace", "admin", "", dbUseJet)

    'database name and path (in the Windows Temp Folder)
    mdb_Name = GetWinTemp & "\tmp_Dates_Days.mdb"
    'mdb_Name = Application.CurrentProject.Path & "\tmp_Dates_Days.mdb"
    
    ' Make sure there isn't already a file with the name of the new database.
    If Dir(mdb_Name) <> "" Then Kill mdb_Name

    ' Create the new database
    Set dbsNew = wrkAcc.CreateDatabase(mdb_Name, dbLangGeneral)

    dbsNew.Close
    wrkAcc.Close

    'make a Table tmp_tbl_Dates_Days using "Make Table" query in the DB Dates_Days.mdb
    mySQL = "SELECT tmp_tbl_Dates_Days.* INTO tmp_tbl_Dates_Days IN " & Chr(34) & mdb_Name & Chr(34)
    mySQL = mySQL & " FROM tmp_tbl_Dates_Days"
    'Debug.Print mySQL

    DoCmd.SetWarnings False
        DoCmd.RunSQL mySQL
    DoCmd.SetWarnings True


    'set the Dates required
    If Forms!frm_PrintRpt!MyDates = 1 Then
        fDate = Forms!frm_PrintRpt!FromDate
        tDate = Forms!frm_PrintRpt!ToDate
    Else
        fDate = DMin("[DayDate]", "tbl_Follow4")
        tDate = DMax("[DayDate]", "tbl_Follow4")
    End If
    
    
    
    Set dbsNew = OpenDatabase(mdb_Name)
    Set rst = dbsNew.OpenRecordset("Select * From tmp_tbl_Dates_Days")
    
    
    For j = 1 To How_Many_Students
    
        N = fDate
        dif = DateDiff("d", fDate, tDate)

        For i = 0 To dif
            N = DateAdd("d", i, fDate)
            'MsgBox "Date:" & N & vbCrLf & "Day :" & Format(N, "dddd")
            
            'skip Fridays and Saturdays
            If Weekday(N) <> 6 And Weekday(N) <> 7 Then
                rst.AddNew
                    rst!DayDate = N
                    rst!DayName = Arabic_Days(Weekday(N))    'Format(N, "dddd")
                    rst!eSIS = rst_TQ!eSIS
                rst.Update
                'MsgBox Arabic_Days(Weekday(N)) & vbCrLf & Format(N, "dddd")
            End If
            
        Next i
            
        rst_TQ.MoveNext
    Next j
    
    
    'now make the query qry_Temp based on the new location
    mySQL = "SELECT Auto_ID, DayDate, DayName, eSiS"
    mySQL = mySQL & " FROM tmp_tbl_Dates_Days IN " & Chr(34) & mdb_Name & Chr(34)
    mySQL = mySQL & " ORDER BY Auto_ID"

    'delete the old qry_Temp
    DoCmd.DeleteObject acQuery, "qry_Temp"
    
    'make the new qry_Temp
    Set qrydf = CurrentDb.CreateQueryDef("qry_Temp", mySQL)


    rst.Close: Set rst = Nothing
    rst_TQ.Close: Set rst_TQ = Nothing
    dbsNew.Close

    
    
Exit Function
err_Make_DB:

    If Err.Number = 3270 Then
        'this field does not have a caption for it, give it the field name

        
    ElseIf Err.Number = 3024 Or Err.Number = 91 Or Err.Number = 52 Or Err.Number = 53 Or Err.Number = 3055 Then
        'mdb, and Table not found to Delete
        Resume Next

    ElseIf Err.Number = 3167 Then
        'ignor, Records Deleted
        Resume Next

            

        
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If


End Function

 

جعفر

459.2.AbsentLate-10-12-2016.accdb.zip

  • Like 3
رابط هذا التعليق
شارك

  • 2 weeks later...
 

أستاذ جعفر

جزاك الله خيرا

ولا اجد كلام يعطيك حقك لما تقدمه من مساعدات للجميع

شكرا جزيلا

انا اعتذر عن التأخر في الرد عليك في مشاركتي الاخيرة ، ولكن لم يكن في اليد حيلة ، للأسف:blink:

ولكن الحمدلله وصلنا الى حل:smile:

 

جعفر

  • Like 1
رابط هذا التعليق
شارك

السلام عليكم ورحمة الله وبركاته

شكرا على الاهتمام وجزاك الله خيرا

اعذرني لعدم تطبيق ما تم انجازة لانه كان عندي لجنة تفتيش على المدرسة في الأيام السابقة

عند التطبيق لم احصل على المطلوب وهو ظهور أيام الغياب للطالب بما فيها اليوم الحاضر به الطالب

ممكن أكون استخدمت الاستعلامات بشكل خاطئ

رجاء تطبيق الاستعلامات الجديدة مع التقرير ( بين تاريخين ، الفترة كاملة )

مع جزيل الشكر

 

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

السلام عليكم:smile:

 

تفضل:smile:

هو تقرير واحد ، وكل شئ معتمد على qry_Temp التي يكون فيها التواريخ كاملة ،

والتقرير مصدره qry_T22 ،

واستعملت الاستعلام المشروط ، حيث جعلت الايام التي ليس فيها غياب ولا تأخير ، باللون الاصفر:

459.3.Clipboard01.jpg.58ad60590627242c85c870c30a131584.jpg

.

جعفر

459.3.AbsentLate-10-12-2016.accdb.zip

  • Like 3
رابط هذا التعليق
شارك

أستاذ جعفر

جزاك الله خيرا

شكرا جزيلا على كل ما تقدمه على مساعدتك

انا الحين بحاول فهم الوحدة النمطية وكيفية عملها

هل يمكن عمل فاصل بين كل أسبوع واخر أي بعد يوم الخميس يظهر فراغ ثم يليه الأسبوع التالي

هل كل الاستعلامات الموجودة مطلوبة

 

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

السلام عليكم أستاذ علي:smile:

 

تم تنظيف البرنامج من مخلفات تجاربي السابقة ، وهذه النتيجة بعد عمل الفاصل بين الاسابيع:

459.4.Clipboard01.jpg.902094d99fc493cbd908d1f7a282fa02.jpg

.

وهذا كود المسافة بعد يوم الخميس


Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)

    If Me.DayName = "الخميس" Then
        Me.Detail.Height = 0.5 * 1440
    Else
        Me.Detail.Height = Me.DayName.Height
    End If
   
End Sub

 

صافي يا لبن:wink2:

 

جعفر

459.4.AbsentLate-10-12-2016.accdb.zip

  • Like 3
رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information