ابوخليل قام بنشر الخميس at 16:01 قام بنشر الخميس at 16:01 السلام عليكم اريد اسرع واخصر طريقة تمكنني من استخراج ضرب الوقت بالعدد على النحو التالي : 4:30 x 5 = 22:30
ابوخليل قام بنشر الخميس at 16:07 الكاتب قام بنشر الخميس at 16:07 اول ما تبادر لبالي .. اني احول الوقت الى دقائق ثم اضربه بالعدد ثم ارجع احوله الى ساعات ودقائق هل هذا اقصر الطرق؟
Foksh قام بنشر الخميس at 16:16 قام بنشر الخميس at 16:16 20 دقائق مضت, ابوخليل said: اريد اسرع واخصر طريقة تمكنني من استخراج ضرب الوقت بالعدد وعليكم السلام ورحمة الله وبركاته .. كمثال خطر ببالي من داخل استعلام على سبيل المثال :- SELECT Format(TimeValue("4:30") * 5, "hh:nn") AS النتيجة; 14 دقائق مضت, ابوخليل said: اول ما تبادر لبالي .. اني احول الوقت الى دقائق ثم اضربه بالعدد ثم ارجع احوله الى ساعات ودقائق أو استخدام الدالة CLng كمثال :- SELECT Format((CLng(#12/30/1899 4:30:0#*1440)*5)/1440,"Short Time") AS الناتج; 1
ابوخليل قام بنشر الخميس at 16:43 الكاتب قام بنشر الخميس at 16:43 29 دقائق مضت, Foksh said: كمثال خطر ببالي من داخل استعلام على سبيل المثال :- شكرا جزيلا ... النتيجة مع 5 تمام ومع غيرها غير منضبطة .. غير رقم 5 الى ارقام اخرى اكبر وانظر الناتج
منتصر الانسي قام بنشر الخميس at 16:51 قام بنشر الخميس at 16:51 اقتراحي ان يتم تحويل الوقت الى ثواني لانها أدنا وحدة للوقت (هذه دالة تقوم بالتحويل) Public Function fncTimeToSec(varTime As Variant) As Double On Error GoTo OnErrors Dim curTime1 As Double If IsNull(varTime) Or varTime = "" Then fncTimeToSec = 0 Else If Len(varTime) > 5 Then curTime1 = CLng(Left(varTime, 2)) * 3600 curTime1 = curTime1 + CLng(Mid(varTime, 4, 2)) * 60 curTime1 = curTime1 + CLng(Mid(varTime, 7, 2)) Else curTime1 = CLng(Left(varTime, 2)) * 60 curTime1 = curTime1 + CLng(Mid(varTime, 4, 2)) End If fncTimeToSec = curTime1 End If ToExit: Exit Function OnErrors: fncTimeToSec = 0 Resume ToExit End Function ثم نقوم باجراء العملية الحسابية ثم نعيد تحويلها الى وقت بإستخدام هذه الدالة Public Function fncSecToTime(dblSeconds As Double) As String On Error GoTo OnErrors Dim curTime1 As Double If IsNull(dblSeconds) Or dblSeconds = 0 Then fncSecToTime = 0 Else curTime1 = Int(dblSeconds) fncSecToTime = Format(Int(curTime1 / 3600), "00") _ & ":" & Format(Int((curTime1 Mod 3600) / 60), "00") _ & ":" & Format((curTime1 Mod 3600) Mod 60, "00") End If ToExit: Exit Function OnErrors: fncSecToTime = 0 Resume ToExit End Function جرب وإن شاء الله تنجح مع تحياتي 1
Foksh قام بنشر الخميس at 17:01 قام بنشر الخميس at 17:01 17 دقائق مضت, ابوخليل said: شكرا جزيلا ... النتيجة مع 5 تمام ومع غيرها غير منضبطة .. غير رقم 5 الى ارقام اخرى اكبر وانظر الناتج كلامك صحيح .. لم أقم بالتجربة على أرقام مختلفة .. في مديول :- Function MultiplyTime(ByVal tm As Date, ByVal factor As Long) As String Dim totalMinutes As Long totalMinutes = DateDiff("n", #12:00:00 AM#, tm) * factor MultiplyTime = Format(totalMinutes \ 60 & ":" & totalMinutes Mod 60, "hh:nn") End Function جرب على الإستدعاء من خلال الاستعلام :- SELECT MultiplyTime(#4:30#, 10) AS النتيجة 1
ابو جودي قام بنشر الخميس at 17:48 قام بنشر الخميس at 17:48 Public Function MultiplyTime(strTime As String, factor As Double) As String On Error GoTo ErrHandler Dim totalMinutes As Double totalMinutes = TimeValue(strTime) * 24 * 60 * factor MultiplyTime = Format(totalMinutes / 24 / 60, "hh:nn") Exit Function ErrHandler: MultiplyTime = "خطأ في الوقت" End Function وللاستدعاء MultiplyTime("4:30", 5) 1
تمت الإجابة AbuuAhmed قام بنشر الخميس at 18:10 تمت الإجابة قام بنشر الخميس at 18:10 (معدل) ويمكن تحويله إلى نص إذا تجاوز 24 ساعة بشكل وقت عند الرغبة Times_02.accdb تم تعديل الخميس at 18:40 بواسطه AbuuAhmed 2 1
ابوخليل قام بنشر الخميس at 18:42 الكاتب قام بنشر الخميس at 18:42 31 دقائق مضت, AbuuAhmed said: ويمكن تحويله إلى نص إذا تجاوز 24 ساعة بشكل وقت عند الرغبة لا لا لا يابو احمد غير معقول .. سطر واحد فقط .. هذا السطر هو بغيتي .. احط هذا السطر ميدالية مع المفاتيح لجماله CDbl(Me.txtTime * Me.txtMultip) * 24 مع كامل الاحترام والتقدير لكافة احبتي واخواني .. جزاكم الله خيرا وزادكم علما ورفعة . 1 1
AbuuAhmed قام بنشر الخميس at 19:36 قام بنشر الخميس at 19:36 @ابوخليل أرجو الانتباه أنه تم التعديل على المرفق تعديلا بسيطا لا يؤثر على النتائج ولكنه الأصح بسبب قلة التركيز. التعديل في قوس الإغلاق للدالة يفترض أن يكون للوقت قبل عملية الضرب وليس بعد عملية الضرب. Me.txtResult1 = CDbl(Me.txtTime) * Me.txtMultip Me.txtResult2 = CDbl(Me.txtTime) * Me.txtMultip * 24 MsgBox Format(CDbl(Me.txtTime) * Me.txtMultip, "Short Time"), , _ Format(CDbl(Me.txtTime) * Me.txtMultip, "hh:mm") 3
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.