الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حفظ تسديدات العملاء

بدأه jafar089 في 4 أكتوبر 2010 · 17 رد · 835 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

في المثال المرفق بعد اختيار المحصل والعميل تظهر بيانات العميل والمبلغ المستحق عليه وتظهر على اليسار قائمة الأقساط مرتبة شهريا المطلوب بعد كتابة المبلغ المدفوع ( القسط ) والضغط على حفظ يتم حفظ المبلغ في جدول a2 في حقل TotalPaid بناء على ترتيب الأقساط وان يتم توزيع المبلغ على حقل الربح RebhPaid والقسط QestPaid على أساس القيمة الموجودة مسبقا في rebh و Qest إذا تم حفظ ذلك يتم بعد ذلك توزيع الربح على المساهمين العملاء في a1 بناء على حصة كل عميل من Capital وكذلك للمحصلين في جدول mo بناء على النسبة المقررة لهم في Rebh% .

sa22.rar

#2

تم عمل الكود التالي لحفظ المطلب الأول وهو القسط كامل :

If MsgBox("هل تريد بالتأكيد حفظ البيانات", vbInformation + vbYesNo, "حفظ") = vbYes Then
CurrentDb.Execute "UPDATE a2 SET a2.qpaid = " & Me.a2 & ", AqsadQard.cheqno = " & Me.a3 & ",AqsadQard.qplace = '" & Me.a4 & "', a2.pdate = '" & Me.a1 & "' WHERE (((AqsadQard.AqsNo)=" & DLookup("AqsNo", "a2", "a1=" & 0 & " and NoFile=" & Me.NoFile) & "));"
Me.a22.Requery
      DoCmd.SetWarnings False
     Dim mysql, frm As String
     frm = "[Forms]![QardPaid]"
     mysql = "UPDATE qard SET qard.qpaid = " & frm & "![pp]WHERE (((qard.nocard)=" & frm & "![Nocard]));"
     DoCmd.RunSQL mysql
  MsgBox "تم حفظ البيانات "
Else
  MsgBox "تم الإلغاء"
End If

ولكن باقي المطلوب لم أجد له حلاً حتى الآن . :happy:

#3

تفضل اخى

جرب هذا الكود

If MsgBox("åá ÊÑíÏ ÈÇáÊÃßíÏ ÍÝÙ ÇáÈíÇäÇÊ", vbInformation + vbYesNo, "ÍÝÙ") = vbYes Then

Dim x1, x2 As Long
x1 = Me.a2 * DLookup("rebh", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) / DLookup("Amount", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile)
x2 = Me.a2 * DLookup("Qest", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) / DLookup("Amount", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile)

CurrentDb.Execute "UPDATE a2 SET a2.TotalPaid = " & Me.a2 & ", a2.chn = " & Me.a3 & ", a2.bank = '" & Me.a4 & "', a2.RebhPaid = " & x1 & ", a2.QestPaid = " & x2 & ", a2.dpaid = #" & Me.a1 & "# WHERE (((a2.Ns)=" & DLookup("ns", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) & "));"
Me.aa2.Requery
  MsgBox "Êã ÍÝÙ ÇáÈíÇäÇÊ "
Else
  MsgBox "Êã ÇáÅáÛÇÁ"
End If

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#4

أحسنت أستاذي

وماذا عن توزيع الأرباح على المساهمين والمحصلين ؟

#5

ما اسس هذا التوزيع

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#6

كما قلت سابقاً بالنسبة للعملاء يكون التوزيع على أساس رأسمال Capital في جدول a1 ويوجد بالمثال السابق عميلين الأول رأسماله 500 والثاني 400 ريال .

وكذلك بالنسبة للمحصلين على أساس النسبة المعطاة لهم وهي 5% لكل محصل كماهي موجودة في Rebh% في الجدول mo .

أي لو افترضنا أنه تم سداد 800 ريال منها 100 ريال أرباح فيتم توزيعها بالشكل الآتي :

المحصلين = 10% ، محصل 1 = 5 ريال ، محصل 2 = 5 ريال

العملاء = 90% ، عميل 1 = 50 ريال ، عميل 2 = 40 ريال

#7

أينك يا أستاذ ؟!!

#8

اليك التعديل المطلوب

If MsgBox("åá ÊÑíÏ ÈÇáÊÃßíÏ ÍÝÙ ÇáÈíÇäÇÊ", vbInformation + vbYesNo, "ÍÝÙ") = vbYes Then

Dim x1, x2 As Long
x1 = Me.a2 * DLookup("rebh", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) / DLookup("Amount", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile)
x2 = Me.a2 * DLookup("Qest", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) / DLookup("Amount", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile)

CurrentDb.Execute "UPDATE a2 SET a2.TotalPaid = " & Me.a2 & ", a2.chn = " & Me.a3 & ", a2.bank = '" & Me.a4 & "', a2.RebhPaid = " & x1 & ", a2.QestPaid = " & x2 & ", a2.dpaid = #" & Me.a1 & "# WHERE (((a2.Ns)=" & DLookup("ns", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) & "));"
Me.aa2.Requery
CurrentDb.Execute "UPDATE a1 SET a1.Rebh = " & x1 * 0.9 & "* a1.Capital /" & DSum("Capital", "a1") & ";"
CurrentDb.Execute "UPDATE mo SET mo.Rebh = " & x1 * 0.1 & "* mo.Rebhp/" & DSum("Rebhp", "mo") & ";"

  MsgBox "Êã ÍÝÙ ÇáÈíÇäÇÊ "
Else
  MsgBox "Êã ÇáÅáÛÇÁ"
End If

تم تعديل هذه المشاركة بواسطة mrnooo2000 في 8 أكتوبر 2010 في 00:47

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#9

رائع .. مشكووور جزيلاً .

إذا أردت أن يكون الربح تراكميا ، أي أنه في كل مرة يكون فيه ربح يتم إضافته على القديم لا أن يحل محله كما هو الآن فكيف يتم ذلك ؟

#10

تقوم باضافة القيمة الموجودة

CurrentDb.Execute "UPDATE a1 SET a1.Rebh = a1.Rebh +" & x1 * 0.9 & "* a1.Capital /" & DSum("Capital", "a1") & ";"
CurrentDb.Execute "UPDATE mo SET mo.Rebh = mo.Rebh+" & x1 * 0.1 & "* mo.Rebhp/" & DSum("Rebhp", "mo") & ";"

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#11

لقد لاحظت على كود الحفظ ما يلي :

1- إذا تم ترك خانة رقم الشيك أو البنك فارغة أو تم نقل التركيز إلى خانات أخرى كالمحصل مثلا تظهر الرسالة التالية :

post-231634-061565400 1286537993_thumb.j

مشكلاً على الكود :

x2 = Me.a2 * DLookup("Qest", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) / DLookup("Amount", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile)

2- إذا أردت أن يكون نسبة الربح في الكود التالي وهي ( 10% ) يتم قراءتها من المصدر الجدول mo لا أن تكتب في الكود مباشرة لأنها تتغير من منستخدم إلى آخر فكيف يتم ذلك ؟

CurrentDb.Execute "UPDATE mo SET mo.Rebh = mo.Rebh +" & x1 * 0.1 & "* mo.Rebhp/" & DSum("Rebhp", "mo") & ";"
المرفقات
112.JPG

تم تعديل هذه المشاركة بواسطة jafar089 في 8 أكتوبر 2010 في 15:17

#12
اقتباس

1- إذا تم ترك خانة رقم الشيك أو البنك فارغة أو تم نقل التركيز إلى خانات أخرى كالمحصل مثلا تظهر الرسالة التالية :

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

If Len(Nz(Me.a4, "")) = 0 Then
MsgBox "no bank "
Exit Sub
End If

اقتباس
2- إذا أردت أن يكون نسبة الربح في الكود التالي وهي ( 10% ) يتم قراءتها من المصدر الجدول mo لا أن تكتب في الكود مباشرة فكيف يتم ذلك ؟

CurrentDb.Execute "UPDATE mo SET mo.Rebh = mo.Rebh +" & x1 * DSum("Rebhp", "mo") & "* mo.Rebhp/" & DSum("Rebhp", "mo") & ";"

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#13

جزيت خيرا ..

ولكن في الملاحظة الأولى المطلوب ليس إظهار رسالة بالفراغات وإنما المطلوب أن يسمح بالحفظ حتى من دون رقم الشيك أو البنك أي ممكن أن يكونا فارغين ( لأنه ممكن يكون الدفع نقدا ) .

أيضا كما قلت سابقاً بعد كتابة المبلغ ومن ثم الضغط على انتر حتى الوصول إلى المحصل مرة أخرى ( أي نقل التركيز إليه ) وإذا تم الضغط على حفظ فلا يستجيب وتظهر الرسالة السابقة أعلاه .

#14

بالنسبة للجزء الاول

CurrentDb.Execute "UPDATE a2 SET a2.TotalPaid = " & Me.a2 & ", a2.chn = " & Nz(Me.a3,0) & ", a2.bank = '" & Nz(Me.a4,0) & "', a2.RebhPaid = " & x1 & ", a2.QestPaid = " & x2 & ", a2.dpaid = #" & Me.a1 & "# WHERE (((a2.Ns)=" & DLookup("ns", "a2", "TotalPaid=" & 0 & " and n=" & Me.NoFile) & "));"

اما بالنسبة للجزء الثانى

فانا لا افهم ما قصدك

تم تعديل هذه المشاركة بواسطة mrnooo2000 في 8 أكتوبر 2010 في 18:53

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#15

المقصود هو :

عند اختيار محصل ثم عميل ثم من القائمة نضغط على البيانات ثم يذهب المؤشر إلى خانة التاريخ ثم إلى خانة المبلغ ثم خانة رقم الشيك فخانة البنك ثم إذا ضغطت انتر فسينتقل المؤشر ( التركيز ) إلى المحصل بعدها جرب اضغط على زر حفظ فستظهر الرسالة التالية :

post-231634-081956800 1286562732_thumb.j

sa222.rar

المرفقات
112.JPG

تم تعديل هذه المشاركة بواسطة jafar089 في 8 أكتوبر 2010 في 21:33

#16

يحدث ذلك لانك تنتقل الى سجل جديد

ستجد ان رقم الملف 0

للتغلب على ذلك اضف هذا الكود لحدث بعد التحديث لكومبو العميل

Me.AllowAdditions = False

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

#17

لقد وضعت الكود في حدث عند الخروج في مربع النص ( اسم البنك ) ومشى معاي

أشكرك كثيرا يا أستاذ

#18

لا فارق اخى

على الرحب و بالتوفيق

مدونتى:-

احترف الأكسس مع أبو يوسف

متغيب حاليا لانشغالى الشديد

مواضيع مشابهة