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

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


إذهب إلى أفضل إجابة Solved by AbuuAhmed,

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

الاخوة والاساتذة الافاضل

فى المرفق نموذجين 

الاول : Trans_in فاتورة مشتريات عبارة عن نموذج رئيسي ونموذج فرعى لاصناف الفاتورة 

الثاني : Trans_out فاتورة مبيعات عبارة عن نموذج رئيسي ونموذج فرعى لاصناف الفاتورة

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

المشكلة التى اريد المساعدة 

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

Private Sub أمر12_Click()
On Error Resume Next
If IsNull(Me.Number) Then

        MsgBox "السجل فارغ ", 48, "حورس"

Else

If MsgBox("هل اريد حذف الصنف من الفاتورة", vbInformation + vbYesNo, " حورس تحذير") = vbYes Then
  mm = mm - Qty_in
    bb = bb - Qty_in
   DoCmd.SetWarnings False
  DoCmd.RunCommand acCmdDeleteRecord
'   Refresh
   DoCmd.SetWarnings True
           
                 MsgBox "تم حذف السجل", 48, "حورس "

Else
        MsgBox "تم الإلغاء ", 48, "حورس "
End If
   End If
End Sub

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

جزاكم الله خيرا

test.jpg

قاعدة بيانات4.rar

تم تعديل بواسطه أكسس وبس
رابط هذا التعليق
شارك

جرب هذا الكود
 

Private Sub Command16_Click()
    Dim invRst As Recordset
    Dim itmRst As Recordset
    
    If vbNo = MsgBox("هل تريد حذف  الفاتورة الحاليه ؟؟؟", vbYesNo + _
                                                          vbCritical + _
                                                          vbMsgBoxRight + _
                                                          vbDefaultButton2, "تحذير") Then
        Exit Sub
    End If
    
    Set itmRst = CurrentDb.OpenRecordset("Stor1", dbOpenDynaset)
    Set invRst = Me.frmPurches.Form.RecordsetClone
    invRst.Filter = "Add_doc=" & Me.Add_doc
    Set invRst = invRst.OpenRecordset
    
    With invRst
        invRst.MoveFirst
        Do While Not .EOF
            itmRst.FindFirst "Number1='" & !Number & "'"
            If Not .NoMatch Then
                itmRst.Edit
                    itmRst!currentRased1 = itmRst!currentRased1 - !Qty_in
                itmRst.Update
            End If
            .MoveNext
        Loop
    End With
    
    Set invRst = Nothing
    Set itmRst = Nothing
End Sub

 

تم تعديل بواسطه AbuuAhmed
  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

يفترض حذف الاصناف ايضا من جدول Transaction

تضع هذا في اخر كود استاذ ابو احمد

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE Transaction.*, Transaction.Add_doc FROM [Transaction]WHERE (((Transaction.Add_doc)=[Forms]![Trans_in]![Add_doc]));"
DoCmd.SetWarnings True

واعمل في نهاية الكود Me.Requery

حتى تختفي الاصناف من النموذج

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

اشكركم يا اخوانى وجزاكم الله خيرا

قمت بتجريب الكود ولكن يوجد مشكلة 

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

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

14 دقائق مضت, أكسس وبس said:

ولكن لا يتم حذف بنود الفاتورة فى النموذج الرئيسي اريد حذف كامل بنود الفاتورة

عدلت مشاركتي لان لم افهم سؤالك؟

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

لدي سؤال لحضرتك..هو ايه الفائدة من الجدول Stor1؟

تم تعديل بواسطه Eng.Qassim
رابط هذا التعليق
شارك

اشكرك اخى واستاذى الكريم 

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

اما جدول Stor1 هو خاص بالمخزن رقم 1 وليكن المحل مثلا هو اننى اقوم بتكويد الاصناف ثم عند الخروج من شاشة التكويد Names يتم الحاق الاصناف الى الجداول الخاصة بالمخازن ليتم احتساب الكميات للاصناف بعد عملية الوارد او الصادر وهنا Stor1 يمثل المحل 

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

جرب هذ في نهاية الكود

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE Transaction.*, Transaction.Add_doc FROM [Transaction]WHERE (((Transaction.Add_doc)=[Forms]![Trans_in]![Add_doc]));"
DoCmd.RunSQL "DELETE Add_doc.*, Add_doc.Add_doc FROM Add_doc WHERE (((Add_doc.Add_doc)=[Forms]![Trans_in]![Add_doc]));"
DoCmd.SetWarnings True

 

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

اخى واستاذى الكريم

قمت باضافة الكود فى نموذج Trans_in وجربت الكود ولكن هناك عدة مشاكل

1- النموذج الفرعى لا يعمل

2- عند الحذف تظهر رسالة خطا بعد رسالة تأكيد الحذف كما فى صورة خطا2

3- عند الخروج من النموذج تظهر رسالة كما فى صورة خطا لاننى عامل كود عند الخروج وعند النقر على مفتاح خروج ومع اغلاق نموذج Me.TotalAmount = Me.dd

مرفق القاعدة بعد اضافة الكود

ارجو ان يسعنى كرمكم

خطا.jpg

خطا2.jpg

قاعدة بيانات4 - Copy.rar

تم تعديل بواسطه أكسس وبس
رابط هذا التعليق
شارك

أضفت كود حذف الفاتورة والمفترض عند حذف الفاتورة سيقوم بحذف الأصناف آليا لأنه مرتبط بعلاقة في الجداول.
جرب الآن:
 

Private Sub Command16_Click()
    Dim invRst As Recordset
    Dim itmRst As Recordset
    Dim DocID As Long
    
    On Error Resume Next
    
    If vbNo = MsgBox("هل تريد حذف  الفاتورة الحاليه ؟؟؟", vbYesNo + _
                                                          vbCritical + _
                                                          vbMsgBoxRight + _
                                                          vbDefaultButton2, "تحذير") Then
        Exit Sub
    End If
    
    Set itmRst = CurrentDb.OpenRecordset("Stor1", dbOpenDynaset)
    Set invRst = Me.frmPurches.Form.RecordsetClone
    invRst.Filter = "Add_doc=" & Me.Add_doc
    Set invRst = invRst.OpenRecordset
    
    With invRst
        .MoveFirst
        Do While Not .EOF
            itmRst.FindFirst "Number1='" & !Number & "'"
            If Not .NoMatch Then
                itmRst.Edit
                    itmRst!currentRased1 = itmRst!currentRased1 - !Qty_in
                itmRst.Update
            End If
            .MoveNext
        Loop
    End With
    
    If (Not Me.NewRecord) Then
        DoCmd.RunCommand acCmdDeleteRecord
    End If
 
    Set invRst = Nothing
    Set itmRst = Nothing
End Sub

 

تم تعديل بواسطه AbuuAhmed
رابط هذا التعليق
شارك

غير متأكد ، عدل في هذا الحدث:
 

Private Sub Form_Load()
    If Me.RecordsetClone.RecordCount = 0 Then
        DoCmd.GoToRecord , , acNewRec
    End If
End Sub

أو عطله تماما.

تم تعديل بواسطه AbuuAhmed
رابط هذا التعليق
شارك

اخى واستاذى الكريم 

تم حل المشكلة ولكن توجد مشكلة اخرى كما ذكرت فى الصورة المرفقة

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

ارجو ان يسعنى كرمكم 

معادلة.jpg

قاعدة بيانات4 - Copy.rar

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

  • أفضل إجابة

منذ الصباح الباكر وأنا أحاول مع هذه المشكلة الغريبة.
أنا الحقيقة لا أحب ولا أتعامل مع هذا النوع من النماذج Continuous Forms ولا إضافة معادلات لمصدر الصناديق Control Source
وسامحني قد لا أستطيع التواصل معك فأنا انقطعت عن برامجي الخاصة ولا بد أن أرجع لها.

قاعدة بيانات4_02.accdb

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

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