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

حذف سجل من خلال كود vba - الشرح بالصورة المرفقة


إذهب إلى أفضل إجابة Solved by ابوخليل,

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

اتفضل ابو اشرف ان شاء الله يكون ما تريد

وتعديل عالكود

Private Sub أمر36_Click()
    f = Me.salary_نموذج_فرعي!amount
    If f > Me.salary Then
        DoCmd.RunCommand acCmdDeleteRecord
    End If
End Sub

بالتوفيق

 

delete2.accdb

تم تعديل بواسطه الفلاحجى
  • Like 2
  • Thanks 1
رابط هذا التعليق
شارك

الله يعطيك العافية اخي @الفلاحجى

يمكن ما اقدرت اوصل المطلوب 

انا بدي اذا كان هناك دفعات خلال الشهر 

اكثر من دفعه

فيجب ان لا يتجاوز مجموع الدفعات الاجمالي  مبلغ الراتب

مثلا

اذا كان الراتب 1000 ريال

اول مرة دفعنا 200 ريال يقبلها البرنامج ويتم الحفظ

وثاني مرة دفعنا 500 ريال يقبلها البرنامج ويتم الحفظ

وثالث مرة حاولنا ندفع 400 ريال --- تظهر رسالة  انه المبلغ اكبر من الراتب 

ويمنع الحفظ 

اما تعديل المبلغ او حذف السجل 

وصلت الفكرة ؟؟

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

السلام عليكم

مداخلة معكم احبتي ..  خاطرة بصوت مرتفع :

مؤكد في تطبيق الفكرة .. انك ستأخذ بعين الاعتبار  أن العملية سيتم تطبيقها على مستوى كل شهر

باعتبار احتمال تكرار هذه الدفعات خلال السنة

بمعنى ان الاحتراز هذا يتم خلال الشهر الحالي

في هذه الحالة انت بحاجة الى استعلام  مصدره الجدول الفرعي  يظهر فيه الدفعات خلال هذا الشهر

وبناء على هذا الاستعلام  يتم المقارنة  بين مجموع الدفعات والمرتب المستحق

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

نعم صحيح اخوي @ابوخليل

لكن واجهتني مشكلة 

لما انقل التركيز على النموذج الفرعي استطيع اجراء أي شيء على النموذج الفرعي

لكنني اعجز عن نقل التركيز على النموذج الرئيسي مرة اخرى 

بحيث 

me.undo

docmd.cancel event

هذه الاوامر لا تستجيب نهائيا 

 

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

المفترض الكود يتعامل مع الجداول

بغض النظر عن النموذج الرئيسي او حتى الفرعي

بمعنى  تعمل حدث قبل التحديث للحقل في النموذج الفرعي فإذا كانت القيمة صحيحة يتم القبول والتحديث والا يتم الغاء القيمة

كيف ؟

الكود هذا يشتمل على :

1- سطر يجلب راتب الموظف من الجدول الرئيس

2- سطر يجلب من الجدول الفرعي مجموع ما تم دفعه للموظف خلال هذا الشهر 

3- سطر  يجمع ما تم دفعه سابقا + القيمة المدرجة في الحقل 

4- تتم المقارنة بين القيمتين 1 و  3

 

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

  • أفضل إجابة
Private Sub amount_BeforeUpdate(Cancel As Integer)
If IsNull(Me.amount) Then Exit Sub
Dim i, j As Integer
i = DLookup("salary", "emp", "id=" & emp_name)
j = DSum("amount", "qryAmountInMonth", "emp_name=" & emp_name)
If j + Me.amount > i Then
Undo
MsgBox "المبلغ يتجاوز المرتب الشهري"
Exit Sub
End If
End Sub

 

delete2.accdb

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

وعليكم السلام ورحمه الله وبركاته معلمنا العزيز @ابوخليل

جزاك الله معلمنا العزيز ابو خليل 💐

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

بارك الله لنا فيكم معلمنا العزيز ابوخليل وعلى خواطركم الجميله وحلولكم الرائعه

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

معلمى العزيز @ابوخليل طالما سوف يتم النظر الى الشهر

فيجب النظر الى الشهر والسنه معا اليس كذلك

وعليه يجب تعديل السطر التالى ويتم الاستغناء عن الاستعلام qryAmountInMonth

يجب ادخال التاريخ قبل المبلغ

j = DSum("amount", "qryAmountInMonth", "emp_name=" & emp_name)

الى

j = Nz(DSum("amount", "salary", "emp_name=" & emp_name & " And Year([dated])=" & Year([dated]) & " And Month([dated])=" & Month([dated])), 0)

 

delete2.accdb

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

اهلا اخونا العزيز  واستاذنا القدير  أبو بسمله .. 

منذ ساعه, الفلاحجى said:

فيجب النظر الى الشهر والسنه معا اليس كذلك

نعم صحيح غفلت عنها ، زادك الله علما

اما بالنسبة الى استبدال الاستعلام  بالجملة البرمجية فهي جميلة ايضا ، وتحتاج الى تعديل طفيف لتصبح :

j = Nz(DSum("amount", "salary", "emp_name=" & emp_name & " And Year([dated])=" & Year(Date) & " And Month([dated])=" & Month(Date)), 0)

والسبب ان الحدث هو قبل التحديث  والتاريخ ستتم كتابته بعد ادراج المبلغ

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

جرب على مثالك امسح جميع المبالغ والسجلات في النموذج الفرعي ثم ادخل مبلغ 1000  ثم جرب وأدخل 1001

سيظهر خطأ ،  الا لو جعلنا التاريخ افتراضي (تاريخ اليوم)

ثم استبدل كودك بالكود اعلاه وجرب 

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

مرحبا بك اخى ومعلمى العزيز @ابوخليل 💐

بل اننى طالب فى مدرستكم اتعلم منكم ومن جميع اخوانى واساتذتى جزاكم الله عنا خير الجزاء

ولا يهمك معلمنا العزيز زادنا الله واياكم من فضله وعلمه

1 ساعه مضت, ابوخليل said:

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

نعم هذا منطقى

بارك الله لنا فيك وجزاك الله عنا كل خير

 

 

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

20 ساعات مضت, الفلاحجى said:

طالما سوف يتم النظر الى الشهر

فيجب النظر الى الشهر والسنه معا اليس كذلك

من تجربتي ، يجب ان يكون لهذا القرض رقم ايضا ، فقد يأخذ قرض للمواد الكهربائية ووو مثل عند اخونا @كريمو2 ، وحتى قروض النقد ، فإذا استوفى قيمة القرض ، قد يأخذ قرض آخر في الشهر التالي !!

 

جعفر

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

في ٢٨‏/٣‏/٢٠٢١ at 13:54, jjafferr said:

من تجربتي ، يجب ان يكون لهذا القرض رقم ايضا ، فقد يأخذ قرض للمواد الكهربائية ووو مثل عند اخونا @كريمو2 ، وحتى قروض النقد ، فإذا استوفى قيمة القرض ، قد يأخذ قرض آخر في الشهر التالي !!

مرحبا باخى واستاذنا العزيز جعفر

ربنا ما يحرمنا منكم ومن تجاربكم التى نستفاد منها كثير جزاكم الله عنا كل خير

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

 

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

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