إخواني الكرام له وب
السلام عليكم ورحمة الله وبركاته ،،، وبعد :
منذ فترة وأنا أبذل جهداًً كبيراً في عمل برنامج لمتابعة حفظ القرآن يتبع أسلوب إدخال البيانات مرة كل شهر .
واجهتني مشكلة كيفية حساب مقدار ما حفظ الطالب خلال الشهر تلقائياً ، ثم لاح لي بارقة أمل حين قرأت في هذا المنتدى عن طريقة لذلك ،
ولكن المشكلة أن المبرمج اعتمد على الإدخال اليومي بينما أريد أنا الإدخال الشهري :
آمل احتساب الأجر من الخبراء في شرح هذا الكود ، حتى أقوم بتحويله لخدمة برنامجي مشكورين :
الكود :
Private Sub NuPag_GotFocus()
On Error GoTo Err
Dim NumberOfPages, Sum As Double
Dim dbs As Database
Dim rs As Recordset
Set dbs = CurrentDb
Dim N As Integer
NumberOfPages = 0
If IsNull(FromAya) Then
NumberOfPages = ""
End If
If IsNull(ToAya) Then
NumberOfPages = ""
End If
If Not IsNull(FromAya) Then
If Not IsNull(ToAya) Then
'Loop
Set rs = dbs.OpenRecordset("SELECT Percentage FROM tblAya WHERE (((SuraName)= '" & [Forms]![frmReview]![frmReviewDetails_Subform]![Sura] & "' ) AND ( (AyaNo)>= " & [Forms]![frmReview]![frmReviewDetails_Subform]![FromAya] & " ) AND ( (AyaNo)<= " & [Forms]![frmReview]![frmReviewDetails_Subform]![ToAya] & " ) ) ")
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
Percentage = rs.Fields("Percentage").Value
NumberOfPages = NumberOfPages + Percentage
rs.MoveNext
Wend
End If
If IsNull(ToAya) Then
NumberOfPages = ""
End If
End If
Sum = (NumberOfPages / 15)
Me.NuPag = Format(NumberOfPages, "##.00")
rs.Close
dbs.Close
Exit_Err:
Exit Sub
Err:
MsgBox Err.Description
Resume Exit_Err
End Subوهذه وحدة نمطية موجودة ضمن قاعدة البيانات نفسها :
Option Compare Database
Option Explicit
Function Pages(FromAya, ToAya As Integer, Sura As String) As Double
Dim NumberOfPages, Parcentage As Double
Dim dbs As Database
Dim rs As Recordset
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset("SELECT tblAya.Percentage FROM tblAya WHERE (((tblAya.SuraName)= 'Sura' ) AND ((tblAya.AyaNo)>=[Forms]![frmStudents]![frmSaveDetails Subform]![From Aya] And (tblAya.AyaNo)<=[Forms]![frmStudents]![frmSaveDetails Subform]![To Aya]))")
Dim N As Integer
NumberOfPages = 0
If IsNull(FromAya) Then
NumberOfPages = ""
End If
If IsNull(ToAya) Then
NumberOfPages = ""
End If
If Not IsNull(FromAya) Then
If Not IsNull(ToAya) Then
'Loop
rs.MoveLast
rs.MoveFirst
While Not rs.EOF
Percentage = rs.Fields("Percentage").Value
NumberOfPages = NumberOfPages + Percentage
rs.MoveNext
Wend
End If
If IsNull(ToAya) Then
NumberOfPages = ""
End If
End If
rs.Close
dbs.Close
Pages = NumberOfPages
End Functionأسأل الله التوفيق للجميع .

