Skip to main content

AccessTr.neT


Tablodaki verileri özel olarak raporlama

Tablodaki verileri özel olarak raporlama

Çözüldü #7
Sayın seruz un dediği gibi geçici tablo ile sorun çözülebilir.Sql ile çalışma devam ediyor
kısa süre sonra cevabını net olarak yazacağım
İyi çalışmalar
Cevapla
Çözüldü #8
Guzel soru gercekten
Son Düzenleme: 22/04/2009, 13:06, Düzenleyen: derebeyi.
Cevapla
Çözüldü #9
Soru güzel, havada kötü olunca, dışarı çıkmayıp yemek saatinde geçici tablo yöntemiyle çözdüm.

Buyrun, Rapor Ek'tedir.

Kod:
Private Sub Report_Open(Cancel As Integer)
On Error GoTo Hata_Olusursa
Dim RS As New ADODB.Recordset
Dim GS As New ADODB.Recordset
Dim Onceki_Personel, Onceki_GC

    'Geçici tabloda bulunan eski kayıtlar siliniyor.
    DoCmd.SetWarnings False
    DoCmd.RunSQL "Delete From LOG_Gecici"
    DoCmd.SetWarnings True

    'Asıl Log Tablosu okuma için açılıyor
    RS.Open "GirisCikis", CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
    
    'Geçici LOG Tablosu yazma için açılıyor
    GS.Open "LOG_Gecici", CurrentProject.Connection, adOpenDynamic, adLockOptimistic

    Do While Not RS.EOF

        'Personel değiştiğinde bir önceki bilgiler sıfırlanıyor.
        If Onceki_Personel <> RS("Personel") Then
            Onceki_Personel = RS("Personel")
            Onceki_GC = Null
        End If

        'Giriş İşleminde tabloya çıkışı boş olan yeni kayıt yazılıyor
        If RS("GC") = 0 Then
            GS.AddNew
            GS("Personel") = RS("Personel")
            GS("GirisZamani") = RS("Zaman")
            GS("CikisZamani") = Null
            GS.Update
        Else
        'Çıkış İşlemi
            'Bir önceki işlem Giriş ise aynı kayda çıkış zamanı yazılıyor ve son giriş kaydı güncelleniyor
            If Onceki_GC = 0 Then
                GS("CikisZamani") = RS("Zaman")
                GS.Update
            End If
            'Bir önceki işlem yoksa veya çıkış ise yeni ve girişi boş olan çıkış kaydı yazılıyor
            If IsNull(Onceki_GC) Or Onceki_GC = 1 Then
                GS.AddNew
                GS("Personel") = RS("Personel")
                GS("GirisZamani") = Null
                GS("CikisZamani") = RS("Zaman")
                GS.Update
            End If
        End If
        
        'Yeni kayıt okumadan önce mevcut bilgi önceki olarak saklanıyor
        Onceki_GC = RS("GC")
        
        RS.MoveNext
    
    Loop

    RS.Close
    GS.Close

Normal_Cikis:
    Exit Sub

Hata_Olusursa:
    MsgBox Err.Description
    Resume Normal_Cikis

End Sub

.rar Personel_Giris_Cikis_Seruz.rar (Dosya Boyutu: 29,44 KB | İndirme Sayısı: 27)
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #10
Geçici tablo oluşturmadan, rapor detayındaki NextRecord
ve Formattaki Cancel özelliğini kullanarak da yaptım aynı raporu.
Rapor : TAKİP ÇİZELGESİ - YÖNTEM2

Kod:
Option Compare Database
Dim Onceki_Personel, Onceki_Zaman, Onceki_GC

Private Sub Ayrıntı_Format(Cancel As Integer, FormatCount As Integer)
On Error GoTo Hata_Olusursa

    'Personel değiştiğinde bir önceki bilgiler sıfırlanıyor.
    If Onceki_Personel <> Me.Personel Then
        Onceki_Personel = Me.Personel
        Onceki_GC = Null
    End If

    'Giriş İşlemi
    If Me.GC = 0 Then
        'Bir önceki işlem yoksa veya çıkış ise
        If IsNull(Onceki_GC) Or Onceki_GC = 1 Then
            Me.GirisZamani = Me.Zaman
            Me.CikisZamani = Null
            'Yeni kayıt okumadan önce mevcut bilgi önceki olarak saklanıyor
            Onceki_GC = Me.GC
            Onceki_Zaman = Me.Zaman
            'Mevcut kayıt yazdırılmadan Yeni kayda gidiliyor
            Me.NextRecord = True
            Cancel = True
            Exit Sub
        'Bir önceki işlem de Giriş ise
        ElseIf Onceki_GC = 0 Then
            'Bir önceki giriş kaydı ise o kayıt direkt yazdırılıyor, yeni kayda gidilmiyor
            Me.GirisZamani = Onceki_Zaman
            Me.CikisZamani = Null
            Onceki_GC = Null
            Me.NextRecord = False
        End If
    Else
    'Çıkış İşlemi
        'Bir önceki işlem Giriş ise aynı kayda çıkış zamanı ekleniyor ve kayıt yazdırılıyor
        If Onceki_GC = 0 Then
            Me.CikisZamani = Me.Zaman
            Me.NextRecord = True
        'Bir önceki işlem yoksa veya çıkış ise yeni ve girişi boş olan çıkış kaydı yazılıyor
        ElseIf IsNull(Onceki_GC) Or Onceki_GC = 1 Then
            Me.GirisZamani = Null
            Me.CikisZamani = Me.Zaman
            Me.NextRecord = True
        End If
        'Yeni kayıt okumadan önce mevcut bilgi önceki olarak saklanıyor
        Onceki_GC = Me.GC
        Onceki_Zaman = Me.Zaman
    End If
    
Normal_Cikis:
    Exit Sub

Hata_Olusursa:
    MsgBox Err.Description
    Resume Normal_Cikis
End Sub

.rar Personel_Giris_Cikis_Seruz2.rar (Dosya Boyutu: 32,42 KB | İndirme Sayısı: 18)
Bildiğini bilenin arkasından git, bildiğini bilmeyeni uyar, bilmediğini bilene öğret, bilmediğini bilmeyenden kaç.
Konfüçyüs
Cevapla
Çözüldü #11
Her iki örnek için teşekkürler seruz hocam,
Cevapla
Çözüldü #12
Sayın Umuttk
bir örnek istiyordunuz alın size değişiği
.rar ADNCIKTI.rar (Dosya Boyutu: 41,9 KB | İndirme Sayısı: 24)
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da
Task