هنا بداية تصميم وحدة نمطية من يكمل الباقي علما انها احدى مشاركات للاستاذ محمد طاهر السابقة
و يتناول ثلاث امور هي
الأول الجمع لكل صفحة على حده و الثاني نقل مجموع الصفحة إلى التي بعدها ( ما قبله ) وفى آخر صفحة محموع الصفحات كلها الامر الثالث هو استدعاء اي قيمة من اي حقل بشرط تاريخ معين او غيره .
بالنسبة الامر الأول من السؤال فهذه إجابته :
كود لحساب مجموع رقمي لكل صفحة في تقرير
ضع الكود التالي في الوحدة النمطية الخاصة بالتقرير:
Option Compare Database
Option Explicit
Public PageSum As Double
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
PageSum = 0
End Sub
Private Sub تفصيل_Print(Cancel As Integer, PrintCount As Integer)
PageSum = PageSum + Reports![اسم التقرير]![اسم الحقل المطلوب جمع بياناته]
End Sub
أنشى في مقطع تذييل الصفحة مربع نص وسمه txtPageTotal واجعل مصدر عنصر التحكم له :
=[ PageSum]
بخصوص سؤال الشق الثاني فقد قمت بتجارب حتى وصلت لما أظنه جواب له : 1- في مقطع رأس الصفحة أنشئ مربع نص واجعله مباشرة فوق حقل المبلغ الموجود في مقطع تفصيل واجعل مصدر مصدر عنصر التحكم له : =[PagePreviousSum] 2- في مقطع تذييل الصفحة أنشئ مربعي نص أحدهما باسمtxtPageTotal والآخر باي اسم لايهم ، واجعل مصدر عنصر التحكم للأول : =[PageSum] وللثاني : =[Total]+[txtPageTotal] وفي الوحدة النمطية الخاصة بالتقرير ضع :
Option Compare Database
Public PagePreviousSum As Double
Public PageSum As Double
Public Total As Double
Private Sub PageHeaderSection_Format(Cancel As Integer, FormatCount As Integer)
PageSum = 0
If Me.Page = 1 Then PagePreviousSum = 0
Total = PagePreviousSum
End Sub
Private Sub تفصيل_Print(Cancel As Integer, PrintCount As Integer)
PageSum = PageSum + Reports![اسم التقرير]![اسم حقل المبلغ]
PagePreviousSum =اسم مربع النص
' ضع اسم مربع النص بي [] اذا كان به مسافة
End Sub
لقد جربت الكود على 21 صفحة مليئة بالأرقام وتنقلت بينها وكانت النتيجة صحيحة .
بالنسبة لمربع النص المسمى txtPageTotal فهو يظهر مجموع المبالغ في الصفحة دون أن يجمع معها المجموع السابق فإذا كنت في غير حاجة إليه فقم بإخفائه