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

ابا حفص

02 الأعضاء
  • Posts

    97
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو ابا حفص

  1. مثله لكن بشكل اكثر عمليه في انه يسدد الفارق الموجود في خانة المتبقي من الشيك ولا يعتمد علي ادخال المدخل للقيم .. نموذج رئيسي فيه بيانات الشيك ونموذج فرعي فيه المطالبات المطلوب سدادها اعمل تشيك بوكس امام كل مطالبه مثل المثال اللي حضرتك مرفقه حاطط زر ( تسديد ) وبعد التحديث ينظر الي قيمة المطالبه اذا كان الشيك اكبر منها يسددها واذا كانت اقل يسدد جزء منها واذا انتهت قيمة الشيك يظهر رساله ان الشيك انتهت قيمته
  2. السلام عليكم جميعا .. كنت اسال عن كيفية توزيع قيمة الشيك علي مطالبات العميل بحيث ان لا تتجاوز قيمة السداد قيمة الشيك وفي حين ان قيمة الشيك اقل من قيمة المطالبة يسدد جزء منها كما هو موجود في اوراكل .. حاولت ان اعمل نموذج رئيسي للشيك وبيانته ثم نموذذج فرعي للمطالبات .. عملت تشك بوكس للسداد وربطت به الكود المرفق في حدث بعد التحديث لكن للاسف يقوم الجهاز بسداد قيمة اكبر من قيمة الشيك .. ارجو من الزملاء الاساتذه مراجعة الكود واعطائي ملاحظاتهم وتصحيحهم ان كان ذلك ممكنا Private Sub ALL_AfterUpdate() Dim ch_val As Double Dim clm_val As Double Dim rem_val As Double Dim clm_total_pay As Double //عرفت حقل قيمة الشيك بالاسم ch_val ch_val = Forms!SubformBasedOnQuery5![CLAIM subform]!Text47 // عرفت حقل قيمة المطالبة بالاسم CLMVAL clm_val = Forms!SubformBasedOnQuery5![CLAIM subform]!CLMVAL //حقل Text31 هو حقل غير منضم جعلت فيه اجمالي ما يتم سدادة من المطالبات clm_total_pay = Forms!SubformBasedOnQuery5![CLAIM subform]!Text31 // هنا جعلت الباقي من قيمة الشيك بعد خصم اجمالي ما تم دفعه rem_val = ch_val - clm_total_pay If [ALL] = True Then // لو كان قيمة المتبقي من الشيك اكبر من قيمة المطالبة فسدد المطالبه وقم بتسجيل قيمة الشيك ورقمه واتاريخه If ch_val >= clm_val Then Refresh Me!restof_ch.SetFocus DoCmd.RefreshRecord Me.Recalc [Forms]![SubformBasedOnQuery5]![CLAIM subform]![CHECK NO] = [Forms]![SubformBasedOnQuery5]![رقم الشيك] [Forms]![SubformBasedOnQuery5]![CLAIM subform]![Text35] = [Forms]![SubformBasedOnQuery5]![تاريخ ورود الشيك] [Forms]![SubformBasedOnQuery5]![CLAIM subform]![PAYVAL] = [Forms]![SubformBasedOnQuery5]![CLAIM subform]![CLMVAL] [Forms]![SubformBasedOnQuery5]![CLAIM subform]![CHECK VAL] = [Forms]![SubformBasedOnQuery5]![v1] '[Forms]![SubformBasedOnQuery5]!Text20 = ch_val - clm_val Refresh Else // لو كان قيمة الشيك المتبقية تساوي صفر فاعطني الرساله ثم الغي علامة الصح من امام سداد الشيك If rem_val = 0 Then MsgBox "لا يمكن سداد المطالبة قيمة الشيك انتهت" [ALL] = False [Forms]![SubformBasedOnQuery5]![تم السداد بالكامل] = True DoCmd.GoToRecord acDataForm, "SubformBasedOnQuery5", acNext Else // لو كان قيمة المتبقي من الشيك اقل من قيمة المطالبه Me!restof_ch.SetFocus DoCmd.RefreshRecord Me.Recalc MsgBox "قيمة الشيك لا تكفي المطالبة بالكامل سيتم سداد جزء منها" 'Forms!SubformBasedOnQuery5![CLAIM subform]!Text47 - Forms!SubformBasedOnQuery5![CLAIM subform]!Text31 [Forms]![SubformBasedOnQuery5]![CLAIM subform]![CHECK NO] = [Forms]![SubformBasedOnQuery5]![رقم الشيك] [Forms]![SubformBasedOnQuery5]![CLAIM subform]![Text35] = [Forms]![SubformBasedOnQuery5]![تاريخ ورود الشيك] [Forms]![SubformBasedOnQuery5]![CLAIM subform]![CHECK VAL] = [Forms]![SubformBasedOnQuery5]![v1] Forms!SubformBasedOnQuery5![CLAIM subform]!PAYVAL = rem_val '[Forms]![SubformBasedOnQuery5]!Text20 = rem_val [Forms]![SubformBasedOnQuery5]![تم السداد بالكامل] = True DoCmd.GoToRecord acDataForm, "SubformBasedOnQuery5", acNext End If End If Refresh Else Forms!SubformBasedOnQuery5![CLAIM subform]![CHECK NO] = "" [Forms]![SubformBasedOnQuery5]![CLAIM subform]![Text35] = "" [Forms]![SubformBasedOnQuery5]![CLAIM subform]![PAYVAL] = "0.00" [Forms]![SubformBasedOnQuery5]![CLAIM subform]![CHECK VAL] = "0.00" '[Forms]![SubformBasedOnQuery5]!Text20 = rem_val [Forms]![SubformBasedOnQuery5]![تم السداد بالكامل] = False Refresh End If '[Forms]![SubformBasedOnQuery5]!Text20 = [Forms]![SubformBasedOnQuery5]![CLAIM subform]!restof_ch End Sub
  3. هل من الممكن اضافة اكتر من متغير يعني احنا اخدنا PRID و تاريخ المعاينه هل من الممكن اضافة المزيد من المتغيرات
  4. النتيجة رائعه وممتازه ... جزاك الله خير يا سيدي الفاضل اسمح لي سيدي الفاضل AlwaZeeR بعد الشكر ان اطلب من حضرتك ان كان لدي حضرتك وقت : ان تشرح لي ماذا فعلت لكي اتعلم مستقبلا ان تشير الي مصادر لاتعلم كيف ماهي لغة البرمجه المستخدمه في المديول
  5. ممتازة بارك الله فيك لكني لا اريدها في شكل سطور منفصله كما الصورة الثانيه .. اريدها في متتاليه وتفصل بينها , كما الصورة الاولي .. حاولت اصلاحها لكن لم استطع
  6. code الصورة الاولي - هي للاستعلام الاول الاساسي اللي اريد تجميع الخليه المسماه ... في خليه واحده code صورة الثانيه - هي نتيجة الداله وتجميع الخليه طبقا لمتغير PRID الصورة الثالثه - هي ما اريد ولكن النتايج المظلله هي نتائج خاطئة لا اريد وجودها اريد اضافة متغير اخر مع المتغير الموجود لفلترة النتائج طبقا للتاريخ
  7. https://www.officena.net/ib/topic/36136-تمت-الاجابة-تجميع-حقول-سجلات-في-سجل-واحد/ هذا هو الموضوع اللذي اشير اليه ومرفق لسيادتكم المديول في مثال في Query2 يتم التجميع طبقا لمتغير واحد فقط وهو رقم المشروع او ( PRID ) في Query3 من المفترض ان يتم التجميع طبقا لمتغييرين اتنين وهو ما اريد اضافته ( PRID ) و (تاريخ المعاينه ) ) Horizontal.rar
  8. Horizontal منذ فتره قام احد الافاضل ( منتصر الانسي ) بشرح هذا الكود كما هوا مرفق وهو خاص بتجميع عدد من السجلات في سجل واحد .. وكنت اود التعديل عليه بادراج اكثر من متغير للدالة Public Function Horizontal(tabelle As String, Feld1 As String, Feld2 As String, valFeld1) هذا سطر تعريف الدالة ومتغيراتها والتي تتمثل في اسم الجدول او الاستعلام , اسم الحقل المراد التجميع بحسبه , اسم الحقل الذي سيتم تجميعه , اسم الحقل الذي سيرتبط به حقل التجميع (وأعتقدانه يمكن فهمها اكثر من واقع المثال) Dim DB As Database, rs As Recordset Set DB = CurrentDb هنا يتم تعريف متغيرين الأول من نوع Database أي قاعدة بيانات (وجعلناها قاعدة البيانات الحالية التي نعمل بها) والثاني rs من نوع Recordset وهذا النوع من المتغيرات وبشكل مبسط يمكن تعريفه كأنه جدول أو إستعلام Set rs = DB.OpenRecordset("select distinct " & Feld2 & " from " & tabelle _ & " where " & Feld1 & "='" & valFeld1 & "' order by " & Feld2) هنا اسندنا للمتغير rs جملة SQL التي تمثل مصدر بياناته Do If rs.AbsolutePosition = rs.BOF Then هذه بداية الحلقة التكرارية التي ستتنقل بين سجلات الـ Recordset ثم تقوم جملة IF هنا بإختبار ما إذا كان موقع السجل الحالي (AbsolutePosition) في بداية (BOF) الـ Recordset Horizontal = rs(Feld2) عندها يجعل النتيجة تمثل قيمة الحقل المجمع Else Horizontal = Horizontal & ", " & rs(Feld2) End If وإلا تكون النتيجة هي قيم الحقل المجمع في السجلات السابقة مضافاً اليها الفاصلة (ويمكن تعديلها بما تشاء) ثم قيمة الحقل المجمع للسجل الحالي rs.MoveNext الإنتقال للسجل التالي Loop Until rs.EOF إختبار ما إذا وصلت الحلقة التكرارية إلى آخر سجل (EOF) في الـ Recordset rs.Close DB.Close Set rs = Nothing Set DB = Nothing End Function عندها يتم إغلاق الـ Recordset و الـ DB وتصفية الذاكرة من أي قيم محفوظة فيها وإنهاء الدالة
  9. جزاك الله خيرا استاذنا .. كيف يمكنني اضافة اكتر من متغير .. بمعني اريد اضافة اكتر من شرط للتجميع
  10. هل من الممكن اضافه متغير اضافي ... بمعني لو اردت اضافه تايخ اخر او رقم اخر كيف ممكن الاضافه للمديول
  11. اشكرك شكرا جزيلا ... فعلا الحل سهل موفق دائما شكرا جزيلا لاهتمامك
  12. ممكن لينك ليها .. دورت الحقيقه في المنتدي ومعرفتش اوصل لها .. اكون شاكر جدا لو بعثت الي لينك للموضوع ده
  13. مشكور علي الاهتمام مرفق الملف المطلوب به استعلام اريد ان اجعل الراتب الاساسي كل عام مضاف اليه 10 % بشكل تراكمي عام 2019 كان اساسي الراتب 1200 دولار فاريد ان يكون العام التالي 2020 الراتب الاساسي 1320دولار والعام التالي له 2021 يكون 1452 دولار وهكذا حتي انتهاء الخمس سنوات salary.accdb
  14. المطلوب هو دالة او معالجه لعمل القيم تراكميه .. للاسف لم افهم المثال المضروب او علاقته بما اطلب
  15. السادة الزملاء لدي مرتبات واريد عمل دالة او معالجه لحساب زيادة سنوية تراكميه علي المرتب لمدة خمس سنوات: مثال : مرتب موظف 2019 = 1000 دولار نسبة زيادة سنوية 10 % مرتب الموظف 2020 = 1100 دولار مرتب الموظف 2021 = 1210 دولار وهكذا حتي انتهاء الخمس سنوات
  16. الكود موجود في ميدول بداخل الملف تطبيق علي الارقام الناقصة.zip
  17. السلام عليكم ورحمة الله كان عندي كود لايجاد الارقام الناقصه في فواتير تحت 3 شروط واجد صعوبه في فهم الكود وتحليله لتغيير البيانات فيه حسب احتياجي ليها حسب اسماء الجداول والاستعلامات اللي في البرنامج بتاعي .. الكود فيه شرح بس الحقيقه مفهمتش قوي ومعرفتش فين مفاتيح الكود من اسماء جداول واستعلامات وحقول وشكرا جزيلا مقدما Sub ADD_MISSING() Dim RS As Recordset Set RS = CurrentDb.OpenRecordset("SELECT DISTINCT PRID, KIND, YEAR(M_DATE) AS KYEAR FROM MAIN") RS.MoveFirst '// احذف السجلات السابقة من جدول السجلات المفقودة CurrentDb.Execute ("DELETE * FROM Lost_Serial") Do Until RS.EOF '// دليل البحث PRID_KIND_KYEAR = RS!PRID & RS!KIND & RS!KYEAR '//أعلى قيمة للقيد MAX_VAL = DMax("PRIVATE_NO", "MAIN", "[PRID]&[KIND]&YEAR([M_DATE])='" & PRID_KIND_KYEAR & "'") '// دوارة البحث عن القيم غير المسجلة For I = 1 To MAX_VAL MISS_VAL = DMax("PRIVATE_NO", "MAIN", "[PRID]&[KIND]&YEAR([M_DATE])&[PRIVATE_NO]='" & PRID_KIND_KYEAR & I & "'") '// إذا لم تجد القيمة مسجلة فأضفها إلى الوظيفة If IsNull(MISS_VAL) Then RSLT = I & ",'" & RS!PRID & "','" & RS!KIND & "','1/1/" & RS!KYEAR & "'" '// أضف البيانات إلى جدول السجلات المفقودة CurrentDb.Execute PARA & "INSERT INTO Lost_Serial (MISSING_NO, PRID,KIND, M_DATE ) VALUES(" & RSLT & ")" 'Debug.Print RSLT End If Next RS.MoveNext Loop End Sub
  18. مازالت النتيجه غير صحيحه ملحوظة : الارقام لا تنحصر من 1 الي 7 وسابين لحضرتك الموضوع كامل ساشرح لحضرتك الموضوع واتمني ان اصل بمقصدي * - لدي العديد من الشركات قد يصلوا الي 300 او 400 يتعاملون معي ويتم ذكرهم والاشارة لهم من خلال الحقل PRID * - كل شركه تتعامل في اكثر من نوعية تعامل محدوده بما لايزيد عن 10 او 20 نوع تعامل ويشار لها ( نوع الاقرار ) في جدول الرئيسية او KIND في الاستعلامات * - كل شركه لها رقم سيريال خاص لكل عمليه بمعني ان الشركه أ عند صدور فاتورة صادر لها يتم ترقيمها من 1 الي ... وذلك الي انتهاء العام ويتم البدء من رقم 1 مره اخري والشركه أ قامت باصدار فاتورة وارد يكون ترقيمها من من 1 الي ... وذلك الي انتهاء العام ويتم البدء من رقم 1 مره اخري وهكذا علي مستوي كل شركه وفي كل عام يتم البدء من جديد * - وسبب الحاجه الي تلك الحركه ان هناك ادارة اخري توافيني بتلك الاقرارات ولابد من مراقبتها لمعرفة ما هي الاقرارات التي تنقصني وما تم بشانها وللاسف لايمكن التعديل علي ذلك النظام لانه نظام حكومي
  19. جزاك الله خيرا علي التجربه ووقتك الثمين لكن 1- النتيجه غير صحيحه 2- النتيجه لم ترحل الي الجدول 3- النتيجه لم اختار منها .. قد اجعل الاختيار مرتبطا بالاستعلام Q1 من خلال قائمة منسدله بها الاعوام .. سهلة في العلاج لكن النتيجه غير موجوده في جدول الارقام الناقصة واحتاجها لاني اعمل عليها معالجات اخري .. وغير صحيحه
  20. جزاك الله كل خير علي الاستجابه هل من الممكن اختصار الوقت تنفيذ الكود ففي المثال المرفق لان البيانات محدوده لا تظهر مثل تلك المشكله لكن لدي مجموعه كبيرة من البيانات .. فانا لا اخفي علي حضرتك ان البيانات كثيره وينفذ الكود في خمس دقائق او اكثر وهل يمكن الاستغناء عن النموذج ليكون تنفيذ الكود بمجرد اختيار السنه او زر اخر بعد اختيار السنه ملحوظه : لست انا من نفذ الكود انما حصلت عليه من مساعده سابقه
  21. السلام عليكم ورحمة الله كنت قد طلبت من قبل من الافاضل المساعدة في ايجاد ارقام الفواتير الناقصة الي لم تاتي الي ادارتي من ادارة اخري طبقا لعوامل ثلاث : 1- كود المشروع 2- نوع الفاتورة 3- تاريخ الفاتورة ويبحث في رقم الفاتورة الخاص في كل نوع وعندما لايجد رقم في تسلسله في النهاية يضعهم في جدول الارقام الناقصة .. وجزاه الله خيرا من ساعدني وامدني بما جهلت . المشكلة الان : اني واثناء الاستخدام وجدت مشكله رئيسية اني لا استطيع ان ان اجعل الكود يعمل في نطاق سنه من اختياري اختارها من قائمة منسدله غير مرتبطه فتكون هي الاساس في البحث بدلا من البحث خلال كل مدة الادخال التي اصبحت مع الوقت اربع سنوات فعملية الكود اصبحت اثقل واطول لذلك ارجو من الزملاء الاعزاء والاساتذه الكرماء مساعدتي ومرفق لكم القاعدة لابداء الراي وجزاكم الله خيرا الاقرارات الناقصة.rar
×
×
  • اضف...

Important Information