الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كم جمعة في حياتك ؟

مغلق
بدأه أبو هادي في 13 أكتوبر 2001 · 7 رد · 704 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الأخوة الكرام

بعد التحية

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

مدخلاتها :

1 - بداية الفترة

2 - نهاية الفترة

3 - رقم اليوم في الإسبوع علما أن الأسبوع يبدأ بيوم الأحد ورقمه 1 وينتهي بيوم السبت ورقمه 7 .

Function CountWkDay(DateFm, DateTo As Variant, WkDay As Byte) As Variant

  Dim DFm, DTo As Long

  Dim WDStr, Days As String

  

  CountWkDay = Null

  If WkDay < 1 Or WkDay > 7 Then Exit Function

  If IsNull(DateFm) And IsNull(DateTo) Then Exit Function

  If Not IsDate(DateFm) And Not IsDate(DateTo) Then Exit Function

  

  If IsNull(DateFm) Then DateFm = DateTo

  If IsNull(DateTo) Then DateTo = DateFm

  

  If Not IsDate(DateFm) Then DateFm = DateTo

  If Not IsDate(DateTo) Then DateTo = DateFm

  

  If DateFm > DateTo Then

    DFm = DateFm

    DateFm = DateTo

    DateTo = DFm

  End If

  

  WDStr = Format(WkDay, "dddd") & " "

  

  DFm = DateFm - 1

  DTo = DateTo

  DFm = Fix((DFm + (7 - WkDay)) / 7)

  DTo = Fix((DTo + (7 - WkDay)) / 7)

  

  If DTo - DFm > 1 Then Days = " days" Else Days = " day"

  

  CountWkDay = WDStr & DTo - DFm & Days

End Function

'---------------------------------------------------------

'هذا إجراء يوضح كيفية استخدام الدالة والاستفادة منه

Sub How2Use_CountWkDay()

  Dim FmDate As Variant

  Dim ToDate As Variant

  Dim K As Byte

  

  FmDate = CDate(DateSerial(2001, 10, 1))

  ToDate = CDate(DateSerial(2001, 10, 31))

  

  For K = vbSunday To vbSaturday

    MsgBox Nz(CountWkDay(FmDate, ToDate, K))

  Next K

End Sub

آمل أن يحوز على رضاكم

#2

الأخ ابو هادي

مشكور والله يعطيك العافية .

ولك تحياتي

#3

الأخ ابو هادي : وفقك الله ، وجزاك الله عنا كل خير .

ولدي سؤال لك وللأخ أبو حمود وبقية الإخوة :

إذا كان لدي مواعيد جلسات في مكتب محاماة ، وأود أن أعرض الجلسات في نموذج بطرق منها: جلسات الأسبوع الحالي أو جلسات الأسبوع القادم ، ولكي أزيد الأمر وضوحا أضرب المثال التالي وعذرا للإطالة:

اليوم هو الاثنين 28 رجب ، إذا اختار جلسات الأسبوع الحالي تعرض الجلسات من يوم السبت 26 رجب إلى يوم الجمعة 3 شعبان .

وإذا اختار جلسات الأسبوع القادم تعرض الجلسات من يوم السبت 4 شعبان إلى يوم الجمعة 10 شعبان .

فهل من طريقة لذلك ؟

#4

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

http://mypage.ayna.com/harith55/weak.zip

(انقر بالزر الأيمن واختر حفظ الهدف باسم)

فهل من طرق أفضل ؟

#5

الأخ حارث .. بعد التحية

الحقيقة أنا لا أجلس هذا الوقت في المنزل بس على عشانك يا حارث .. تستاهل :)

الملف بعد التعديل

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

http://mypage.ayna.com/abbashmd/Weak.mdb

تحياتي

#6

الأخ حارث

بعد التحية

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

الدالة تخرج تاريخ أول يوم في الإسبوع "السبت" لكل تاريخ مدخل

ومن هذه الدالة يمكننا عمل مجموعات .

Function Week(InDate As Variant) As Variant

Week = Null

If IsNull(InDate) Or Not IsDate(InDate) Then Exit Function

Week = CDate(InDate - (WeekDay(InDate) Mod 7))

End Function

تحياتي

#7

الأخ أبو هادي :

جربت الدالة الثانية وكانت نتيجتها ممتازة ، جزاك الله خير ، ومعذرة على التأخر في الرد لظروف السفر .

#8

الأخ حارث

الحمد لله على السلامة

مشتاقين دائما إلى مشاركاتكم الطيبة

تحياتي

هذا الموضوع مغلق.

مواضيع مشابهة