Private Sub a_Click()
Dim rs As DAO.Recordset
Dim db As Database
Dim strSQL As String
Dim DK As Long
Dim SA As Long
Set db = CurrentDb()
strSQL = "SELECT * TBL_SEYIR_SURESI"
Set rs = db.OpenRecordset(strSQL)
Me.b = 0
DK = 0
SA = 0
If rs.EOF = True Then GoTo 90
rs.MoveFirst
Do Until rs.EOF
SA = SA + Nz(Left(rs!TOPLAM_SEYIR_SURESI, 2), 0): DK = DK + Nz(Mid(rs!TOPLAM_SEYIR_SURESI, 4, 2), 0)
100
rs.MoveNext
Loop
90
Me.b = (SA + Int(DK / 60)) & ":" & (DK - (Int(DK / 60) * 60))
End Sub
Between [Forms]![SEYIR_SURE_SORGU]![araa1] And [Forms]![SEYIR_SURE_SORGU]![araa2]
Bu iki koddan ilki hatasız saat toplamını veriyor. İkincisi ise seçilmiş tarih aralığını. Bu kodu düzenleyerek sonuçta seçilmiş tarih arallığında saat toplamı aldırabilirmiyim.Tşk.
Lütfen örnek ekleyiniz ...
Aşağıdaki kodu uygulayınız.
Kod:
Private Sub hesap_Click()
'ayhan2122
Dim rs As DAO.Recordset
Dim db As Database
Dim strSQL As String
Dim DK As Long
Dim SA As Long
Set db = CurrentDb()
strSQL = "SELECT TBL_SEYIR_SURESI.* " & _
"FROM TBL_SEYIR_SURESI " & _
";"
Set rs = db.OpenRecordset(strSQL)
Me.sonuc = 0
DK = 0
SA = 0
If rs.EOF = True Then GoTo 90
rs.MoveFirst
Do Until rs.EOF
If (aysecim = 1 Or rs!AYLAR = aykutu) And _
(unsursec = 1 Or rs!GOREV_UNSURU = unsurkutu) And _
(gorevsec = 1 Or rs!GOREV_1 = gorevkutu) And _
(tarıhsec = 1 Or (rs!KALKIS_TARIHI >= CDate(araa1)) And rs!KALKIS_TARIHI <= CDate(araa2)) _
Then
SA = SA + Nz(Left(rs!GOREV_1_SURE, 2), 0): DK = DK + Nz(Mid(rs!GOREV_1_SURE, 4, 2), 0)
SA = SA + Nz(Left(rs!GOREV_2_SURE, 2), 0): DK = DK + Nz(Mid(rs!GOREV_2_SURE, 4, 2), 0)
SA = SA + Nz(Left(rs!GOREV_3_SURE, 2), 0): DK = DK + Nz(Mid(rs!GOREV_3_SURE, 4, 2), 0)
End If
100
rs.MoveNext
Loop
90
Me.sonuc = (SA + Int(DK / 60)) & ":" & (DK - (Int(DK / 60) * 60))
End Sub
Sayın Ayhan2122;
Kod çok güzel çalışıyor. Bu kod ile 8 tane alternatif yazma olayınıda çözmüşsünüz. Teşekkürederim.
Ancak tarih seç kısmını boş geçmiyor. Null hata veriyor. Aslında büyük bir sorun değil. Sadece alternatifi 1e 2 ye 3e düşürüp tarih aralığını kullanmazsak sıkıntı oluyor. Yani her daim tarih sec aralığını araa1 ve araa2 yi dolu tutmam gerekiyor.
Bunun bir çözümü varmıdır. Yok ise böylede kalabilir. Tekrar Teşekkürler.
Null durumunda hata vermemesi için aşağıdaki kodu kullanın.
Kod:
Private Sub hesap_Click()
On Error GoTo hesap_Click_HATA
Dim rs As DAO.Recordset
Dim db As Database
Dim strSQL As String
Dim DK As Long
Dim SA As Long
Set db = CurrentDb()
strSQL = "SELECT TBL_SEYIR_SURESI.* " & _
"FROM TBL_SEYIR_SURESI " & _
";"
Set rs = db.OpenRecordset(strSQL)
Me.sonuc = 0
DK = 0
SA = 0
If rs.EOF = True Then GoTo 90
rs.MoveFirst
Do Until rs.EOF
If (aysecim = 1 Or rs!AYLAR = aykutu) And _
(unsursec = 1 Or rs!GOREV_UNSURU = unsurkutu) And _
(gorevsec = 1 Or rs!GOREV_1 = gorevkutu) And _
(tarıhsec = 1 Or (rs!KALKIS_TARIHI >= CDate(araa1)) And rs!KALKIS_TARIHI <= CDate(araa2)) _
Then
SA = SA + Nz(Left(rs!GOREV_1_SURE, 2), 0): DK = DK + Nz(Mid(rs!GOREV_1_SURE, 4, 2), 0)
SA = SA + Nz(Left(rs!GOREV_2_SURE, 2), 0): DK = DK + Nz(Mid(rs!GOREV_2_SURE, 4, 2), 0)
SA = SA + Nz(Left(rs!GOREV_3_SURE, 2), 0): DK = DK + Nz(Mid(rs!GOREV_3_SURE, 4, 2), 0)
End If
100
rs.MoveNext
Loop
90
Me.sonuc = (SA + Int(DK / 60)) & ":" & (DK - (Int(DK / 60) * 60))
hesap_Click_CIKIS: Exit Sub
hesap_Click_HATA: MsgBox "Tarih aralıklarını belirtiniz"
Resume hesap_Click_CIKIS
End Sub