اذهب الي المحتوي
أوفيسنا

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

قام بنشر

السلام عليكم 

مشكلتي بسيطة اريد عند اضافة الاصناف باطراف الفاتورة تلقائيا يتحدث حقل الاجمالي الموجود برأس الفاتورة 

وكذلك عند حذف صنف يتم تحديث قيمة الاجمالي الموجود برأس الفاتورة

اريد التحديث يتم بدون عمل زر حفظ فاتورة اريده تلقائي وذلك بعد الاضافه مباشره او بعد الحذف مباشرة

 

حاولت بكذا طريقه لم تفلح

وبإنتظار افكاركم الجميله مرفق لكم المثال

 

 

 

الفاتورة.accdb

قام بنشر (معدل)

ما ينفع حاولت ولم تتحدث 

 

شوفو المشكله فيديو عشان يبين معكم

 

تم تعديل بواسطه Hamtoooo
قام بنشر
منذ ساعه, سامي الحداد said:

تفضل اخي الكريم

شوف التعديل ووافينا بالنتجة

بالتوفيق

 

اشكرك جزيل الشكر على مشاركتك ومحاولتك

لكن الكارثة هو انك الغيت ارتباط حقل اجمالي الفاتورة من الجدول الرئيسي وجعلته غير منظم

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

قام بنشر

السلام عليكم 🙂

 

دائما في عمل اي برنامج ، يجب ان تفكر في اسوء الحالات: البرنامج به عشرات الالآف من السجلات ، وعلى شبكة ، وعندك الكثير من المستخدمين 🙂

 

هناك طريقتين لحل سؤالك:

1. الطريقة المُكلفة ، لأنها يجب ان ترجع للجدول ، وتأخذ القيم منه ، ثم تقوم بعملية الجمع ، بإستعمال DSum ، ومع ان الكود سهل ، ولكني دائما اتفاداه ،

2. وبما ان النموذج (النموذج الفرعي في حالتنا) ، يقوم قد اخذ البيانات من الجدول ، فنستطيع عمل الجمع من واقع بيانات النموذج:

أ. عن طريق الامر Me.RecordsetClone ، ونعمل امر دوران لجمع قيم حقل "السعر" ،

ب. عن طريق الاستفادة من حقل الجمع t1 في ذيل النموذج الفرعي (بإستعمال الامر Sum) ، وهو كما قمت انت بعمله:

صحيح ان حقل الجمع في النموذج الفرعي t1 يقوم بجمع قيم الحقل "السعر" تلقائيا ، ولكنه يحتاج الى وقت لكي يقوم بهذه العملية كل مرة ،

فالحيلة هي ان ننتظر الى يتم تعبئة الحقل بالمجموع الجديد ، ثم نعطي هذه القيمة الى الحقل "اجمالي الفاتورة" في النموذج الرئيسي ،

وبما انه لديك عمليتين ، اضافة وحذف ، فاليك الكود عند اضافة سجل (بما اننا نستخدم نموذج اضافة مستقل ، فيجب ان ننادي حقل النموذج الفرعي t1 عن طريق نموذجه الرئيسي ثم الفرعي) :

Private Sub cmd_Add_Record_Click()

    'Save the Record
    If Me.Dirty Then Me.Dirty = False
    
    'Requery the SubForm to show the new Record
    Forms!الفاتورة!الاصناف.Requery

    'wait until the sum shows in the SubForm
    Do Until Len(Forms!الفاتورة!الاصناف!t1 & "") <> 0
        DoEvents
    Loop
    
    'transfer the value to the Main Form field
    Forms!الفاتورة![اجمالي الفاتورة] = Nz(Forms!الفاتورة!الاصناف!t1, 0)
    
    'close the Add Form
    DoCmd.Close acForm, Me.Name, acSaveNo
    
End Sub

.

وهذا الكود عند حذف سجل من النموذج الفرعي مباشرة :

Private Sub cmd_Delete_Record_Click()

    'Delete the Record
    DoCmd.RunCommand acCmdDeleteRecord
    
    'Requery the Sum Field
    Me.t1.Requery
    
    'wait until the sum shows in the SubForm
    Do Until Len(Me.t1 & "") <> 0
        DoEvents
    Loop
    
    'transfer the value to the Main Form field
    Me.Parent![اجمالي الفاتورة] = Nz(Me.t1, 0)
    
End Sub

 

جعفر

1534.Update_MainForm_with_SubForm_Total.accdb.zip

  • 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