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

مطلوب الفرق بين تاريخين بدون يومي الخميس والجمعة ؟

بدأه هدى 2000 في 30 سبتمبر 2007 · 12 رد · 6,809 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

في حقلين مختلفين نقوم بادخال تاريخين مختلفين كالتالي

الحقل الأول : 1/1/2007 الحقل الثاني : 30/3 / 2007

المطلوب الان الفرق بينهما بالايام فقط يعني 60 يوم مثلا

انتهى الطلب الاول ....

نكمل بقية المطلوب

نقوم بحذف يومي الخميس والجمعة من مجموع الايام بعد ذلك

#2

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

تفضلي...

time.rar

طبتم واهتديتم :)

===================================

إقرأ معي

رابط متجدد لكتاب أقرؤه فشاركني فيه

======

فضائح الرافضة ومخازيهم حين يكتب عنها أحد خصومهم فهذا شيء متوقع ،فإن كتب عنها أحدهم فهو شيء غير مألوف ، وإن كان الكاتب أحد مراجعهم وأخص خواصهم فهذا شيء متناهي الغرابة ، وإن علمت أن الكاتب قد قتل بعد نشر الكتاب فقد حان وقت قراءة الكتاب

الكتاب :

حسين الموسوي - لله تم للتاريخ ، كشف الأسرار وتبرئة الأئمة الأطهار

اضغط على الصورة لتحميل الكتاب

%E1%E1%E5%20%CB%E3%20%E1%E1%CA%C7%D1%ED%CE.jpg

-----------

كتب سابقة

سعد الدين الشاذلي - مذكرات حرب أكنتوبر

#3

بارك الله فيك اخي ايهاب

على هذا المثال الجميل

ايضا وجد طريقة اخرى مع الشرح الكامل لها

اختي الفاضلة هدى

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

وكل عام وانت بخير وتقبل الله منا ومنكم صالح الأعمال

لكي نقوم بتطبيق هذه العملية يلزمنا قليلا من الشرح حتى تتضح الرؤية لك ولكافة الأعضاء

1. يجب اولا ان نعرف التقويم المستخدم هل هو هجري ام ميلادي ليتم بناءا عليه العمليات الحسابية فلنأخذ مثلا التقويم الميلادي كما في السؤال لديك

في سؤالك تريدين ايجاد عدد الأيام بين التاريخ 2007/01/01 والتاريخ 2007/03/30

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

شهر 1 ميلادي وهو شهر January يوجد به 31 يوم ويوجد به 8 أيام خميس وجمعة

شهر 2 ميلادي وهو شهر February يوجد به 28 يوم ويوجد به 8 أيام خميس وجمعة

شهر 3 ميلادي وهو شهر March يوجد به 31 يوم ويوجد به 10 أيام خميس وجمعه

فسيكون مجموع ايام الأشهر الثلاثة هو 89 يوم وعدد ايام الخميس والجمعة في الثلاثة اشهر هو 26 يوم

ولنفرض اننا نريد ايجاد ايام العمل الفعلي بدون ايام الخميس والجمعة من الأشهر الثلاثة فنطرح مجموع ايام الأشهر من مجموع ايام الخميس والجمعة وسيكون ناتج الأيام الفعلية بدون الخميس والجمعة هو 63 يوم

كيف نقوم بتطبيق هذا الشرح من خلال الكود البرمجي

لكي نستخرج عدد الأيام بين التاريخين StartDate و EndDate نستخدم الدالة DateDiff بهذا الشكل

=DateDiff("d";[StartDate];[EndDate])

وسينتج لنا في مربع النص الخاص بحساب هذا الفرق عدد 89 يوم

نريد الآن حساب عدد ايام الخميس والجمعة بين هذين التاريخين اذا كل ما علينا هو كتابة الكود في وظيفة عامه ونضعها سواء في النموذج او في وحدة نمطية منفصلة بهذا الشكل

Public Function CountWeekendDays(dtStart As Date, dtEnd As Date) As Integer
Dim intThursday As Integer
Dim intFriday As Integer
CountWeekendDays = 0
intThursday = DateDiff("d", GEDay(dtStart, 5), LEDay(dtEnd, 5)) / 7 + 1
intFriday = DateDiff("d", GEDay(dtStart, 6), LEDay(dtEnd, 6)) / 7 + 1
CountWeekendDays = Ramp(intThursday) + Ramp(intFriday)
End Function

Public Function LEDay(dtX As Date, vbDay As Integer) As Date
LEDay = DateAdd("d", -(7 + Weekday(dtX) - vbDay) Mod 7, dtX)
End Function

Public Function GEDay(dtX As Date, vbDay As Integer) As Date
GEDay = DateAdd("d", (7 + vbDay - Weekday(dtX)) Mod 7, dtX)
End Function

Public Function Ramp(varX As Variant) As Variant
Ramp = IIf(Nz(varX, 0) >= 0, Nz(varX, 0), 0)
End Function

ثم نقوم بإستدعاء الدالة من خلال مربع نص غير منضم في النموذج بهذا الشكل

=NZ(CountWeekendDays([StartDate];[EndDate]);0)

ولحساب الفرق بين عدد ايام الأشهر الثلاثة وهو 89 يوم و عدد ايام الخميس والجمعة الموجوده في الأشهر الثلاثة وهي 26 يوم كل ما علينا هو اجراء عملية الطرح بين مربعي النص الموجوده فيهما هذه الأرقام

=NZ([diffDate]-[TF];0) & "  يوم"

وهذا مثال على هذه العملية

zaCountWeekendDays.rar

#4

السلام عليكم

اخي ايهاب عثمان - بارك الله فيك

فكرة ممتازة هي استخدام WeekDay

ماذا لو لم يكن لدينا هذه الوظيفة ..... ؟

كان سيكون الامر معقد جدا

حل اخر بالمرفق بدون WeekDay

مع التاكيد علي افضلية وبساطة حل استاذنا ايهاب عثمان

بارك الله فيكي اختنا زهرة المنتدي وأعانك علينا

اخوكم فى الله

asd.rar

تم تعديل هذه المشاركة بواسطة ahamied في 30 سبتمبر 2007 في 14:43

Microsoft Certified DataBase Administrator MCDBA

#5

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

Function CountWkDay(ByVal Date1 As Long, _
					ByVal Date2 As Long, _
						  WkDay As VbDayOfWeek) As Long
  Date1 = Date1 - 1
  Date1 = Fix((Date1 + (7 - WkDay)) / 7)
  Date2 = Fix((Date2 + (7 - WkDay)) / 7)
  CountWkDay = Date2 - Date1
End Function

وهذا مثال مني في تطبيقها :

Sub GetNetDays()
  Dim Date1 As Date, Date2 As Date
  Dim NetDays As Long

  Date1 = DateSerial(2007, 1, 1)
  Date2 = DateSerial(2007, 3, 30)

  NetDays = CLng(Date2 - Date1 + 1) _
		  - CountWkDay(Date1, Date2, vbThursday) _
		  - CountWkDay(Date1, Date2, vbFriday)

  MsgBox NetDays
End Sub
#6

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

#7

كل الشكر والتقدير لكم اخوتي الكرام

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

وكل عام وأنتم بألف خير

#8

الرجاء من الاخوان رفع المرفقات مره أخري لاني حاولت انزلها ولم استطع ؟!!

وهذا لاهميتها وجزاكم الله خير على كل حال .

#10

الأخ الفاضل ...

DifferentDays.zip

أرجوا أن يفيدك هذا المثال فى ما تريد إنجازه، بإستخدام MS-Access 2003

post-98027-1202385647_thumb.jpg

راجع أيضاً: كيف يمكن معرفة كم يتكر احد ايام الاسبوع بين تاريخين

Private Function GetRepeats(FromDate As Date, ToDate As Date, nDay As Integer) As Long
	Dim StartDate As Date
	Dim PreDays As Integer

	PreDays = nDay - Weekday(FromDate)
	If PreDays < 0 Then PreDays = PreDays + 7
	StartDate = DateAdd("d", PreDays, FromDate)
	If StartDate <= ToDate Then
		GetRepeats = Int(DateDiff("d", StartDate, ToDate) / 7) + 1
	End If
End Function

شكراً

تم تعديل هذه المشاركة بواسطة Eng. Usama El-Mokadem في 7 فبراير 2008 في 15:01

Eng. Usama El-Mokadem

Nothing is impossible, the word impossible itself says that: I M - Possible

#11

السلام عليكم،،

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

ولي مداخلة بعيدا عن الاكسس، الى الاكسل، حيث استفدت من فكرة وجدتها في دوال الاكسل لحذف ايام الجمعة والسبت كايام عطلة تقائيا من دفتر حضور وغياب الطلبة، "حسب النظام الحالي للاسف لا يزال الجميع يستخدم طريقة يدوية بالتسجيل بالدفتر!!" والحمد لله وفقني الله في برمجة نظام لادخال الحضور الغياب باسهل الطرق في اكسل، من خلال كتابة او اختيار رقم الشهر، يدخل اسمه تلقائيا، يحدد عدد الايام تلقائيا حسب السنة، ويشطب كل خانات الايام التي تكون سبت وجمعة.

الفكرة هنا تاتي من "رقم يوم الاسبوع" حيث لكل يوم من الاسبوع رقم، فوجدت انه برمجيا يمكن استخدامها للتعبير عن اسم يوم الاسبوع من خلال معرفة تاريخه، وهذا ما كان والحمد لله، تقريبا انا الوحيد في المديرية الذي استخدم النظام، ووفقني الله لاقناع بعض المعلمين الاخرين للعمل به.. وان شاء الله الجميع يستخدمونه..

اسف على الاطالة وهذا نموذج مبسط من البرنامج..

post-96695-1202418210_thumb.jpg

\\\

post-96695-1202418240_thumb.jpg

همام

تم تعديل هذه المشاركة بواسطة همام ابوعرقوب في 8 فبراير 2008 في 00:04

وَمِنَ النَّاسِ مَن يُعْجِبُكَ قَوْلُهُ فِي الْحَيَاةِ الدُّنْيَا وَيُشْهِدُ الله عَلَى مَا فِي قَلْبِهِ وَهُوَ أَلَدُّ الْخِصَامِ

مواضيعي ومشاركاتي

#12

بسم الله الرحمن الرحيم

بارك الله فيكم اخواني

اخي همام اين مثالك ؟؟

#13

مشكووووووووووووووووووووور

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…