22/04/2009, 12:48
Tablodaki verileri özel olarak raporlama
22/04/2009, 13:00
derebeyi
Guzel soru gercekten
22/04/2009, 14:20
Seruz
Soru güzel, havada kötü olunca, dışarı çıkmayıp yemek saatinde geçici tablo yöntemiyle çözdüm.
Buyrun, Rapor Ek'tedir.
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
22/04/2009, 16:53
Seruz
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
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
22/04/2009, 17:23
ozanakkaya
Her iki örnek için teşekkürler seruz hocam,
23/04/2009, 00:40
adnanyurdakul
Sayın Umuttk
bir örnek istiyordunuz alın size değişiği
bir örnek istiyordunuz alın size değişiği