jo_2010 قام بنشر الإثنين at 10:34 قام بنشر الإثنين at 10:34 الخبراء الافاضل عيدكم مبارك عيد فطر سعيد اريد تنفيذ الشكل الموجود بالصورة فى الاستعلام JO_IN_OUT.accdb
Eng.Qassim قام بنشر الإثنين at 12:15 قام بنشر الإثنين at 12:15 كل عام وانت بخير استاذ @jo_2010 وكل الاخوة والاساتذة الافاضل المشكلة لديك ان الدالة تنظر الى الفرق بين الساعات والدقائق ولم تاخذ بالحساب الايام عملت لك بطريقتين... التقليدية ...والثانية بواسطة موديول JO_IN_OUT.rar
Foksh قام بنشر الإثنين at 14:18 قام بنشر الإثنين at 14:18 وعليكم السلام ورحمة الله وبركاته ,, عيدكم مبارك جميعاً ، واسمحوا لي بمشاركة أخي الأستاذ @Eng.Qassim .. فكرتي البسيطة والتي لا تـُـنقِص من جهده ولا تـُـزايد عليه ، وإنما طريقة أخرى دون الحاجة الى عمليات حسابية في الاستعلام .. SELECT Tbl_IN_OUT.ID, Tbl_IN_OUT.Nname, Tbl_IN_OUT.Start_Day, Tbl_IN_OUT.End_Day, Int(DateDiff('n',[Start_Day],[End_Day])/1440) & " يوم و" & Int((DateDiff('n',[Start_Day],[End_Day]) Mod 1440)/60) & " ساعات و" & DateDiff('n',[Start_Day],[End_Day]) Mod 60 & " دقائق و" & DateDiff('s',[Start_Day],[End_Day]) Mod 60 & " ثانية" AS [الفرق الزمني], Int(DateDiff('n',[Start_Day],[End_Day])/1440) AS الأيام, Int((DateDiff('s',[Start_Day],[End_Day]) Mod 86400)/3600) AS الساعات, Int((DateDiff('s',[Start_Day],[End_Day]) Mod 3600)/60) AS الدقائق, DateDiff('s',[Start_Day],[End_Day]) Mod 60 AS الثواني FROM Tbl_IN_OUT; حيث صب تركيزي على استخدام الدالة DateDiff المخصصة لحساب الفروق الزمنية ، لعرض الفرق بين الوقتين كسلسلة نصية كاملة + وحدات زمنية منفصلة ( أيام ، ساعات ، دقائق ، ثواني ) .
Eng.Qassim قام بنشر الإثنين at 22:16 قام بنشر الإثنين at 22:16 7 ساعات مضت, Foksh said: والتي لا تـُـنقِص من جهده ولا تـُـزايد عليه كل عام وانت بالف خير استاذي العزيز @Foksh بالعكس..زيادة الخير خيرين ..لكني لم اتطرق الى الثواني حسب طلب السائل ...ثم اني تقصدت ان اضع موديول (للبعض طبعا) الذين لايعرفون كيفية تمرير البيانات والحصول على النتائج ...انا شخصيا من محبي استخدام ال Module & Class خارج خلفية النماذج او الاستعلام
jo_2010 قام بنشر بالامس في 08:17 الكاتب قام بنشر بالامس في 08:17 الخبير الفاضل Eng.Qassim اشكرك على سرعة الاستجابة ومن اجل الحلول المتعددة لكن او تصحيح بعض الامور كما بالصورة
jo_2010 قام بنشر بالامس في 08:51 الكاتب قام بنشر بالامس في 08:51 الخبير الفاضل Foksh شكرا على الاجابة المختصرة التى تعطى نتائج رائعة هل من الممكن مساعدتى حتى احصل على كل مااريد فى هذا الاستعلام كما بالصورة لك خالص الشكر
Foksh قام بنشر منذ 23 ساعات قام بنشر منذ 23 ساعات منذ ساعه, jo_2010 said: الخبير الفاضل Foksh شكرا على الاجابة المختصرة التى تعطى نتائج رائعة هل من الممكن مساعدتى حتى احصل على كل مااريد فى هذا الاستعلام كما بالصورة لك خالص الشكر تفضل التعديل التالي :- SELECT Tbl_IN_OUT.ID, Tbl_IN_OUT.Nname, Tbl_IN_OUT.Start_Day, Tbl_IN_OUT.End_Day, Int(DateDiff('n',[Start_Day],[End_Day])/1440) & " يوم و" & Int((DateDiff('n',[Start_Day],[End_Day]) Mod 1440)/60) & " ساعات و" & DateDiff('n',[Start_Day],[End_Day]) Mod 60 & " دقائق و" & DateDiff('s',[Start_Day],[End_Day]) Mod 60 & " ثانية" AS [الفرق الزمني], Int(DateDiff('n',[Start_Day],[End_Day])/1440) AS الأيام, Int((DateDiff('s',[Start_Day],[End_Day]) Mod 86400)/3600) AS الساعات, Int((DateDiff('s',[Start_Day],[End_Day]) Mod 3600)/60) AS الدقائق, DateDiff('s',[Start_Day],[End_Day]) Mod 60 AS الثواني, Format(Int(DateDiff('s',[Start_Day],[End_Day])/3600), "00") & ":" & Format(Int((DateDiff('s',[Start_Day],[End_Day]) Mod 3600)/60), "00") AS [مجموع الساعات والدقائق] FROM Tbl_IN_OUT;
ابو جودي قام بنشر منذ 22 ساعات قام بنشر منذ 22 ساعات مشاركة مع اساتذتى الكرام واحبابى اليك هذه الاكواد Public Function CalculateTimeDifference(startDate As Variant, endDate As Variant) As String On Error GoTo ErrorHandler Dim totalSeconds As Double Dim days As Long Dim hours As Long Dim minutes As Long Dim seconds As Long ' التحقق من أن التاريخين ليسا فارغين وهما صالحان If IsNull(startDate) Or IsNull(endDate) Then CalculateTimeDifference = "أحد التواريخ فارغ" Exit Function ElseIf Not IsDate(startDate) Or Not IsDate(endDate) Then CalculateTimeDifference = "أحد التواريخ غير صالح" Exit Function End If ' تحويل التاريخين إلى نوع Date Dim start As Date Dim endD As Date start = CDate(startDate) endD = CDate(endDate) ' حساب الفرق بالثواني totalSeconds = DateDiff("s", start, endD) ' التحقق من القيمة السالبة If totalSeconds < 0 Then CalculateTimeDifference = "تاريخ النهاية يجب أن يكون بعد تاريخ البداية" Exit Function End If ' تحويل الثواني إلى أيام days = Int(totalSeconds / 86400) ' 86400 = عدد ثواني اليوم totalSeconds = totalSeconds - (days * 86400) ' تحويل الثواني إلى ساعات hours = Int(totalSeconds / 3600) ' 3600 = عدد ثواني الساعة totalSeconds = totalSeconds - (hours * 3600) ' تحويل الثواني إلى دقائق minutes = Int(totalSeconds / 60) ' الثواني المتبقية seconds = totalSeconds - (minutes * 60) ' إرجاع النتيجة كنص CalculateTimeDifference = days & " أيام, " & hours & " ساعات, " & minutes & " دقائق, " & seconds & " ثواني" Exit Function ErrorHandler: CalculateTimeDifference = "حدث خطأ: " & Err.Description End Function Public Function CalculateTimeParts(startDate As Variant, endDate As Variant, part As String) As Long On Error GoTo ErrorHandler Dim years As Long Dim months As Long Dim days As Long Dim hours As Long Dim minutes As Long Dim seconds As Long Dim tempDate As Date ' التحقق من أن التاريخين ليسا فارغين If IsNull(startDate) Or IsNull(endDate) Then CalculateTimeParts = 0 Exit Function End If ' التحقق من ترتيب التواريخ If startDate > endDate Then CalculateTimeParts = 0 Exit Function End If ' البدء بحساب الفرقات الزمنية tempDate = startDate ' حساب الفرق في السنوات years = DateDiff("yyyy", tempDate, endDate) tempDate = DateAdd("yyyy", years, tempDate) ' حساب الفرق في الأشهر months = DateDiff("m", tempDate, endDate) tempDate = DateAdd("m", months, tempDate) ' التأكد من عدم وجود قيم سالبة بعد التعديلات If tempDate > endDate Then months = months - 1 tempDate = DateAdd("m", -1, tempDate) End If ' حساب الفرق في الأيام days = DateDiff("d", tempDate, endDate) tempDate = DateAdd("d", days, tempDate) ' حساب الفرق في الساعات hours = DateDiff("h", tempDate, endDate) tempDate = DateAdd("h", hours, tempDate) ' حساب الفرق في الدقائق minutes = DateDiff("n", tempDate, endDate) tempDate = DateAdd("n", minutes, tempDate) ' حساب الفرق في الثواني seconds = DateDiff("s", tempDate, endDate) ' التأكد من عدم وجود قيم سالبة نهائياً If months < 0 Then months = 0 If days < 0 Then days = 0 If hours < 0 Then hours = 0 If minutes < 0 Then minutes = 0 If seconds < 0 Then seconds = 0 ' إرجاع الجزء المطلوب Select Case part Case "Years": CalculateTimeParts = years Case "Months": CalculateTimeParts = months Case "Days": CalculateTimeParts = days Case "Hours": CalculateTimeParts = hours Case "Minutes": CalculateTimeParts = minutes Case "Seconds": CalculateTimeParts = seconds Case Else: CalculateTimeParts = 0 End Select Exit Function ErrorHandler: CalculateTimeParts = 0 End Function الاستعلام الاول والمعتمد على الإجراء : CalculateTimeDifference SELECT Tbl_IN_OUT.ID, Tbl_IN_OUT.Nname, Tbl_IN_OUT.Start_Day, Tbl_IN_OUT.End_Day, CalculateTimeDifference([Start_Day], [End_Day]) AS Sub_Time FROM Tbl_IN_OUT; الاستعلام الثانى والمعتمد على الإجراء : CalculateTimeParts SELECT Tbl_IN_OUT.ID, Tbl_IN_OUT.Nname, Tbl_IN_OUT.Start_Day, Tbl_IN_OUT.End_Day, CalculateTimeParts([Start_Day], [End_Day], "Years") AS Years_Diff, CalculateTimeParts([Start_Day], [End_Day], "Months") AS Months_Diff, CalculateTimeParts([Start_Day], [End_Day], "Days") AS Days_Diff, CalculateTimeParts([Start_Day], [End_Day], "Hours") AS Hours_Diff, CalculateTimeParts([Start_Day], [End_Day], "Minutes") AS Minutes_Diff, CalculateTimeParts([Start_Day], [End_Day], "Seconds") AS Seconds_Diff FROM Tbl_IN_OUT;
jo_2010 قام بنشر منذ 22 ساعات الكاتب قام بنشر منذ 22 ساعات (معدل) المبدع ابو جودي خالص الشكر لتعب حضرتك وعمل هذة الدالة الرائعة ولكنى اريد الشكل كما بالصورة هل هذا ممكن ام انا اطلب طلب غير ممكن هل استطيع تنفي1 ما بالصورة وكيف استطيع تجميع الساعات والدقائق 5:22+7:13 على مدار الشهر حتى اصل الى الاضافى فى عدد ساعات العمل ملحوظة عدد الايام فى الدالة يعطى نتيجة خطا 31/3/2025 8:00AM الى 1/4/2025 10:05AM الفرق 26 ساعة و5 دقائق فى الدالة اللى حضرتك كتبتها تعطى يومين وهو فى الحقيقة يوم واحد و2 ساعة و5 دقائق خالص الشكر تم تعديل منذ 22 ساعات بواسطه jo_2010
تمت الإجابة Eng.Qassim قام بنشر منذ 20 ساعات تمت الإجابة قام بنشر منذ 20 ساعات (معدل) بالنسبة الى عدد الساعات والدقائق ...جرب هذه المحاولة JO_IN_OUT 1.rar اذا اردتها لن تكون بهذه الضورة 38:52 اعمل حقل اخر في الاستعلام وضع هذا السطر [TotalHours] & ":" & [TotalMinutes] تم تعديل منذ 20 ساعات بواسطه Eng.Qassim
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.