Skip to main content

AccessTr.neT


İki kodun birleştirimesi

İki kodun birleştirimesi

Çözüldü #7
Hocam çok teşekkürler harika oldu elinize sağlıl. Bu konu ve

🔍https://accesstr.net/konu-4-referansli-s...8#pid74198

linkteki konu çözümlenmiş sorunlar bölümüne taşınabilir. saygılar.
Volkan1 27 Kasım 2010 dan beri AccessTr üyesidir.Halay
Cevapla
Çözüldü #8
(30/04/2011, 10:50)ayhan2122 yazdı: 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


Sayın hocam her nekadar konunun çözüldüğünü bildirsemde programı kullanmaya başladıktan sonra küçük bir hata farkettim. 24.satırdaki

(gorevsec = 1 Or rs!GOREV_1 = gorevkutu) And _

satırında kaynak olarak GOREV_1 kullanılıyor. Ancak tabloda 3 görev sütunu var. biz saat toplamını aldırdığımızda tablonun sadece gorev_1 sütunundaki görevleri alıyor. Ancak bazı durumlarda Gorev_2 ve Gorev_3 sütunlarındada saat olarak değer oluyor. Bu durumda kodu Gorev_1, Gorev_2, Gorev_3 de kapsayıp aynı gorev tanımına uyan ları topltmasını nasıl sağlayabiliriz.
Volkan1 27 Kasım 2010 dan beri AccessTr üyesidir.Halay
Son Düzenleme: 12/05/2011, 16:53, Düzenleyen: volkan1.
Cevapla
Çözüldü #9
Lütfen iyice kontrol ediniz : )

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 Or rs!GOREV_2 = gorevkutu Or rs!GOREV_3 = gorevkutu) And _
   (tarıhsec = 1 Or (rs!KALKIS_TARIHI >= CDate(araa1)) And rs!KALKIS_TARIHI <= CDate(araa2)) _
Then
        SA = IIf(gorevsec = 1 Or rs!GOREV_1 = gorevkutu, SA + Nz(Left(rs!GOREV_1_SURE, 2), 0), SA)
        DK = IIf(gorevsec = 1 Or rs!GOREV_1 = gorevkutu, DK + Nz(Mid(rs!GOREV_1_SURE, 4, 2), 0), DK)
        SA = IIf(gorevsec = 2 Or rs!GOREV_2 = gorevkutu, SA + Nz(Left(rs!GOREV_2_SURE, 2), 0), SA)
        DK = IIf(gorevsec = 2 Or rs!GOREV_2 = gorevkutu, DK + Nz(Mid(rs!GOREV_2_SURE, 4, 2), 0), DK)
        SA = IIf(gorevsec = 3 Or rs!GOREV_3 = gorevkutu, SA + Nz(Left(rs!GOREV_3_SURE, 2), 0), SA)
        DK = IIf(gorevsec = 3 Or rs!GOREV_3 = gorevkutu, DK + Nz(Mid(rs!GOREV_3_SURE, 4, 2), 0), DK)
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

Saygılar, iyi çalışmalar.
*********
Kod, formül vs bilmek önemlidir ama mantığını yürütebilmek, nerede ve nasıl kullanılacağını bilmek daha önemlidir.
Cevapla
Çözüldü #10
Hocam konu çözümlendi olarak göründüğü için örnek ekleyemedim. Bende örneği farklı bir siteye ekledim. Sorunum farklı bir şekilde bazı toplamların doğru olmaması olarak devam ediyor. Örnektede ifade ettim. Teşekkür ederim.

🔍http://www.mediafire.com/?nsn2yy5mu1kfpda
Volkan1 27 Kasım 2010 dan beri AccessTr üyesidir.Halay
Son Düzenleme: 13/05/2011, 15:16, Düzenleyen: volkan1.
Cevapla
Çözüldü #11
İncelermisiniz...
.rar DENEME.rar (Dosya Boyutu: 53,03 KB | İndirme Sayısı: 6)
Please return your positive or negative ...
Cevapla
Çözüldü #12
POWER Hocam bu seviyeye kadar gelmiştim bende yalnız kodu bu şekilde kullandığımızda görev unsuruna göre görev seçtiğimizde sonuç hatalı çıkıyor. Örnek olarak ana tabloda GG görevi 2 defa yapılmış ve toplam sekiz saat. hesapladığımızda görev unsuru olarak gemi ile yapılmış ve toplam 31:10 çıkıyor.
Volkan1 27 Kasım 2010 dan beri AccessTr üyesidir.Halay
Son Düzenleme: 13/05/2011, 15:51, Düzenleyen: volkan1.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task