تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] مساعدة فى عرض السنوات المسددة
#1
السلام عليكم ورحمة الله وبركاته

اعمل على مشروع لتسجيل بيانات الاعضاء واشتراكاتهم وسنوات السداد لكل عضو

بيانات العضو فى جدول مستقل

بيانات العضوية والاشتراك ( قيمة الاشتراك - رقم الكرنيه , الخ ) فى جدول اخر

يتم الاستعلام من خلال تساوى حقل فى الجدول بيانات العضو مع حقل فى جدول بيانات العضوية

لحد الان كل شىء تمام

والتقرير تعمل جيد عن طريق الاستعلام ايضا

مطلوب مساعدة فى عرض سنوات السداد لكل عضو

يعنى مثلا

السنوات المسجلة

من 2009 -2020

طبعا يتم من المستخدم تسجيل السنوات الى سدد فيها العضو قيمة الاشتراك

المطلوب غرامة توقع على العضو بقيمة 50 % عن السنة الاولى الغير مسددة

للتوضيح اكثر ,

قيمة الاشتراك 80 جنيه

دفع العضو السنة الجارية ولم يدفع السنة السابقة

اذا يدفع العضو السنة السابقة

بالاضافة الى 50 % غرامة تأخير .. طبعا دة بالنسبة للسنة الاولى

لكن لو تاخر اكتر من سنة يبقى الغرامة 100 % عن كل سنة زيادة

كيف اطبق الفكرة مع الاستعلام عنها لكل عضو ؟؟ وظهور السنوات المسددة والغير مسدد مع الغرامات

ارجو الرد
الرد }}}
تم الشكر بواسطة:
#2
السلام عليكم

- في البداية لنفترض أن ستستخدم ثلاثة جداول , الأول لبيانات الإعضاء والثاني لبيانات الإشتراكات والثالث لبيانات السداد , وكل الجداول فيها أو بينها حقل مشترك وهو رقم الآي دي للعضو أو CustomerID .

- عندما يأتي عضو جديد , ستقوم بإدخال بياناته في جدول الأعضاء ثم ستقوم بإدخال بيانات إشتراكه في جدول الإشتراكات ومن بيانات الإشتراك سنة بداية الإشتراك وسنة نهاية الإشتراك يعني من إلى , ثم ستقوم بإضافة سجلات في جدول السداد بعدد الفرق بين سنين الإشتراك لديه يعني إذا كانت سنة البداية 2009 والنهاية 2020 تقوم بإضافة 11 سجل في جدول السداد كلها تحمل رقم هذا العضو ورقم السنة وتاريخ السداد والمبلغ المسدد وملاحظات .

- عندما يأتي العضو ليسدد تقوم بالإستعلام من جدول السداد برقم العضو لكي تختار السنة التي يريد سدادها , وتحفظ بيانات السداد , هكذا يتم التسديد .

- إذا كنت تريد إظهار السنوات المسددة والغير مسددة مع الغرامات التي ذكرتها , وبما أنك لكل عضو سجلات قليلة فضع نتيجة الإستعلام في أداة الفليكس قريد أو في أي أداة عرض عن طريق عمل لووب أو حلقة تكرارية وفي داخل الحلقة قم بإضافة الغرامات في أداة العرض كما تريد .

- لنفترض أن وقت حلول السداد لكل سنة هو تاريخ 25/12 من كل سنة , ولتفترض أنك قد قمت بسرد أسماء الأعضاء في كومبو بوكس , ويوجد أداة MsFlexGrid , فعند إختيار إسم العضو من الكومبو بوكس فضع هذا الكود في زر الإستعلام :

كود :
Private Sub Command1_Click()

Dim CustomerID As Long
Dim CustomerAmount As Currency

If RS.State <> 0 Then RS.Close
RS.Open "Select CustomerID From Customers Where CustomerName='" & Trim$(Combo1.Text) & "'", DB, adOpenDynamic, adLockOptimistic

If RS.RecordCount > 0 Then
   CustomerID = RS![CustomerID]
Else
   If RS.State <> 0 Then RS.Close
   MsgBox "لم يتم العثور على عضو بهذا الإسم", vbOKOnly + vbExclamation, Me.Caption
End If

If RS.State <> 0 Then RS.Close
RS.Open "Select Amount From MemberShip Where CustomerID=" & CustomerID, DB, adOpenDynamic, adLockOptimistic

If RS.RecordCount > 0 Then
   CustomerAmount = RS![Amount]
Else
   If RS.State <> 0 Then RS.Close
   MsgBox "لم يتم العثور على هذا العضو في الإشتراكات", vbOKOnly + vbExclamation, Me.Caption
End If

If RS.State <> 0 Then RS.Close
RS.Open "Select * From tblPaid Where CustomerID=" & CustomerID & " Order By zYear,AmountPaid ASC", DB, adOpenDynamic, adLockOptimistic

If RS.RecordCount > 0 Then
  
   Dim Is_First As Boolean
  
   Is_First = True
  
   MSFlexGrid1.Rows = 1
  
   RS.MoveFirst
  
   Do Until RS.EOF
      
      If RS![AmountPaid] <= 0 Then
      
         If RS![zYear] < Year(Date) Then
            If Is_First = True Then
               MSFlexGrid1.AddItem RS![zYear] & vbTab & RS![AmountPaid] & vbTab & CustomerAmount + (CustomerAmount * 0.5)
            Else
               MSFlexGrid1.AddItem RS![zYear] & vbTab & RS![AmountPaid] & vbTab & CustomerAmount * 2
            End If
         Else
            MSFlexGrid1.AddItem RS![zYear] & vbTab & RS![AmountPaid] & vbTab & ""
         End If
        
      Else
      
         MSFlexGrid1.AddItem RS![zYear] & vbTab & RS![AmountPaid] & vbTab & ""
        
      End If
      
      Is_First = False
      
      RS.MoveNext
      
   Loop
  
   If RS.State <> 0 Then RS.Close
  
End If

End Sub

- شرح بعض المصطلحات في الكود , CustomerID هو حقل رقم العضو , Customers جدول الأعضاء , MemberShip جدول الإشتراكات , Amount حقل المبلغ أو قيمة الإشتراك في السنة , tblPaid جدول السداد , zYear حقل السنة في جدول السداد , AmountPaid حقل المبلغ المسدد في جدول السداد .

- ستضاف ثلاثة أعمدة في أداة الفليكس قريد الأول رقم السنة والثاني المبلغ المسدد والثالث مبلغ الغرامة .
كود :
For each Breathe in MyLife
Breathe.Say " سبحان الله والحمد لله ولا إله إلا الله والله أكبر أستغر الله العظيم وأتوب إليه"
Next
الرد }}}
تم الشكر بواسطة: abulayth



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم