اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

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

قام بنشر

اول ما تبادر لبالي .. اني احول الوقت الى دقائق ثم اضربه بالعدد ثم ارجع احوله الى ساعات ودقائق

هل هذا اقصر الطرق؟

قام بنشر
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 الناتج;

 

  • Like 1
قام بنشر
29 دقائق مضت, Foksh said:

كمثال خطر ببالي من داخل استعلام على سبيل المثال :-

شكرا جزيلا  ... النتيجة مع 5 تمام  ومع غيرها غير منضبطة .. غير رقم 5 الى ارقام اخرى اكبر وانظر الناتج

قام بنشر

اقتراحي ان يتم تحويل الوقت الى ثواني لانها أدنا وحدة للوقت (هذه دالة تقوم بالتحويل)

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

جرب وإن شاء الله تنجح

مع تحياتي

  • Like 1
قام بنشر
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 النتيجة

 

  • Like 1
قام بنشر
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)

 

  • Like 1
  • تمت الإجابة
قام بنشر (معدل)

ويمكن تحويله إلى نص إذا تجاوز 24 ساعة بشكل وقت عند الرغبة

 

Times_02.accdb

تم تعديل بواسطه AbuuAhmed
  • Like 2
  • Thanks 1
قام بنشر
31 دقائق مضت, AbuuAhmed said:

ويمكن تحويله إلى نص إذا تجاوز 24 ساعة بشكل وقت عند الرغبة

لا لا لا يابو احمد غير معقول  .. سطر واحد فقط .. هذا السطر هو بغيتي ..  احط هذا السطر ميدالية مع المفاتيح لجماله

 CDbl(Me.txtTime * Me.txtMultip) * 24

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

  • Like 1
  • Haha 1
قام بنشر

@ابوخليل أرجو الانتباه أنه تم التعديل على المرفق تعديلا بسيطا لا يؤثر على النتائج ولكنه الأصح بسبب قلة التركيز.
التعديل في قوس الإغلاق للدالة يفترض أن يكون للوقت قبل عملية الضرب وليس بعد عملية الضرب.
 

    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")

 

  • Like 3

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