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