Skip to main content

AccessTr.neT


Zaman Formülünde Hata

Zaman Formülünde Hata

Çözüldü #1
Merhabalar.

Arıza kayıt takibi için yapmış olduğumuz çalışmada yaşadığım bir hata için yardım isteyeceğim. Zira biz bir türlü çözümü bulamadık. Ekteki resime bakar iseniz,
Arıza bildirilen tarih ve saat 27.01.2012 18:50 ve arızanın bitiş tarihi 27.01.2012 19:10. toplam arızada bekleme süresi 20 dakika olması gerekir iken, 1 saat 20 dakika çıkıyor. ama bu hatayı sadece arıza bildirim saati girişindeki dakika kısmı arıza bitiş saati girişinin dakika kısmından büyük ise yapıyor. İlginç ve biz bunu çözemedik.

Zamanı hesaplamak istediğimiz formül
=Format(DateDiff("h";[Arıza Bildirim Tarihi]+[Arıza Bildirim Saati];[Arıza Bitiş Tarihi]+[Arıza Bitiş Saati]);"00") & ":" & Format(DateDiff("n";[Arıza Bildirim Tarihi]+[Arıza Bildirim Saati];[Arıza Bitiş Tarihi]+[Arıza Bitiş Saati]) Mod 60;"00")
budur. 

Yardımlarınız için şimdiden teşekkür ediyorum.
[Resim: 13279362061.jpg]
Son Düzenleme: 30/01/2012, 18:10, Düzenleyen: lol4504.
Cevapla
Çözüldü #2
🔍Arıza Süresi Belirleme Formül Hatası linkindeki konu ile aynı soruyu sormuşsunuz.


(10/12/2011, 03:44)sledgeab yazdı: tabloda arıza bitiş tarihleri "06/12/2011 08:00:00" şeklinde kaydedildiği için formül çalışmıyor olabilir.
Arıza süresi metin kutusunun denetim kaynağına
=Diff2Dates("dhn",(Format([Arıza Bildirim Tarihi],"dd/mm/yyyy")) & " " & [Arıza Bildirim Saati],(Format([Arıza Bitiş Tarihi],"dd/mm/yyyy")) & " " & [Arıza Bitiş Saati],Doğru)
yaz, aşağıdaki kodu modül olarak kaydet
Option Compare Database
Public Function Diff2Dates(Interval As String, Date1 As Date, Date2 As Date, _
Optional ShowZero As Boolean = False) As Variant

On Error GoTo Err_Diff2Dates

   Dim booCalcYears As Boolean
   Dim booCalcMonths As Boolean
   Dim booCalcDays As Boolean
   Dim booCalcHours As Boolean
   Dim booCalcMinutes As Boolean
   Dim booCalcSeconds As Boolean
   Dim booSwapped As Boolean
   Dim dtTemp As Date
   Dim intCounter As Integer
   Dim lngDiffYears As Long
   Dim lngDiffMonths As Long
   Dim lngDiffDays As Long
   Dim lngDiffHours As Long
   Dim lngDiffMinutes As Long
   Dim lngDiffSeconds As Long
   Dim varTemp As Variant

   Const INTERVALS As String = "dmyhns"

   Interval = LCase$(Interval)
   For intCounter = 1 To Len(Interval)
      If InStr(1, INTERVALS, Mid$(Interval, intCounter, 1)) = 0 Then
         Exit Function
      End If
   Next intCounter

'Check that valid dates have been entered
   If Not (IsDate(Date1)) Then Exit Function
   If Not (IsDate(Date2)) Then Exit Function

'If necessary, swap the dates, to ensure that
'Date1 is lower than Date2
   If Date1 > Date2 Then
      dtTemp = Date1
      Date1 = Date2
      Date2 = dtTemp
      booSwapped = True
   End If

   Diff2Dates = Null
   varTemp = Null

'What intervals are supplied
   booCalcYears = (InStr(1, Interval, "y") > 0)
   booCalcMonths = (InStr(1, Interval, "m") > 0)
   booCalcDays = (InStr(1, Interval, "d") > 0)
   booCalcHours = (InStr(1, Interval, "h") > 0)
   booCalcMinutes = (InStr(1, Interval, "n") > 0)
   booCalcSeconds = (InStr(1, Interval, "s") > 0)

'Get the cumulative differences
   If booCalcYears Then
      lngDiffYears = Abs(DateDiff("yyyy", Date1, Date2)) - _
              IIf(Format$(Date1, "mmddhhnnss") <= Format$(Date2, "mmddhhnnss"), 0, 1)
      Date1 = DateAdd("yyyy", lngDiffYears, Date1)
   End If

   If booCalcMonths Then
      lngDiffMonths = Abs(DateDiff("m", Date1, Date2)) - _
              IIf(Format$(Date1, "ddhhnnss") <= Format$(Date2, "ddhhnnss"), 0, 1)
      Date1 = DateAdd("m", lngDiffMonths, Date1)
   End If

   If booCalcDays Then
      lngDiffDays = Abs(DateDiff("d", Date1, Date2)) - _
              IIf(Format$(Date1, "hhnnss") <= Format$(Date2, "hhnnss"), 0, 1)
      Date1 = DateAdd("d", lngDiffDays, Date1)
   End If

   If booCalcHours Then
      lngDiffHours = Abs(DateDiff("h", Date1, Date2)) - _
              IIf(Format$(Date1, "nnss") <= Format$(Date2, "nnss"), 0, 1)
      Date1 = DateAdd("h", lngDiffHours, Date1)
   End If

   If booCalcMinutes Then
      lngDiffMinutes = Abs(DateDiff("n", Date1, Date2)) - _
              IIf(Format$(Date1, "ss") <= Format$(Date2, "ss"), 0, 1)
      Date1 = DateAdd("n", lngDiffMinutes, Date1)
   End If

   If booCalcSeconds Then
      lngDiffSeconds = Abs(DateDiff("s", Date1, Date2))
      Date1 = DateAdd("s", lngDiffSeconds, Date1)
   End If

   If booCalcYears And (lngDiffYears > 0 Or ShowZero) Then
      varTemp = lngDiffYears & IIf(lngDiffYears <> 1, " yıl", " yıl")
   End If

   If booCalcMonths And (lngDiffMonths > 0 Or ShowZero) Then
      If booCalcMonths Then
         varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _
                   lngDiffMonths & IIf(lngDiffMonths <> 1, " ay", " ay")
      End If
   End If

   If booCalcDays And (lngDiffDays > 0 Or ShowZero) Then
      If booCalcDays Then
         varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _
                   lngDiffDays & IIf(lngDiffDays <> 1, " gün", " gün")
      End If
   End If

   If booCalcHours And (lngDiffHours > 0 Or ShowZero) Then
      If booCalcHours Then
         varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _
                   lngDiffHours & IIf(lngDiffHours <> 1, " saat", " saat")
      End If
   End If

   If booCalcMinutes And (lngDiffMinutes > 0 Or ShowZero) Then
      If booCalcMinutes Then
         varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _
                   lngDiffMinutes & IIf(lngDiffMinutes <> 1, " dakika", " dakika")
      End If
   End If

   If booCalcSeconds And (lngDiffSeconds > 0 Or ShowZero) Then
      If booCalcSeconds Then
         varTemp = varTemp & IIf(IsNull(varTemp), Null, " ") & _
                   lngDiffSeconds & IIf(lngDiffSeconds <> 1, " seconds", " second")
      End If
   End If

   If booSwapped Then
      varTemp = "-" & varTemp
   End If

   Diff2Dates = Trim$(varTemp)

End_Diff2Dates:
   Exit Function

Err_Diff2Dates:
   Resume End_Diff2Dates

End Function
'************** Code End *****************

[Resim: 13234782151.png]
Cevapla
Çözüldü #3
Merhabalar Hocam,

Bu formülü çalıştıramadım ( "Bir işleç veya işleneni yazmadınız, geçersiz virgül veya karakter girdiniz, başında ve sonunda tırnak işaretleri olmayan bir metin girdiniz" hatası veriyordu.) ve bende yerine gönderilmiş diğer bir formülü kullandım.( Bir konuda iki kere soru sormuştum daha önce ve yeni konu açmam istenmişti ) Başta bu hatayı görememiştik. şimdi bir süre çalışınca karşıma çıktı. konu cevaplanmış olduğu içinde tekrar yeni konu açtım. yanlış yaptım ise Özür Diliyorum...
Cevapla
Çözüldü #4
Kodun uygulanmış hali aşağıda.

Ek Dosyalar
 Makine ArızaTakip.rar(212.6 KB)



Versiyon farkından dolayı hata veriyor.

Verdiğim
=Diff2Dates("dhn",(Format([Arıza Bildirim Tarihi],"dd/mm/yyyy")) & " " & [Arıza Bildirim Saati],(Format([Arıza Bitiş Tarihi],"dd/mm/yyyy")) & " " & [Arıza Bitiş Saati],Doğru)
kodundaki , yerine ; olarak değiştirdim.
Cevapla
Çözüldü #5
Çok teşekkür, elinize emeğinize sağlık.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task