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

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


Hamtoooo

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

السلام عليكم 

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

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

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

 

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

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

 

 

 

الفاتورة.accdb

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

منذ ساعه, سامي الحداد 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