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

طلب مساعدة فى عمل تقرير بارصدة الدين خلال فترات


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

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

السلام عليكم ورحمة الله وبركاته 

اساتذتى الكرام 

بعد اذن حضرتكم معي مشكلة فى عمل استعلام لتقرير 

 

معي جدول (مرفق الملف) فيه عمليات (قيود)  باسم TempStatmentAcc

دائن (Cr) (فيه ارصدة الفواتير) 

ومدين (Dr) ( فيه ما تم تحويله للمورد "السداد")

وايضا هناك حقل لتاريخ الحركة QdDate

 

المطلوب اظهار لى قيمة الفواتير التى لم تسدد خلال الفتره 

من  1 يوم الى 30 يوم 

ومن 31 يوم الى 60 يوم 

ومن 61 يوم الى 90 يوم 

ومن 91 يوم الى 120 يوم 

ومن 121 يوم فاكثر 

 

هناك محاولة لكنها مش ظابطة معي 

 

هل اجد حل لها لان الموضوع طول كثير معي تقريبا اقارب على الشهر ولم اصل لحل جيد

GeneralTest.rar

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

وعليكم السلام ورحمة الله وبركاته

الاستعلام شغال 100%

 الا ان كنت لم افهم عنك

انظر الصورة من استعلامك .. فقط انا غيرت في التواريخ

Untitled.jpg

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

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

وعليكم السلام ورحمة الله وبركاته

الاستعلام شغال 100%

 الا ان كنت لم افهم عنك

انظر الصورة من استعلامك .. فقط انا غيرت في التواريخ

Untitled.jpg

استاذى ومعلمى الجليل الاستاذ @ابوخليل

اولا بعتذر اني لم اوضح المطلوب بشكل اكثر تفصيلا (لعل عند كتابة الموضوع قمت من على الجهاز اكثر من مره حتى نسيت ما كنت اريد ان اكتبه ^_^)

ما اريده بالظبط 

ان الاستعلام او حتى دالة vba 

يطرح قيمة المدفوعات من الفواتير 

يعنى مثلا دفعت فى 01/11/2023 مبلغ 5000 

وفى نفس التاريخ استلمت فاتورة ب 5500 

كده المورد له 500  وهكذا على مدار الايام والشهور
لان البيانات الى فى الجدول هى بيانات (كشف حساب المورد)

اريد ان اعرف الفواتير التى لم يتم دفعها خلال الفترات السابق ذكرها (ال 5 فترات )

لان فى فواتير تستحق دفعها مثلا بعد شهر او شهرين حسب الاتفاق

 

( مش عارف ان كنت عرفت اوضح المشكلة ام لا ) لكن اريد ان يتم خصم ما تم دفعه من الفواتير 

القديمه واظهار المبالغ المتبقيه (المستحقه) حسب عمر تاريخ الفاتورة

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

56 دقائق مضت, عمر ضاحى said:

 

اريد ان اعرف الفواتير التى لم يتم دفعها خلال الفترات السابق ذكرها (ال 5 فترات )

 

 

كيف ؟؟

اي كيف اعرف ان الفرق تم دفعه ؟ اقصد الـــ 500 التي اشرت اليها ؟

ومتى ؟؟؟ وضع تحت متى خطوط .. وهل يوجد ما يدل على دفع المتبقي ( رقم الفاتورة + التاريخ ) ؟؟

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

طرحت الاستفسارات لأنها ستتبادر الى ذهن من سيحاول تنفيذ الفكرة

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

 

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

😅

هي دي المعضله 

فكرت لو مثلا جمعت جميع ما تم دفعه وليكن مثلا 50000 (يتم تخزين القيمة فى متغير)

ثم اعمل حلقة تكرارية مع كل سجل من سجلات الفواتير 

الحلقه هذه تقوم بطرح قيمة الفاتورة فى السجل الاول (طبعا الترتيب من التاريخ الاقدم الى الاحدث)

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

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

فهل ممكن تنفيذ هذا داخل الاستعلام باستخدام مديول اذا امكن 

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

12 دقائق مضت, عمر ضاحى said:

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

لنفرض ان الخطوة اللي بعد السالب كانت مدفوعات

وضعك الحالي بالسليم 100%

مجموع الدائن الكلي ظاهر .. وايضا المدين

اعتقد انك تريد ان تعرف الفرق الحاصل بين مجموع الدائن ومجموع المدين من اي فاتورة اتى ؟  سواء بالزيادة او النقص

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

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

58 دقائق مضت, ابوخليل said:

لنفرض ان الخطوة اللي بعد السالب كانت مدفوعات

 

ما هي القيم ال هتطلع اما موجبه او صفر او سالبة

لو موجبه يعنى ليس هناك فواتير مستحقه ولنا مبلغ (ال بالموجب) عند المورد 

لو صفر يعنى ليس هناك فواتير مستحقه وليس علينا اى مبالغ 

لو سالب يعنى هناك فواتير مستحقه لم تسدد 

 

فى الحالة الاولى والثانية (لن يظهر لى ارصدة )

فى الحالة الثالثه 

هيظهر مثلا من شهر 4 ( كمثال وليس مرتبط بملفى)

المطلوب توزيع الفواتير التى ستظهر حسب الارصده بتعتها على الحالات الخمس ( 30 - 60 -90 -120 -اكثر من 120 يوم)

 

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

  • أفضل إجابة
6 ساعات مضت, عمر ضاحى said:

😅

هي دي المعضله 

فكرت لو مثلا جمعت جميع ما تم دفعه وليكن مثلا 50000 (يتم تخزين القيمة فى متغير)

ثم اعمل حلقة تكرارية مع كل سجل من سجلات الفواتير 

الحلقه هذه تقوم بطرح قيمة الفاتورة فى السجل الاول (طبعا الترتيب من التاريخ الاقدم الى الاحدث)

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

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

فهل ممكن تنفيذ هذا داخل الاستعلام باستخدام مديول اذا امكن 

انا طبقتها على الجدول ..

كود تجريبي صغير ينفذ الفكرة اعلاه .. يمكن تطويره

 

GeneralTest2.rar

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

19 دقائق مضت, ابوخليل said:

انا طبقتها على الجدول ..

كود تجريبي صغير ينفذ الفكرة اعلاه .. يمكن تطويره

 

GeneralTest2.rar 25.5 kB · 0 downloads

استاذى الجليل @ابوخليل

احب ان اشكرك كثيرا على تقريب الفكره لى (سائل المولى عز وجل ان يبارك لك فى عافيتك ويزيدك من علمه) 🌹🌹🌹🌹🌹🌹🌹🌹

 

واعتقد قريب من الحل النهائى 

فلك جزيل الشكر 🌹🌹🌹🌹🌹

 

فمع هذا الكود ممكن مع الاتعلام اضافتها ضمن الشرط 

V30: IIf(DateDiff("d";[QdDate];Date())>=0 And DateDiff("d";[QdDate];Date())<=30 And Nz([myfrq];0)<>0;[Cr];0)

حيث انى اضفت هذا الشرط And Nz([myfrq];0)<>0

فاصبح الامر قريب باقى ان اقول فى الاستعلا ان اول سجل فيه القيمه لا تساوي الصفر يعمل عليه 

عمليه حسابيه والباقى لا يفعل اى عمليات حسابيه 

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

هفكر فى حل واذا لم اجد ^_^ فليس لى غيركم بعد الله (لكن انا احب الطريق الصعب فى البحث عن المعلومه )

 

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

 

ان شاء الله بهذا الكود تكتمل الحل 

Public Function UpdateMyFil()

    Dim rs As Recordset
    Dim foundFirstRecord As Boolean

    Set rs = CurrentDb.OpenRecordset("TempStatmentAcc")
    foundFirstRecord = False
    
    Do While Not rs.EOF
        If rs("myfrq") < 0 And Not foundFirstRecord Then
            rs.Edit
            rs("MyFil") = rs("myfrq")
            rs.Update
            foundFirstRecord = True
        Else
            If foundFirstRecord Then
                rs.Edit
                rs("MyFil") = rs("CR") * -1
                rs.Update
            End If
        End If
        rs.MoveNext
    Loop
    rs.Close
End Function

طبعا ال هيحمل الملف المرفق السابق لازم يضيف حقل جديد فى الجدول باسم MyFil

  • Like 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