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