AccessTr.neT

Tam Versiyon: İki kodun birleştirimesi
Şu anda arşiv modunu görüntülemektesiniz. Tam versiyonu görüntülemek için buraya tıklayınız.
Sayfalar: 1 2 3
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 ...
Örneğim aşağdaki linkte 1.mesaldadır.

https://accesstr.net/konu-4-referansli-s...irmak.html

Konu çözülmemiş olup kod düzenlemesi ile çözebilirmiyim diye 2. bir konu açtım ve kodlarımı ekledim sıkıntım konuda anlattığım gibidir.
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
Sayfalar: 1 2 3