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

تعديل معادلة حسابية الى الافضل


إذهب إلى أفضل إجابة Solved by أبو إبراهيم الغامدي,

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

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

لدينا تاريخين فى الاستعلام date1 و date2 نريد حساب عدد الاسابيع و الشهور بينهما ولكن بشروط .

أولا من تاريخ 1-1-1990 حتى مثلا 1-1-2050 تنقسم الى ثلاث شرايح

 

1 - الشريحة الاولى الفترة  ما بين تاريخ 1-1-1990 حتى 6-9-2016 يتم الحساب بينها بالاسبوع

2 - الشريحة الثانية ما بين تاريخ 7-9-2016 حتى 30-9-2020 يتم الحساب بينها بالشهر

3 - الشريحة الثالثة مابين 1-10-2020 حتى 1-1-2050 يتم الحساب بينها بالشهر


وتم عمل الكود ويعمل بشكل صحيح
ولكن هل يمكن تبسيط المعادلة الى الافضل 

 

Option Compare Database

'11111111111111111111111111111111111111111111111111111111111111111111111111 الشريحة الأولي
    
Function checkDate1(sDate As Date, eDate As Date)
    
        If sDate > #9/6/2016# Then
            checkDate1 = 0
        Else
    
            If sDate >= #1/1/1990# And eDate <= #9/6/2016# Then
        
                checkDate1 = DateDiff("ww", sDate, eDate)
                
                
            ElseIf sDate >= #1/1/1990# And eDate > #9/6/2016# Then
            
                
                checkDate1 = DateDiff("ww", sDate, #9/6/2016#)

            End If
        End If

    
End Function
'2222222222222222222222222222222222222222222222222222222222222222  الشريحة الثانية
Function checkDate2(sDate As Date, eDate As Date)


        If sDate >= #9/30/2020# Then
            checkDate2 = 0
        Else

               If sDate >= #1/1/1990# And eDate > #9/6/2016# Then
                
                        checkDate2 = DateDiff("m", #9/7/2016#, #9/30/2020#)
                        Else
                        checkDate2 = 0
                    
                End If
            

    
        End If
End Function



'33333333333333333333333333333333333333333333333333333333333333333333333333  الشريحة الثالثة

Function checkDate3(sDate As Date, eDate As Date)


    
    If sDate >= #1/1/1990# And eDate > #9/30/2020# Then
    
           checkDate3 = DateDiff("m", #10/1/2020#, eDate)
           Else
           checkDate3 = 0
    
    End If
    

    
End Function

 

 

 
كل سنه وانتم طيبون وبخير  وصحة وسعادة

finish .mdb

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

لست ادري ان كان الامر مرتبط بالموضوع السابق ام لا ولكن 

انظر الي هذه المشاركة 

 

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

أستاذى @أبو عبدالله الحلوانى جزالك الله خيراً

هذا الكود يعمل تماما على المثال السابق ذكره 

ولكن أعتقد أنه يمكن تحسينه للأفضل فى Function واحدة وليس على ثلاثة ولعل احد اخوانا او اساتذتنا يمكنه ذلك

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

في 5‏/5‏/2022 at 12:29, محمد احمد لطفى said:

2 - الشريحة الثانية ما بين تاريخ 7-9-2016 حتى 30-9-2020 يتم الحساب بينها بالشهر

3 - الشريحة الثالثة مابين 1-10-2020 حتى 1-1-2050 يتم الحساب بينها بالشهر

ممكن سؤال 

ليه انت عاملت دول انهم شريحتين ؟

ليه ما قلت من 7-9-2016 حتى 1-1-2050 الحساب بالشهر ؟

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

ليها علاقة بالضريبة على القيمة المضافة 

 

2 - الشريحة الثانية ما بين تاريخ 7-9-2016 حتى 30-9-2020 يتم الحساب بينها بالشهر ( ليها شهرين سماح لتقديم الاقرار )
 

3 - الشريحة الثالثة مابين 1-10-2020 حتى 1-1-2050 يتم الحساب بينها بالشهر ( ليها شهر واحد سماح لتقديم الاقرار )

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

 
ID date1 date2 weekx month1 month2
1305 2015/01/01 2021/01/10 88 48 3

طيب ممكن افهم دى 

 

 

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

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

او ان كنت عأهمل جداول تمب واستعلامات للتحليل والحساب والتجميع اخيرا على للحصول على الشكل المطلوب 

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

ده المطلوب 
من 1-1-2015 حتى 6-9-2016              88 أسبوع
من 7-9-2016 حتى 30-9-2020   48 شهر 
من 1-10-2020 حتى 10-1-2021   3 أشهر 

1-1-2015            88 اسبوع     48    شهر     3 اشهر 

الويندوذ عندى 11 لو عاوز تجرب حاجة مفيش مشكلى يأ أستاذى العزيز 😇

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

لان نظريا من شرحك فى رأس الموضوع تعارض اخر شريحتان

وعمليا بالمثال هناك تداخل قى التواريخ والتى تجمع بين اكثر من شريخة وانت لم تذكر ذلك نظريا

معنى كده ان لو تاريخ البداية فى شريحة والنهاية فى شريخة أخرى انت تريد الناتج لكل شريحة ما بين التاريخين ؟

وانت ذكرت ان فى شئ خطأ فى الناتج 

بص 

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

وذلك ختى تتضح الرؤية اولا  ثم بعد ذلك يأتى دور التفكير والتحليل ووضع التصورات المختلفة للحصول على النتائج الصحيحة ثم البناء اما بالاكواد او الاستعلامات

1-1-2015            88 اسبوع     48    شهر     3 اشهر 

طيب انت مدرك ان بالشكل ده لو فانكشن واحد لن يكون قادرا على اظهار 3 نتائج فى خلية واحدة ؟؟؟؟؟

 

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

أستاذى 
 

اقتباس

 

أخر مشاركة صحيحه 

بس أعتقد أن ممكن تتعمل أسهل من كده

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

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

checkDate(sdate,edate,1)
checkDate(sdate,edate,2)
checkDate(sdate,edate,3)

 

السؤال المنطقى ما السهولة والناتج الذى يعود عليك من ذلك ؟!

 

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

  • 3 weeks later...

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

كهرباء 2019.rar

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

الهدف من هذا الموضوع أن أعرف كيف أتعامل مع البرنامج فى حالة زيادة فترات 

طب ممكن نبدأ

1 - من 1-1-1990 حتى 1-1-2050 على التقسيم التالى 

أولا من 1-1-1990 حتى 6-9-2016   يكون الحساب بالاسبوع ( الفترة الاولى )

ثانيا من 1-1-1990 حتى 30-9-2020 يكون الحساب بالشهر  ( الفترة الثانية )

حيث   date1 حتى 6-9-2016  يكون الحساب بالاسبوع و من 1-7-2016 حتى Date2 يكون الحساب بالشهر 

ثالثا من 1-1-1990 حتى 1-1-2050 ( الفترة الثالثة )

حيث   date1 حتى 6-9-2016  يكون الحساب بالاسبوع و من 1-7-2016 حتى 30-9-2020 يكون الحساب بالشهر  و من 1-10-2020 حتى Date2 يكون الحساب بالشهر 

 

بالتوفيق :signthankspin:
 

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

  • 2 months later...

اخي محمد يجب ان ترفع اول مثال ترفعه مرة اخرى ويجب ان يحتوي الجدول على تواريخ كثيرة حقيقية من واقع العمل

من خلال الاطلاع على التواريخ ودراستها ،، لعلنا ان نصل الى حل مرضي .. وحط تحت لعلنا خط

 

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

شكراً أستاذى @ابوخليل

ملف finish يعمل و لكن به تداخل فى الفترات مثل الصورة المرفقة 

كنت أأمل أن تكون الوحدة النمطيه مثل مثال ملف الكهرباء المرفق ليسهل التعامل معها 

و المطلوب  


 

نريد حساب عدد الاسابيع و الشهور بينهما ولكن بشروط .

أولا من تاريخ 1-1-1990 حتى مثلا 1-1-2050 تنقسم الى ثلاث شرايح

 

1 - الشريحة الاولى الفترة  ما بين تاريخ 1-1-1990 حتى 6-9-2016 يتم الحساب بينها بالاسبوع

2 - الشريحة الثانية ما بين تاريخ 7-9-2016 حتى 30-9-2020 يتم الحساب بينها بالشهر

3 - الشريحة الثالثة مابين 1-10-2020 حتى 1-1-2050 يتم الحساب بينها بالشهر

كالتالى

 

1 - من 1-1-1990 حتى 1-1-2050 على التقسيم التالى 

أولا من 1-1-1990 حتى 6-9-2016   يكون الحساب بالاسبوع ( الفترة الاولى )

ثانيا من 1-1-1990 حتى 30-9-2020 يكون الحساب ( الفترة الثانية )

حيث   date1 حتى 6-9-2016  يكون الحساب بالاسبوع و من 1-7-2016 حتى Date2 يكون الحساب بالشهر 

ثالثا من 1-1-1990 حتى 1-1-2050 ( الفترة الثالثة )

حيث   date1 حتى 6-9-2016  يكون الحساب بالاسبوع و من 1-7-2016 حتى 30-9-2020 يكون الحساب بالشهر  و من 1-10-2020 حتى Date2 يكون الحساب بالشهر 

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


 

1317930770_Screenshot(5).jpg.17737600b2f65881122a6d9b044b6067.jpg

finish .mdb كهرباء 2019.rar

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

انا قلت لعلنا .. لان لا جديد في ردك .. فاعتذر 

اما بالنسبة لشرائح الكهرباء فمختلف تماما عن طلبك لانه يتعامل مع خلية واحدة بين نطاقين

  • 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